Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Side by Side Diff: cc/damage_tracker_unittest.cc

Issue 11308153: Migrate most of cc/ from WebKit::WebTransformationMatrix to gfx::Transform (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Patch for landing Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/damage_tracker.cc ('k') | cc/delegated_renderer_layer_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/damage_tracker.h" 5 #include "cc/damage_tracker.h"
6 6
7 #include "cc/layer_impl.h" 7 #include "cc/layer_impl.h"
8 #include "cc/layer_sorter.h" 8 #include "cc/layer_sorter.h"
9 #include "cc/layer_tree_host_common.h" 9 #include "cc/layer_tree_host_common.h"
10 #include "cc/math_util.h" 10 #include "cc/math_util.h"
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 } 278 }
279 279
280 TEST_F(DamageTrackerTest, verifyDamageForTransformedLayer) 280 TEST_F(DamageTrackerTest, verifyDamageForTransformedLayer)
281 { 281 {
282 // If a layer is transformed, the damage rect should still enclose the entir e 282 // If a layer is transformed, the damage rect should still enclose the entir e
283 // transformed layer. 283 // transformed layer.
284 284
285 scoped_ptr<LayerImpl> root = createAndSetUpTestTreeWithOneSurface(); 285 scoped_ptr<LayerImpl> root = createAndSetUpTestTreeWithOneSurface();
286 LayerImpl* child = root->children()[0]; 286 LayerImpl* child = root->children()[0];
287 287
288 WebTransformationMatrix rotation; 288 gfx::Transform rotation;
289 rotation.rotate(45); 289 rotation.Rotate(45);
290 290
291 clearDamageForAllSurfaces(root.get()); 291 clearDamageForAllSurfaces(root.get());
292 child->setAnchorPoint(gfx::PointF(0.5, 0.5)); 292 child->setAnchorPoint(gfx::PointF(0.5, 0.5));
293 child->setPosition(gfx::PointF(85, 85)); 293 child->setPosition(gfx::PointF(85, 85));
294 emulateDrawingOneFrame(root.get()); 294 emulateDrawingOneFrame(root.get());
295 295
296 // Sanity check that the layer actually moved to (85, 85), damaging its old location and new location. 296 // Sanity check that the layer actually moved to (85, 85), damaging its old location and new location.
297 gfx::RectF rootDamageRect = root->renderSurface()->damageTracker()->currentD amageRect(); 297 gfx::RectF rootDamageRect = root->renderSurface()->damageTracker()->currentD amageRect();
298 EXPECT_FLOAT_RECT_EQ(gfx::RectF(85, 85, 45, 45), rootDamageRect); 298 EXPECT_FLOAT_RECT_EQ(gfx::RectF(85, 85, 45, 45), rootDamageRect);
299 299
(...skipping 21 matching lines...) Expand all
321 // 321 //
322 // The transform is constructed so that if w < 0 clipping is not performed, the 322 // The transform is constructed so that if w < 0 clipping is not performed, the
323 // incorrect rect will be very small, specifically: position (500.972504, 49 8.544617) and size 0.056610 x 2.910767. 323 // incorrect rect will be very small, specifically: position (500.972504, 49 8.544617) and size 0.056610 x 2.910767.
324 // Instead, the correctly transformed rect should actually be very huge (i.e . in theory, -infinity on the left), 324 // Instead, the correctly transformed rect should actually be very huge (i.e . in theory, -infinity on the left),
325 // and positioned so that the right-most bound rect will be approximately 50 1 units in root surface space. 325 // and positioned so that the right-most bound rect will be approximately 50 1 units in root surface space.
326 // 326 //
327 327
328 scoped_ptr<LayerImpl> root = createAndSetUpTestTreeWithOneSurface(); 328 scoped_ptr<LayerImpl> root = createAndSetUpTestTreeWithOneSurface();
329 LayerImpl* child = root->children()[0]; 329 LayerImpl* child = root->children()[0];
330 330
331 WebTransformationMatrix transform; 331 gfx::Transform transform;
332 transform.translate3d(500, 500, 0); 332 transform.Translate3d(500, 500, 0);
333 transform.applyPerspective(1); 333 transform.ApplyPerspectiveDepth(1);
334 transform.rotate3d(0, 45, 0); 334 MathUtil::rotateEulerAngles(&transform, 0, 45, 0);
335 transform.translate3d(-50, -50, 0); 335 transform.Translate3d(-50, -50, 0);
336 336
337 // Set up the child 337 // Set up the child
338 child->setPosition(gfx::PointF(0, 0)); 338 child->setPosition(gfx::PointF(0, 0));
339 child->setBounds(gfx::Size(100, 100)); 339 child->setBounds(gfx::Size(100, 100));
340 child->setContentBounds(gfx::Size(100, 100)); 340 child->setContentBounds(gfx::Size(100, 100));
341 child->setTransform(transform); 341 child->setTransform(transform);
342 emulateDrawingOneFrame(root.get()); 342 emulateDrawingOneFrame(root.get());
343 343
344 // Sanity check that the child layer's bounds would actually get clipped by w < 0, 344 // Sanity check that the child layer's bounds would actually get clipped by w < 0,
345 // otherwise this test is not actually testing the intended scenario. 345 // otherwise this test is not actually testing the intended scenario.
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 child1->setOpacity(0.5); 826 child1->setOpacity(0.5);
827 emulateDrawingOneFrame(root.get()); 827 emulateDrawingOneFrame(root.get());
828 828
829 // CASE 1: adding a reflection about the left edge of grandChild1. 829 // CASE 1: adding a reflection about the left edge of grandChild1.
830 // 830 //
831 clearDamageForAllSurfaces(root.get()); 831 clearDamageForAllSurfaces(root.get());
832 { 832 {
833 scoped_ptr<LayerImpl> grandChild1Replica = LayerImpl::create(7); 833 scoped_ptr<LayerImpl> grandChild1Replica = LayerImpl::create(7);
834 grandChild1Replica->setPosition(gfx::PointF()); 834 grandChild1Replica->setPosition(gfx::PointF());
835 grandChild1Replica->setAnchorPoint(gfx::PointF()); 835 grandChild1Replica->setAnchorPoint(gfx::PointF());
836 WebTransformationMatrix reflection; 836 gfx::Transform reflection;
837 reflection.scale3d(-1, 1, 1); 837 reflection.Scale3d(-1, 1, 1);
838 grandChild1Replica->setTransform(reflection); 838 grandChild1Replica->setTransform(reflection);
839 grandChild1->setReplicaLayer(grandChild1Replica.Pass()); 839 grandChild1->setReplicaLayer(grandChild1Replica.Pass());
840 } 840 }
841 emulateDrawingOneFrame(root.get()); 841 emulateDrawingOneFrame(root.get());
842 842
843 gfx::RectF grandChildDamageRect = grandChild1->renderSurface()->damageTracke r()->currentDamageRect(); 843 gfx::RectF grandChildDamageRect = grandChild1->renderSurface()->damageTracke r()->currentDamageRect();
844 gfx::RectF childDamageRect = child1->renderSurface()->damageTracker()->curre ntDamageRect(); 844 gfx::RectF childDamageRect = child1->renderSurface()->damageTracker()->curre ntDamageRect();
845 gfx::RectF rootDamageRect = root->renderSurface()->damageTracker()->currentD amageRect(); 845 gfx::RectF rootDamageRect = root->renderSurface()->damageTracker()->currentD amageRect();
846 846
847 // The grandChild surface damage should not include its own replica. The chi ld 847 // The grandChild surface damage should not include its own replica. The chi ld
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
979 // Changes to a replica's mask should not damage the original surface, becau se it is 979 // Changes to a replica's mask should not damage the original surface, becau se it is
980 // not masked. But it does damage the ancestor target surface. 980 // not masked. But it does damage the ancestor target surface.
981 981
982 clearDamageForAllSurfaces(root.get()); 982 clearDamageForAllSurfaces(root.get());
983 983
984 // Create a reflection about the left edge of grandChild1. 984 // Create a reflection about the left edge of grandChild1.
985 { 985 {
986 scoped_ptr<LayerImpl> grandChild1Replica = LayerImpl::create(6); 986 scoped_ptr<LayerImpl> grandChild1Replica = LayerImpl::create(6);
987 grandChild1Replica->setPosition(gfx::PointF()); 987 grandChild1Replica->setPosition(gfx::PointF());
988 grandChild1Replica->setAnchorPoint(gfx::PointF()); 988 grandChild1Replica->setAnchorPoint(gfx::PointF());
989 WebTransformationMatrix reflection; 989 gfx::Transform reflection;
990 reflection.scale3d(-1, 1, 1); 990 reflection.Scale3d(-1, 1, 1);
991 grandChild1Replica->setTransform(reflection); 991 grandChild1Replica->setTransform(reflection);
992 grandChild1->setReplicaLayer(grandChild1Replica.Pass()); 992 grandChild1->setReplicaLayer(grandChild1Replica.Pass());
993 } 993 }
994 LayerImpl* grandChild1Replica = grandChild1->replicaLayer(); 994 LayerImpl* grandChild1Replica = grandChild1->replicaLayer();
995 995
996 // Set up the mask layer on the replica layer 996 // Set up the mask layer on the replica layer
997 { 997 {
998 scoped_ptr<LayerImpl> replicaMaskLayer = LayerImpl::create(7); 998 scoped_ptr<LayerImpl> replicaMaskLayer = LayerImpl::create(7);
999 replicaMaskLayer->setPosition(gfx::PointF()); 999 replicaMaskLayer->setPosition(gfx::PointF());
1000 replicaMaskLayer->setAnchorPoint(gfx::PointF()); 1000 replicaMaskLayer->setAnchorPoint(gfx::PointF());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1041 1041
1042 // Verify that the correct replicaOriginTransform is used for the replicaMas k; 1042 // Verify that the correct replicaOriginTransform is used for the replicaMas k;
1043 clearDamageForAllSurfaces(root.get()); 1043 clearDamageForAllSurfaces(root.get());
1044 1044
1045 grandChild1->setAnchorPoint(gfx::PointF(1, 0)); // This is not exactly the a nchor being tested, but by convention its expected to be the same as the replica 's anchor point. 1045 grandChild1->setAnchorPoint(gfx::PointF(1, 0)); // This is not exactly the a nchor being tested, but by convention its expected to be the same as the replica 's anchor point.
1046 1046
1047 { 1047 {
1048 scoped_ptr<LayerImpl> grandChild1Replica = LayerImpl::create(6); 1048 scoped_ptr<LayerImpl> grandChild1Replica = LayerImpl::create(6);
1049 grandChild1Replica->setPosition(gfx::PointF()); 1049 grandChild1Replica->setPosition(gfx::PointF());
1050 grandChild1Replica->setAnchorPoint(gfx::PointF(1, 0)); // This is the an chor being tested. 1050 grandChild1Replica->setAnchorPoint(gfx::PointF(1, 0)); // This is the an chor being tested.
1051 WebTransformationMatrix reflection; 1051 gfx::Transform reflection;
1052 reflection.scale3d(-1, 1, 1); 1052 reflection.Scale3d(-1, 1, 1);
1053 grandChild1Replica->setTransform(reflection); 1053 grandChild1Replica->setTransform(reflection);
1054 grandChild1->setReplicaLayer(grandChild1Replica.Pass()); 1054 grandChild1->setReplicaLayer(grandChild1Replica.Pass());
1055 } 1055 }
1056 LayerImpl* grandChild1Replica = grandChild1->replicaLayer(); 1056 LayerImpl* grandChild1Replica = grandChild1->replicaLayer();
1057 1057
1058 // Set up the mask layer on the replica layer 1058 // Set up the mask layer on the replica layer
1059 { 1059 {
1060 scoped_ptr<LayerImpl> replicaMaskLayer = LayerImpl::create(7); 1060 scoped_ptr<LayerImpl> replicaMaskLayer = LayerImpl::create(7);
1061 replicaMaskLayer->setPosition(gfx::PointF()); 1061 replicaMaskLayer->setPosition(gfx::PointF());
1062 replicaMaskLayer->setAnchorPoint(gfx::PointF()); // note, this is not th e anchor being tested. 1062 replicaMaskLayer->setAnchorPoint(gfx::PointF()); // note, this is not th e anchor being tested.
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
1150 EXPECT_TRUE(rootDamageRect.IsEmpty()); 1150 EXPECT_TRUE(rootDamageRect.IsEmpty());
1151 1151
1152 // Damage should remain empty even after one frame, since there's yet no new damage 1152 // Damage should remain empty even after one frame, since there's yet no new damage
1153 emulateDrawingOneFrame(root.get()); 1153 emulateDrawingOneFrame(root.get());
1154 rootDamageRect = root->renderSurface()->damageTracker()->currentDamageRect() ; 1154 rootDamageRect = root->renderSurface()->damageTracker()->currentDamageRect() ;
1155 EXPECT_TRUE(rootDamageRect.IsEmpty()); 1155 EXPECT_TRUE(rootDamageRect.IsEmpty());
1156 } 1156 }
1157 1157
1158 } // namespace 1158 } // namespace
1159 } // namespace cc 1159 } // namespace cc
OLDNEW
« no previous file with comments | « cc/damage_tracker.cc ('k') | cc/delegated_renderer_layer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698