| Index: ui/gfx/interpolated_transform_unittest.cc
|
| diff --git a/ui/gfx/interpolated_transform_unittest.cc b/ui/gfx/interpolated_transform_unittest.cc
|
| index fa5debc8de8559a71f51666c450134477c75e5ec..6c5627e126d2eabfdc03c7d83eab1f0539f10648 100644
|
| --- a/ui/gfx/interpolated_transform_unittest.cc
|
| +++ b/ui/gfx/interpolated_transform_unittest.cc
|
| @@ -18,6 +18,16 @@ void CheckApproximatelyEqual(const ui::Transform& lhs,
|
| }
|
| }
|
|
|
| +float NormalizeAngle(float angle) {
|
| + while (angle < 0.0f) {
|
| + angle += 360.0f;
|
| + }
|
| + while (angle > 360.0f) {
|
| + angle -= 360.0f;
|
| + }
|
| + return angle;
|
| +}
|
| +
|
| } // namespace
|
|
|
| TEST(InterpolatedTransformTest, InterpolatedRotation) {
|
| @@ -36,9 +46,10 @@ TEST(InterpolatedTransformTest, InterpolatedRotation) {
|
| }
|
|
|
| TEST(InterpolatedTransformTest, InterpolatedScale) {
|
| - ui::InterpolatedScale interpolated_scale(0, 100);
|
| + ui::InterpolatedScale interpolated_scale(gfx::Point3f(0, 0, 0),
|
| + gfx::Point3f(100, 100, 100));
|
| ui::InterpolatedScale interpolated_scale_diff_start_end(
|
| - 0, 100, 100, 200);
|
| + gfx::Point3f(0, 0, 0), gfx::Point3f(100, 100, 100), 100, 200);
|
|
|
| for (int i = 0; i <= 100; ++i) {
|
| ui::Transform scale;
|
| @@ -90,7 +101,7 @@ TEST(InterpolatedTransformTest, InterpolatedScaleAboutPivot) {
|
| gfx::Point above_pivot(100, 200);
|
| ui::InterpolatedTransformAboutPivot interpolated_xform(
|
| pivot,
|
| - new ui::InterpolatedScale(1, 2));
|
| + new ui::InterpolatedScale(gfx::Point3f(1, 1, 1), gfx::Point3f(2, 2, 2)));
|
| ui::Transform result = interpolated_xform.Interpolate(0.0f);
|
| CheckApproximatelyEqual(ui::Transform(), result);
|
| result = interpolated_xform.Interpolate(1.0f);
|
| @@ -101,3 +112,28 @@ TEST(InterpolatedTransformTest, InterpolatedScaleAboutPivot) {
|
| result.TransformPoint(above_pivot);
|
| EXPECT_EQ(expected_result, above_pivot);
|
| }
|
| +
|
| +TEST(InterpolatedTransformTest, FactorTRS) {
|
| + for (int degrees = 0; degrees < 360; ++degrees) {
|
| + // build a transformation matrix.
|
| + ui::Transform transform;
|
| + transform.SetScale(degrees + 1, 2 * degrees + 1);
|
| + transform.ConcatRotate(degrees);
|
| + transform.ConcatTranslate(degrees * 2, -degrees * 3);
|
| +
|
| + // factor the matrix
|
| + gfx::Point translation;
|
| + float rotation;
|
| + gfx::Point3f scale;
|
| + bool success = ui::InterpolatedTransform::FactorTRS(transform,
|
| + &translation,
|
| + &rotation,
|
| + &scale);
|
| + EXPECT_TRUE(success);
|
| + EXPECT_FLOAT_EQ(translation.x(), degrees * 2);
|
| + EXPECT_FLOAT_EQ(translation.y(), -degrees * 3);
|
| + EXPECT_FLOAT_EQ(NormalizeAngle(rotation), degrees);
|
| + EXPECT_FLOAT_EQ(scale.x(), degrees + 1);
|
| + EXPECT_FLOAT_EQ(scale.y(), 2 * degrees + 1);
|
| + }
|
| +}
|
|
|