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

Side by Side Diff: third_party/WebKit/Source/platform/transforms/TransformOperationsTest.cpp

Issue 2615813003: Migrate WTF::Vector::append() to ::push_back() [part 14 of N] (Closed)
Patch Set: rebase, small fix in FontSettings.h Created 3 years, 11 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
1 /* 1 /*
2 * Copyright (C) 2014 Google Inc. All rights reserved. 2 * Copyright (C) 2014 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 empiricalBounds.unionBounds(transformed); 68 empiricalBounds.unionBounds(transformed);
69 firstTime = false; 69 firstTime = false;
70 } 70 }
71 71
72 ASSERT_PRED_FORMAT2(FloatBoxTest::AssertContains, bounds, empiricalBounds); 72 ASSERT_PRED_FORMAT2(FloatBoxTest::AssertContains, bounds, empiricalBounds);
73 } 73 }
74 74
75 TEST(TransformOperationsTest, AbsoluteAnimatedTranslatedBoundsTest) { 75 TEST(TransformOperationsTest, AbsoluteAnimatedTranslatedBoundsTest) {
76 TransformOperations fromOps; 76 TransformOperations fromOps;
77 TransformOperations toOps; 77 TransformOperations toOps;
78 fromOps.operations().append(TranslateTransformOperation::create( 78 fromOps.operations().push_back(TranslateTransformOperation::create(
79 Length(-30, blink::Fixed), Length(20, blink::Fixed), 15, 79 Length(-30, blink::Fixed), Length(20, blink::Fixed), 15,
80 TransformOperation::Translate3D)); 80 TransformOperation::Translate3D));
81 toOps.operations().append(TranslateTransformOperation::create( 81 toOps.operations().push_back(TranslateTransformOperation::create(
82 Length(10, blink::Fixed), Length(10, blink::Fixed), 200, 82 Length(10, blink::Fixed), Length(10, blink::Fixed), 200,
83 TransformOperation::Translate3D)); 83 TransformOperation::Translate3D));
84 FloatBox box(0, 0, 0, 10, 10, 10); 84 FloatBox box(0, 0, 0, 10, 10, 10);
85 FloatBox bounds; 85 FloatBox bounds;
86 86
87 EXPECT_TRUE( 87 EXPECT_TRUE(
88 toOps.blendedBoundsForBox(box, identityOperations, 0, 1, &bounds)); 88 toOps.blendedBoundsForBox(box, identityOperations, 0, 1, &bounds));
89 EXPECT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual, 89 EXPECT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual,
90 FloatBox(0, 0, 0, 20, 20, 210), bounds); 90 FloatBox(0, 0, 0, 20, 20, 210), bounds);
91 91
(...skipping 23 matching lines...) Expand all
115 115
116 // All progressions for animations start and end at 0, 1 respectively, 116 // All progressions for animations start and end at 0, 1 respectively,
117 // we can go outside of these bounds, but will always at least contain 117 // we can go outside of these bounds, but will always at least contain
118 // [0,1]. 118 // [0,1].
119 float progress[][2] = {{0, 1}, {-.25, 1.25}}; 119 float progress[][2] = {{0, 1}, {-.25, 1.25}};
120 120
121 for (size_t i = 0; i < WTF_ARRAY_LENGTH(testTransforms); ++i) { 121 for (size_t i = 0; i < WTF_ARRAY_LENGTH(testTransforms); ++i) {
122 for (size_t j = 0; j < WTF_ARRAY_LENGTH(progress); ++j) { 122 for (size_t j = 0; j < WTF_ARRAY_LENGTH(progress); ++j) {
123 TransformOperations fromOps; 123 TransformOperations fromOps;
124 TransformOperations toOps; 124 TransformOperations toOps;
125 fromOps.operations().append(TranslateTransformOperation::create( 125 fromOps.operations().push_back(TranslateTransformOperation::create(
126 Length(testTransforms[i][0][0], blink::Fixed), 126 Length(testTransforms[i][0][0], blink::Fixed),
127 Length(testTransforms[i][0][1], blink::Fixed), 127 Length(testTransforms[i][0][1], blink::Fixed),
128 testTransforms[i][0][2], TransformOperation::Translate3D)); 128 testTransforms[i][0][2], TransformOperation::Translate3D));
129 toOps.operations().append(TranslateTransformOperation::create( 129 toOps.operations().push_back(TranslateTransformOperation::create(
130 Length(testTransforms[i][1][0], blink::Fixed), 130 Length(testTransforms[i][1][0], blink::Fixed),
131 Length(testTransforms[i][1][1], blink::Fixed), 131 Length(testTransforms[i][1][1], blink::Fixed),
132 testTransforms[i][1][2], TransformOperation::Translate3D)); 132 testTransforms[i][1][2], TransformOperation::Translate3D));
133 EmpiricallyTestBounds(fromOps, toOps, progress[j][0], progress[j][1]); 133 EmpiricallyTestBounds(fromOps, toOps, progress[j][0], progress[j][1]);
134 } 134 }
135 } 135 }
136 } 136 }
137 137
138 TEST(TransformOperationsTest, AbsoluteAnimatedScaleBoundsTest) { 138 TEST(TransformOperationsTest, AbsoluteAnimatedScaleBoundsTest) {
139 TransformOperations fromOps; 139 TransformOperations fromOps;
140 TransformOperations toOps; 140 TransformOperations toOps;
141 fromOps.operations().append( 141 fromOps.operations().push_back(
142 ScaleTransformOperation::create(4, -3, TransformOperation::Scale)); 142 ScaleTransformOperation::create(4, -3, TransformOperation::Scale));
143 toOps.operations().append( 143 toOps.operations().push_back(
144 ScaleTransformOperation::create(5, 2, TransformOperation::Scale)); 144 ScaleTransformOperation::create(5, 2, TransformOperation::Scale));
145 145
146 FloatBox box(0, 0, 0, 10, 10, 10); 146 FloatBox box(0, 0, 0, 10, 10, 10);
147 FloatBox bounds; 147 FloatBox bounds;
148 148
149 EXPECT_TRUE( 149 EXPECT_TRUE(
150 toOps.blendedBoundsForBox(box, identityOperations, 0, 1, &bounds)); 150 toOps.blendedBoundsForBox(box, identityOperations, 0, 1, &bounds));
151 EXPECT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual, 151 EXPECT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual,
152 FloatBox(0, 0, 0, 50, 20, 10), bounds); 152 FloatBox(0, 0, 0, 50, 20, 10), bounds);
153 153
(...skipping 24 matching lines...) Expand all
178 178
179 // All progressions for animations start and end at 0, 1 respectively, 179 // All progressions for animations start and end at 0, 1 respectively,
180 // we can go outside of these bounds, but will always at least contain 180 // we can go outside of these bounds, but will always at least contain
181 // [0,1]. 181 // [0,1].
182 float progress[][2] = {{0, 1}, {-.25f, 1.25f}}; 182 float progress[][2] = {{0, 1}, {-.25f, 1.25f}};
183 183
184 for (size_t i = 0; i < WTF_ARRAY_LENGTH(testTransforms); ++i) { 184 for (size_t i = 0; i < WTF_ARRAY_LENGTH(testTransforms); ++i) {
185 for (size_t j = 0; j < WTF_ARRAY_LENGTH(progress); ++j) { 185 for (size_t j = 0; j < WTF_ARRAY_LENGTH(progress); ++j) {
186 TransformOperations fromOps; 186 TransformOperations fromOps;
187 TransformOperations toOps; 187 TransformOperations toOps;
188 fromOps.operations().append(TranslateTransformOperation::create( 188 fromOps.operations().push_back(TranslateTransformOperation::create(
189 Length(testTransforms[i][0][0], blink::Fixed), 189 Length(testTransforms[i][0][0], blink::Fixed),
190 Length(testTransforms[i][0][1], blink::Fixed), 190 Length(testTransforms[i][0][1], blink::Fixed),
191 testTransforms[i][0][2], TransformOperation::Translate3D)); 191 testTransforms[i][0][2], TransformOperation::Translate3D));
192 toOps.operations().append(TranslateTransformOperation::create( 192 toOps.operations().push_back(TranslateTransformOperation::create(
193 Length(testTransforms[i][1][0], blink::Fixed), 193 Length(testTransforms[i][1][0], blink::Fixed),
194 Length(testTransforms[i][1][1], blink::Fixed), 194 Length(testTransforms[i][1][1], blink::Fixed),
195 testTransforms[i][1][2], TransformOperation::Translate3D)); 195 testTransforms[i][1][2], TransformOperation::Translate3D));
196 EmpiricallyTestBounds(fromOps, toOps, progress[j][0], progress[j][1]); 196 EmpiricallyTestBounds(fromOps, toOps, progress[j][0], progress[j][1]);
197 } 197 }
198 } 198 }
199 } 199 }
200 200
201 TEST(TransformOperationsTest, AbsoluteAnimatedRotationBounds) { 201 TEST(TransformOperationsTest, AbsoluteAnimatedRotationBounds) {
202 TransformOperations fromOps; 202 TransformOperations fromOps;
203 TransformOperations toOps; 203 TransformOperations toOps;
204 fromOps.operations().append( 204 fromOps.operations().push_back(
205 RotateTransformOperation::create(0, TransformOperation::Rotate)); 205 RotateTransformOperation::create(0, TransformOperation::Rotate));
206 toOps.operations().append( 206 toOps.operations().push_back(
207 RotateTransformOperation::create(360, TransformOperation::Rotate)); 207 RotateTransformOperation::create(360, TransformOperation::Rotate));
208 float sqrt2 = sqrt(2.0f); 208 float sqrt2 = sqrt(2.0f);
209 FloatBox box(-sqrt2, -sqrt2, 0, sqrt2, sqrt2, 0); 209 FloatBox box(-sqrt2, -sqrt2, 0, sqrt2, sqrt2, 0);
210 FloatBox bounds; 210 FloatBox bounds;
211 211
212 // Since we're rotating 360 degrees, any box with dimensions between 0 and 212 // Since we're rotating 360 degrees, any box with dimensions between 0 and
213 // 2 * sqrt(2) should give the same result. 213 // 2 * sqrt(2) should give the same result.
214 float sizes[] = {0, 0.1f, sqrt2, 2 * sqrt2}; 214 float sizes[] = {0, 0.1f, sqrt2, 2 * sqrt2};
215 toOps.blendedBoundsForBox(box, fromOps, 0, 1, &bounds); 215 toOps.blendedBoundsForBox(box, fromOps, 0, 1, &bounds);
216 for (size_t i = 0; i < WTF_ARRAY_LENGTH(sizes); ++i) { 216 for (size_t i = 0; i < WTF_ARRAY_LENGTH(sizes); ++i) {
217 box.setSize(FloatPoint3D(sizes[i], sizes[i], 0)); 217 box.setSize(FloatPoint3D(sizes[i], sizes[i], 0));
218 218
219 EXPECT_TRUE(toOps.blendedBoundsForBox(box, fromOps, 0, 1, &bounds)); 219 EXPECT_TRUE(toOps.blendedBoundsForBox(box, fromOps, 0, 1, &bounds));
220 EXPECT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual, 220 EXPECT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual,
221 FloatBox(-2, -2, 0, 4, 4, 0), bounds); 221 FloatBox(-2, -2, 0, 4, 4, 0), bounds);
222 } 222 }
223 } 223 }
224 224
225 TEST(TransformOperationsTest, AbsoluteAnimatedExtremeRotationBounds) { 225 TEST(TransformOperationsTest, AbsoluteAnimatedExtremeRotationBounds) {
226 // If the normal is off-plane, we can have up to 6 exrema (min/max in each 226 // If the normal is off-plane, we can have up to 6 exrema (min/max in each
227 // dimension between) the endpoints of the arg. This makes sure we are 227 // dimension between) the endpoints of the arg. This makes sure we are
228 // catching all 6. 228 // catching all 6.
229 TransformOperations fromOps; 229 TransformOperations fromOps;
230 TransformOperations toOps; 230 TransformOperations toOps;
231 fromOps.operations().append(RotateTransformOperation::create( 231 fromOps.operations().push_back(RotateTransformOperation::create(
232 1, 1, 1, 30, TransformOperation::Rotate3D)); 232 1, 1, 1, 30, TransformOperation::Rotate3D));
233 toOps.operations().append(RotateTransformOperation::create( 233 toOps.operations().push_back(RotateTransformOperation::create(
234 1, 1, 1, 390, TransformOperation::Rotate3D)); 234 1, 1, 1, 390, TransformOperation::Rotate3D));
235 235
236 FloatBox box(1, 0, 0, 0, 0, 0); 236 FloatBox box(1, 0, 0, 0, 0, 0);
237 FloatBox bounds; 237 FloatBox bounds;
238 float min = -1 / 3.0f; 238 float min = -1 / 3.0f;
239 float max = 1; 239 float max = 1;
240 float size = max - min; 240 float size = max - min;
241 EXPECT_TRUE(toOps.blendedBoundsForBox(box, fromOps, 0, 1, &bounds)); 241 EXPECT_TRUE(toOps.blendedBoundsForBox(box, fromOps, 0, 1, &bounds));
242 EXPECT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual, 242 EXPECT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual,
243 FloatBox(min, min, min, size, size, size), bounds); 243 FloatBox(min, min, min, size, size, size), bounds);
244 } 244 }
245 245
246 TEST(TransformOperationsTest, AbsoluteAnimatedAxisRotationBounds) { 246 TEST(TransformOperationsTest, AbsoluteAnimatedAxisRotationBounds) {
247 // We can handle rotations about a single axis. If the axes are different, 247 // We can handle rotations about a single axis. If the axes are different,
248 // we revert to matrix interpolation for which inflated bounds cannot be 248 // we revert to matrix interpolation for which inflated bounds cannot be
249 // computed. 249 // computed.
250 TransformOperations fromOps; 250 TransformOperations fromOps;
251 TransformOperations toSame; 251 TransformOperations toSame;
252 TransformOperations toOpposite; 252 TransformOperations toOpposite;
253 TransformOperations toDifferent; 253 TransformOperations toDifferent;
254 fromOps.operations().append(RotateTransformOperation::create( 254 fromOps.operations().push_back(RotateTransformOperation::create(
255 1, 1, 1, 30, TransformOperation::Rotate3D)); 255 1, 1, 1, 30, TransformOperation::Rotate3D));
256 toSame.operations().append(RotateTransformOperation::create( 256 toSame.operations().push_back(RotateTransformOperation::create(
257 1, 1, 1, 390, TransformOperation::Rotate3D)); 257 1, 1, 1, 390, TransformOperation::Rotate3D));
258 toOpposite.operations().append(RotateTransformOperation::create( 258 toOpposite.operations().push_back(RotateTransformOperation::create(
259 -1, -1, -1, 390, TransformOperation::Rotate3D)); 259 -1, -1, -1, 390, TransformOperation::Rotate3D));
260 toDifferent.operations().append(RotateTransformOperation::create( 260 toDifferent.operations().push_back(RotateTransformOperation::create(
261 1, 3, 1, 390, TransformOperation::Rotate3D)); 261 1, 3, 1, 390, TransformOperation::Rotate3D));
262 262
263 FloatBox box(1, 0, 0, 0, 0, 0); 263 FloatBox box(1, 0, 0, 0, 0, 0);
264 FloatBox bounds; 264 FloatBox bounds;
265 EXPECT_TRUE(toSame.blendedBoundsForBox(box, fromOps, 0, 1, &bounds)); 265 EXPECT_TRUE(toSame.blendedBoundsForBox(box, fromOps, 0, 1, &bounds));
266 EXPECT_FALSE(toOpposite.blendedBoundsForBox(box, fromOps, 0, 1, &bounds)); 266 EXPECT_FALSE(toOpposite.blendedBoundsForBox(box, fromOps, 0, 1, &bounds));
267 EXPECT_FALSE(toDifferent.blendedBoundsForBox(box, fromOps, 0, 1, &bounds)); 267 EXPECT_FALSE(toDifferent.blendedBoundsForBox(box, fromOps, 0, 1, &bounds));
268 } 268 }
269 269
270 TEST(TransformOperationsTest, AbsoluteAnimatedOnAxisRotationBounds) { 270 TEST(TransformOperationsTest, AbsoluteAnimatedOnAxisRotationBounds) {
271 // If we rotate a point that is on the axis of rotation, the box should not 271 // If we rotate a point that is on the axis of rotation, the box should not
272 // change at all. 272 // change at all.
273 TransformOperations fromOps; 273 TransformOperations fromOps;
274 TransformOperations toOps; 274 TransformOperations toOps;
275 fromOps.operations().append(RotateTransformOperation::create( 275 fromOps.operations().push_back(RotateTransformOperation::create(
276 1, 1, 1, 30, TransformOperation::Rotate3D)); 276 1, 1, 1, 30, TransformOperation::Rotate3D));
277 toOps.operations().append(RotateTransformOperation::create( 277 toOps.operations().push_back(RotateTransformOperation::create(
278 1, 1, 1, 390, TransformOperation::Rotate3D)); 278 1, 1, 1, 390, TransformOperation::Rotate3D));
279 279
280 FloatBox box(1, 1, 1, 0, 0, 0); 280 FloatBox box(1, 1, 1, 0, 0, 0);
281 FloatBox bounds; 281 FloatBox bounds;
282 282
283 EXPECT_TRUE(toOps.blendedBoundsForBox(box, fromOps, 0, 1, &bounds)); 283 EXPECT_TRUE(toOps.blendedBoundsForBox(box, fromOps, 0, 1, &bounds));
284 EXPECT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual, box, bounds); 284 EXPECT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual, box, bounds);
285 } 285 }
286 286
287 // This would have been best as anonymous structs, but |WTF_ARRAY_LENGTH| 287 // This would have been best as anonymous structs, but |WTF_ARRAY_LENGTH|
(...skipping 24 matching lines...) Expand all
312 {0, 0, 1, FloatBox(-dim2, -dim2, 1, dim3, dim3, 0)}, 312 {0, 0, 1, FloatBox(-dim2, -dim2, 1, dim3, dim3, 0)},
313 {1, 1, 0, FloatBox(dim1, dim1, -1, dim2, dim2, 2)}, 313 {1, 1, 0, FloatBox(dim1, dim1, -1, dim2, dim2, 2)},
314 {0, 1, 1, FloatBox(-1, dim1, dim1, 2, dim2, dim2)}, 314 {0, 1, 1, FloatBox(-1, dim1, dim1, 2, dim2, dim2)},
315 {1, 0, 1, FloatBox(dim1, -1, dim1, dim2, 2, dim2)}}; 315 {1, 0, 1, FloatBox(dim1, -1, dim1, dim2, 2, dim2)}};
316 316
317 for (size_t i = 0; i < WTF_ARRAY_LENGTH(tests); ++i) { 317 for (size_t i = 0; i < WTF_ARRAY_LENGTH(tests); ++i) {
318 float x = tests[i].x; 318 float x = tests[i].x;
319 float y = tests[i].y; 319 float y = tests[i].y;
320 float z = tests[i].z; 320 float z = tests[i].z;
321 TransformOperations fromOps; 321 TransformOperations fromOps;
322 fromOps.operations().append(RotateTransformOperation::create( 322 fromOps.operations().push_back(RotateTransformOperation::create(
323 x, y, z, 0, TransformOperation::Rotate3D)); 323 x, y, z, 0, TransformOperation::Rotate3D));
324 TransformOperations toOps; 324 TransformOperations toOps;
325 toOps.operations().append(RotateTransformOperation::create( 325 toOps.operations().push_back(RotateTransformOperation::create(
326 x, y, z, 360, TransformOperation::Rotate3D)); 326 x, y, z, 360, TransformOperation::Rotate3D));
327 FloatBox box(1, 1, 1, 0, 0, 0); 327 FloatBox box(1, 1, 1, 0, 0, 0);
328 FloatBox bounds; 328 FloatBox bounds;
329 329
330 EXPECT_TRUE(toOps.blendedBoundsForBox(box, fromOps, 0, 1, &bounds)); 330 EXPECT_TRUE(toOps.blendedBoundsForBox(box, fromOps, 0, 1, &bounds));
331 EXPECT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual, tests[i].expected, 331 EXPECT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual, tests[i].expected,
332 bounds); 332 bounds);
333 } 333 }
334 } 334 }
335 335
(...skipping 13 matching lines...) Expand all
349 for (size_t i = 0; i < WTF_ARRAY_LENGTH(axes); ++i) { 349 for (size_t i = 0; i < WTF_ARRAY_LENGTH(axes); ++i) {
350 for (size_t j = 0; j < WTF_ARRAY_LENGTH(angles); ++j) { 350 for (size_t j = 0; j < WTF_ARRAY_LENGTH(angles); ++j) {
351 for (size_t k = 0; k < WTF_ARRAY_LENGTH(progress); ++k) { 351 for (size_t k = 0; k < WTF_ARRAY_LENGTH(progress); ++k) {
352 float x = axes[i][0]; 352 float x = axes[i][0];
353 float y = axes[i][1]; 353 float y = axes[i][1];
354 float z = axes[i][2]; 354 float z = axes[i][2];
355 355
356 TransformOperations fromOps; 356 TransformOperations fromOps;
357 TransformOperations toOps; 357 TransformOperations toOps;
358 358
359 fromOps.operations().append(RotateTransformOperation::create( 359 fromOps.operations().push_back(RotateTransformOperation::create(
360 x, y, z, angles[j][0], TransformOperation::Rotate3D)); 360 x, y, z, angles[j][0], TransformOperation::Rotate3D));
361 toOps.operations().append(RotateTransformOperation::create( 361 toOps.operations().push_back(RotateTransformOperation::create(
362 x, y, z, angles[j][1], TransformOperation::Rotate3D)); 362 x, y, z, angles[j][1], TransformOperation::Rotate3D));
363 EmpiricallyTestBounds(fromOps, toOps, progress[k][0], progress[k][1]); 363 EmpiricallyTestBounds(fromOps, toOps, progress[k][0], progress[k][1]);
364 } 364 }
365 } 365 }
366 } 366 }
367 } 367 }
368 368
369 TEST(TransformOperationsTest, AbsoluteAnimatedPerspectiveBoundsTest) { 369 TEST(TransformOperationsTest, AbsoluteAnimatedPerspectiveBoundsTest) {
370 TransformOperations fromOps; 370 TransformOperations fromOps;
371 TransformOperations toOps; 371 TransformOperations toOps;
372 fromOps.operations().append(PerspectiveTransformOperation::create(20)); 372 fromOps.operations().push_back(PerspectiveTransformOperation::create(20));
373 toOps.operations().append(PerspectiveTransformOperation::create(40)); 373 toOps.operations().push_back(PerspectiveTransformOperation::create(40));
374 FloatBox box(0, 0, 0, 10, 10, 10); 374 FloatBox box(0, 0, 0, 10, 10, 10);
375 FloatBox bounds; 375 FloatBox bounds;
376 toOps.blendedBoundsForBox(box, fromOps, 0, 1, &bounds); 376 toOps.blendedBoundsForBox(box, fromOps, 0, 1, &bounds);
377 EXPECT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual, 377 EXPECT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual,
378 FloatBox(0, 0, 0, 20, 20, 20), bounds); 378 FloatBox(0, 0, 0, 20, 20, 20), bounds);
379 379
380 fromOps.blendedBoundsForBox(box, toOps, -0.25, 1.25, &bounds); 380 fromOps.blendedBoundsForBox(box, toOps, -0.25, 1.25, &bounds);
381 // The perspective range was [20, 40] and blending will extrapolate that to 381 // The perspective range was [20, 40] and blending will extrapolate that to
382 // [17, 53]. The cube has w/h/d of 10 and the observer is at 17, so the face 382 // [17, 53]. The cube has w/h/d of 10 and the observer is at 17, so the face
383 // closest the observer is 17-10=7. 383 // closest the observer is 17-10=7.
384 double projectedSize = 10.0 / 7.0 * 17.0; 384 double projectedSize = 10.0 / 7.0 * 17.0;
385 EXPECT_PRED_FORMAT2( 385 EXPECT_PRED_FORMAT2(
386 FloatBoxTest::AssertAlmostEqual, 386 FloatBoxTest::AssertAlmostEqual,
387 FloatBox(0, 0, 0, projectedSize, projectedSize, projectedSize), bounds); 387 FloatBox(0, 0, 0, projectedSize, projectedSize, projectedSize), bounds);
388 } 388 }
389 389
390 TEST(TransformOperationsTest, EmpiricalAnimatedPerspectiveBoundsTest) { 390 TEST(TransformOperationsTest, EmpiricalAnimatedPerspectiveBoundsTest) {
391 float depths[][2] = { 391 float depths[][2] = {
392 {600, 400}, {800, 1000}, {800, std::numeric_limits<float>::infinity()}}; 392 {600, 400}, {800, 1000}, {800, std::numeric_limits<float>::infinity()}};
393 393
394 float progress[][2] = {{0, 1}, {-0.1f, 1.1f}}; 394 float progress[][2] = {{0, 1}, {-0.1f, 1.1f}};
395 395
396 for (size_t i = 0; i < WTF_ARRAY_LENGTH(depths); ++i) { 396 for (size_t i = 0; i < WTF_ARRAY_LENGTH(depths); ++i) {
397 for (size_t j = 0; j < WTF_ARRAY_LENGTH(progress); ++j) { 397 for (size_t j = 0; j < WTF_ARRAY_LENGTH(progress); ++j) {
398 TransformOperations fromOps; 398 TransformOperations fromOps;
399 TransformOperations toOps; 399 TransformOperations toOps;
400 400
401 fromOps.operations().append( 401 fromOps.operations().push_back(
402 PerspectiveTransformOperation::create(depths[i][0])); 402 PerspectiveTransformOperation::create(depths[i][0]));
403 toOps.operations().append( 403 toOps.operations().push_back(
404 PerspectiveTransformOperation::create(depths[i][1])); 404 PerspectiveTransformOperation::create(depths[i][1]));
405 405
406 EmpiricallyTestBounds(fromOps, toOps, progress[j][0], progress[j][1]); 406 EmpiricallyTestBounds(fromOps, toOps, progress[j][0], progress[j][1]);
407 } 407 }
408 } 408 }
409 } 409 }
410 410
411 TEST(TransformOperationsTest, AnimatedSkewBoundsTest) { 411 TEST(TransformOperationsTest, AnimatedSkewBoundsTest) {
412 TransformOperations fromOps; 412 TransformOperations fromOps;
413 TransformOperations toOps; 413 TransformOperations toOps;
414 fromOps.operations().append( 414 fromOps.operations().push_back(
415 SkewTransformOperation::create(-45, 0, TransformOperation::Skew)); 415 SkewTransformOperation::create(-45, 0, TransformOperation::Skew));
416 toOps.operations().append( 416 toOps.operations().push_back(
417 SkewTransformOperation::create(0, 45, TransformOperation::Skew)); 417 SkewTransformOperation::create(0, 45, TransformOperation::Skew));
418 FloatBox box(0, 0, 0, 10, 10, 10); 418 FloatBox box(0, 0, 0, 10, 10, 10);
419 FloatBox bounds; 419 FloatBox bounds;
420 420
421 toOps.blendedBoundsForBox(box, identityOperations, 0, 1, &bounds); 421 toOps.blendedBoundsForBox(box, identityOperations, 0, 1, &bounds);
422 ASSERT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual, 422 ASSERT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual,
423 FloatBox(0, 0, 0, 10, 20, 10), bounds); 423 FloatBox(0, 0, 0, 10, 20, 10), bounds);
424 424
425 identityOperations.blendedBoundsForBox(box, fromOps, 0, 1, &bounds); 425 identityOperations.blendedBoundsForBox(box, fromOps, 0, 1, &bounds);
426 ASSERT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual, 426 ASSERT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual,
427 FloatBox(-10, 0, 0, 20, 10, 10), bounds); 427 FloatBox(-10, 0, 0, 20, 10, 10), bounds);
428 428
429 toOps.blendedBoundsForBox(box, fromOps, 0, 1, &bounds); 429 toOps.blendedBoundsForBox(box, fromOps, 0, 1, &bounds);
430 ASSERT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual, 430 ASSERT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual,
431 FloatBox(-10, 0, 0, 20, 20, 10), bounds); 431 FloatBox(-10, 0, 0, 20, 20, 10), bounds);
432 432
433 fromOps.blendedBoundsForBox(box, toOps, 0, 1, &bounds); 433 fromOps.blendedBoundsForBox(box, toOps, 0, 1, &bounds);
434 ASSERT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual, 434 ASSERT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual,
435 FloatBox(-10, 0, 0, 20, 20, 10), bounds); 435 FloatBox(-10, 0, 0, 20, 20, 10), bounds);
436 } 436 }
437 437
438 TEST(TransformOperationsTest, NonCommutativeRotations) { 438 TEST(TransformOperationsTest, NonCommutativeRotations) {
439 TransformOperations fromOps; 439 TransformOperations fromOps;
440 fromOps.operations().append(RotateTransformOperation::create( 440 fromOps.operations().push_back(RotateTransformOperation::create(
441 1, 0, 0, 0, TransformOperation::Rotate3D)); 441 1, 0, 0, 0, TransformOperation::Rotate3D));
442 fromOps.operations().append(RotateTransformOperation::create( 442 fromOps.operations().push_back(RotateTransformOperation::create(
443 0, 1, 0, 0, TransformOperation::Rotate3D)); 443 0, 1, 0, 0, TransformOperation::Rotate3D));
444 TransformOperations toOps; 444 TransformOperations toOps;
445 toOps.operations().append(RotateTransformOperation::create( 445 toOps.operations().push_back(RotateTransformOperation::create(
446 1, 0, 0, 45, TransformOperation::Rotate3D)); 446 1, 0, 0, 45, TransformOperation::Rotate3D));
447 toOps.operations().append(RotateTransformOperation::create( 447 toOps.operations().push_back(RotateTransformOperation::create(
448 0, 1, 0, 135, TransformOperation::Rotate3D)); 448 0, 1, 0, 135, TransformOperation::Rotate3D));
449 449
450 FloatBox box(0, 0, 0, 1, 1, 1); 450 FloatBox box(0, 0, 0, 1, 1, 1);
451 FloatBox bounds; 451 FloatBox bounds;
452 452
453 double minProgress = 0; 453 double minProgress = 0;
454 double maxProgress = 1; 454 double maxProgress = 1;
455 EXPECT_TRUE(toOps.blendedBoundsForBox(box, fromOps, minProgress, maxProgress, 455 EXPECT_TRUE(toOps.blendedBoundsForBox(box, fromOps, minProgress, maxProgress,
456 &bounds)); 456 &bounds));
457 457
458 TransformOperations operations = toOps.blend(fromOps, maxProgress); 458 TransformOperations operations = toOps.blend(fromOps, maxProgress);
459 TransformationMatrix blendedTransform; 459 TransformationMatrix blendedTransform;
460 operations.apply(FloatSize(0, 0), blendedTransform); 460 operations.apply(FloatSize(0, 0), blendedTransform);
461 461
462 FloatPoint3D blendedPoint(0.9f, 0.9f, 0); 462 FloatPoint3D blendedPoint(0.9f, 0.9f, 0);
463 blendedPoint = blendedTransform.mapPoint(blendedPoint); 463 blendedPoint = blendedTransform.mapPoint(blendedPoint);
464 FloatBox expandedBounds = bounds; 464 FloatBox expandedBounds = bounds;
465 expandedBounds.expandTo(blendedPoint); 465 expandedBounds.expandTo(blendedPoint);
466 466
467 ASSERT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual, bounds, expandedBounds); 467 ASSERT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual, bounds, expandedBounds);
468 } 468 }
469 469
470 TEST(TransformOperationsTest, AbsoluteSequenceBoundsTest) { 470 TEST(TransformOperationsTest, AbsoluteSequenceBoundsTest) {
471 TransformOperations fromOps; 471 TransformOperations fromOps;
472 TransformOperations toOps; 472 TransformOperations toOps;
473 473
474 fromOps.operations().append(TranslateTransformOperation::create( 474 fromOps.operations().push_back(TranslateTransformOperation::create(
475 Length(1, Fixed), Length(-5, Fixed), 1, TransformOperation::Translate3D)); 475 Length(1, Fixed), Length(-5, Fixed), 1, TransformOperation::Translate3D));
476 fromOps.operations().append( 476 fromOps.operations().push_back(
477 ScaleTransformOperation::create(-1, 2, 3, TransformOperation::Scale3D)); 477 ScaleTransformOperation::create(-1, 2, 3, TransformOperation::Scale3D));
478 fromOps.operations().append(TranslateTransformOperation::create( 478 fromOps.operations().push_back(TranslateTransformOperation::create(
479 Length(2, Fixed), Length(4, Fixed), -1, TransformOperation::Translate3D)); 479 Length(2, Fixed), Length(4, Fixed), -1, TransformOperation::Translate3D));
480 480
481 toOps.operations().append( 481 toOps.operations().push_back(
482 TranslateTransformOperation::create(Length(13, Fixed), Length(-1, Fixed), 482 TranslateTransformOperation::create(Length(13, Fixed), Length(-1, Fixed),
483 5, TransformOperation::Translate3D)); 483 5, TransformOperation::Translate3D));
484 toOps.operations().append( 484 toOps.operations().push_back(
485 ScaleTransformOperation::create(-3, -2, 5, TransformOperation::Scale3D)); 485 ScaleTransformOperation::create(-3, -2, 5, TransformOperation::Scale3D));
486 toOps.operations().append(TranslateTransformOperation::create( 486 toOps.operations().push_back(TranslateTransformOperation::create(
487 Length(6, Fixed), Length(-2, Fixed), 3, TransformOperation::Translate3D)); 487 Length(6, Fixed), Length(-2, Fixed), 3, TransformOperation::Translate3D));
488 488
489 FloatBox box(1, 2, 3, 4, 4, 4); 489 FloatBox box(1, 2, 3, 4, 4, 4);
490 FloatBox bounds; 490 FloatBox bounds;
491 491
492 EXPECT_TRUE(toOps.blendedBoundsForBox(box, fromOps, -0.5, 1.5, &bounds)); 492 EXPECT_TRUE(toOps.blendedBoundsForBox(box, fromOps, -0.5, 1.5, &bounds));
493 EXPECT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual, 493 EXPECT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual,
494 FloatBox(-57, -59, -1, 76, 112, 80), bounds); 494 FloatBox(-57, -59, -1, 76, 112, 80), bounds);
495 495
496 EXPECT_TRUE(toOps.blendedBoundsForBox(box, fromOps, 0, 1, &bounds)); 496 EXPECT_TRUE(toOps.blendedBoundsForBox(box, fromOps, 0, 1, &bounds));
(...skipping 10 matching lines...) Expand all
507 EXPECT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual, 507 EXPECT_PRED_FORMAT2(FloatBoxTest::AssertAlmostEqual,
508 FloatBox(-7, -3, 2, 15, 23, 20), bounds); 508 FloatBox(-7, -3, 2, 15, 23, 20), bounds);
509 } 509 }
510 510
511 TEST(TransformOperationsTest, ZoomTest) { 511 TEST(TransformOperationsTest, ZoomTest) {
512 double zoomFactor = 1.25; 512 double zoomFactor = 1.25;
513 513
514 FloatPoint3D originalPoint(2, 3, 4); 514 FloatPoint3D originalPoint(2, 3, 4);
515 515
516 TransformOperations ops; 516 TransformOperations ops;
517 ops.operations().append(TranslateTransformOperation::create( 517 ops.operations().push_back(TranslateTransformOperation::create(
518 Length(1, Fixed), Length(2, Fixed), 3, TransformOperation::Translate3D)); 518 Length(1, Fixed), Length(2, Fixed), 3, TransformOperation::Translate3D));
519 ops.operations().append(PerspectiveTransformOperation::create(1234)); 519 ops.operations().push_back(PerspectiveTransformOperation::create(1234));
520 ops.operations().append( 520 ops.operations().push_back(
521 Matrix3DTransformOperation::create(TransformationMatrix( 521 Matrix3DTransformOperation::create(TransformationMatrix(
522 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16))); 522 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)));
523 523
524 // Apply unzoomed ops to unzoomed units, then zoom in 524 // Apply unzoomed ops to unzoomed units, then zoom in
525 FloatPoint3D unzoomedPoint = originalPoint; 525 FloatPoint3D unzoomedPoint = originalPoint;
526 TransformOperations unzoomedOps = ops; 526 TransformOperations unzoomedOps = ops;
527 TransformationMatrix unzoomedMatrix; 527 TransformationMatrix unzoomedMatrix;
528 ops.apply(FloatSize(0, 0), unzoomedMatrix); 528 ops.apply(FloatSize(0, 0), unzoomedMatrix);
529 FloatPoint3D result1 = unzoomedMatrix.mapPoint(unzoomedPoint); 529 FloatPoint3D result1 = unzoomedMatrix.mapPoint(unzoomedPoint);
530 result1.scale(zoomFactor, zoomFactor, zoomFactor); 530 result1.scale(zoomFactor, zoomFactor, zoomFactor);
531 531
532 // Apply zoomed ops to zoomed units 532 // Apply zoomed ops to zoomed units
533 FloatPoint3D zoomedPoint = originalPoint; 533 FloatPoint3D zoomedPoint = originalPoint;
534 zoomedPoint.scale(zoomFactor, zoomFactor, zoomFactor); 534 zoomedPoint.scale(zoomFactor, zoomFactor, zoomFactor);
535 TransformOperations zoomedOps = ops.zoom(zoomFactor); 535 TransformOperations zoomedOps = ops.zoom(zoomFactor);
536 TransformationMatrix zoomedMatrix; 536 TransformationMatrix zoomedMatrix;
537 zoomedOps.apply(FloatSize(0, 0), zoomedMatrix); 537 zoomedOps.apply(FloatSize(0, 0), zoomedMatrix);
538 FloatPoint3D result2 = zoomedMatrix.mapPoint(zoomedPoint); 538 FloatPoint3D result2 = zoomedMatrix.mapPoint(zoomedPoint);
539 539
540 EXPECT_EQ(result1, result2); 540 EXPECT_EQ(result1, result2);
541 } 541 }
542 542
543 } // namespace blink 543 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698