diff options
author | fmalita <fmalita@chromium.org> | 2015-01-15 10:45:56 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-01-15 10:45:56 -0800 |
commit | b0878797b45f93b3bfe6084094c74affd10207df (patch) | |
tree | 5348826c04c47bcb7b505b049a2c89b311b549c1 /src | |
parent | 114c3cd0543d77aa0ac08d8af436ac7f9d32714d (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.cpp | 3 |
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; |