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

Side by Side Diff: ui/gfx/interpolated_transform_unittest.cc

Issue 11087093: Migrate ui::Transform to gfx::Transform (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Should pass trybots this time Created 8 years, 2 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
« no previous file with comments | « ui/gfx/interpolated_transform.cc ('k') | ui/gfx/transform.h » ('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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ui/gfx/interpolated_transform.h" 5 #include "ui/gfx/interpolated_transform.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "ui/gfx/rect.h" 9 #include "ui/gfx/rect.h"
10 10
11 namespace { 11 namespace {
12 12
13 void CheckApproximatelyEqual(const ui::Transform& lhs, 13 void CheckApproximatelyEqual(const gfx::Transform& lhs,
14 const ui::Transform& rhs) { 14 const gfx::Transform& rhs) {
15 for (int i = 0; i < 4; ++i) { 15 for (int i = 0; i < 4; ++i) {
16 for (int j = 0; j < 4; ++j) { 16 for (int j = 0; j < 4; ++j) {
17 EXPECT_FLOAT_EQ(lhs.matrix().get(i, j), rhs.matrix().get(i, j)); 17 EXPECT_FLOAT_EQ(lhs.matrix().get(i, j), rhs.matrix().get(i, j));
18 } 18 }
19 } 19 }
20 } 20 }
21 21
22 float NormalizeAngle(float angle) { 22 float NormalizeAngle(float angle) {
23 while (angle < 0.0f) { 23 while (angle < 0.0f) {
24 angle += 360.0f; 24 angle += 360.0f;
25 } 25 }
26 while (angle > 360.0f) { 26 while (angle > 360.0f) {
27 angle -= 360.0f; 27 angle -= 360.0f;
28 } 28 }
29 return angle; 29 return angle;
30 } 30 }
31 31
32 } // namespace 32 } // namespace
33 33
34 TEST(InterpolatedTransformTest, InterpolatedRotation) { 34 TEST(InterpolatedTransformTest, InterpolatedRotation) {
35 ui::InterpolatedRotation interpolated_rotation(0, 100); 35 ui::InterpolatedRotation interpolated_rotation(0, 100);
36 ui::InterpolatedRotation interpolated_rotation_diff_start_end( 36 ui::InterpolatedRotation interpolated_rotation_diff_start_end(
37 0, 100, 100, 200); 37 0, 100, 100, 200);
38 38
39 for (int i = 0; i <= 100; ++i) { 39 for (int i = 0; i <= 100; ++i) {
40 ui::Transform rotation; 40 gfx::Transform rotation;
41 rotation.SetRotate(i); 41 rotation.SetRotate(i);
42 ui::Transform interpolated = interpolated_rotation.Interpolate(i / 100.0f); 42 gfx::Transform interpolated = interpolated_rotation.Interpolate(i / 100.0f);
43 CheckApproximatelyEqual(rotation, interpolated); 43 CheckApproximatelyEqual(rotation, interpolated);
44 interpolated = interpolated_rotation_diff_start_end.Interpolate(i + 100); 44 interpolated = interpolated_rotation_diff_start_end.Interpolate(i + 100);
45 CheckApproximatelyEqual(rotation, interpolated); 45 CheckApproximatelyEqual(rotation, interpolated);
46 } 46 }
47 } 47 }
48 48
49 TEST(InterpolatedTransformTest, InterpolatedScale) { 49 TEST(InterpolatedTransformTest, InterpolatedScale) {
50 ui::InterpolatedScale interpolated_scale(gfx::Point3f(0, 0, 0), 50 ui::InterpolatedScale interpolated_scale(gfx::Point3f(0, 0, 0),
51 gfx::Point3f(100, 100, 100)); 51 gfx::Point3f(100, 100, 100));
52 ui::InterpolatedScale interpolated_scale_diff_start_end( 52 ui::InterpolatedScale interpolated_scale_diff_start_end(
53 gfx::Point3f(0, 0, 0), gfx::Point3f(100, 100, 100), 100, 200); 53 gfx::Point3f(0, 0, 0), gfx::Point3f(100, 100, 100), 100, 200);
54 54
55 for (int i = 0; i <= 100; ++i) { 55 for (int i = 0; i <= 100; ++i) {
56 ui::Transform scale; 56 gfx::Transform scale;
57 scale.SetScale(i, i); 57 scale.SetScale(i, i);
58 ui::Transform interpolated = interpolated_scale.Interpolate(i / 100.0f); 58 gfx::Transform interpolated = interpolated_scale.Interpolate(i / 100.0f);
59 CheckApproximatelyEqual(scale, interpolated); 59 CheckApproximatelyEqual(scale, interpolated);
60 interpolated = interpolated_scale_diff_start_end.Interpolate(i + 100); 60 interpolated = interpolated_scale_diff_start_end.Interpolate(i + 100);
61 CheckApproximatelyEqual(scale, interpolated); 61 CheckApproximatelyEqual(scale, interpolated);
62 } 62 }
63 } 63 }
64 64
65 TEST(InterpolatedTransformTest, InterpolatedTranslate) { 65 TEST(InterpolatedTransformTest, InterpolatedTranslate) {
66 ui::InterpolatedTranslation interpolated_xform(gfx::Point(0, 0), 66 ui::InterpolatedTranslation interpolated_xform(gfx::Point(0, 0),
67 gfx::Point(100, 100)); 67 gfx::Point(100, 100));
68 68
69 ui::InterpolatedTranslation interpolated_xform_diff_start_end( 69 ui::InterpolatedTranslation interpolated_xform_diff_start_end(
70 gfx::Point(0, 0), gfx::Point(100, 100), 100, 200); 70 gfx::Point(0, 0), gfx::Point(100, 100), 100, 200);
71 71
72 for (int i = 0; i <= 100; ++i) { 72 for (int i = 0; i <= 100; ++i) {
73 ui::Transform xform; 73 gfx::Transform xform;
74 xform.SetTranslate(i, i); 74 xform.SetTranslate(i, i);
75 ui::Transform interpolated = interpolated_xform.Interpolate(i / 100.0f); 75 gfx::Transform interpolated = interpolated_xform.Interpolate(i / 100.0f);
76 CheckApproximatelyEqual(xform, interpolated); 76 CheckApproximatelyEqual(xform, interpolated);
77 interpolated = interpolated_xform_diff_start_end.Interpolate(i + 100); 77 interpolated = interpolated_xform_diff_start_end.Interpolate(i + 100);
78 CheckApproximatelyEqual(xform, interpolated); 78 CheckApproximatelyEqual(xform, interpolated);
79 } 79 }
80 } 80 }
81 81
82 TEST(InterpolatedTransformTest, InterpolatedRotationAboutPivot) { 82 TEST(InterpolatedTransformTest, InterpolatedRotationAboutPivot) {
83 gfx::Point pivot(100, 100); 83 gfx::Point pivot(100, 100);
84 gfx::Point above_pivot(100, 200); 84 gfx::Point above_pivot(100, 200);
85 ui::InterpolatedRotation rot(0, 90); 85 ui::InterpolatedRotation rot(0, 90);
86 ui::InterpolatedTransformAboutPivot interpolated_xform( 86 ui::InterpolatedTransformAboutPivot interpolated_xform(
87 pivot, 87 pivot,
88 new ui::InterpolatedRotation(0, 90)); 88 new ui::InterpolatedRotation(0, 90));
89 ui::Transform result = interpolated_xform.Interpolate(0.0f); 89 gfx::Transform result = interpolated_xform.Interpolate(0.0f);
90 CheckApproximatelyEqual(ui::Transform(), result); 90 CheckApproximatelyEqual(gfx::Transform(), result);
91 result = interpolated_xform.Interpolate(1.0f); 91 result = interpolated_xform.Interpolate(1.0f);
92 gfx::Point expected_result = pivot; 92 gfx::Point expected_result = pivot;
93 result.TransformPoint(pivot); 93 result.TransformPoint(pivot);
94 EXPECT_EQ(expected_result, pivot); 94 EXPECT_EQ(expected_result, pivot);
95 expected_result = gfx::Point(0, 100); 95 expected_result = gfx::Point(0, 100);
96 result.TransformPoint(above_pivot); 96 result.TransformPoint(above_pivot);
97 EXPECT_EQ(expected_result, above_pivot); 97 EXPECT_EQ(expected_result, above_pivot);
98 } 98 }
99 99
100 TEST(InterpolatedTransformTest, InterpolatedScaleAboutPivot) { 100 TEST(InterpolatedTransformTest, InterpolatedScaleAboutPivot) {
101 gfx::Point pivot(100, 100); 101 gfx::Point pivot(100, 100);
102 gfx::Point above_pivot(100, 200); 102 gfx::Point above_pivot(100, 200);
103 ui::InterpolatedTransformAboutPivot interpolated_xform( 103 ui::InterpolatedTransformAboutPivot interpolated_xform(
104 pivot, 104 pivot,
105 new ui::InterpolatedScale(gfx::Point3f(1, 1, 1), gfx::Point3f(2, 2, 2))); 105 new ui::InterpolatedScale(gfx::Point3f(1, 1, 1), gfx::Point3f(2, 2, 2)));
106 ui::Transform result = interpolated_xform.Interpolate(0.0f); 106 gfx::Transform result = interpolated_xform.Interpolate(0.0f);
107 CheckApproximatelyEqual(ui::Transform(), result); 107 CheckApproximatelyEqual(gfx::Transform(), result);
108 result = interpolated_xform.Interpolate(1.0f); 108 result = interpolated_xform.Interpolate(1.0f);
109 gfx::Point expected_result = pivot; 109 gfx::Point expected_result = pivot;
110 result.TransformPoint(pivot); 110 result.TransformPoint(pivot);
111 EXPECT_EQ(expected_result, pivot); 111 EXPECT_EQ(expected_result, pivot);
112 expected_result = gfx::Point(100, 300); 112 expected_result = gfx::Point(100, 300);
113 result.TransformPoint(above_pivot); 113 result.TransformPoint(above_pivot);
114 EXPECT_EQ(expected_result, above_pivot); 114 EXPECT_EQ(expected_result, above_pivot);
115 } 115 }
116 116
117 TEST(InterpolatedTransformTest, FactorTRS) { 117 TEST(InterpolatedTransformTest, FactorTRS) {
118 for (int degrees = 0; degrees < 360; ++degrees) { 118 for (int degrees = 0; degrees < 360; ++degrees) {
119 // build a transformation matrix. 119 // build a transformation matrix.
120 ui::Transform transform; 120 gfx::Transform transform;
121 transform.SetScale(degrees + 1, 2 * degrees + 1); 121 transform.SetScale(degrees + 1, 2 * degrees + 1);
122 transform.ConcatRotate(degrees); 122 transform.ConcatRotate(degrees);
123 transform.ConcatTranslate(degrees * 2, -degrees * 3); 123 transform.ConcatTranslate(degrees * 2, -degrees * 3);
124 124
125 // factor the matrix 125 // factor the matrix
126 gfx::Point translation; 126 gfx::Point translation;
127 float rotation; 127 float rotation;
128 gfx::Point3f scale; 128 gfx::Point3f scale;
129 bool success = ui::InterpolatedTransform::FactorTRS(transform, 129 bool success = ui::InterpolatedTransform::FactorTRS(transform,
130 &translation, 130 &translation,
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 new_pivot.y() - old_pivot.y()))); 172 new_pivot.y() - old_pivot.y())));
173 173
174 float scale_factor = 0.9f; 174 float scale_factor = 0.9f;
175 scoped_ptr<ui::InterpolatedTransform> scale_down( 175 scoped_ptr<ui::InterpolatedTransform> scale_down(
176 new ui::InterpolatedScale(1.0f, scale_factor, 0.0f, 0.5f)); 176 new ui::InterpolatedScale(1.0f, scale_factor, 0.0f, 0.5f));
177 177
178 scoped_ptr<ui::InterpolatedTransform> scale_up( 178 scoped_ptr<ui::InterpolatedTransform> scale_up(
179 new ui::InterpolatedScale(1.0f, 1.0f / scale_factor, 0.5f, 1.0f)); 179 new ui::InterpolatedScale(1.0f, 1.0f / scale_factor, 0.5f, 1.0f));
180 180
181 scoped_ptr<ui::InterpolatedTransform> to_return( 181 scoped_ptr<ui::InterpolatedTransform> to_return(
182 new ui::InterpolatedConstantTransform(ui::Transform())); 182 new ui::InterpolatedConstantTransform(gfx::Transform()));
183 183
184 scale_up->SetChild(scale_down.release()); 184 scale_up->SetChild(scale_down.release());
185 translation->SetChild(scale_up.release()); 185 translation->SetChild(scale_up.release());
186 rotation->SetChild(translation.release()); 186 rotation->SetChild(translation.release());
187 to_return->SetChild(rotation.release()); 187 to_return->SetChild(rotation.release());
188 to_return->SetReversed(reversed); 188 to_return->SetReversed(reversed);
189 189
190 return to_return.release(); 190 return to_return.release();
191 } 191 }
192 192
193 TEST(InterpolatedTransformTest, ScreenRotationEndsCleanly) { 193 TEST(InterpolatedTransformTest, ScreenRotationEndsCleanly) {
194 for (int i = 0; i < 2; ++i) { 194 for (int i = 0; i < 2; ++i) {
195 for (int degrees = -360; degrees <= 360; degrees += 90) { 195 for (int degrees = -360; degrees <= 360; degrees += 90) {
196 const bool reversed = i == 1; 196 const bool reversed = i == 1;
197 scoped_ptr<ui::InterpolatedTransform> screen_rotation( 197 scoped_ptr<ui::InterpolatedTransform> screen_rotation(
198 GetScreenRotation(degrees, reversed)); 198 GetScreenRotation(degrees, reversed));
199 ui::Transform interpolated = screen_rotation->Interpolate(1.0f); 199 gfx::Transform interpolated = screen_rotation->Interpolate(1.0f);
200 SkMatrix44& m = interpolated.matrix(); 200 SkMatrix44& m = interpolated.matrix();
201 // Upper-left 3x3 matrix should all be 0, 1 or -1. 201 // Upper-left 3x3 matrix should all be 0, 1 or -1.
202 for (int row = 0; row < 3; ++row) { 202 for (int row = 0; row < 3; ++row) {
203 for (int col = 0; col < 3; ++col) { 203 for (int col = 0; col < 3; ++col) {
204 float entry = m.get(row, col); 204 float entry = m.get(row, col);
205 EXPECT_TRUE(entry == 0 || entry == 1 || entry == -1); 205 EXPECT_TRUE(entry == 0 || entry == 1 || entry == -1);
206 } 206 }
207 } 207 }
208 } 208 }
209 } 209 }
(...skipping 30 matching lines...) Expand all
240 scale->SetChild(translation.release()); 240 scale->SetChild(translation.release());
241 rotation_about_pivot->SetChild(scale.release()); 241 rotation_about_pivot->SetChild(scale.release());
242 242
243 rotation_about_pivot->SetReversed(true); 243 rotation_about_pivot->SetReversed(true);
244 244
245 return rotation_about_pivot.release(); 245 return rotation_about_pivot.release();
246 } 246 }
247 247
248 TEST(InterpolatedTransformTest, MaximizeEndsCleanly) { 248 TEST(InterpolatedTransformTest, MaximizeEndsCleanly) {
249 scoped_ptr<ui::InterpolatedTransform> maximize(GetMaximize()); 249 scoped_ptr<ui::InterpolatedTransform> maximize(GetMaximize());
250 ui::Transform interpolated = maximize->Interpolate(1.0f); 250 gfx::Transform interpolated = maximize->Interpolate(1.0f);
251 SkMatrix44& m = interpolated.matrix(); 251 SkMatrix44& m = interpolated.matrix();
252 // Upper-left 3x3 matrix should all be 0, 1 or -1. 252 // Upper-left 3x3 matrix should all be 0, 1 or -1.
253 for (int row = 0; row < 3; ++row) { 253 for (int row = 0; row < 3; ++row) {
254 for (int col = 0; col < 3; ++col) { 254 for (int col = 0; col < 3; ++col) {
255 float entry = m.get(row, col); 255 float entry = m.get(row, col);
256 EXPECT_TRUE(entry == 0 || entry == 1 || entry == -1); 256 EXPECT_TRUE(entry == 0 || entry == 1 || entry == -1);
257 } 257 }
258 } 258 }
259 } 259 }
260 260
OLDNEW
« no previous file with comments | « ui/gfx/interpolated_transform.cc ('k') | ui/gfx/transform.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698