aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/aaxfermodes.cpp
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2016-09-26 20:40:57 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-09-26 20:53:19 +0000
commit10ff5bfa789b6b602464e8511fdf676c6f5b1bd4 (patch)
tree1eb96e7533f882aa935b5d62132f4205bfedd2c9 /gm/aaxfermodes.cpp
parent29111a3e71f59b26c1feebf6b30db5c68a27d5a9 (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.cpp29
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);
+
+}