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

Side by Side Diff: include/utils/SkMatrix44.h

Issue 25484006: Add perspective support to SkMatrix44 initializers. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Add test and header comments Created 7 years, 2 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 | « no previous file | src/utils/SkMatrix44.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef SkMatrix44_DEFINED 8 #ifndef SkMatrix44_DEFINED
9 #define SkMatrix44_DEFINED 9 #define SkMatrix44_DEFINED
10 10
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 fTypeMask = src.fTypeMask; 130 fTypeMask = src.fTypeMask;
131 } 131 }
132 return *this; 132 return *this;
133 } 133 }
134 134
135 bool operator==(const SkMatrix44& other) const; 135 bool operator==(const SkMatrix44& other) const;
136 bool operator!=(const SkMatrix44& other) const { 136 bool operator!=(const SkMatrix44& other) const {
137 return !(other == *this); 137 return !(other == *this);
138 } 138 }
139 139
140 /* When converting from SkMatrix44 to SkMatrix, the third row and
141 * column is dropped. When converting from SkMatrix to SkMatrix44
142 * the third row and column remain as identity:
143 * [ a b c ] [ a b 0 c ]
144 * [ d e f ] -> [ d e 0 f ]
145 * [ g h i ] [ 0 0 1 0 ]
146 * [ g h 0 i ]
147 */
140 SkMatrix44(const SkMatrix&); 148 SkMatrix44(const SkMatrix&);
141 SkMatrix44& operator=(const SkMatrix& src); 149 SkMatrix44& operator=(const SkMatrix& src);
142 operator SkMatrix() const; 150 operator SkMatrix() const;
143 151
144 /** 152 /**
145 * Return a reference to a const identity matrix 153 * Return a reference to a const identity matrix
146 */ 154 */
147 static const SkMatrix44& I(); 155 static const SkMatrix44& I();
148 156
149 enum TypeMask { 157 enum TypeMask {
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 void setRowMajord(const double[]); 254 void setRowMajord(const double[]);
247 255
248 #ifdef SK_MSCALAR_IS_FLOAT 256 #ifdef SK_MSCALAR_IS_FLOAT
249 void setColMajor(const SkMScalar data[]) { this->setColMajorf(data); } 257 void setColMajor(const SkMScalar data[]) { this->setColMajorf(data); }
250 void setRowMajor(const SkMScalar data[]) { this->setRowMajorf(data); } 258 void setRowMajor(const SkMScalar data[]) { this->setRowMajorf(data); }
251 #else 259 #else
252 void setColMajor(const SkMScalar data[]) { this->setColMajord(data); } 260 void setColMajor(const SkMScalar data[]) { this->setColMajord(data); }
253 void setRowMajor(const SkMScalar data[]) { this->setRowMajord(data); } 261 void setRowMajor(const SkMScalar data[]) { this->setRowMajord(data); }
254 #endif 262 #endif
255 263
264 /* This sets the top-left of the matrix, i.e. the translation and
265 * perspective components remain untouched. */
reed1 2013/10/03 09:00:40 the i.e. section is incorrect: set3x3 sets *all* e
aelias_OOO_until_Jul13 2013/10/03 19:05:36 Right, fixed the comment.
256 void set3x3(SkMScalar m00, SkMScalar m01, SkMScalar m02, 266 void set3x3(SkMScalar m00, SkMScalar m01, SkMScalar m02,
257 SkMScalar m10, SkMScalar m11, SkMScalar m12, 267 SkMScalar m10, SkMScalar m11, SkMScalar m12,
258 SkMScalar m20, SkMScalar m21, SkMScalar m22); 268 SkMScalar m20, SkMScalar m21, SkMScalar m22);
259 269
260 void setTranslate(SkMScalar dx, SkMScalar dy, SkMScalar dz); 270 void setTranslate(SkMScalar dx, SkMScalar dy, SkMScalar dz);
261 void preTranslate(SkMScalar dx, SkMScalar dy, SkMScalar dz); 271 void preTranslate(SkMScalar dx, SkMScalar dy, SkMScalar dz);
262 void postTranslate(SkMScalar dx, SkMScalar dy, SkMScalar dz); 272 void postTranslate(SkMScalar dx, SkMScalar dy, SkMScalar dz);
263 273
264 void setScale(SkMScalar sx, SkMScalar sy, SkMScalar sz); 274 void setScale(SkMScalar sx, SkMScalar sy, SkMScalar sz);
265 void preScale(SkMScalar sx, SkMScalar sy, SkMScalar sz); 275 void preScale(SkMScalar sx, SkMScalar sy, SkMScalar sz);
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 /** 406 /**
397 * Does not take the time to 'compute' the typemask. Only returns true if 407 * Does not take the time to 'compute' the typemask. Only returns true if
398 * we already know that this matrix is identity. 408 * we already know that this matrix is identity.
399 */ 409 */
400 inline bool isTriviallyIdentity() const { 410 inline bool isTriviallyIdentity() const {
401 return 0 == fTypeMask; 411 return 0 == fTypeMask;
402 } 412 }
403 }; 413 };
404 414
405 #endif 415 #endif
OLDNEW
« no previous file with comments | « no previous file | src/utils/SkMatrix44.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698