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

Side by Side Diff: ui/gfx/transform.h

Issue 11774005: Migrate more functions from MathUtil to gfx::Transform (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Converted constructors to row-major input 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 | Annotate | Revision Log
OLDNEW
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 #ifndef UI_GFX_TRANSFORM_H_ 5 #ifndef UI_GFX_TRANSFORM_H_
6 #define UI_GFX_TRANSFORM_H_ 6 #define UI_GFX_TRANSFORM_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 19 matching lines...) Expand all
30 Transform() : matrix_(SkMatrix44::kIdentity_Constructor) {} 30 Transform() : matrix_(SkMatrix44::kIdentity_Constructor) {}
31 31
32 // Skips initializing this matrix to avoid overhead, when we know it will be 32 // Skips initializing this matrix to avoid overhead, when we know it will be
33 // initialized before use. 33 // initialized before use.
34 Transform(SkipInitialization) 34 Transform(SkipInitialization)
35 : matrix_(SkMatrix44::kUninitialized_Constructor) {} 35 : matrix_(SkMatrix44::kUninitialized_Constructor) {}
36 Transform(const Transform& rhs) : matrix_(rhs.matrix_) {} 36 Transform(const Transform& rhs) : matrix_(rhs.matrix_) {}
37 // Initialize with the concatenation of lhs * rhs. 37 // Initialize with the concatenation of lhs * rhs.
38 Transform(const Transform& lhs, const Transform& rhs) 38 Transform(const Transform& lhs, const Transform& rhs)
39 : matrix_(lhs.matrix_, rhs.matrix_) {} 39 : matrix_(lhs.matrix_, rhs.matrix_) {}
40 // Constructs a transform from explicit 16 matrix elements. NOTE: Elements
danakj 2013/01/11 04:14:12 nit: drop the NOTE? the variable names kinda say t
41 // should be given in row-major order.
42 Transform(double col1row1, double col2row1, double col3row1, double col4row1,
43 double col1row2, double col2row2, double col3row2, double col4row2,
44 double col1row3, double col2row3, double col3row3, double col4row3,
45 double col1row4, double col2row4, double col3row4, double col4row4);
46 // Constructs a transform from explicit 2d elements. All other matrix
47 // elements remain the same as the corresponding elements of an identity
48 // matrix.
49 Transform(double col1row1, double col2row1,
50 double col1row2, double col2row2,
51 double x_translation, double y_translation);
40 ~Transform() {} 52 ~Transform() {}
41 53
42 bool operator==(const Transform& rhs) const { return matrix_ == rhs.matrix_; } 54 bool operator==(const Transform& rhs) const { return matrix_ == rhs.matrix_; }
43 bool operator!=(const Transform& rhs) const { return matrix_ != rhs.matrix_; } 55 bool operator!=(const Transform& rhs) const { return matrix_ != rhs.matrix_; }
44 56
45 // Resets this transform to the identity transform. 57 // Resets this transform to the identity transform.
46 void MakeIdentity() { matrix_.setIdentity(); } 58 void MakeIdentity() { matrix_.setIdentity(); }
47 59
48 // Applies the current transformation on a 2d rotation and assigns the result 60 // Applies the current transformation on a 2d rotation and assigns the result
49 // to |this|. 61 // to |this|.
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 // Returns true if a layer with a forward-facing normal of (0, 0, 1) would 125 // Returns true if a layer with a forward-facing normal of (0, 0, 1) would
114 // have its back side facing frontwards after applying the transform. 126 // have its back side facing frontwards after applying the transform.
115 bool IsBackFaceVisible() const; 127 bool IsBackFaceVisible() const;
116 128
117 // Inverts the transform which is passed in. Returns true if successful. 129 // Inverts the transform which is passed in. Returns true if successful.
118 bool GetInverse(Transform* transform) const WARN_UNUSED_RESULT; 130 bool GetInverse(Transform* transform) const WARN_UNUSED_RESULT;
119 131
120 // Transposes this transform in place. 132 // Transposes this transform in place.
121 void Transpose(); 133 void Transpose();
122 134
135 // Set 3rd row and 3rd colum to (0, 0, 1, 0). Note that this flattening
136 // operation is not quite the same as an orthographic projection and is
137 // technically not a linear operation.
138 //
139 // One useful interpretation of doing this operation:
140 // - For x and y values, the new transform behaves effectively like an
141 // orthographic projection was added to the matrix sequence.
142 // - For z values, the new transform overrides any effect that the transform
143 // had on z, and instead it preserves the z value for any points that are
144 // transformed.
145 // - Because of linearity of transforms, this flattened transform also
146 // preserves the effect that any subsequent (multiplied from the right)
147 // transforms would have on z values.
148 //
149 void FlattenTo2d();
150
123 // Applies the transformation on the point. Returns true if the point is 151 // Applies the transformation on the point. Returns true if the point is
124 // transformed successfully. 152 // transformed successfully.
125 void TransformPoint(Point3F& point) const; 153 void TransformPoint(Point3F& point) const;
126 154
127 // Applies the transformation on the point. Returns true if the point is 155 // Applies the transformation on the point. Returns true if the point is
128 // transformed successfully. Rounds the result to the nearest point. 156 // transformed successfully. Rounds the result to the nearest point.
129 void TransformPoint(Point& point) const; 157 void TransformPoint(Point& point) const;
130 158
131 // Applies the reverse transformation on the point. Returns true if the 159 // Applies the reverse transformation on the point. Returns true if the
132 // transformation can be inverted. 160 // transformation can be inverted.
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 Point3F& point) const; 211 Point3F& point) const;
184 212
185 SkMatrix44 matrix_; 213 SkMatrix44 matrix_;
186 214
187 // copy/assign are allowed. 215 // copy/assign are allowed.
188 }; 216 };
189 217
190 } // namespace gfx 218 } // namespace gfx
191 219
192 #endif // UI_GFX_TRANSFORM_H_ 220 #endif // UI_GFX_TRANSFORM_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698