aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/ovals.cpp
diff options
context:
space:
mode:
authorGravatar Jim Van Verth <jvanverth@google.com>2017-04-20 17:25:26 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-04-21 13:28:45 +0000
commitd952a9929b2dc826955249c755b6fed5627491c2 (patch)
treeef150bfcaea7e1779be3f6b15f13646f8650854a /gm/ovals.cpp
parent2af746c1e74af30d0fb02d5c35a178e61d152965 (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.cpp20
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: