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 /gm/pictureshader.cpp | |
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 'gm/pictureshader.cpp')
-rw-r--r-- | gm/pictureshader.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/gm/pictureshader.cpp b/gm/pictureshader.cpp index c622ee3fae..461f7e9697 100644 --- a/gm/pictureshader.cpp +++ b/gm/pictureshader.cpp @@ -51,7 +51,7 @@ protected: } SkISize onISize() SK_OVERRIDE { - return SkISize::Make(1400, 1250); + return SkISize::Make(1400, 1450); } void onDraw(SkCanvas* canvas) SK_OVERRIDE { @@ -61,6 +61,28 @@ protected: this->drawSceneColumn(canvas, SkPoint::Make(fSceneSize * 2.4f, fSceneSize * 6.4f), 1, 1, 2); this->drawSceneColumn(canvas, SkPoint::Make(fSceneSize * 4.8f, 0), 2, 1, 0); this->drawSceneColumn(canvas, SkPoint::Make(fSceneSize * 9.6f, 0), 2, 2, 0); + + // One last custom row to exercise negative scaling + SkMatrix ctm, localMatrix; + ctm.setTranslate(fSceneSize * 2.1f, fSceneSize * 13.8f); + ctm.preScale(-1, -1); + localMatrix.setScale(2, 2); + this->drawScene(canvas, ctm, localMatrix, 0); + + ctm.setTranslate(fSceneSize * 2.4f, fSceneSize * 12.8f); + localMatrix.setScale(-1, -1); + this->drawScene(canvas, ctm, localMatrix, 0); + + ctm.setTranslate(fSceneSize * 4.8f, fSceneSize * 12.3f); + ctm.preScale(2, 2); + this->drawScene(canvas, ctm, localMatrix, 0); + + ctm.setTranslate(fSceneSize * 13.8f, fSceneSize * 14.3f); + ctm.preScale(-2, -2); + localMatrix.setTranslate(fTileSize / 4, fTileSize / 4); + localMatrix.preRotate(45); + localMatrix.preScale(-2, -2); + this->drawScene(canvas, ctm, localMatrix, 0); } private: |