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

Side by Side Diff: cc/animation/transform_operations_unittest.cc

Issue 642983003: cc: Make PictureLayerImpl use a better choice for animated raster scale. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: animationscale: onemorerename Created 6 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
OLDNEW
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 <limits> 5 #include <limits>
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/memory/scoped_vector.h" 8 #include "base/memory/scoped_vector.h"
9 #include "cc/animation/transform_operations.h" 9 #include "cc/animation/transform_operations.h"
10 #include "cc/test/geometry_test_utils.h" 10 #include "cc/test/geometry_test_utils.h"
(...skipping 1384 matching lines...) Expand 10 before | Expand all | Expand 10 after
1395 1395
1396 TransformOperations operations2; 1396 TransformOperations operations2;
1397 operations2.AppendIdentity(); 1397 operations2.AppendIdentity();
1398 operations2.AppendTranslate(3.f, 2.f, 1.f); 1398 operations2.AppendTranslate(3.f, 2.f, 1.f);
1399 gfx::Transform translation_transform; 1399 gfx::Transform translation_transform;
1400 translation_transform.Translate3d(1.f, 2.f, 3.f); 1400 translation_transform.Translate3d(1.f, 2.f, 3.f);
1401 operations2.AppendMatrix(translation_transform); 1401 operations2.AppendMatrix(translation_transform);
1402 EXPECT_TRUE(operations2.IsTranslation()); 1402 EXPECT_TRUE(operations2.IsTranslation());
1403 } 1403 }
1404 1404
1405 TEST(TransformOperationTest, MaximumScale) { 1405 TEST(TransformOperationTest, ScaleComponent) {
1406 gfx::Vector3dF scale;
1407
1408 // Scale.
1406 TransformOperations operations1; 1409 TransformOperations operations1;
1407 operations1.AppendScale(3.f, 2.f, 5.f); 1410 operations1.AppendScale(-3.f, 2.f, 5.f);
1408 TransformOperations operations2; 1411 EXPECT_TRUE(operations1.ScaleComponent(&scale));
1409 operations2.AppendScale(6.f, 5.f, 2.f); 1412 EXPECT_EQ(gfx::Vector3dF(-3.f, 2.f, 5.f), scale);
1410 1413
1411 float max_scale = 0.f; 1414 // Translate + Scale.
1412 EXPECT_TRUE(operations2.MaximumScale(operations1, 0.f, 1.f, &max_scale));
1413 // x at progress 1.f
1414 EXPECT_EQ(6.f, max_scale);
1415
1416 EXPECT_TRUE(operations2.MaximumScale(operations1, -1.f, 1.f, &max_scale));
1417 // z at progress -1.f
1418 EXPECT_EQ(8.f, max_scale);
1419
1420 EXPECT_TRUE(operations2.MaximumScale(operations1, 0.f, 2.f, &max_scale));
1421 // x at progress 2.f
1422 EXPECT_EQ(9.f, max_scale);
1423
1424 TransformOperations operations3;
1425 operations3.AppendScale(1.f, 4.f, 1.f);
1426 TransformOperations operations4;
1427
1428 EXPECT_TRUE(operations4.MaximumScale(operations3, 0.f, 1.f, &max_scale));
1429 // y at progress 0.f
1430 EXPECT_EQ(4.f, max_scale);
1431
1432 EXPECT_TRUE(operations4.MaximumScale(operations3, -1.f, 1.f, &max_scale));
1433 // y at progress -1.f
1434 EXPECT_EQ(7.f, max_scale);
1435
1436 EXPECT_TRUE(operations4.MaximumScale(operations3, 0.f, 2.f, &max_scale));
1437 // y at progress 0.f
1438 EXPECT_EQ(4.f, max_scale);
1439
1440 TransformOperations operations5; 1415 TransformOperations operations5;
1441 operations5.AppendTranslate(1.f, 2.f, 3.f); 1416 operations5.AppendTranslate(1.f, 2.f, 3.f);
1442 operations5.AppendScale(1.f, 1.f, 4.f); 1417 operations5.AppendScale(2.f, 5.f, 4.f);
1418 EXPECT_TRUE(operations5.ScaleComponent(&scale));
1419 EXPECT_EQ(gfx::Vector3dF(2.f, 5.f, 4.f), scale);
1420
1421 // Translate + Scale + Matrix with translate.
1443 gfx::Transform translation_transform; 1422 gfx::Transform translation_transform;
1444 translation_transform.Translate3d(1.f, 2.f, 3.f); 1423 translation_transform.Translate3d(1.f, 2.f, 3.f);
1445 operations5.AppendMatrix(translation_transform); 1424 operations5.AppendMatrix(translation_transform);
1446 TransformOperations operations6; 1425 EXPECT_TRUE(operations5.ScaleComponent(&scale));
1447 operations6.AppendTranslate(2.f, 3.f, 4.f); 1426 EXPECT_EQ(gfx::Vector3dF(2.f, 5.f, 4.f), scale);
1448 operations6.AppendScale(2.f, 5.f, 1.f);
1449 operations6.AppendMatrix(translation_transform);
1450
1451 EXPECT_TRUE(operations6.MaximumScale(operations5, 0.f, 1.f, &max_scale));
1452 // y at progress 1.f
1453 EXPECT_EQ(5.f, max_scale);
1454
1455 EXPECT_TRUE(operations6.MaximumScale(operations5, -1.f, 1.f, &max_scale));
1456 // z at progress -1.f
1457 EXPECT_EQ(7.f, max_scale);
1458
1459 EXPECT_TRUE(operations6.MaximumScale(operations5, 0.f, 2.f, &max_scale));
1460 // y at progress 2.f
1461 EXPECT_EQ(9.f, max_scale);
1462 } 1427 }
1463 1428
1464 TEST(TransformOperationTest, MaximumScaleCannotBeComputed) { 1429 TEST(TransformOperationTest, ScaleComponentCannotBeComputed) {
1430 gfx::Vector3dF scale;
1431
1432 // Scale can.
1465 TransformOperations operations1; 1433 TransformOperations operations1;
1466 operations1.AppendScale(2.f, 2.f, 2.f); 1434 operations1.AppendScale(2.f, 2.f, 2.f);
1435 EXPECT_TRUE(operations1.ScaleComponent(&scale));
1436 EXPECT_EQ(gfx::Vector3dF(2.f, 2.f, 2.f), scale);
1437
1438 // Translate can.
1467 TransformOperations operations2; 1439 TransformOperations operations2;
1468 operations2.AppendTranslate(1.f, 2.f, 3.f); 1440 operations2.AppendTranslate(1.f, 2.f, 3.f);
1441 EXPECT_TRUE(operations2.ScaleComponent(&scale));
1442 EXPECT_EQ(gfx::Vector3dF(1.f, 1.f, 1.f), scale);
1469 1443
1470 float max_scale = 0.f; 1444 // Scale + translate can.
1445 TransformOperations operations3;
1446 operations3.AppendScale(2.f, 3.f, 2.f);
1447 operations3.AppendTranslate(1.f, 2.f, 3.f);
1448 EXPECT_TRUE(operations3.ScaleComponent(&scale));
1449 EXPECT_EQ(gfx::Vector3dF(2.f, 3.f, 2.f), scale);
1471 1450
1472 // Non-matching operations. 1451 // Two Scales can't.
1473 EXPECT_FALSE(operations2.MaximumScale(operations1, 0.f, 1.f, &max_scale)); 1452 TransformOperations operations4;
1453 operations4.AppendScale(2.f, 3.f, 2.f);
1454 operations4.AppendScale(3.f, 2.f, 3.f);
1455 EXPECT_FALSE(operations4.ScaleComponent(&scale));
1474 1456
1475 TransformOperations operations3; 1457 // Matrix can't.
1476 operations3.AppendScale(2.f, 2.f, 2.f);
1477 operations3.AppendTranslate(1.f, 2.f, 3.f);
1478 operations3.AppendScale(3.f, 3.f, 3.f);
1479 TransformOperations operations4;
1480 operations4.AppendScale(4.f, 4.f, 4.f);
1481 operations4.AppendTranslate(2.f, 3.f, 4.f);
1482 operations4.AppendScale(5.f, 5.f, 5.f);
1483
1484 // More that one scale operation in a sequence.
1485 EXPECT_FALSE(operations4.MaximumScale(operations3, 0.f, 1.f, &max_scale));
1486
1487 TransformOperations operations5; 1458 TransformOperations operations5;
1488 operations5.AppendScale(2.f, 2.f, 2.f); 1459 operations5.AppendScale(2.f, 2.f, 2.f);
1489 gfx::Transform scaling_transform; 1460 gfx::Transform scaling_transform;
1490 scaling_transform.Scale(2.f, 2.f); 1461 scaling_transform.Scale(2.f, 2.f);
1491 operations5.AppendMatrix(scaling_transform); 1462 operations5.AppendMatrix(scaling_transform);
1492 TransformOperations operations6; 1463 EXPECT_FALSE(operations5.ScaleComponent(&scale));
1493 operations6.AppendScale(3.f, 3.f, 3.f);
1494 gfx::Transform translation_transform;
1495 translation_transform.Translate3d(1.f, 2.f, 3.f);
1496 operations6.AppendMatrix(translation_transform);
1497 1464
1498 // Non-translation matrix operation. 1465 // Scale + Rotate can't.
1499 EXPECT_FALSE(operations6.MaximumScale(operations5, 0.f, 1.f, &max_scale));
1500
1501 TransformOperations operations7; 1466 TransformOperations operations7;
1502 operations7.AppendScale(2.f, 2.f, 2.f); 1467 operations7.AppendScale(2.f, 2.f, 2.f);
1503 operations7.AppendRotate(1.f, 2.f, 3.f, 4.f); 1468 operations7.AppendRotate(1.f, 2.f, 3.f, 4.f);
1504 TransformOperations operations8; 1469 EXPECT_FALSE(operations7.ScaleComponent(&scale));
1505 operations8.AppendScale(3.f, 3.f, 3.f);
1506 operations8.AppendRotate(3.f, 4.f, 5.f, 6.f);
1507 1470
1508 // Rotation operation. 1471 // Scale + Skew can't.
1509 EXPECT_FALSE(operations8.MaximumScale(operations7, 0.f, 1.f, &max_scale));
1510
1511 TransformOperations operations9; 1472 TransformOperations operations9;
1512 operations9.AppendScale(2.f, 2.f, 2.f); 1473 operations9.AppendScale(2.f, 2.f, 2.f);
1513 operations9.AppendSkew(1.f, 2.f); 1474 operations9.AppendSkew(1.f, 2.f);
1514 TransformOperations operations10; 1475 EXPECT_FALSE(operations9.ScaleComponent(&scale));
1515 operations10.AppendScale(3.f, 3.f, 3.f);
1516 operations10.AppendSkew(3.f, 4.f);
1517 1476
1518 // Skew operation. 1477 // Scale + Perspective can't.
1519 EXPECT_FALSE(operations10.MaximumScale(operations9, 0.f, 1.f, &max_scale));
1520
1521 TransformOperations operations11; 1478 TransformOperations operations11;
1522 operations11.AppendScale(2.f, 2.f, 2.f); 1479 operations11.AppendScale(2.f, 2.f, 2.f);
1523 operations11.AppendPerspective(1.f); 1480 operations11.AppendPerspective(1.f);
1524 TransformOperations operations12; 1481 EXPECT_FALSE(operations11.ScaleComponent(&scale));
1525 operations12.AppendScale(3.f, 3.f, 3.f);
1526 operations12.AppendPerspective(3.f);
1527
1528 // Perspective operation.
1529 EXPECT_FALSE(operations12.MaximumScale(operations11, 0.f, 1.f, &max_scale));
1530 } 1482 }
1531 1483
1532 } // namespace 1484 } // namespace
1533 } // namespace cc 1485 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698