aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/aaa.cpp
diff options
context:
space:
mode:
authorGravatar Yuqian Li <liyuqian@google.com>2016-12-12 16:24:47 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-12-12 22:08:38 +0000
commit131c1fb96328ee00cb18f629eddfb665b36e9463 (patch)
treedceab172ffdb2ed7e9328609cb5f3d236c6324f9 /gm/aaa.cpp
parent9d1cc66b6065e7aafc4e999a36c9ec680e4f13b7 (diff)
Add GMs and benchs for concave Analytic AA
BUG=skia: Change-Id: I2ed6e2c4f81dc9d5c53b07332c0063f42c6b3c79 Reviewed-on: https://skia-review.googlesource.com/5771 Reviewed-by: Cary Clark <caryclark@google.com> Commit-Queue: Yuqian Li <liyuqian@google.com>
Diffstat (limited to 'gm/aaa.cpp')
-rw-r--r--gm/aaa.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/gm/aaa.cpp b/gm/aaa.cpp
index 72f953a701..889374463a 100644
--- a/gm/aaa.cpp
+++ b/gm/aaa.cpp
@@ -81,4 +81,86 @@ private:
typedef skiagm::GM INHERITED;
};
+class AnalyticAntiAliasGeneralGM : public skiagm::GM {
+public:
+ AnalyticAntiAliasGeneralGM() {}
+
+protected:
+
+ SkString onShortName() override {
+ return SkString("analytic_antialias_general");
+ }
+
+ SkISize onISize() override {
+ return SkISize::Make(W, H);
+ }
+
+ void onDraw(SkCanvas* canvas) override {
+ SkPaint p;
+ p.setColor(SK_ColorRED);
+ p.setAntiAlias(true);
+
+ canvas->clear(0xFFFFFFFF);
+
+ canvas->save();
+ canvas->rotate(1);
+ const SkScalar R = 115.2f, C = 128.0f;
+ SkPath path;
+ path.moveTo(C + R, C);
+ for (int i = 1; i < 8; ++i) {
+ SkScalar a = 2.6927937f * i;
+ SkScalar cosine;
+ SkScalar sine = SkScalarSinCos(a, &cosine);
+ path.lineTo(C + R * cosine, C + R * sine);
+ }
+ canvas->drawPath(path, p);
+ canvas->restore();
+
+ canvas->save();
+ canvas->translate(200, 0);
+ canvas->rotate(1);
+ p.setStyle(SkPaint::kStroke_Style);
+ p.setStrokeWidth(5);
+ canvas->drawPath(path, p);
+ canvas->restore();
+ }
+
+private:
+ typedef skiagm::GM INHERITED;
+};
+
+class AnalyticAntiAliasInverseGM : public skiagm::GM {
+public:
+ AnalyticAntiAliasInverseGM() {}
+
+protected:
+
+ SkString onShortName() override {
+ return SkString("analytic_antialias_inverse");
+ }
+
+ SkISize onISize() override {
+ return SkISize::Make(W, H);
+ }
+
+ void onDraw(SkCanvas* canvas) override {
+ SkPaint p;
+ p.setColor(SK_ColorRED);
+ p.setAntiAlias(true);
+
+ canvas->save();
+
+ SkPath path;
+ path.addCircle(100, 100, 30);
+ path.setFillType(SkPath::kInverseWinding_FillType);
+ canvas->drawPath(path, p);
+ canvas->restore();
+ }
+
+private:
+ typedef skiagm::GM INHERITED;
+};
+
DEF_GM( return new AnalyticAntiAliasConvexGM; )
+DEF_GM( return new AnalyticAntiAliasGeneralGM; )
+DEF_GM( return new AnalyticAntiAliasInverseGM; )