| Index: include/core/SkMatrix44.h
|
| diff --git a/include/core/SkMatrix44.h b/include/core/SkMatrix44.h
|
| index 715ee782c868d6b1b65525860934a7a4e8f73e70..6b5e65d072b451c4b6d51f7e4b9d5b5dd889a8a9 100644
|
| --- a/include/core/SkMatrix44.h
|
| +++ b/include/core/SkMatrix44.h
|
| @@ -136,8 +136,15 @@ public:
|
| kIdentity_Constructor
|
| };
|
|
|
| - SkMatrix44(Uninitialized_Constructor) { }
|
| - SkMatrix44(Identity_Constructor) { this->setIdentity(); }
|
| + SkMatrix44(Uninitialized_Constructor) {}
|
| +
|
| + constexpr SkMatrix44(Identity_Constructor)
|
| + : fMat{{ 1, 0, 0, 0, },
|
| + { 0, 1, 0, 0, },
|
| + { 0, 0, 1, 0, },
|
| + { 0, 0, 0, 1, }}
|
| + , fTypeMask(kIdentity_Mask)
|
| + {}
|
|
|
| SK_ATTR_DEPRECATED("use the constructors that take an enum")
|
| SkMatrix44() { this->setIdentity(); }
|
| @@ -281,6 +288,10 @@ public:
|
| * array. The given array must have room for exactly 16 entries. Whenever
|
| * possible, they will try to use memcpy rather than an entry-by-entry
|
| * copy.
|
| + *
|
| + * Col major indicates that consecutive elements of columns will be stored
|
| + * contiguously in memory. Row major indicates that consecutive elements
|
| + * of rows will be stored contiguously in memory.
|
| */
|
| void asColMajorf(float[]) const;
|
| void asColMajord(double[]) const;
|
| @@ -291,6 +302,11 @@ public:
|
| * array. The given array must have room for exactly 16 entries. Whenever
|
| * possible, they will try to use memcpy rather than an entry-by-entry
|
| * copy.
|
| + *
|
| + * Col major indicates that input memory will be treated as if consecutive
|
| + * elements of columns are stored contiguously in memory. Row major
|
| + * indicates that input memory will be treated as if consecutive elements
|
| + * of rows are stored contiguously in memory.
|
| */
|
| void setColMajorf(const float[]);
|
| void setColMajord(const double[]);
|
| @@ -306,11 +322,12 @@ public:
|
| #endif
|
|
|
| /* This sets the top-left of the matrix and clears the translation and
|
| - * perspective components (with [3][3] set to 1). */
|
| + * perspective components (with [3][3] set to 1). mXY is interpreted
|
| + * as the matrix entry at col = X, row = Y. */
|
| void set3x3(SkMScalar m00, SkMScalar m01, SkMScalar m02,
|
| SkMScalar m10, SkMScalar m11, SkMScalar m12,
|
| SkMScalar m20, SkMScalar m21, SkMScalar m22);
|
| - void set3x3ColMajorf(const float[]);
|
| + void set3x3RowMajorf(const float[]);
|
|
|
| void setTranslate(SkMScalar dx, SkMScalar dy, SkMScalar dz);
|
| void preTranslate(SkMScalar dx, SkMScalar dy, SkMScalar dz);
|
| @@ -430,6 +447,7 @@ public:
|
| double determinant() const;
|
|
|
| private:
|
| + /* This is indexed by [col][row]. */
|
| SkMScalar fMat[4][4];
|
| mutable unsigned fTypeMask;
|
|
|
| @@ -439,13 +457,7 @@ private:
|
| kAllPublic_Masks = 0xF
|
| };
|
|
|
| - /** Efficiently reads 12 matrix entries, ignoring the last col.
|
| - * This is typically useful when we know the last col is (0, 0, 0, 1).
|
| - */
|
| void as4x3ColMajorf(float[]) const;
|
| -
|
| - /* This sets the top-left of the matrix and clears the
|
| - * perspective components (with [3][3] set to 1). */
|
| void set4x3ColMajorf(const float[]);
|
|
|
| SkMScalar transX() const { return fMat[3][0]; }
|
|
|