return *this;
}
- bool operator==(const SkMatrix44& other) const {
- return !memcmp(this, &other, sizeof(*this));
- }
+ bool operator==(const SkMatrix44& other) const;
bool operator!=(const SkMatrix44& other) const {
- return !!memcmp(this, &other, sizeof(*this));
+ return !(other == *this);
}
SkMatrix44(const SkMatrix&);
SkMatrix44& operator=(const SkMatrix& src);
operator SkMatrix() const;
- SkMScalar get(int row, int col) const;
- void set(int row, int col, const SkMScalar& value);
+ SkMScalar get(int row, int col) const {
+ SkASSERT((unsigned)row <= 3);
+ SkASSERT((unsigned)col <= 3);
+ return fMat[col][row];
+ }
+ void set(int row, int col, SkMScalar value) {
+ SkASSERT((unsigned)row <= 3);
+ SkASSERT((unsigned)col <= 3);
+ fMat[col][row] = value;
+ }
+
double getDouble(int row, int col) const {
return SkMScalarToDouble(this->get(row, col));
}
this->setConcat(a, b);
}
-SkMScalar SkMatrix44::get(int row, int col) const {
- SkASSERT(row <= 3 && row >= 0);
- SkASSERT(col <= 3 && col >= 0);
- return fMat[col][row];
-}
-
-void SkMatrix44::set(int row, int col, const SkMScalar& value) {
- SkASSERT(row <= 3 && row >= 0);
- SkASSERT(col <= 3 && col >= 0);
- fMat[col][row] = value;
+bool SkMatrix44::operator==(const SkMatrix44& other) const {
+ const SkMScalar* a = &fMat[0][0];
+ const SkMScalar* b = &other.fMat[0][0];
+ for (int i = 0; i < 16; ++i) {
+ if (a[i] != b[i]) {
+ return false;
+ }
+ }
+ return true;
}
///////////////////////////////////////////////////////////////////////////////