aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2016-09-26 18:51:24 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-09-27 10:33:06 +0000
commit403d154591275b631464854e63c6050adf083686 (patch)
tree1398cb50f863394c3f96b14f703f9a8e0e6c0065 /gm
parented924ceffb07d6f383aeb63eab336df4f13df0f1 (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.cpp29
-rw-r--r--gm/arithmode.cpp2
-rw-r--r--gm/imagefiltersgraph.cpp3
-rw-r--r--gm/xfermodeimagefilter.cpp5
-rw-r--r--gm/xfermodes.cpp44
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();