| 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 <limits> | 5 #include <limits> |
| 6 | 6 |
| 7 #include "base/memory/scoped_vector.h" | 7 #include "base/memory/scoped_vector.h" |
| 8 #include "cc/animation/transform_operations.h" | 8 #include "cc/animation/transform_operations.h" |
| 9 #include "cc/test/geometry_test_utils.h" | 9 #include "cc/test/geometry_test_utils.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 425 TransformOperations operations; | 425 TransformOperations operations; |
| 426 operations.AppendRotate(0, 0, 1, 360); | 426 operations.AppendRotate(0, 0, 1, 360); |
| 427 | 427 |
| 428 double progress = 0.5; | 428 double progress = 0.5; |
| 429 | 429 |
| 430 gfx::Transform expected; | 430 gfx::Transform expected; |
| 431 expected.RotateAbout(gfx::Vector3dF(0, 0, 1), 180); | 431 expected.RotateAbout(gfx::Vector3dF(0, 0, 1), 180); |
| 432 | 432 |
| 433 EXPECT_TRANSFORMATION_MATRIX_EQ( | 433 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 434 expected, operations.Blend(*identity_operations[i], progress)); | 434 expected, operations.Blend(*identity_operations[i], progress)); |
| 435 |
| 436 progress = -0.5; |
| 437 |
| 438 expected.MakeIdentity(); |
| 439 expected.RotateAbout(gfx::Vector3dF(0, 0, 1), -180); |
| 440 |
| 441 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 442 expected, operations.Blend(*identity_operations[i], progress)); |
| 443 |
| 444 progress = 1.5; |
| 445 |
| 446 expected.MakeIdentity(); |
| 447 expected.RotateAbout(gfx::Vector3dF(0, 0, 1), 540); |
| 448 |
| 449 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 450 expected, operations.Blend(*identity_operations[i], progress)); |
| 435 } | 451 } |
| 436 } | 452 } |
| 437 | 453 |
| 438 TEST(TransformOperationTest, BlendTranslationFromIdentity) { | 454 TEST(TransformOperationTest, BlendTranslationFromIdentity) { |
| 439 ScopedVector<TransformOperations> identity_operations; | 455 ScopedVector<TransformOperations> identity_operations; |
| 440 GetIdentityOperations(&identity_operations); | 456 GetIdentityOperations(&identity_operations); |
| 441 | 457 |
| 442 for (size_t i = 0; i < identity_operations.size(); ++i) { | 458 for (size_t i = 0; i < identity_operations.size(); ++i) { |
| 443 TransformOperations operations; | 459 TransformOperations operations; |
| 444 operations.AppendTranslate(2, 2, 2); | 460 operations.AppendTranslate(2, 2, 2); |
| 445 | 461 |
| 446 double progress = 0.5; | 462 double progress = 0.5; |
| 447 | 463 |
| 448 gfx::Transform expected; | 464 gfx::Transform expected; |
| 449 expected.Translate3d(1, 1, 1); | 465 expected.Translate3d(1, 1, 1); |
| 450 | 466 |
| 451 EXPECT_TRANSFORMATION_MATRIX_EQ( | 467 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 452 expected, operations.Blend(*identity_operations[i], progress)); | 468 expected, operations.Blend(*identity_operations[i], progress)); |
| 469 |
| 470 progress = -0.5; |
| 471 |
| 472 expected.MakeIdentity(); |
| 473 expected.Translate3d(-1, -1, -1); |
| 474 |
| 475 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 476 expected, operations.Blend(*identity_operations[i], progress)); |
| 477 |
| 478 progress = 1.5; |
| 479 |
| 480 expected.MakeIdentity(); |
| 481 expected.Translate3d(3, 3, 3); |
| 482 |
| 483 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 484 expected, operations.Blend(*identity_operations[i], progress)); |
| 453 } | 485 } |
| 454 } | 486 } |
| 455 | 487 |
| 456 TEST(TransformOperationTest, BlendScaleFromIdentity) { | 488 TEST(TransformOperationTest, BlendScaleFromIdentity) { |
| 457 ScopedVector<TransformOperations> identity_operations; | 489 ScopedVector<TransformOperations> identity_operations; |
| 458 GetIdentityOperations(&identity_operations); | 490 GetIdentityOperations(&identity_operations); |
| 459 | 491 |
| 460 for (size_t i = 0; i < identity_operations.size(); ++i) { | 492 for (size_t i = 0; i < identity_operations.size(); ++i) { |
| 461 TransformOperations operations; | 493 TransformOperations operations; |
| 462 operations.AppendScale(3, 3, 3); | 494 operations.AppendScale(3, 3, 3); |
| 463 | 495 |
| 464 double progress = 0.5; | 496 double progress = 0.5; |
| 465 | 497 |
| 466 gfx::Transform expected; | 498 gfx::Transform expected; |
| 467 expected.Scale3d(2, 2, 2); | 499 expected.Scale3d(2, 2, 2); |
| 468 | 500 |
| 469 EXPECT_TRANSFORMATION_MATRIX_EQ( | 501 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 470 expected, operations.Blend(*identity_operations[i], progress)); | 502 expected, operations.Blend(*identity_operations[i], progress)); |
| 503 |
| 504 progress = -0.5; |
| 505 |
| 506 expected.MakeIdentity(); |
| 507 expected.Scale3d(0, 0, 0); |
| 508 |
| 509 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 510 expected, operations.Blend(*identity_operations[i], progress)); |
| 511 |
| 512 progress = 1.5; |
| 513 |
| 514 expected.MakeIdentity(); |
| 515 expected.Scale3d(4, 4, 4); |
| 516 |
| 517 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 518 expected, operations.Blend(*identity_operations[i], progress)); |
| 471 } | 519 } |
| 472 } | 520 } |
| 473 | 521 |
| 474 TEST(TransformOperationTest, BlendSkewFromIdentity) { | 522 TEST(TransformOperationTest, BlendSkewFromIdentity) { |
| 475 ScopedVector<TransformOperations> identity_operations; | 523 ScopedVector<TransformOperations> identity_operations; |
| 476 GetIdentityOperations(&identity_operations); | 524 GetIdentityOperations(&identity_operations); |
| 477 | 525 |
| 478 for (size_t i = 0; i < identity_operations.size(); ++i) { | 526 for (size_t i = 0; i < identity_operations.size(); ++i) { |
| 479 TransformOperations operations; | 527 TransformOperations operations; |
| 480 operations.AppendSkew(2, 2); | 528 operations.AppendSkew(2, 2); |
| 481 | 529 |
| 482 double progress = 0.5; | 530 double progress = 0.5; |
| 483 | 531 |
| 484 gfx::Transform expected; | 532 gfx::Transform expected; |
| 485 expected.SkewX(1); | 533 expected.SkewX(1); |
| 486 expected.SkewY(1); | 534 expected.SkewY(1); |
| 487 | 535 |
| 488 EXPECT_TRANSFORMATION_MATRIX_EQ( | 536 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 489 expected, operations.Blend(*identity_operations[i], progress)); | 537 expected, operations.Blend(*identity_operations[i], progress)); |
| 538 |
| 539 progress = -0.5; |
| 540 |
| 541 expected.MakeIdentity(); |
| 542 expected.SkewX(-1); |
| 543 expected.SkewY(-1); |
| 544 |
| 545 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 546 expected, operations.Blend(*identity_operations[i], progress)); |
| 547 |
| 548 progress = 1.5; |
| 549 |
| 550 expected.MakeIdentity(); |
| 551 expected.SkewX(3); |
| 552 expected.SkewY(3); |
| 553 |
| 554 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 555 expected, operations.Blend(*identity_operations[i], progress)); |
| 490 } | 556 } |
| 491 } | 557 } |
| 492 | 558 |
| 493 TEST(TransformOperationTest, BlendPerspectiveFromIdentity) { | 559 TEST(TransformOperationTest, BlendPerspectiveFromIdentity) { |
| 494 ScopedVector<TransformOperations> identity_operations; | 560 ScopedVector<TransformOperations> identity_operations; |
| 495 GetIdentityOperations(&identity_operations); | 561 GetIdentityOperations(&identity_operations); |
| 496 | 562 |
| 497 for (size_t i = 0; i < identity_operations.size(); ++i) { | 563 for (size_t i = 0; i < identity_operations.size(); ++i) { |
| 498 TransformOperations operations; | 564 TransformOperations operations; |
| 499 operations.AppendPerspective(1000); | 565 operations.AppendPerspective(1000); |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 594 | 660 |
| 595 gfx::Transform expected; | 661 gfx::Transform expected; |
| 596 expected.ApplyPerspectiveDepth( | 662 expected.ApplyPerspectiveDepth( |
| 597 500 + 0.5 * std::numeric_limits<double>::max()); | 663 500 + 0.5 * std::numeric_limits<double>::max()); |
| 598 | 664 |
| 599 EXPECT_TRANSFORMATION_MATRIX_EQ( | 665 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 600 expected, identity_operations[i]->Blend(operations, progress)); | 666 expected, identity_operations[i]->Blend(operations, progress)); |
| 601 } | 667 } |
| 602 } | 668 } |
| 603 | 669 |
| 670 TEST(TransformOperationTest, ExtrapolatePerspectiveBlending) { |
| 671 TransformOperations operations1; |
| 672 operations1.AppendPerspective(1000); |
| 673 |
| 674 TransformOperations operations2; |
| 675 operations2.AppendPerspective(500); |
| 676 |
| 677 gfx::Transform expected; |
| 678 expected.ApplyPerspectiveDepth(250); |
| 679 |
| 680 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 681 expected, operations1.Blend(operations2, -0.5)); |
| 682 |
| 683 expected.MakeIdentity(); |
| 684 expected.ApplyPerspectiveDepth(1250); |
| 685 |
| 686 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 687 expected, operations1.Blend(operations2, 1.5)); |
| 688 } |
| 689 |
| 690 TEST(TransformOperationTest, ExtrapolateMatrixBlending) { |
| 691 gfx::Transform transform1; |
| 692 transform1.Translate3d(1, 1, 1); |
| 693 TransformOperations operations1; |
| 694 operations1.AppendMatrix(transform1); |
| 695 |
| 696 gfx::Transform transform2; |
| 697 transform2.Translate3d(3, 3, 3); |
| 698 TransformOperations operations2; |
| 699 operations2.AppendMatrix(transform2); |
| 700 |
| 701 gfx::Transform expected; |
| 702 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 703 expected, operations1.Blend(operations2, 1.5)); |
| 704 |
| 705 expected.Translate3d(4, 4, 4); |
| 706 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 707 expected, operations1.Blend(operations2, -0.5)); |
| 708 } |
| 709 |
| 604 } // namespace | 710 } // namespace |
| 605 } // namespace cc | 711 } // namespace cc |
| OLD | NEW |