OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 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 "base/memory/scoped_vector.h" | 5 #include "base/memory/scoped_vector.h" |
6 #include "cc/test/geometry_test_utils.h" | 6 #include "cc/test/geometry_test_utils.h" |
7 #include "cc/transform_operations.h" | 7 #include "cc/transform_operations.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 #include "third_party/WebKit/Source/Platform/chromium/public/WebTransformationMa
trix.h" | 9 #include "ui/gfx/vector3d_f.h" |
10 | |
11 using WebKit::WebTransformationMatrix; | |
12 | 10 |
13 namespace cc { | 11 namespace cc { |
14 namespace { | 12 namespace { |
15 | 13 |
16 TEST(TransformOperationTest, TransformTypesAreUnique) { | 14 TEST(TransformOperationTest, TransformTypesAreUnique) { |
17 ScopedVector<TransformOperations> transforms; | 15 ScopedVector<TransformOperations> transforms; |
18 | 16 |
19 TransformOperations* to_add = new TransformOperations(); | 17 TransformOperations* to_add = new TransformOperations(); |
20 to_add->AppendTranslate(1, 0, 0); | 18 to_add->AppendTranslate(1, 0, 0); |
21 transforms.push_back(to_add); | 19 transforms.push_back(to_add); |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 to_add = new TransformOperations(); | 117 to_add = new TransformOperations(); |
120 to_add->AppendRotate(0, 0, 1, 0); | 118 to_add->AppendRotate(0, 0, 1, 0); |
121 operations->push_back(to_add); | 119 operations->push_back(to_add); |
122 | 120 |
123 to_add = new TransformOperations(); | 121 to_add = new TransformOperations(); |
124 to_add->AppendRotate(0, 0, 1, 0); | 122 to_add->AppendRotate(0, 0, 1, 0); |
125 to_add->AppendRotate(0, 0, 1, 0); | 123 to_add->AppendRotate(0, 0, 1, 0); |
126 operations->push_back(to_add); | 124 operations->push_back(to_add); |
127 | 125 |
128 to_add = new TransformOperations(); | 126 to_add = new TransformOperations(); |
129 to_add->AppendMatrix(WebTransformationMatrix()); | 127 to_add->AppendMatrix(gfx::Transform()); |
130 operations->push_back(to_add); | 128 operations->push_back(to_add); |
131 | 129 |
132 to_add = new TransformOperations(); | 130 to_add = new TransformOperations(); |
133 to_add->AppendMatrix(WebTransformationMatrix()); | 131 to_add->AppendMatrix(gfx::Transform()); |
134 to_add->AppendMatrix(WebTransformationMatrix()); | 132 to_add->AppendMatrix(gfx::Transform()); |
135 operations->push_back(to_add); | 133 operations->push_back(to_add); |
136 } | 134 } |
137 | 135 |
138 TEST(TransformOperationTest, IdentityAlwaysMatches) { | 136 TEST(TransformOperationTest, IdentityAlwaysMatches) { |
139 ScopedVector<TransformOperations> operations; | 137 ScopedVector<TransformOperations> operations; |
140 GetIdentityOperations(&operations); | 138 GetIdentityOperations(&operations); |
141 | 139 |
142 for (size_t i = 0; i < operations.size(); ++i) { | 140 for (size_t i = 0; i < operations.size(); ++i) { |
143 for (size_t j = 0; j < operations.size(); ++j) | 141 for (size_t j = 0; j < operations.size(); ++j) |
144 EXPECT_TRUE(operations[i]->MatchesTypes(*operations[j])); | 142 EXPECT_TRUE(operations[i]->MatchesTypes(*operations[j])); |
145 } | 143 } |
146 } | 144 } |
147 | 145 |
148 TEST(TransformOperationTest, ApplyTranslate) { | 146 TEST(TransformOperationTest, ApplyTranslate) { |
149 double x = 1; | 147 double x = 1; |
150 double y = 2; | 148 double y = 2; |
151 double z = 3; | 149 double z = 3; |
152 TransformOperations operations; | 150 TransformOperations operations; |
153 operations.AppendTranslate(x, y, z); | 151 operations.AppendTranslate(x, y, z); |
154 WebTransformationMatrix expected; | 152 gfx::Transform expected; |
155 expected.translate3d(x, y, z); | 153 expected.Translate3d(x, y, z); |
156 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); | 154 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); |
157 } | 155 } |
158 | 156 |
159 TEST(TransformOperationTest, ApplyRotate) { | 157 TEST(TransformOperationTest, ApplyRotate) { |
160 double x = 1; | 158 double x = 1; |
161 double y = 2; | 159 double y = 2; |
162 double z = 3; | 160 double z = 3; |
163 double degrees = 80; | 161 double degrees = 80; |
164 TransformOperations operations; | 162 TransformOperations operations; |
165 operations.AppendRotate(x, y, z, degrees); | 163 operations.AppendRotate(x, y, z, degrees); |
166 WebTransformationMatrix expected; | 164 gfx::Transform expected; |
167 expected.rotate3d(x, y, z, degrees); | 165 expected.RotateAbout(gfx::Vector3dF(x, y, z), degrees); |
168 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); | 166 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); |
169 } | 167 } |
170 | 168 |
171 TEST(TransformOperationTest, ApplyScale) { | 169 TEST(TransformOperationTest, ApplyScale) { |
172 double x = 1; | 170 double x = 1; |
173 double y = 2; | 171 double y = 2; |
174 double z = 3; | 172 double z = 3; |
175 TransformOperations operations; | 173 TransformOperations operations; |
176 operations.AppendScale(x, y, z); | 174 operations.AppendScale(x, y, z); |
177 WebTransformationMatrix expected; | 175 gfx::Transform expected; |
178 expected.scale3d(x, y, z); | 176 expected.Scale3d(x, y, z); |
179 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); | 177 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); |
180 } | 178 } |
181 | 179 |
182 TEST(TransformOperationTest, ApplySkew) { | 180 TEST(TransformOperationTest, ApplySkew) { |
183 double x = 1; | 181 double x = 1; |
184 double y = 2; | 182 double y = 2; |
185 TransformOperations operations; | 183 TransformOperations operations; |
186 operations.AppendSkew(x, y); | 184 operations.AppendSkew(x, y); |
187 WebTransformationMatrix expected; | 185 gfx::Transform expected; |
188 expected.skewX(x); | 186 expected.SkewX(x); |
189 expected.skewY(y); | 187 expected.SkewY(y); |
190 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); | 188 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); |
191 } | 189 } |
192 | 190 |
193 TEST(TransformOperationTest, ApplyPerspective) { | 191 TEST(TransformOperationTest, ApplyPerspective) { |
194 double depth = 800; | 192 double depth = 800; |
195 TransformOperations operations; | 193 TransformOperations operations; |
196 operations.AppendPerspective(depth); | 194 operations.AppendPerspective(depth); |
197 WebTransformationMatrix expected; | 195 gfx::Transform expected; |
198 expected.applyPerspective(depth); | 196 expected.ApplyPerspectiveDepth(depth); |
199 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); | 197 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.Apply()); |
200 } | 198 } |
201 | 199 |
202 TEST(TransformOperationTest, ApplyMatrix) { | 200 TEST(TransformOperationTest, ApplyMatrix) { |
203 double dx = 1; | 201 double dx = 1; |
204 double dy = 2; | 202 double dy = 2; |
205 double dz = 3; | 203 double dz = 3; |
206 WebTransformationMatrix expected_matrix; | 204 gfx::Transform expected_matrix; |
207 expected_matrix.translate3d(dx, dy, dz); | 205 expected_matrix.Translate3d(dx, dy, dz); |
208 TransformOperations matrix_transform; | 206 TransformOperations matrix_transform; |
209 matrix_transform.AppendMatrix(expected_matrix); | 207 matrix_transform.AppendMatrix(expected_matrix); |
210 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_matrix, matrix_transform.Apply()); | 208 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_matrix, matrix_transform.Apply()); |
211 } | 209 } |
212 | 210 |
213 TEST(TransformOperationTest, ApplyOrder) { | 211 TEST(TransformOperationTest, ApplyOrder) { |
214 double sx = 2; | 212 double sx = 2; |
215 double sy = 4; | 213 double sy = 4; |
216 double sz = 8; | 214 double sz = 8; |
217 | 215 |
218 double dx = 1; | 216 double dx = 1; |
219 double dy = 2; | 217 double dy = 2; |
220 double dz = 3; | 218 double dz = 3; |
221 | 219 |
222 TransformOperations operations; | 220 TransformOperations operations; |
223 operations.AppendScale(sx, sy, sz); | 221 operations.AppendScale(sx, sy, sz); |
224 operations.AppendTranslate(dx, dy, dz); | 222 operations.AppendTranslate(dx, dy, dz); |
225 | 223 |
226 WebTransformationMatrix expected_scale_matrix; | 224 gfx::Transform expected_scale_matrix; |
227 expected_scale_matrix.scale3d(sx, sy, sz); | 225 expected_scale_matrix.Scale3d(sx, sy, sz); |
228 | 226 |
229 WebTransformationMatrix expected_translate_matrix; | 227 gfx::Transform expected_translate_matrix; |
230 expected_translate_matrix.translate3d(dx, dy, dz); | 228 expected_translate_matrix.Translate3d(dx, dy, dz); |
231 | 229 |
232 WebTransformationMatrix expected_combined_matrix = expected_scale_matrix; | 230 gfx::Transform expected_combined_matrix = expected_scale_matrix; |
233 expected_combined_matrix.multiply(expected_translate_matrix); | 231 expected_combined_matrix.PreconcatTransform(expected_translate_matrix); |
234 | 232 |
235 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_combined_matrix, operations.Apply()); | 233 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_combined_matrix, operations.Apply()); |
236 } | 234 } |
237 | 235 |
238 TEST(TransformOperationTest, BlendOrder) { | 236 TEST(TransformOperationTest, BlendOrder) { |
239 double sx1 = 2; | 237 double sx1 = 2; |
240 double sy1 = 4; | 238 double sy1 = 4; |
241 double sz1 = 8; | 239 double sz1 = 8; |
242 | 240 |
243 double dx1 = 1; | 241 double dx1 = 1; |
244 double dy1 = 2; | 242 double dy1 = 2; |
245 double dz1 = 3; | 243 double dz1 = 3; |
246 | 244 |
247 double sx2 = 4; | 245 double sx2 = 4; |
248 double sy2 = 8; | 246 double sy2 = 8; |
249 double sz2 = 16; | 247 double sz2 = 16; |
250 | 248 |
251 double dx2 = 10; | 249 double dx2 = 10; |
252 double dy2 = 20; | 250 double dy2 = 20; |
253 double dz2 = 30; | 251 double dz2 = 30; |
254 | 252 |
255 TransformOperations operations_from; | 253 TransformOperations operations_from; |
256 operations_from.AppendScale(sx1, sy1, sz1); | 254 operations_from.AppendScale(sx1, sy1, sz1); |
257 operations_from.AppendTranslate(dx1, dy1, dz1); | 255 operations_from.AppendTranslate(dx1, dy1, dz1); |
258 | 256 |
259 TransformOperations operations_to; | 257 TransformOperations operations_to; |
260 operations_to.AppendScale(sx2, sy2, sz2); | 258 operations_to.AppendScale(sx2, sy2, sz2); |
261 operations_to.AppendTranslate(dx2, dy2, dz2); | 259 operations_to.AppendTranslate(dx2, dy2, dz2); |
262 | 260 |
263 WebTransformationMatrix scale_from; | 261 gfx::Transform scale_from; |
264 scale_from.scale3d(sx1, sy1, sz1); | 262 scale_from.Scale3d(sx1, sy1, sz1); |
265 WebTransformationMatrix translate_from; | 263 gfx::Transform translate_from; |
266 translate_from.translate3d(dx1, dy1, dz1); | 264 translate_from.Translate3d(dx1, dy1, dz1); |
267 | 265 |
268 WebTransformationMatrix scale_to; | 266 gfx::Transform scale_to; |
269 scale_to.scale3d(sx2, sy2, sz2); | 267 scale_to.Scale3d(sx2, sy2, sz2); |
270 WebTransformationMatrix translate_to; | 268 gfx::Transform translate_to; |
271 translate_to.translate3d(dx2, dy2, dz2); | 269 translate_to.Translate3d(dx2, dy2, dz2); |
272 | 270 |
273 double progress = 0.25; | 271 double progress = 0.25; |
274 | 272 |
275 WebTransformationMatrix blended_scale = scale_to; | 273 gfx::Transform blended_scale = scale_to; |
276 blended_scale.blend(scale_from, progress); | 274 blended_scale.Blend(scale_from, progress); |
277 | 275 |
278 WebTransformationMatrix blended_translate = translate_to; | 276 gfx::Transform blended_translate = translate_to; |
279 blended_translate.blend(translate_from, progress); | 277 blended_translate.Blend(translate_from, progress); |
280 | 278 |
281 WebTransformationMatrix expected = blended_scale; | 279 gfx::Transform expected = blended_scale; |
282 expected.multiply(blended_translate); | 280 expected.PreconcatTransform(blended_translate); |
283 | 281 |
284 EXPECT_TRANSFORMATION_MATRIX_EQ( | 282 EXPECT_TRANSFORMATION_MATRIX_EQ( |
285 expected, operations_to.Blend(operations_from, progress)); | 283 expected, operations_to.Blend(operations_from, progress)); |
286 } | 284 } |
287 | 285 |
288 static void CheckProgress(double progress, | 286 static void CheckProgress(double progress, |
289 const WebTransformationMatrix& from_matrix, | 287 const gfx::Transform& from_matrix, |
290 const WebTransformationMatrix& to_matrix, | 288 const gfx::Transform& to_matrix, |
291 const TransformOperations& from_transform, | 289 const TransformOperations& from_transform, |
292 const TransformOperations& to_transform) { | 290 const TransformOperations& to_transform) { |
293 WebTransformationMatrix expected_matrix = to_matrix; | 291 gfx::Transform expected_matrix = to_matrix; |
294 expected_matrix.blend(from_matrix, progress); | 292 expected_matrix.Blend(from_matrix, progress); |
295 EXPECT_TRANSFORMATION_MATRIX_EQ( | 293 EXPECT_TRANSFORMATION_MATRIX_EQ( |
296 expected_matrix, to_transform.Blend(from_transform, progress)); | 294 expected_matrix, to_transform.Blend(from_transform, progress)); |
297 } | 295 } |
298 | 296 |
299 TEST(TransformOperationTest, BlendProgress) { | 297 TEST(TransformOperationTest, BlendProgress) { |
300 double sx = 2; | 298 double sx = 2; |
301 double sy = 4; | 299 double sy = 4; |
302 double sz = 8; | 300 double sz = 8; |
303 TransformOperations operations_from; | 301 TransformOperations operations_from; |
304 operations_from.AppendScale(sx, sy, sz); | 302 operations_from.AppendScale(sx, sy, sz); |
305 | 303 |
306 WebTransformationMatrix matrix_from; | 304 gfx::Transform matrix_from; |
307 matrix_from.scale3d(sx, sy, sz); | 305 matrix_from.Scale3d(sx, sy, sz); |
308 | 306 |
309 sx = 4; | 307 sx = 4; |
310 sy = 8; | 308 sy = 8; |
311 sz = 16; | 309 sz = 16; |
312 TransformOperations operations_to; | 310 TransformOperations operations_to; |
313 operations_to.AppendScale(sx, sy, sz); | 311 operations_to.AppendScale(sx, sy, sz); |
314 | 312 |
315 WebTransformationMatrix matrix_to; | 313 gfx::Transform matrix_to; |
316 matrix_to.scale3d(sx, sy, sz); | 314 matrix_to.Scale3d(sx, sy, sz); |
317 | 315 |
318 CheckProgress(-1, matrix_from, matrix_to, operations_from, operations_to); | 316 CheckProgress(-1, matrix_from, matrix_to, operations_from, operations_to); |
319 CheckProgress(0, matrix_from, matrix_to, operations_from, operations_to); | 317 CheckProgress(0, matrix_from, matrix_to, operations_from, operations_to); |
320 CheckProgress(0.25, matrix_from, matrix_to, operations_from, operations_to); | 318 CheckProgress(0.25, matrix_from, matrix_to, operations_from, operations_to); |
321 CheckProgress(0.5, matrix_from, matrix_to, operations_from, operations_to); | 319 CheckProgress(0.5, matrix_from, matrix_to, operations_from, operations_to); |
322 CheckProgress(1, matrix_from, matrix_to, operations_from, operations_to); | 320 CheckProgress(1, matrix_from, matrix_to, operations_from, operations_to); |
323 CheckProgress(2, matrix_from, matrix_to, operations_from, operations_to); | 321 CheckProgress(2, matrix_from, matrix_to, operations_from, operations_to); |
324 } | 322 } |
325 | 323 |
326 TEST(TransformOperationTest, BlendWhenTypesDoNotMatch) { | 324 TEST(TransformOperationTest, BlendWhenTypesDoNotMatch) { |
(...skipping 14 matching lines...) Expand all Loading... |
341 double dz2 = 30; | 339 double dz2 = 30; |
342 | 340 |
343 TransformOperations operations_from; | 341 TransformOperations operations_from; |
344 operations_from.AppendScale(sx1, sy1, sz1); | 342 operations_from.AppendScale(sx1, sy1, sz1); |
345 operations_from.AppendTranslate(dx1, dy1, dz1); | 343 operations_from.AppendTranslate(dx1, dy1, dz1); |
346 | 344 |
347 TransformOperations operations_to; | 345 TransformOperations operations_to; |
348 operations_to.AppendTranslate(dx2, dy2, dz2); | 346 operations_to.AppendTranslate(dx2, dy2, dz2); |
349 operations_to.AppendScale(sx2, sy2, sz2); | 347 operations_to.AppendScale(sx2, sy2, sz2); |
350 | 348 |
351 WebTransformationMatrix from; | 349 gfx::Transform from; |
352 from.scale3d(sx1, sy1, sz1); | 350 from.Scale3d(sx1, sy1, sz1); |
353 from.translate3d(dx1, dy1, dz1); | 351 from.Translate3d(dx1, dy1, dz1); |
354 | 352 |
355 WebTransformationMatrix to; | 353 gfx::Transform to; |
356 to.translate3d(dx2, dy2, dz2); | 354 to.Translate3d(dx2, dy2, dz2); |
357 to.scale3d(sx2, sy2, sz2); | 355 to.Scale3d(sx2, sy2, sz2); |
358 | 356 |
359 double progress = 0.25; | 357 double progress = 0.25; |
360 | 358 |
361 WebTransformationMatrix expected = to; | 359 gfx::Transform expected = to; |
362 expected.blend(from, progress); | 360 expected.Blend(from, progress); |
363 | 361 |
364 EXPECT_TRANSFORMATION_MATRIX_EQ( | 362 EXPECT_TRANSFORMATION_MATRIX_EQ( |
365 expected, operations_to.Blend(operations_from, progress)); | 363 expected, operations_to.Blend(operations_from, progress)); |
366 } | 364 } |
367 | 365 |
368 TEST(TransformOperationTest, LargeRotationsWithSameAxis) { | 366 TEST(TransformOperationTest, LargeRotationsWithSameAxis) { |
369 TransformOperations operations_from; | 367 TransformOperations operations_from; |
370 operations_from.AppendRotate(0, 0, 1, 0); | 368 operations_from.AppendRotate(0, 0, 1, 0); |
371 | 369 |
372 TransformOperations operations_to; | 370 TransformOperations operations_to; |
373 operations_to.AppendRotate(0, 0, 2, 360); | 371 operations_to.AppendRotate(0, 0, 2, 360); |
374 | 372 |
375 double progress = 0.5; | 373 double progress = 0.5; |
376 | 374 |
377 WebTransformationMatrix expected; | 375 gfx::Transform expected; |
378 expected.rotate3d(0, 0, 1, 180); | 376 expected.RotateAbout(gfx::Vector3dF(0, 0, 1), 180); |
379 | 377 |
380 EXPECT_TRANSFORMATION_MATRIX_EQ( | 378 EXPECT_TRANSFORMATION_MATRIX_EQ( |
381 expected, operations_to.Blend(operations_from, progress)); | 379 expected, operations_to.Blend(operations_from, progress)); |
382 } | 380 } |
383 | 381 |
384 TEST(TransformOperationTest, LargeRotationsWithSameAxisInDifferentDirection) { | 382 TEST(TransformOperationTest, LargeRotationsWithSameAxisInDifferentDirection) { |
385 TransformOperations operations_from; | 383 TransformOperations operations_from; |
386 operations_from.AppendRotate(0, 0, 1, 180); | 384 operations_from.AppendRotate(0, 0, 1, 180); |
387 | 385 |
388 TransformOperations operations_to; | 386 TransformOperations operations_to; |
389 operations_to.AppendRotate(0, 0, -1, 180); | 387 operations_to.AppendRotate(0, 0, -1, 180); |
390 | 388 |
391 double progress = 0.5; | 389 double progress = 0.5; |
392 | 390 |
393 WebTransformationMatrix expected; | 391 gfx::Transform expected; |
394 | 392 |
395 EXPECT_TRANSFORMATION_MATRIX_EQ( | 393 EXPECT_TRANSFORMATION_MATRIX_EQ( |
396 expected, operations_to.Blend(operations_from, progress)); | 394 expected, operations_to.Blend(operations_from, progress)); |
397 } | 395 } |
398 | 396 |
399 TEST(TransformOperationTest, LargeRotationsWithDifferentAxes) { | 397 TEST(TransformOperationTest, LargeRotationsWithDifferentAxes) { |
400 TransformOperations operations_from; | 398 TransformOperations operations_from; |
401 operations_from.AppendRotate(0, 0, 1, 180); | 399 operations_from.AppendRotate(0, 0, 1, 175); |
402 | 400 |
403 TransformOperations operations_to; | 401 TransformOperations operations_to; |
404 operations_to.AppendRotate(0, 1, 0, 180); | 402 operations_to.AppendRotate(0, 1, 0, 175); |
405 | 403 |
406 double progress = 0.5; | 404 double progress = 0.5; |
407 WebTransformationMatrix matrix_from; | 405 gfx::Transform matrix_from; |
408 matrix_from.rotate3d(0, 0, 1, 180); | 406 matrix_from.RotateAbout(gfx::Vector3dF(0, 0, 1), 175); |
409 | 407 |
410 WebTransformationMatrix matrix_to; | 408 gfx::Transform matrix_to; |
411 matrix_to.rotate3d(0, 1, 0, 180); | 409 matrix_to.RotateAbout(gfx::Vector3dF(0, 1, 0), 175); |
412 | 410 |
413 WebTransformationMatrix expected = matrix_to; | 411 gfx::Transform expected = matrix_to; |
414 expected.blend(matrix_from, progress); | 412 expected.Blend(matrix_from, progress); |
415 | 413 |
416 EXPECT_TRANSFORMATION_MATRIX_EQ( | 414 EXPECT_TRANSFORMATION_MATRIX_EQ( |
417 expected, operations_to.Blend(operations_from, progress)); | 415 expected, operations_to.Blend(operations_from, progress)); |
418 } | 416 } |
419 | 417 |
420 TEST(TransformOperationTest, BlendRotationFromIdentity) { | 418 TEST(TransformOperationTest, BlendRotationFromIdentity) { |
421 ScopedVector<TransformOperations> identity_operations; | 419 ScopedVector<TransformOperations> identity_operations; |
422 GetIdentityOperations(&identity_operations); | 420 GetIdentityOperations(&identity_operations); |
423 | 421 |
424 for (size_t i = 0; i < identity_operations.size(); ++i) { | 422 for (size_t i = 0; i < identity_operations.size(); ++i) { |
425 TransformOperations operations; | 423 TransformOperations operations; |
426 operations.AppendRotate(0, 0, 1, 360); | 424 operations.AppendRotate(0, 0, 1, 360); |
427 | 425 |
428 double progress = 0.5; | 426 double progress = 0.5; |
429 | 427 |
430 WebTransformationMatrix expected; | 428 gfx::Transform expected; |
431 expected.rotate3d(0, 0, 1, 180); | 429 expected.RotateAbout(gfx::Vector3dF(0, 0, 1), 180); |
432 | 430 |
433 EXPECT_TRANSFORMATION_MATRIX_EQ( | 431 EXPECT_TRANSFORMATION_MATRIX_EQ( |
434 expected, operations.Blend(*identity_operations[i], progress)); | 432 expected, operations.Blend(*identity_operations[i], progress)); |
435 } | 433 } |
436 } | 434 } |
437 | 435 |
438 TEST(TransformOperationTest, BlendTranslationFromIdentity) { | 436 TEST(TransformOperationTest, BlendTranslationFromIdentity) { |
439 ScopedVector<TransformOperations> identity_operations; | 437 ScopedVector<TransformOperations> identity_operations; |
440 GetIdentityOperations(&identity_operations); | 438 GetIdentityOperations(&identity_operations); |
441 | 439 |
442 for (size_t i = 0; i < identity_operations.size(); ++i) { | 440 for (size_t i = 0; i < identity_operations.size(); ++i) { |
443 TransformOperations operations; | 441 TransformOperations operations; |
444 operations.AppendTranslate(2, 2, 2); | 442 operations.AppendTranslate(2, 2, 2); |
445 | 443 |
446 double progress = 0.5; | 444 double progress = 0.5; |
447 | 445 |
448 WebTransformationMatrix expected; | 446 gfx::Transform expected; |
449 expected.translate3d(1, 1, 1); | 447 expected.Translate3d(1, 1, 1); |
450 | 448 |
451 EXPECT_TRANSFORMATION_MATRIX_EQ( | 449 EXPECT_TRANSFORMATION_MATRIX_EQ( |
452 expected, operations.Blend(*identity_operations[i], progress)); | 450 expected, operations.Blend(*identity_operations[i], progress)); |
453 } | 451 } |
454 } | 452 } |
455 | 453 |
456 TEST(TransformOperationTest, BlendScaleFromIdentity) { | 454 TEST(TransformOperationTest, BlendScaleFromIdentity) { |
457 ScopedVector<TransformOperations> identity_operations; | 455 ScopedVector<TransformOperations> identity_operations; |
458 GetIdentityOperations(&identity_operations); | 456 GetIdentityOperations(&identity_operations); |
459 | 457 |
460 for (size_t i = 0; i < identity_operations.size(); ++i) { | 458 for (size_t i = 0; i < identity_operations.size(); ++i) { |
461 TransformOperations operations; | 459 TransformOperations operations; |
462 operations.AppendScale(3, 3, 3); | 460 operations.AppendScale(3, 3, 3); |
463 | 461 |
464 double progress = 0.5; | 462 double progress = 0.5; |
465 | 463 |
466 WebTransformationMatrix expected; | 464 gfx::Transform expected; |
467 expected.scale3d(2, 2, 2); | 465 expected.Scale3d(2, 2, 2); |
468 | 466 |
469 EXPECT_TRANSFORMATION_MATRIX_EQ( | 467 EXPECT_TRANSFORMATION_MATRIX_EQ( |
470 expected, operations.Blend(*identity_operations[i], progress)); | 468 expected, operations.Blend(*identity_operations[i], progress)); |
471 } | 469 } |
472 } | 470 } |
473 | 471 |
474 TEST(TransformOperationTest, BlendSkewFromIdentity) { | 472 TEST(TransformOperationTest, BlendSkewFromIdentity) { |
475 ScopedVector<TransformOperations> identity_operations; | 473 ScopedVector<TransformOperations> identity_operations; |
476 GetIdentityOperations(&identity_operations); | 474 GetIdentityOperations(&identity_operations); |
477 | 475 |
478 for (size_t i = 0; i < identity_operations.size(); ++i) { | 476 for (size_t i = 0; i < identity_operations.size(); ++i) { |
479 TransformOperations operations; | 477 TransformOperations operations; |
480 operations.AppendSkew(2, 2); | 478 operations.AppendSkew(2, 2); |
481 | 479 |
482 double progress = 0.5; | 480 double progress = 0.5; |
483 | 481 |
484 WebTransformationMatrix expected; | 482 gfx::Transform expected; |
485 expected.skewX(1); | 483 expected.SkewX(1); |
486 expected.skewY(1); | 484 expected.SkewY(1); |
487 | 485 |
488 EXPECT_TRANSFORMATION_MATRIX_EQ( | 486 EXPECT_TRANSFORMATION_MATRIX_EQ( |
489 expected, operations.Blend(*identity_operations[i], progress)); | 487 expected, operations.Blend(*identity_operations[i], progress)); |
490 } | 488 } |
491 } | 489 } |
492 | 490 |
493 TEST(TransformOperationTest, BlendPerspectiveFromIdentity) { | 491 TEST(TransformOperationTest, BlendPerspectiveFromIdentity) { |
494 ScopedVector<TransformOperations> identity_operations; | 492 ScopedVector<TransformOperations> identity_operations; |
495 GetIdentityOperations(&identity_operations); | 493 GetIdentityOperations(&identity_operations); |
496 | 494 |
497 for (size_t i = 0; i < identity_operations.size(); ++i) { | 495 for (size_t i = 0; i < identity_operations.size(); ++i) { |
498 TransformOperations operations; | 496 TransformOperations operations; |
499 operations.AppendPerspective(1000); | 497 operations.AppendPerspective(1000); |
500 | 498 |
501 double progress = 0.5; | 499 double progress = 0.5; |
502 | 500 |
503 WebTransformationMatrix expected; | 501 gfx::Transform expected; |
504 expected.applyPerspective(500 + 0.5 * std::numeric_limits<double>::max()); | 502 expected.ApplyPerspectiveDepth( |
| 503 500 + 0.5 * std::numeric_limits<double>::max()); |
505 | 504 |
506 EXPECT_TRANSFORMATION_MATRIX_EQ( | 505 EXPECT_TRANSFORMATION_MATRIX_EQ( |
507 expected, operations.Blend(*identity_operations[i], progress)); | 506 expected, operations.Blend(*identity_operations[i], progress)); |
508 } | 507 } |
509 } | 508 } |
510 | 509 |
511 TEST(TransformOperationTest, BlendRotationToIdentity) { | 510 TEST(TransformOperationTest, BlendRotationToIdentity) { |
512 ScopedVector<TransformOperations> identity_operations; | 511 ScopedVector<TransformOperations> identity_operations; |
513 GetIdentityOperations(&identity_operations); | 512 GetIdentityOperations(&identity_operations); |
514 | 513 |
515 for (size_t i = 0; i < identity_operations.size(); ++i) { | 514 for (size_t i = 0; i < identity_operations.size(); ++i) { |
516 TransformOperations operations; | 515 TransformOperations operations; |
517 operations.AppendRotate(0, 0, 1, 360); | 516 operations.AppendRotate(0, 0, 1, 360); |
518 | 517 |
519 double progress = 0.5; | 518 double progress = 0.5; |
520 | 519 |
521 WebTransformationMatrix expected; | 520 gfx::Transform expected; |
522 expected.rotate3d(0, 0, 1, 180); | 521 expected.RotateAbout(gfx::Vector3dF(0, 0, 1), 180); |
523 | 522 |
524 EXPECT_TRANSFORMATION_MATRIX_EQ( | 523 EXPECT_TRANSFORMATION_MATRIX_EQ( |
525 expected, identity_operations[i]->Blend(operations, progress)); | 524 expected, identity_operations[i]->Blend(operations, progress)); |
526 } | 525 } |
527 } | 526 } |
528 | 527 |
529 TEST(TransformOperationTest, BlendTranslationToIdentity) { | 528 TEST(TransformOperationTest, BlendTranslationToIdentity) { |
530 ScopedVector<TransformOperations> identity_operations; | 529 ScopedVector<TransformOperations> identity_operations; |
531 GetIdentityOperations(&identity_operations); | 530 GetIdentityOperations(&identity_operations); |
532 | 531 |
533 for (size_t i = 0; i < identity_operations.size(); ++i) { | 532 for (size_t i = 0; i < identity_operations.size(); ++i) { |
534 TransformOperations operations; | 533 TransformOperations operations; |
535 operations.AppendTranslate(2, 2, 2); | 534 operations.AppendTranslate(2, 2, 2); |
536 | 535 |
537 double progress = 0.5; | 536 double progress = 0.5; |
538 | 537 |
539 WebTransformationMatrix expected; | 538 gfx::Transform expected; |
540 expected.translate3d(1, 1, 1); | 539 expected.Translate3d(1, 1, 1); |
541 | 540 |
542 EXPECT_TRANSFORMATION_MATRIX_EQ( | 541 EXPECT_TRANSFORMATION_MATRIX_EQ( |
543 expected, identity_operations[i]->Blend(operations, progress)); | 542 expected, identity_operations[i]->Blend(operations, progress)); |
544 } | 543 } |
545 } | 544 } |
546 | 545 |
547 TEST(TransformOperationTest, BlendScaleToIdentity) { | 546 TEST(TransformOperationTest, BlendScaleToIdentity) { |
548 ScopedVector<TransformOperations> identity_operations; | 547 ScopedVector<TransformOperations> identity_operations; |
549 GetIdentityOperations(&identity_operations); | 548 GetIdentityOperations(&identity_operations); |
550 | 549 |
551 for (size_t i = 0; i < identity_operations.size(); ++i) { | 550 for (size_t i = 0; i < identity_operations.size(); ++i) { |
552 TransformOperations operations; | 551 TransformOperations operations; |
553 operations.AppendScale(3, 3, 3); | 552 operations.AppendScale(3, 3, 3); |
554 | 553 |
555 double progress = 0.5; | 554 double progress = 0.5; |
556 | 555 |
557 WebTransformationMatrix expected; | 556 gfx::Transform expected; |
558 expected.scale3d(2, 2, 2); | 557 expected.Scale3d(2, 2, 2); |
559 | 558 |
560 EXPECT_TRANSFORMATION_MATRIX_EQ( | 559 EXPECT_TRANSFORMATION_MATRIX_EQ( |
561 expected, identity_operations[i]->Blend(operations, progress)); | 560 expected, identity_operations[i]->Blend(operations, progress)); |
562 } | 561 } |
563 } | 562 } |
564 | 563 |
565 TEST(TransformOperationTest, BlendSkewToIdentity) { | 564 TEST(TransformOperationTest, BlendSkewToIdentity) { |
566 ScopedVector<TransformOperations> identity_operations; | 565 ScopedVector<TransformOperations> identity_operations; |
567 GetIdentityOperations(&identity_operations); | 566 GetIdentityOperations(&identity_operations); |
568 | 567 |
569 for (size_t i = 0; i < identity_operations.size(); ++i) { | 568 for (size_t i = 0; i < identity_operations.size(); ++i) { |
570 TransformOperations operations; | 569 TransformOperations operations; |
571 operations.AppendSkew(2, 2); | 570 operations.AppendSkew(2, 2); |
572 | 571 |
573 double progress = 0.5; | 572 double progress = 0.5; |
574 | 573 |
575 WebTransformationMatrix expected; | 574 gfx::Transform expected; |
576 expected.skewX(1); | 575 expected.SkewX(1); |
577 expected.skewY(1); | 576 expected.SkewY(1); |
578 | 577 |
579 EXPECT_TRANSFORMATION_MATRIX_EQ( | 578 EXPECT_TRANSFORMATION_MATRIX_EQ( |
580 expected, identity_operations[i]->Blend(operations, progress)); | 579 expected, identity_operations[i]->Blend(operations, progress)); |
581 } | 580 } |
582 } | 581 } |
583 | 582 |
584 TEST(TransformOperationTest, BlendPerspectiveToIdentity) { | 583 TEST(TransformOperationTest, BlendPerspectiveToIdentity) { |
585 ScopedVector<TransformOperations> identity_operations; | 584 ScopedVector<TransformOperations> identity_operations; |
586 GetIdentityOperations(&identity_operations); | 585 GetIdentityOperations(&identity_operations); |
587 | 586 |
588 for (size_t i = 0; i < identity_operations.size(); ++i) { | 587 for (size_t i = 0; i < identity_operations.size(); ++i) { |
589 TransformOperations operations; | 588 TransformOperations operations; |
590 operations.AppendPerspective(1000); | 589 operations.AppendPerspective(1000); |
591 | 590 |
592 double progress = 0.5; | 591 double progress = 0.5; |
593 | 592 |
594 WebTransformationMatrix expected; | 593 gfx::Transform expected; |
595 expected.applyPerspective(500 + 0.5 * std::numeric_limits<double>::max()); | 594 expected.ApplyPerspectiveDepth( |
| 595 500 + 0.5 * std::numeric_limits<double>::max()); |
596 | 596 |
597 EXPECT_TRANSFORMATION_MATRIX_EQ( | 597 EXPECT_TRANSFORMATION_MATRIX_EQ( |
598 expected, identity_operations[i]->Blend(operations, progress)); | 598 expected, identity_operations[i]->Blend(operations, progress)); |
599 } | 599 } |
600 } | 600 } |
601 | 601 |
602 } // namespace | 602 } // namespace |
603 } // namespace cc | 603 } // namespace cc |
OLD | NEW |