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

Side by Side Diff: ui/gfx/interpolated_transform_unittest.cc

Issue 7044062: Use SkMatrix44 for the underlying implementation of ui::Transform (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Gardening patch Created 9 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « ui/gfx/compositor/layer_animator.cc ('k') | ui/gfx/point3.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 9
10 namespace { 10 namespace {
11 11
12 const static float EPSILON = 1e-6f; 12 const static float EPSILON = 1e-6f;
13 13
14 bool ApproximatelyEqual(float lhs, float rhs) { 14 bool ApproximatelyEqual(float lhs, float rhs) {
15 if (lhs == 0) 15 if (lhs == 0)
16 return fabs(rhs) < EPSILON; 16 return fabs(rhs) < EPSILON;
17 if (rhs == 0) 17 if (rhs == 0)
18 return fabs(lhs) < EPSILON; 18 return fabs(lhs) < EPSILON;
19 return fabs(lhs - rhs) / std::max(fabs(rhs), fabs(lhs)) < EPSILON; 19 return fabs(lhs - rhs) / std::max(fabs(rhs), fabs(lhs)) < EPSILON;
20 } 20 }
21 21
22 bool ApproximatelyEqual(const ui::Transform& lhs, const ui::Transform& rhs) { 22 bool ApproximatelyEqual(const ui::Transform& lhs, const ui::Transform& rhs) {
23 for (int i = 0; i < 9; ++i) { 23 for (int i = 0; i < 4; ++i) {
24 if (!ApproximatelyEqual(lhs.matrix()[i], rhs.matrix()[i])) 24 for (int j = 0; j < 4; ++j) {
25 return false; 25 if (!ApproximatelyEqual(lhs.matrix().get(i, j),
26 rhs.matrix().get(i, j))) {
27 return false;
28 }
29 }
26 } 30 }
27 return true; 31 return true;
28 } 32 }
29 33
30 } // namespace 34 } // namespace
31 35
32 TEST(InterpolatedTransformTest, InterpolatedRotation) { 36 TEST(InterpolatedTransformTest, InterpolatedRotation) {
33 ui::InterpolatedRotation interpolated_rotation(0, 100); 37 ui::InterpolatedRotation interpolated_rotation(0, 100);
34 ui::InterpolatedRotation interpolated_rotation_diff_start_end( 38 ui::InterpolatedRotation interpolated_rotation_diff_start_end(
35 0, 100, 100, 200); 39 0, 100, 100, 200);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 gfx::Point pivot(100, 100); 84 gfx::Point pivot(100, 100);
81 gfx::Point above_pivot(100, 200); 85 gfx::Point above_pivot(100, 200);
82 ui::InterpolatedRotation rot(0, 90); 86 ui::InterpolatedRotation rot(0, 90);
83 ui::InterpolatedTransformAboutPivot interpolated_xform( 87 ui::InterpolatedTransformAboutPivot interpolated_xform(
84 pivot, 88 pivot,
85 new ui::InterpolatedRotation(0, 90)); 89 new ui::InterpolatedRotation(0, 90));
86 ui::Transform result = interpolated_xform.Interpolate(0.0f); 90 ui::Transform result = interpolated_xform.Interpolate(0.0f);
87 EXPECT_TRUE(ApproximatelyEqual(ui::Transform(), result)); 91 EXPECT_TRUE(ApproximatelyEqual(ui::Transform(), result));
88 result = interpolated_xform.Interpolate(1.0f); 92 result = interpolated_xform.Interpolate(1.0f);
89 gfx::Point expected_result = pivot; 93 gfx::Point expected_result = pivot;
90 EXPECT_TRUE(result.TransformPoint(&pivot)); 94 result.TransformPoint(pivot);
91 EXPECT_EQ(expected_result, pivot); 95 EXPECT_EQ(expected_result, pivot);
92 expected_result = gfx::Point(0, 100); 96 expected_result = gfx::Point(0, 100);
93 EXPECT_TRUE(result.TransformPoint(&above_pivot)); 97 result.TransformPoint(above_pivot);
94 EXPECT_EQ(expected_result, above_pivot); 98 EXPECT_EQ(expected_result, above_pivot);
95 } 99 }
96 100
97 TEST(InterpolatedTransformTest, InterpolatedScaleAboutPivot) { 101 TEST(InterpolatedTransformTest, InterpolatedScaleAboutPivot) {
98 gfx::Point pivot(100, 100); 102 gfx::Point pivot(100, 100);
99 gfx::Point above_pivot(100, 200); 103 gfx::Point above_pivot(100, 200);
100 ui::InterpolatedTransformAboutPivot interpolated_xform( 104 ui::InterpolatedTransformAboutPivot interpolated_xform(
101 pivot, 105 pivot,
102 new ui::InterpolatedScale(1, 2)); 106 new ui::InterpolatedScale(1, 2));
103 ui::Transform result = interpolated_xform.Interpolate(0.0f); 107 ui::Transform result = interpolated_xform.Interpolate(0.0f);
104 EXPECT_TRUE(ApproximatelyEqual(ui::Transform(), result)); 108 EXPECT_TRUE(ApproximatelyEqual(ui::Transform(), result));
105 result = interpolated_xform.Interpolate(1.0f); 109 result = interpolated_xform.Interpolate(1.0f);
106 gfx::Point expected_result = pivot; 110 gfx::Point expected_result = pivot;
107 EXPECT_TRUE(result.TransformPoint(&pivot)); 111 result.TransformPoint(pivot);
108 EXPECT_EQ(expected_result, pivot); 112 EXPECT_EQ(expected_result, pivot);
109 expected_result = gfx::Point(100, 300); 113 expected_result = gfx::Point(100, 300);
110 EXPECT_TRUE(result.TransformPoint(&above_pivot)); 114 result.TransformPoint(above_pivot);
111 EXPECT_EQ(expected_result, above_pivot); 115 EXPECT_EQ(expected_result, above_pivot);
112 } 116 }
OLDNEW
« no previous file with comments | « ui/gfx/compositor/layer_animator.cc ('k') | ui/gfx/point3.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698