diff options
author | Mike Reed <reed@google.com> | 2016-09-26 18:51:24 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-09-27 10:33:06 +0000 |
commit | 403d154591275b631464854e63c6050adf083686 (patch) | |
tree | 1398cb50f863394c3f96b14f703f9a8e0e6c0065 /gm | |
parent | ed924ceffb07d6f383aeb63eab336df4f13df0f1 (diff) |
Revert "Revert "replace Arithmetic xfermode with imagefilter""
This reverts commit 10ff5bfa789b6b602464e8511fdf676c6f5b1bd4.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2680
TBR=
Change-Id: Iac2f4d48d227ff426ccf02b7eae280f382ad3580
Reviewed-on: https://skia-review.googlesource.com/2680
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'gm')
-rw-r--r-- | gm/aaxfermodes.cpp | 29 | ||||
-rw-r--r-- | gm/arithmode.cpp | 2 | ||||
-rw-r--r-- | gm/imagefiltersgraph.cpp | 3 | ||||
-rw-r--r-- | gm/xfermodeimagefilter.cpp | 5 | ||||
-rw-r--r-- | gm/xfermodes.cpp | 44 |
5 files changed, 18 insertions, 65 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; ) diff --git a/gm/arithmode.cpp b/gm/arithmode.cpp index 70661a0fba..f98fbf7057 100644 --- a/gm/arithmode.cpp +++ b/gm/arithmode.cpp @@ -15,6 +15,7 @@ #define WW 100 #define HH 32 +#ifdef SK_SUPPORT_LEGACY_ARITHMETICMODE static SkBitmap make_bm() { SkBitmap bm; bm.allocN32Pixels(WW, HH); @@ -160,3 +161,4 @@ private: /////////////////////////////////////////////////////////////////////////////// DEF_GM( return new ArithmodeGM; ) +#endif diff --git a/gm/imagefiltersgraph.cpp b/gm/imagefiltersgraph.cpp index 0f3dcd10c9..980398967a 100644 --- a/gm/imagefiltersgraph.cpp +++ b/gm/imagefiltersgraph.cpp @@ -7,7 +7,6 @@ #include "gm.h" -#include "SkArithmeticMode.h" #include "SkBlurImageFilter.h" #include "SkColorFilter.h" #include "SkColorFilterImageFilter.h" @@ -90,7 +89,7 @@ protected: SkPaint paint; paint.setImageFilter( - SkXfermodeImageFilter::Make(SkArithmeticMode::Make(0, SK_Scalar1, SK_Scalar1, 0), + SkXfermodeImageFilter::MakeArithmetic(0, 1, 1, 0, true, std::move(matrixFilter), std::move(offsetFilter), nullptr)); diff --git a/gm/xfermodeimagefilter.cpp b/gm/xfermodeimagefilter.cpp index 0ff0ea9dd1..a0677c796a 100644 --- a/gm/xfermodeimagefilter.cpp +++ b/gm/xfermodeimagefilter.cpp @@ -7,7 +7,6 @@ #include "gm.h" #include "sk_tool_utils.h" -#include "SkArithmeticMode.h" #include "SkImage.h" #include "SkImageSource.h" #include "SkOffsetImageFilter.h" @@ -97,9 +96,7 @@ protected: } } // Test arithmetic mode as image filter - paint.setImageFilter(SkXfermodeImageFilter::Make( - SkArithmeticMode::Make(0, SK_Scalar1, SK_Scalar1, 0), - background)); + paint.setImageFilter(SkXfermodeImageFilter::MakeArithmetic(0, 1, 1, 0, true, background)); DrawClippedBitmap(canvas, fBitmap, paint, x, y); x += fBitmap.width() + MARGIN; if (x + fBitmap.width() > WIDTH) { diff --git a/gm/xfermodes.cpp b/gm/xfermodes.cpp index 68d267bd22..8fbbdbec6a 100644 --- a/gm/xfermodes.cpp +++ b/gm/xfermodes.cpp @@ -11,31 +11,6 @@ #include "SkXfermode.h" #include "SkPM4f.h" -#include "SkArithmeticMode.h" - -#define kCustomShift 16 -#define kCustomMask (~0xFFFF) - -enum CustomModes { - kArithmetic_CustomMode = 1 << kCustomShift, -}; - -static sk_sp<SkXfermode> make_custom(int customMode) { - switch (customMode) { - case kArithmetic_CustomMode: { - const SkScalar k1 = 0.25; - const SkScalar k2 = 0.75; - const SkScalar k3 = 0.75; - const SkScalar k4 = -0.25; - return SkArithmeticMode::Make(k1, k2, k3, k4); - } - default: - break; - } - SkASSERT(false); - return nullptr; -} - enum SrcType { //! A WxH image with a rectangle in the lower right. kRectangleImage_SrcType = 0x01, @@ -98,8 +73,6 @@ const struct { { SkXfermode::kSaturation_Mode, "Saturation", kBasic_SrcType }, { SkXfermode::kColor_Mode, "Color", kBasic_SrcType }, { SkXfermode::kLuminosity_Mode, "Luminosity", kBasic_SrcType }, - - { SkXfermode::Mode(0xFFFF), "Arithmetic", kBasic_SrcType + kArithmetic_CustomMode }, }; static void make_bitmaps(int w, int h, SkBitmap* src, SkBitmap* dst, @@ -145,7 +118,7 @@ class XfermodesGM : public skiagm::GM { * uses the implied shape of the drawing command and these modes * demonstrate that. */ - void draw_mode(SkCanvas* canvas, sk_sp<SkXfermode> mode, SrcType srcType, + void draw_mode(SkCanvas* canvas, SkXfermode::Mode mode, SrcType srcType, SkScalar x, SkScalar y) { SkPaint p; SkMatrix m; @@ -153,7 +126,7 @@ class XfermodesGM : public skiagm::GM { m.setTranslate(x, y); canvas->drawBitmap(fSrcB, x, y, &p); - p.setXfermode(std::move(mode)); + p.setXfermodeMode(mode); switch (srcType) { case kSmallTransparentImage_SrcType: { m.postScale(SK_ScalarHalf, SK_ScalarHalf, x, y); @@ -241,7 +214,7 @@ protected: } SkISize onISize() override { - return SkISize::Make(1990, 660); + return SkISize::Make(1990, 570); } void onDraw(SkCanvas* canvas) override { @@ -269,14 +242,7 @@ protected: if ((gModes[i].fSourceTypeMask & sourceType) == 0) { continue; } - sk_sp<SkXfermode> mode; - if (gModes[i].fSourceTypeMask & kCustomMask) { - mode = make_custom(gModes[i].fSourceTypeMask & kCustomMask); - } else { - mode = SkXfermode::Make(gModes[i].fMode); - } - SkRect r; - r.set(x, y, x+w, y+h); + SkRect r{ x, y, x+w, y+h }; SkPaint p; p.setStyle(SkPaint::kFill_Style); @@ -284,7 +250,7 @@ protected: canvas->drawRect(r, p); canvas->saveLayer(&r, nullptr); - draw_mode(canvas, std::move(mode), static_cast<SrcType>(sourceType), + draw_mode(canvas, gModes[i].fMode, static_cast<SrcType>(sourceType), r.fLeft, r.fTop); canvas->restore(); |