diff options
author | Yuqian Li <liyuqian@google.com> | 2016-12-12 16:24:47 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-12-12 22:08:38 +0000 |
commit | 131c1fb96328ee00cb18f629eddfb665b36e9463 (patch) | |
tree | dceab172ffdb2ed7e9328609cb5f3d236c6324f9 /gm/aaa.cpp | |
parent | 9d1cc66b6065e7aafc4e999a36c9ec680e4f13b7 (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.cpp | 82 |
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; ) |