aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/aaxfermodes.cpp
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2016-09-26 15:33:00 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-09-26 20:00:07 +0000
commit0530c88067211818f7ce7bbfc0e92f3bdebc1f2b (patch)
treeeb120688e15ad6bded6417bcad13c133efd2d8e8 /gm/aaxfermodes.cpp
parent21112deff825f6603904e5d1882dd3c2dc4c1ea8 (diff)
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>
Diffstat (limited to 'gm/aaxfermodes.cpp')
-rw-r--r--gm/aaxfermodes.cpp29
1 files changed, 9 insertions, 20 deletions
diff --git a/gm/aaxfermodes.cpp b/gm/aaxfermodes.cpp
index 78f7d3e324..678a8379e3 100644
--- a/gm/aaxfermodes.cpp
+++ b/gm/aaxfermodes.cpp
@@ -39,13 +39,11 @@ 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 GM {
+class AAXfermodesGM : public skiagm::GM {
public:
AAXfermodesGM() {}
@@ -120,6 +118,9 @@ 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();
@@ -210,7 +211,7 @@ protected:
if (maxSum > 255) {
SkPaint dimPaint;
dimPaint.setAntiAlias(false);
- dimPaint.setXfermode(SkXfermode::Make(SkXfermode::kDstIn_Mode));
+ dimPaint.setXfermodeMode(SkXfermode::kDstIn_Mode);
if (255 != paint->getAlpha()) {
// Dim the src and dst colors.
dimPaint.setARGB(255 * 255 / maxSum, 0, 0, 0);
@@ -227,16 +228,10 @@ 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);
-
- 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));
+ shapePaint.setXfermodeMode(mode);
switch (shape) {
case kSquare_Shape:
@@ -273,12 +268,6 @@ private:
SkPath fOval;
SkPath fConcave;
- typedef GM INHERITED;
+ typedef skiagm::GM INHERITED;
};
-
-//////////////////////////////////////////////////////////////////////////////
-
-static GM* MyFactory(void*) { return new AAXfermodesGM; }
-static GMRegistry reg(MyFactory);
-
-}
+DEF_GM( return new AAXfermodesGM; )