diff options
author | Mike Reed <reed@google.com> | 2016-09-26 20:40:57 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-09-26 20:53:19 +0000 |
commit | 10ff5bfa789b6b602464e8511fdf676c6f5b1bd4 (patch) | |
tree | 1eb96e7533f882aa935b5d62132f4205bfedd2c9 /gm/aaxfermodes.cpp | |
parent | 29111a3e71f59b26c1feebf6b30db5c68a27d5a9 (diff) |
Revert "replace Arithmetic xfermode with imagefilter"
This reverts commit Ia3f3b721854c516f3b7f8c44f71f40a8a2eeb9b4.
Reason for revert: need to guard the no-gpu codepath
Original issue's description:
> replace Arithmetic xfermode with imagefilter
>
> chrome pre-cl: https://codereview.chromium.org/2369023002/
>
> BUG=skia:
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2595
>
> Change-Id: Ia3f3b721854c516f3b7f8c44f71f40a8a2eeb9b4
> Reviewed-on: https://skia-review.googlesource.com/2595
> Commit-Queue: Mike Reed <reed@google.com>
> Reviewed-by: Florin Malita <fmalita@chromium.org>
> Reviewed-by: Robert Phillips <robertphillips@google.com>
>
TBR=robertphillips@google.com,fmalita@chromium.org,fmalita@google.com,reed@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Change-Id: I761799b594a0379c6bf356e6abc73552c3d19480
Reviewed-on: https://skia-review.googlesource.com/2661
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'gm/aaxfermodes.cpp')
-rw-r--r-- | gm/aaxfermodes.cpp | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/gm/aaxfermodes.cpp b/gm/aaxfermodes.cpp index 678a8379e3..78f7d3e324 100644 --- a/gm/aaxfermodes.cpp +++ b/gm/aaxfermodes.cpp @@ -39,11 +39,13 @@ enum Shape { kLast_Shape = kConcave_Shape }; +namespace skiagm { + /** * Verifies AA works properly on all Xfermodes, including arithmetic, with both opaque and unknown * src colors. */ -class AAXfermodesGM : public skiagm::GM { +class AAXfermodesGM : public GM { public: AAXfermodesGM() {} @@ -118,9 +120,6 @@ protected: canvas->translate(0, kSubtitleSpacing + kShapeSpacing/2); for (size_t m = 0; m <= SkXfermode::kLastCoeffMode; m++) { - if (firstMode + m > SkXfermode::kLastMode) { - break; - } SkXfermode::Mode mode = static_cast<SkXfermode::Mode>(firstMode + m); canvas->save(); @@ -211,7 +210,7 @@ protected: if (maxSum > 255) { SkPaint dimPaint; dimPaint.setAntiAlias(false); - dimPaint.setXfermodeMode(SkXfermode::kDstIn_Mode); + dimPaint.setXfermode(SkXfermode::Make(SkXfermode::kDstIn_Mode)); if (255 != paint->getAlpha()) { // Dim the src and dst colors. dimPaint.setARGB(255 * 255 / maxSum, 0, 0, 0); @@ -228,10 +227,16 @@ protected: } void drawShape(SkCanvas* canvas, Shape shape, const SkPaint& paint, SkXfermode::Mode mode) { - SkASSERT(mode <= SkXfermode::kLastMode); SkPaint shapePaint(paint); shapePaint.setAntiAlias(kSquare_Shape != shape); - shapePaint.setXfermodeMode(mode); + + sk_sp<SkXfermode> xfermode; + if (mode <= SkXfermode::kLastMode) { + xfermode = SkXfermode::Make(mode); + } else { + xfermode = SkArithmeticMode::Make(+1.0f, +0.25f, -0.5f, +0.1f); + } + shapePaint.setXfermode(std::move(xfermode)); switch (shape) { case kSquare_Shape: @@ -268,6 +273,12 @@ private: SkPath fOval; SkPath fConcave; - typedef skiagm::GM INHERITED; + typedef GM INHERITED; }; -DEF_GM( return new AAXfermodesGM; ) + +////////////////////////////////////////////////////////////////////////////// + +static GM* MyFactory(void*) { return new AAXfermodesGM; } +static GMRegistry reg(MyFactory); + +} |