Index: src/core/SkMatrix.cpp |
diff --git a/src/core/SkMatrix.cpp b/src/core/SkMatrix.cpp |
index 49cffa45f577d7ead8d88316312400c0bddc51df..4f94013d3cec9b8dc80209255b53f5a125a26b00 100644 |
--- a/src/core/SkMatrix.cpp |
+++ b/src/core/SkMatrix.cpp |
@@ -1844,11 +1844,26 @@ bool SkDecomposeUpper2x2(const SkMatrix& matrix, |
////////////////////////////////////////////////////////////////////////////////////////////////// |
void SkRSXform::toQuad(SkScalar width, SkScalar height, SkPoint quad[4]) const { |
+#if 0 |
+ // This is the slow way, but it documents what we're doing |
quad[0].set(0, 0); |
quad[1].set(width, 0); |
quad[2].set(width, height); |
quad[3].set(0, height); |
SkMatrix m; |
m.setRSXform(*this).mapPoints(quad, quad, 4); |
+#else |
+ const SkScalar m00 = fSCos; |
+ const SkScalar m01 = -fSSin; |
+ const SkScalar m02 = fTx; |
+ const SkScalar m10 = -m01; |
+ const SkScalar m11 = m00; |
+ const SkScalar m12 = fTy; |
+ |
+ quad[0].set(m02, m12); |
+ quad[1].set(m00 * width + m02, m10 * width + m12); |
+ quad[2].set(m00 * width + m01 * height + m02, m10 * width + m11 * height + m12); |
+ quad[3].set(m01 * height + m02, m11 * height + m12); |
+#endif |
} |