| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ui/gfx/interpolated_transform.h" | 5 #include "ui/gfx/interpolated_transform.h" |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
| 9 #include "ui/gfx/geometry/rect.h" | 9 #include "ui/gfx/geometry/rect.h" |
| 10 | 10 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 gfx::Transform scale; | 46 gfx::Transform scale; |
| 47 scale.Scale3d(i, i, i); | 47 scale.Scale3d(i, i, i); |
| 48 gfx::Transform interpolated = interpolated_scale.Interpolate(i / 100.0f); | 48 gfx::Transform interpolated = interpolated_scale.Interpolate(i / 100.0f); |
| 49 CheckApproximatelyEqual(scale, interpolated); | 49 CheckApproximatelyEqual(scale, interpolated); |
| 50 interpolated = interpolated_scale_diff_start_end.Interpolate(i + 100); | 50 interpolated = interpolated_scale_diff_start_end.Interpolate(i + 100); |
| 51 CheckApproximatelyEqual(scale, interpolated); | 51 CheckApproximatelyEqual(scale, interpolated); |
| 52 } | 52 } |
| 53 } | 53 } |
| 54 | 54 |
| 55 TEST(InterpolatedTransformTest, InterpolatedTranslate) { | 55 TEST(InterpolatedTransformTest, InterpolatedTranslate) { |
| 56 ui::InterpolatedTranslation interpolated_xform(gfx::Point(0, 0), | 56 ui::InterpolatedTranslation interpolated_xform(gfx::PointF(), |
| 57 gfx::Point(100, 100)); | 57 gfx::PointF(100.f, 100.f)); |
| 58 | 58 |
| 59 ui::InterpolatedTranslation interpolated_xform_diff_start_end( | 59 ui::InterpolatedTranslation interpolated_xform_diff_start_end( |
| 60 gfx::Point(0, 0), gfx::Point(100, 100), 100, 200); | 60 gfx::PointF(), gfx::PointF(100.f, 100.f), 100, 200); |
| 61 | 61 |
| 62 for (int i = 0; i <= 100; ++i) { | 62 for (int i = 0; i <= 100; ++i) { |
| 63 gfx::Transform xform; | 63 gfx::Transform xform; |
| 64 xform.Translate(i, i); | 64 xform.Translate(i, i); |
| 65 gfx::Transform interpolated = interpolated_xform.Interpolate(i / 100.0f); | 65 gfx::Transform interpolated = interpolated_xform.Interpolate(i / 100.0f); |
| 66 CheckApproximatelyEqual(xform, interpolated); | 66 CheckApproximatelyEqual(xform, interpolated); |
| 67 interpolated = interpolated_xform_diff_start_end.Interpolate(i + 100); | 67 interpolated = interpolated_xform_diff_start_end.Interpolate(i + 100); |
| 68 CheckApproximatelyEqual(xform, interpolated); | 68 CheckApproximatelyEqual(xform, interpolated); |
| 69 } | 69 } |
| 70 } | 70 } |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 } | 142 } |
| 143 | 143 |
| 144 scoped_ptr<ui::InterpolatedTransform> rotation( | 144 scoped_ptr<ui::InterpolatedTransform> rotation( |
| 145 new ui::InterpolatedTransformAboutPivot( | 145 new ui::InterpolatedTransformAboutPivot( |
| 146 old_pivot, | 146 old_pivot, |
| 147 new ui::InterpolatedRotation(reversed ? degrees : 0, | 147 new ui::InterpolatedRotation(reversed ? degrees : 0, |
| 148 reversed ? 0 : degrees))); | 148 reversed ? 0 : degrees))); |
| 149 | 149 |
| 150 scoped_ptr<ui::InterpolatedTransform> translation( | 150 scoped_ptr<ui::InterpolatedTransform> translation( |
| 151 new ui::InterpolatedTranslation( | 151 new ui::InterpolatedTranslation( |
| 152 gfx::Point(0, 0), | 152 gfx::PointF(), gfx::PointF(new_pivot.x() - old_pivot.x(), |
| 153 gfx::Point(new_pivot.x() - old_pivot.x(), | 153 new_pivot.y() - old_pivot.y()))); |
| 154 new_pivot.y() - old_pivot.y()))); | |
| 155 | 154 |
| 156 float scale_factor = 0.9f; | 155 float scale_factor = 0.9f; |
| 157 scoped_ptr<ui::InterpolatedTransform> scale_down( | 156 scoped_ptr<ui::InterpolatedTransform> scale_down( |
| 158 new ui::InterpolatedScale(1.0f, scale_factor, 0.0f, 0.5f)); | 157 new ui::InterpolatedScale(1.0f, scale_factor, 0.0f, 0.5f)); |
| 159 | 158 |
| 160 scoped_ptr<ui::InterpolatedTransform> scale_up( | 159 scoped_ptr<ui::InterpolatedTransform> scale_up( |
| 161 new ui::InterpolatedScale(1.0f, 1.0f / scale_factor, 0.5f, 1.0f)); | 160 new ui::InterpolatedScale(1.0f, 1.0f / scale_factor, 0.5f, 1.0f)); |
| 162 | 161 |
| 163 scoped_ptr<ui::InterpolatedTransform> to_return( | 162 scoped_ptr<ui::InterpolatedTransform> to_return( |
| 164 new ui::InterpolatedConstantTransform(gfx::Transform())); | 163 new ui::InterpolatedConstantTransform(gfx::Transform())); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 199 target_bounds.height()) / initial_bounds.width(); | 198 target_bounds.height()) / initial_bounds.width(); |
| 200 float scale_y = static_cast<float>( | 199 float scale_y = static_cast<float>( |
| 201 target_bounds.width()) / initial_bounds.height(); | 200 target_bounds.width()) / initial_bounds.height(); |
| 202 | 201 |
| 203 scoped_ptr<ui::InterpolatedTransform> scale( | 202 scoped_ptr<ui::InterpolatedTransform> scale( |
| 204 new ui::InterpolatedScale(gfx::Point3F(1, 1, 1), | 203 new ui::InterpolatedScale(gfx::Point3F(1, 1, 1), |
| 205 gfx::Point3F(scale_x, scale_y, 1))); | 204 gfx::Point3F(scale_x, scale_y, 1))); |
| 206 | 205 |
| 207 scoped_ptr<ui::InterpolatedTransform> translation( | 206 scoped_ptr<ui::InterpolatedTransform> translation( |
| 208 new ui::InterpolatedTranslation( | 207 new ui::InterpolatedTranslation( |
| 209 gfx::Point(), | 208 gfx::PointF(), gfx::PointF(target_bounds.x() - initial_bounds.x(), |
| 210 gfx::Point(target_bounds.x() - initial_bounds.x(), | 209 target_bounds.y() - initial_bounds.y()))); |
| 211 target_bounds.y() - initial_bounds.y()))); | |
| 212 | 210 |
| 213 scoped_ptr<ui::InterpolatedTransform> rotation( | 211 scoped_ptr<ui::InterpolatedTransform> rotation( |
| 214 new ui::InterpolatedRotation(0, 4.0f)); | 212 new ui::InterpolatedRotation(0, 4.0f)); |
| 215 | 213 |
| 216 scoped_ptr<ui::InterpolatedTransform> rotation_about_pivot( | 214 scoped_ptr<ui::InterpolatedTransform> rotation_about_pivot( |
| 217 new ui::InterpolatedTransformAboutPivot( | 215 new ui::InterpolatedTransformAboutPivot( |
| 218 gfx::Point(initial_bounds.width() * 0.5, | 216 gfx::Point(initial_bounds.width() * 0.5, |
| 219 initial_bounds.height() * 0.5), | 217 initial_bounds.height() * 0.5), |
| 220 rotation.release())); | 218 rotation.release())); |
| 221 | 219 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 232 gfx::Transform interpolated = maximize->Interpolate(1.0f); | 230 gfx::Transform interpolated = maximize->Interpolate(1.0f); |
| 233 SkMatrix44& m = interpolated.matrix(); | 231 SkMatrix44& m = interpolated.matrix(); |
| 234 // Upper-left 3x3 matrix should all be 0, 1 or -1. | 232 // Upper-left 3x3 matrix should all be 0, 1 or -1. |
| 235 for (int row = 0; row < 3; ++row) { | 233 for (int row = 0; row < 3; ++row) { |
| 236 for (int col = 0; col < 3; ++col) { | 234 for (int col = 0; col < 3; ++col) { |
| 237 float entry = m.get(row, col); | 235 float entry = m.get(row, col); |
| 238 EXPECT_TRUE(entry == 0 || entry == 1 || entry == -1); | 236 EXPECT_TRUE(entry == 0 || entry == 1 || entry == -1); |
| 239 } | 237 } |
| 240 } | 238 } |
| 241 } | 239 } |
| OLD | NEW |