From 131c1fb96328ee00cb18f629eddfb665b36e9463 Mon Sep 17 00:00:00 2001 From: Yuqian Li Date: Mon, 12 Dec 2016 16:24:47 -0500 Subject: 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 Commit-Queue: Yuqian Li --- gm/aaa.cpp | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) (limited to 'gm') 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; ) -- cgit v1.2.3