SkPictureShader: floor scaledSize not to exceed maxTextureSize
authorgen.kim <gen.kim@samsung.com>
Mon, 11 May 2015 01:33:29 +0000 (18:33 -0700)
committerCommit bot <commit-bot@chromium.org>
Mon, 11 May 2015 01:33:29 +0000 (18:33 -0700)
scaledSize becomes larger than maxTextureSize by zoom level
because it is rounded.

BUG=chromium:485916

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

src/core/SkPictureShader.cpp

index e831320..2c835ed 100644 (file)
@@ -178,8 +178,8 @@ SkShader* SkPictureShader::refBitmapShader(const SkMatrix& matrix, const SkMatri
         if (scaledSize.width() > maxTextureSize || scaledSize.height() > maxTextureSize) {
             SkScalar downScale = SkScalarDiv(maxTextureSize,
                                             SkMax32(scaledSize.width(), scaledSize.height()));
-            scaledSize.set(SkScalarMul(scaledSize.width(), downScale),
-                           SkScalarMul(scaledSize.height(), downScale));
+            scaledSize.set(SkScalarFloorToScalar(SkScalarMul(scaledSize.width(), downScale)),
+                           SkScalarFloorToScalar(SkScalarMul(scaledSize.height(), downScale)));
         }
     }
 #endif