diff options
author | Jim Van Verth <jvanverth@google.com> | 2017-04-20 17:25:26 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-04-21 13:28:45 +0000 |
commit | d952a9929b2dc826955249c755b6fed5627491c2 (patch) | |
tree | ef150bfcaea7e1779be3f6b15f13646f8650854a /gm/ovals.cpp | |
parent | 2af746c1e74af30d0fb02d5c35a178e61d152965 (diff) |
Fix reflected ovals.
Addresses an issue with ovals transformed by a matrix with a reflection.
Also adds a further check for circles to ensure that teeny tiny ovals
(sizes < SK_ScalarNearlyZero) aren't treated as circles.
Change-Id: Ie50e4a98365eba7c23e53e68886ebac981ed1def
Reviewed-on: https://skia-review.googlesource.com/13989
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Diffstat (limited to 'gm/ovals.cpp')
-rw-r--r-- | gm/ovals.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gm/ovals.cpp b/gm/ovals.cpp index ec9bd75d47..d6afdcbba7 100644 --- a/gm/ovals.cpp +++ b/gm/ovals.cpp @@ -268,6 +268,26 @@ protected: canvas->restore(); } + + // reflected oval + for (int i = 0; i < fPaints.count(); ++i) { + SkRect oval = SkRect::MakeLTRB(-30, -30, 30, 30); + canvas->save(); + // position the oval, and make it at off-integer coords. + canvas->translate(kXStart + SK_Scalar1 * kXStep * 5 + SK_Scalar1 / 4, + kYStart + SK_Scalar1 * kYStep * i + 3 * SK_Scalar1 / 4 + + SK_ScalarHalf * kYStep); + canvas->rotate(90); + canvas->scale(1, -1); + canvas->scale(1, 0.66f); + + SkColor color = genColor(&rand); + fPaints[i].setColor(color); + + canvas->drawRect(oval, rectPaint); + canvas->drawOval(oval, fPaints[i]); + canvas->restore(); + } } private: |