move decision to smash invmatrix into unit-space (for faster repeat/mirror to after...
authorreed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 9 Sep 2013 13:42:39 +0000 (13:42 +0000)
committerreed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 9 Sep 2013 13:42:39 +0000 (13:42 +0000)
BUG=
R=humper@google.com

Review URL: https://codereview.chromium.org/23470005

git-svn-id: http://skia.googlecode.com/svn/trunk@11152 2bbb7eff-a529-9590-31e7-b0007b416f81

src/core/SkBitmapProcState.cpp

index bc9a8fb..c1874a9 100644 (file)
@@ -281,16 +281,8 @@ bool SkBitmapProcState::chooseProcs(const SkMatrix& inv, const SkPaint& paint) {
         return false;
     }
 
-    bool trivialMatrix = (inv.getType() & ~SkMatrix::kTranslate_Mask) == 0;
-    bool clampClamp = SkShader::kClamp_TileMode == fTileModeX &&
-                       SkShader::kClamp_TileMode == fTileModeY;
-
-    fInvMatrix = inv;
-    if (!(clampClamp || trivialMatrix)) {
-        fInvMatrix.postIDiv(fOrigBitmap.width(), fOrigBitmap.height());
-    }
-
     fBitmap = &fOrigBitmap;
+    fInvMatrix = inv;
 
     // initialize our filter quality to the one requested by the caller.
     // We may downgrade it later if we determine that we either don't need
@@ -308,6 +300,14 @@ bool SkBitmapProcState::chooseProcs(const SkMatrix& inv, const SkPaint& paint) {
     this->possiblyScaleImage();
 #endif
 
+    bool trivialMatrix = (fInvMatrix.getType() & ~SkMatrix::kTranslate_Mask) == 0;
+    bool clampClamp = SkShader::kClamp_TileMode == fTileModeX &&
+                      SkShader::kClamp_TileMode == fTileModeY;
+    
+    if (!(clampClamp || trivialMatrix)) {
+        fInvMatrix.postIDiv(fOrigBitmap.width(), fOrigBitmap.height());
+    }
+
     // Now that all possible changes to the matrix have taken place, check
     // to see if we're really close to a no-scale matrix.  If so, explicitly
     // set it to be so.  Subsequent code may inspect this matrix to choose