aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar fmalita <fmalita@chromium.org>2015-01-15 10:45:56 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2015-01-15 10:45:56 -0800
commitb0878797b45f93b3bfe6084094c74affd10207df (patch)
tree5348826c04c47bcb7b505b049a2c89b311b549c1 /src
parent114c3cd0543d77aa0ac08d8af436ac7f9d32714d (diff)
SkPictureShader should handle negative scaling gracefully.
Let's not choke on inverted tiles. BUG=chromium:447707 R=robertphillips@google.com,reed@google.com Review URL: https://codereview.chromium.org/852213002
Diffstat (limited to 'src')
-rw-r--r--src/core/SkPictureShader.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/core/SkPictureShader.cpp b/src/core/SkPictureShader.cpp
index 5a1e61849d..819a0d0ae7 100644
--- a/src/core/SkPictureShader.cpp
+++ b/src/core/SkPictureShader.cpp
@@ -157,7 +157,8 @@ SkShader* SkPictureShader::refBitmapShader(const SkMatrix& matrix, const SkMatri
scale.set(SkScalarSqrt(m.getScaleX() * m.getScaleX() + m.getSkewX() * m.getSkewX()),
SkScalarSqrt(m.getScaleY() * m.getScaleY() + m.getSkewY() * m.getSkewY()));
}
- SkSize scaledSize = SkSize::Make(scale.x() * fTile.width(), scale.y() * fTile.height());
+ SkSize scaledSize = SkSize::Make(SkScalarAbs(scale.x() * fTile.width()),
+ SkScalarAbs(scale.y() * fTile.height()));
// Clamp the tile size to about 16M pixels
static const SkScalar kMaxTileArea = 4096 * 4096;