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

Side by Side Diff: webkit/compositor_bindings/web_layer_impl_fixed_bounds_unittest.cc

Issue 12326022: Efficiently handle image layer scaling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Handle sublayerTransform and anchor point Created 7 years, 10 months 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
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "cc/layer.h"
6 #include "testing/gtest/include/gtest/gtest.h"
7 #include "third_party/WebKit/Source/Platform/chromium/public/WebFloatPoint.h"
8 #include "third_party/WebKit/Source/Platform/chromium/public/WebSize.h"
9 #include "third_party/WebKit/Source/Platform/chromium/public/WebTransformationMa trix.h"
10 #include "third_party/skia/include/utils/SkMatrix44.h"
11 #include "ui/gfx/point3_f.h"
12 #include "webkit/compositor_bindings/web_layer_impl_fixed_bounds.h"
13
14 using namespace WebKit;
15
16 TEST(WebLayerImplFixedBoundsTest, IdentityBounds)
enne (OOO) 2013/02/22 00:10:49 Thanks for these tests. It's hard to tell from lo
Xianzhu 2013/02/22 00:53:30 Agreed. Will change the tests.
17 {
18 scoped_ptr<WebLayerImplFixedBounds> layer(new WebLayerImplFixedBounds());
19 layer->setAnchorPoint(WebFloatPoint(0, 0));
20 layer->setFixedBounds(gfx::Size(100, 100));
21 layer->setBounds(WebSize(100, 100));
22 EXPECT_EQ(WebSize(100, 100), layer->bounds());
23 EXPECT_EQ(gfx::Size(100, 100), layer->layer()->bounds());
24 EXPECT_EQ(gfx::Transform(), layer->layer()->transform());
25 }
26
27 gfx::Point3F transformPoint(const gfx::Transform& transform, const gfx::Point3F& point)
28 {
29 gfx::Point3F result = point;
30 transform.TransformPoint(result);
31 return result;
32 }
33
34 #define EXPECT_POINT3F_EQ(p1, p2) \
35 EXPECT_FLOAT_EQ((p1).x(), (p2).x()); \
36 EXPECT_FLOAT_EQ((p1).y(), (p2).y()); \
37 EXPECT_FLOAT_EQ((p1).z(), (p2).z());
38
39 TEST(WebLayerImplFixedBoundsTest, NonIdentityBounds)
40 {
41 scoped_ptr<WebLayerImplFixedBounds> layer(new WebLayerImplFixedBounds());
42 layer->setAnchorPoint(WebFloatPoint(0, 0));
43 layer->setFixedBounds(gfx::Size(100, 50));
44 layer->setBounds(WebSize(250, 200));
45 EXPECT_EQ(WebSize(250, 200), layer->bounds());
46 EXPECT_EQ(gfx::Size(100, 50), layer->layer()->bounds());
47 EXPECT_POINT3F_EQ(gfx::Point3F(25, 80, 1), transformPoint(layer->layer()->tr ansform(), gfx::Point3F(10, 20, 1)));
48 EXPECT_POINT3F_EQ(gfx::Point3F(4, 5, 1), transformPoint(layer->layer()->subl ayerTransform(), gfx::Point3F(10, 20, 1)));
49 EXPECT_TRUE(layer->transform().isIdentity());
50
51 layer->setBounds(gfx::Size(75, 100));
52 EXPECT_EQ(WebSize(75, 100), layer->bounds());
53 EXPECT_EQ(gfx::Size(100, 50), layer->layer()->bounds());
54 EXPECT_POINT3F_EQ(gfx::Point3F(7.5f, 40, 1), transformPoint(layer->layer()-> transform(), gfx::Point3F(10, 20, 1)));
55 EXPECT_POINT3F_EQ(gfx::Point3F(10, 20, 1), transformPoint(layer->layer()->su blayerTransform(), gfx::Point3F(7.5f, 40, 1)));
56 EXPECT_TRUE(layer->transform().isIdentity());
57
58 layer->setFixedBounds(gfx::Size(200, 100));
59 EXPECT_EQ(WebSize(75, 100), layer->bounds());
60 EXPECT_EQ(gfx::Size(200, 100), layer->layer()->bounds());
61 EXPECT_POINT3F_EQ(gfx::Point3F(3.75f, 20, 1), transformPoint(layer->layer()- >transform(), gfx::Point3F(10, 20, 1)));
62 EXPECT_POINT3F_EQ(gfx::Point3F(10, 20, 1), transformPoint(layer->layer()->su blayerTransform(), gfx::Point3F(3.75f, 20, 1)));
63 EXPECT_TRUE(layer->transform().isIdentity());
64 }
65
66 TEST(WebLayerImplFixedBoundsTest, WithOriginalTransform)
67 {
68 gfx::Transform originalTransform;
69 originalTransform.Translate3d(50, 60, 70);
70 originalTransform.Scale3d(1.5, 2.5, 3.5);
71
72 scoped_ptr<WebLayerImplFixedBounds> layer(new WebLayerImplFixedBounds());
73 layer->setAnchorPoint(WebFloatPoint(0, 0));
74 layer->setTransform(originalTransform.matrix());
75 layer->setFixedBounds(gfx::Size(100, 200));
76 layer->setBounds(gfx::Size(150, 50));
77 EXPECT_EQ(WebSize(150, 50), layer->bounds());
78 EXPECT_EQ(gfx::Size(100, 200), layer->layer()->bounds());
79 EXPECT_POINT3F_EQ(transformPoint(originalTransform, gfx::Point3F(15, 5, 1)), transformPoint(layer->layer()->transform(), gfx::Point3F(10, 20, 1)));
80
81 originalTransform.RotateAbout(gfx::Vector3dF(1.8, 2.8, 3.8), 100);
82 layer->setTransform(originalTransform.matrix());
83 EXPECT_EQ(WebSize(150, 50), layer->bounds());
84 EXPECT_EQ(gfx::Size(100, 200), layer->layer()->bounds());
85 EXPECT_POINT3F_EQ(transformPoint(originalTransform, gfx::Point3F(15, 5, 1)), transformPoint(layer->layer()->transform(), gfx::Point3F(10, 20, 1)));
86 }
87
88 TEST(WebLayerImplFixedBoundsTest, WithAnchorPoint)
89 {
90 scoped_ptr<WebLayerImplFixedBounds> layer(new WebLayerImplFixedBounds());
91 layer->setAnchorPoint(WebFloatPoint(0.4, 0.6));
92 layer->setFixedBounds(gfx::Size(100, 200));
93 layer->setBounds(WebSize(150, 250));
94 EXPECT_EQ(WebSize(150, 250), layer->bounds());
95 EXPECT_EQ(gfx::Size(100, 200), layer->layer()->bounds());
96 float left = -40.f;
97 float top = -120.f;
98 EXPECT_POINT3F_EQ(gfx::Point3F(left, top, 0), transformPoint(layer->layer()- >transform(), gfx::Point3F(left, top, 0)));
99 EXPECT_POINT3F_EQ(gfx::Point3F(left + 75, top + 125, 0), transformPoint(laye r->layer()->transform(), gfx::Point3F(left + 50, top + 100, 0)));
100 }
101
102 TEST(WebLayerImplFixedBoundsTest, WithOriginalTransformAndSublayerTransformAndAn chorPoint)
103 {
104 gfx::Transform originalTransform;
105 originalTransform.Translate3d(50, 60, 70);
106 originalTransform.Scale3d(1.5, 2.5, 3.5);
107
108 gfx::Transform sublayerTransform;
109 sublayerTransform.Scale3d(1.1, 2.2, 3.3);
110 sublayerTransform.Translate3d(11, 22, 33);
111 sublayerTransform.RotateAbout(gfx::Vector3dF(3.3, 2.2, 1.1), 99);
112
113 scoped_ptr<WebLayerImplFixedBounds> layer(new WebLayerImplFixedBounds());
114 layer->setAnchorPoint(WebFloatPoint(0.3, 0.7));
115 layer->setTransform(originalTransform.matrix());
116 layer->setSublayerTransform(sublayerTransform.matrix());
117 layer->setFixedBounds(gfx::Size(100, 100));
118 layer->setBounds(gfx::Size(150, 150));
119 float left = -30.f;
120 float top = -70.f;
121 EXPECT_EQ(WebSize(150, 150), layer->bounds());
122 EXPECT_EQ(gfx::Size(100, 100), layer->layer()->bounds());
123 EXPECT_POINT3F_EQ(transformPoint(originalTransform, gfx::Point3F(left + 15, top + 15, 1)),
124 transformPoint(layer->layer()->transform(), gfx::Point3F(l eft + 10, top + 10, 1)));
125 EXPECT_POINT3F_EQ(transformPoint(sublayerTransform, gfx::Point3F(left + 10, top + 10, 1)),
126 transformPoint(layer->layer()->sublayerTransform(), gfx::P oint3F(left + 15, top + 15, 1)));
127 }
OLDNEW
« cc/picture_image_layer_impl.cc ('K') | « webkit/compositor_bindings/web_layer_impl_fixed_bounds.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698