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

Side by Side Diff: cc/transform_operations.cc

Issue 12035029: Finish migrating cc/ from WebKit::WebTransformationMatrix to gfx::Transform (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fix nits Created 7 years, 11 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
« no previous file with comments | « cc/transform_operations.h ('k') | cc/transform_operations_unittest.cc » ('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 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 "cc/transform_operations.h" 5 #include "cc/transform_operations.h"
6 6 #include "ui/gfx/vector3d_f.h"
7 using WebKit::WebTransformationMatrix;
8 7
9 namespace cc { 8 namespace cc {
10 9
11 TransformOperations::TransformOperations() { 10 TransformOperations::TransformOperations() {
12 } 11 }
13 12
14 TransformOperations::TransformOperations(const TransformOperations& other) { 13 TransformOperations::TransformOperations(const TransformOperations& other) {
15 operations_ = other.operations_; 14 operations_ = other.operations_;
16 } 15 }
17 16
18 TransformOperations::~TransformOperations() { 17 TransformOperations::~TransformOperations() {
19 } 18 }
20 19
21 WebTransformationMatrix TransformOperations::Apply() const { 20 gfx::Transform TransformOperations::Apply() const {
22 WebTransformationMatrix to_return; 21 gfx::Transform to_return;
23 for (size_t i = 0; i < operations_.size(); ++i) 22 for (size_t i = 0; i < operations_.size(); ++i)
24 to_return.multiply(operations_[i].matrix); 23 to_return.PreconcatTransform(operations_[i].matrix);
25 return to_return; 24 return to_return;
26 } 25 }
27 26
28 WebTransformationMatrix TransformOperations::Blend( 27 gfx::Transform TransformOperations::Blend(
29 const TransformOperations& from, double progress) const { 28 const TransformOperations& from, double progress) const {
30 WebTransformationMatrix to_return; 29 gfx::Transform to_return;
31 BlendInternal(from, progress, to_return); 30 BlendInternal(from, progress, &to_return);
32 return to_return; 31 return to_return;
33 } 32 }
34 33
35 bool TransformOperations::MatchesTypes(const TransformOperations& other) const { 34 bool TransformOperations::MatchesTypes(const TransformOperations& other) const {
36 if (IsIdentity() || other.IsIdentity()) 35 if (IsIdentity() || other.IsIdentity())
37 return true; 36 return true;
38 37
39 if (operations_.size() != other.operations_.size()) 38 if (operations_.size() != other.operations_.size())
40 return false; 39 return false;
41 40
42 for (size_t i = 0; i < operations_.size(); ++i) { 41 for (size_t i = 0; i < operations_.size(); ++i) {
43 if (operations_[i].type != other.operations_[i].type 42 if (operations_[i].type != other.operations_[i].type
44 && !operations_[i].IsIdentity() 43 && !operations_[i].IsIdentity()
45 && !other.operations_[i].IsIdentity()) 44 && !other.operations_[i].IsIdentity())
46 return false; 45 return false;
47 } 46 }
48 47
49 return true; 48 return true;
50 } 49 }
51 50
52 bool TransformOperations::CanBlendWith( 51 bool TransformOperations::CanBlendWith(
53 const TransformOperations& other) const { 52 const TransformOperations& other) const {
54 WebTransformationMatrix dummy; 53 gfx::Transform dummy;
55 return BlendInternal(other, 0.5, dummy); 54 return BlendInternal(other, 0.5, &dummy);
56 } 55 }
57 56
58 void TransformOperations::AppendTranslate(double x, double y, double z) { 57 void TransformOperations::AppendTranslate(double x, double y, double z) {
59 TransformOperation to_add; 58 TransformOperation to_add;
60 to_add.matrix.translate3d(x, y, z); 59 to_add.matrix.Translate3d(x, y, z);
61 to_add.type = TransformOperation::TransformOperationTranslate; 60 to_add.type = TransformOperation::TransformOperationTranslate;
62 to_add.translate.x = x; 61 to_add.translate.x = x;
63 to_add.translate.y = y; 62 to_add.translate.y = y;
64 to_add.translate.z = z; 63 to_add.translate.z = z;
65 operations_.push_back(to_add); 64 operations_.push_back(to_add);
66 } 65 }
67 66
68 void TransformOperations::AppendRotate(double x, double y, double z, 67 void TransformOperations::AppendRotate(double x, double y, double z,
69 double degrees) { 68 double degrees) {
70 TransformOperation to_add; 69 TransformOperation to_add;
71 to_add.matrix.rotate3d(x, y, z, degrees); 70 to_add.matrix.RotateAbout(gfx::Vector3dF(x, y, z), degrees);
72 to_add.type = TransformOperation::TransformOperationRotate; 71 to_add.type = TransformOperation::TransformOperationRotate;
73 to_add.rotate.axis.x = x; 72 to_add.rotate.axis.x = x;
74 to_add.rotate.axis.y = y; 73 to_add.rotate.axis.y = y;
75 to_add.rotate.axis.z = z; 74 to_add.rotate.axis.z = z;
76 to_add.rotate.angle = degrees; 75 to_add.rotate.angle = degrees;
77 operations_.push_back(to_add); 76 operations_.push_back(to_add);
78 } 77 }
79 78
80 void TransformOperations::AppendScale(double x, double y, double z) { 79 void TransformOperations::AppendScale(double x, double y, double z) {
81 TransformOperation to_add; 80 TransformOperation to_add;
82 to_add.matrix.scale3d(x, y, z); 81 to_add.matrix.Scale3d(x, y, z);
83 to_add.type = TransformOperation::TransformOperationScale; 82 to_add.type = TransformOperation::TransformOperationScale;
84 to_add.scale.x = x; 83 to_add.scale.x = x;
85 to_add.scale.y = y; 84 to_add.scale.y = y;
86 to_add.scale.z = z; 85 to_add.scale.z = z;
87 operations_.push_back(to_add); 86 operations_.push_back(to_add);
88 } 87 }
89 88
90 void TransformOperations::AppendSkew(double x, double y) { 89 void TransformOperations::AppendSkew(double x, double y) {
91 TransformOperation to_add; 90 TransformOperation to_add;
92 to_add.matrix.skewX(x); 91 to_add.matrix.SkewX(x);
93 to_add.matrix.skewY(y); 92 to_add.matrix.SkewY(y);
94 to_add.type = TransformOperation::TransformOperationSkew; 93 to_add.type = TransformOperation::TransformOperationSkew;
95 to_add.skew.x = x; 94 to_add.skew.x = x;
96 to_add.skew.y = y; 95 to_add.skew.y = y;
97 operations_.push_back(to_add); 96 operations_.push_back(to_add);
98 } 97 }
99 98
100 void TransformOperations::AppendPerspective(double depth) { 99 void TransformOperations::AppendPerspective(double depth) {
101 TransformOperation to_add; 100 TransformOperation to_add;
102 to_add.matrix.applyPerspective(depth); 101 to_add.matrix.ApplyPerspectiveDepth(depth);
103 to_add.type = TransformOperation::TransformOperationPerspective; 102 to_add.type = TransformOperation::TransformOperationPerspective;
104 to_add.perspective_depth = depth; 103 to_add.perspective_depth = depth;
105 operations_.push_back(to_add); 104 operations_.push_back(to_add);
106 } 105 }
107 106
108 void TransformOperations::AppendMatrix(const WebTransformationMatrix& matrix) { 107 void TransformOperations::AppendMatrix(const gfx::Transform& matrix) {
109 TransformOperation to_add; 108 TransformOperation to_add;
110 to_add.matrix = matrix; 109 to_add.matrix = matrix;
111 to_add.type = TransformOperation::TransformOperationMatrix; 110 to_add.type = TransformOperation::TransformOperationMatrix;
112 operations_.push_back(to_add); 111 operations_.push_back(to_add);
113 } 112 }
114 113
115 void TransformOperations::AppendIdentity() { 114 void TransformOperations::AppendIdentity() {
116 operations_.push_back(TransformOperation()); 115 operations_.push_back(TransformOperation());
117 } 116 }
118 117
119 bool TransformOperations::IsIdentity() const { 118 bool TransformOperations::IsIdentity() const {
120 for (size_t i = 0; i < operations_.size(); ++i) { 119 for (size_t i = 0; i < operations_.size(); ++i) {
121 if (!operations_[i].IsIdentity()) 120 if (!operations_[i].IsIdentity())
122 return false; 121 return false;
123 } 122 }
124 return true; 123 return true;
125 } 124 }
126 125
127 bool TransformOperations::BlendInternal(const TransformOperations& from, 126 bool TransformOperations::BlendInternal(const TransformOperations& from,
128 double progress, 127 double progress,
129 WebTransformationMatrix& result) const { 128 gfx::Transform* result) const {
130 bool from_identity = from.IsIdentity(); 129 bool from_identity = from.IsIdentity();
131 bool to_identity = IsIdentity(); 130 bool to_identity = IsIdentity();
132 if (from_identity && to_identity) 131 if (from_identity && to_identity)
133 return true; 132 return true;
134 133
135 if (MatchesTypes(from)) { 134 if (MatchesTypes(from)) {
136 size_t num_operations = 135 size_t num_operations =
137 std::max(from_identity ? 0 : from.operations_.size(), 136 std::max(from_identity ? 0 : from.operations_.size(),
138 to_identity ? 0 : operations_.size()); 137 to_identity ? 0 : operations_.size());
139 for (size_t i = 0; i < num_operations; ++i) { 138 for (size_t i = 0; i < num_operations; ++i) {
140 WebTransformationMatrix blended; 139 gfx::Transform blended;
141 if (!TransformOperation::BlendTransformOperations( 140 if (!TransformOperation::BlendTransformOperations(
142 from_identity ? 0 : &from.operations_[i], 141 from_identity ? 0 : &from.operations_[i],
143 to_identity ? 0 : &operations_[i], 142 to_identity ? 0 : &operations_[i],
144 progress, 143 progress,
145 blended)) 144 blended))
146 return false; 145 return false;
147 result.multiply(blended); 146 result->PreconcatTransform(blended);
148 } 147 }
149 return true; 148 return true;
150 } 149 }
151 150
152 result = Apply(); 151 *result = Apply();
153 WebTransformationMatrix from_transform = from.Apply(); 152 gfx::Transform from_transform = from.Apply();
154 return result.blend(from_transform, progress); 153 return result->Blend(from_transform, progress);
155 } 154 }
156 155
157 } // namespace cc 156 } // namespace cc
OLDNEW
« no previous file with comments | « cc/transform_operations.h ('k') | cc/transform_operations_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698