aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pipe
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2016-10-28 15:42:34 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-10-28 20:06:17 +0000
commit7d954ad797176afedb9262fdea4507d0fc60eb9d (patch)
tree27c6dc324f83877371d91a58beb21e4b00176a94 /src/pipe
parent99e3f7d6fcb7b3b4340286455733a7de9eb4ef81 (diff)
remove xfermode from public api
BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4020 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot Change-Id: I19cd056f2af778f10e8c6c2b7b2735593b43dbac Reviewed-on: https://skia-review.googlesource.com/4020 Reviewed-by: Florin Malita <fmalita@chromium.org> Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'src/pipe')
-rw-r--r--src/pipe/SkPipeCanvas.cpp38
-rw-r--r--src/pipe/SkPipeCanvas.h6
-rw-r--r--src/pipe/SkPipeReader.cpp25
3 files changed, 25 insertions, 44 deletions
diff --git a/src/pipe/SkPipeCanvas.cpp b/src/pipe/SkPipeCanvas.cpp
index 31014ff4bc..e7b04ce146 100644
--- a/src/pipe/SkPipeCanvas.cpp
+++ b/src/pipe/SkPipeCanvas.cpp
@@ -352,7 +352,7 @@ void SkPipeCanvas::onDrawArc(const SkRect& bounds, SkScalar startAngle, SkScalar
}
void SkPipeCanvas::onDrawAtlas(const SkImage* image, const SkRSXform xform[], const SkRect rect[],
- const SkColor colors[], int count, SkXfermode::Mode mode,
+ const SkColor colors[], int count, SK_XFERMODE_MODE_PARAM mode,
const SkRect* cull, const SkPaint* paint) {
unsigned extra = (unsigned)mode;
SkASSERT(0 == (extra & ~kMode_DrawAtlasMask));
@@ -732,7 +732,7 @@ void SkPipeCanvas::onDrawRegion(const SkRegion& region, const SkPaint& paint) {
void SkPipeCanvas::onDrawVertices(VertexMode vmode, int vertexCount,
const SkPoint vertices[], const SkPoint texs[],
- const SkColor colors[], SkXfermode* xmode,
+ const SkColor colors[], SK_XFERMODE_PARAM xmode,
const uint16_t indices[], int indexCount,
const SkPaint& paint) {
SkASSERT(vertexCount > 0);
@@ -743,11 +743,12 @@ void SkPipeCanvas::onDrawVertices(VertexMode vmode, int vertexCount,
}
extra |= (unsigned)vmode << kVMode_DrawVerticesShift;
- SkXfermode::Mode mode = SkXfermode::kModulate_Mode;
- if (xmode && !SkXfermode::AsMode(xmode, &mode)) {
- mode = (SkXfermode::Mode)0xFF; // sentinel for read the xfer later
- }
- extra |= (unsigned)mode << kXMode_DrawVerticesShift;
+#ifdef SK_SUPPORT_LEGACY_XFERMODE_PARAM
+ SkBlendMode bmode = xmode ? xmode->blend() : SkBlendMode::kModulate;
+#else
+ SkBlendMode bmode = xmode;
+#endif
+ extra |= (unsigned)bmode << kXMode_DrawVerticesShift;
if (texs) {
extra |= kHasTex_DrawVerticesMask;
@@ -764,9 +765,6 @@ void SkPipeCanvas::onDrawVertices(VertexMode vmode, int vertexCount,
if (vertexCount > kVCount_DrawVerticesMask) {
writer.write32(vertexCount);
}
- if (mode == (SkXfermode::Mode)0xFF) {
- writer.writeFlattenable(xmode);
- }
writer.write(vertices, vertexCount * sizeof(SkPoint));
if (texs) {
writer.write(texs, vertexCount * sizeof(SkPoint));
@@ -783,18 +781,17 @@ void SkPipeCanvas::onDrawVertices(VertexMode vmode, int vertexCount,
}
void SkPipeCanvas::onDrawPatch(const SkPoint cubics[12], const SkColor colors[4],
- const SkPoint texCoords[4], SkXfermode* xfer,
+ const SkPoint texCoords[4], SK_XFERMODE_PARAM xmode,
const SkPaint& paint) {
SkPipeWriter writer(this);
unsigned extra = 0;
- SkXfermode::Mode mode = SkXfermode::kModulate_Mode;
- if (xfer && !xfer->asMode(&mode)) {
- mode = (SkXfermode::Mode)kExplicitXfer_DrawPatchExtraValue;
- } else {
- xfer = nullptr; // signal that we're using the mode enum
- }
- SkASSERT(0 == (mode & ~kModeEnum_DrawPatchExtraMask));
- extra = (unsigned)mode;
+#ifdef SK_SUPPORT_LEGACY_XFERMODE_PARAM
+ SkBlendMode bmode = xmode ? xmode->blend() : SkBlendMode::kModulate;
+#else
+ SkBlendMode bmode = xmode;
+#endif
+ SkASSERT(0 == ((int)bmode & ~kModeEnum_DrawPatchExtraMask));
+ extra = (unsigned)bmode;
if (colors) {
extra |= kHasColors_DrawPatchExtraMask;
}
@@ -809,9 +806,6 @@ void SkPipeCanvas::onDrawPatch(const SkPoint cubics[12], const SkColor colors[4]
if (texCoords) {
writer.write(texCoords, sizeof(SkPoint) * 4);
}
- if (xfer) {
- xfer->flatten(writer);
- }
write_paint(writer, paint, kGeometry_PaintUsage);
}
diff --git a/src/pipe/SkPipeCanvas.h b/src/pipe/SkPipeCanvas.h
index 33f7821d51..87a906fff4 100644
--- a/src/pipe/SkPipeCanvas.h
+++ b/src/pipe/SkPipeCanvas.h
@@ -105,7 +105,7 @@ protected:
void onDrawArc(const SkRect&, SkScalar startAngle, SkScalar sweepAngle, bool useCenter,
const SkPaint&) override;
void onDrawAtlas(const SkImage*, const SkRSXform[], const SkRect[], const SkColor[],
- int count, SkXfermode::Mode, const SkRect* cull, const SkPaint*) override;
+ int count, SK_XFERMODE_MODE_PARAM, const SkRect* cull, const SkPaint*) override;
void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override;
void onDrawText(const void* text, size_t byteLength, SkScalar x, SkScalar y,
const SkPaint&) override;
@@ -119,7 +119,7 @@ protected:
void onDrawTextRSXform(const void* text, size_t byteLength, const SkRSXform xform[],
const SkRect* cull, const SkPaint& paint) override;
void onDrawPatch(const SkPoint cubics[12], const SkColor colors[4], const SkPoint texCoords[4],
- SkXfermode*, const SkPaint&) override;
+ SK_XFERMODE_PARAM, const SkPaint&) override;
void onDrawPaint(const SkPaint&) override;
void onDrawPoints(PointMode, size_t count, const SkPoint pts[], const SkPaint&) override;
@@ -138,7 +138,7 @@ protected:
const SkPaint*) override;
void onDrawVertices(VertexMode vmode, int vertexCount,
const SkPoint vertices[], const SkPoint texs[],
- const SkColor colors[], SkXfermode* xmode,
+ const SkColor colors[], SK_XFERMODE_PARAM,
const uint16_t indices[], int indexCount,
const SkPaint&) override;
diff --git a/src/pipe/SkPipeReader.cpp b/src/pipe/SkPipeReader.cpp
index 31718e9b36..2039bf2b3a 100644
--- a/src/pipe/SkPipeReader.cpp
+++ b/src/pipe/SkPipeReader.cpp
@@ -310,7 +310,7 @@ static void drawArc_handler(SkPipeReader& reader, uint32_t packedVerb, SkCanvas*
static void drawAtlas_handler(SkPipeReader& reader, uint32_t packedVerb, SkCanvas* canvas) {
SkASSERT(SkPipeVerb::kDrawAtlas == unpack_verb(packedVerb));
- SkXfermode::Mode mode = (SkXfermode::Mode)(packedVerb & kMode_DrawAtlasMask);
+ SkBlendMode mode = (SkBlendMode)(packedVerb & kMode_DrawAtlasMask);
sk_sp<SkImage> image(reader.readImage());
int count = reader.read32();
const SkRSXform* xform = skip<SkRSXform>(reader, count);
@@ -433,16 +433,8 @@ static void drawPatch_handler(SkPipeReader& reader, uint32_t packedVerb, SkCanva
if (packedVerb & kHasTexture_DrawPatchExtraMask) {
tex = skip<SkPoint>(reader, 4);
}
- sk_sp<SkXfermode> xfer;
- unsigned mode = packedVerb & kModeEnum_DrawPatchExtraMask;
- if (kExplicitXfer_DrawPatchExtraValue == mode) {
- xfer = reader.readXfermode();
- } else {
- if (mode != SkXfermode::kSrcOver_Mode) {
- xfer = SkXfermode::Make((SkXfermode::Mode)mode);
- }
- }
- canvas->drawPatch(cubics, colors, tex, xfer.get(), read_paint(reader));
+ SkBlendMode mode = (SkBlendMode)(packedVerb & kModeEnum_DrawPatchExtraMask);
+ canvas->drawPatch(cubics, colors, tex, mode, read_paint(reader));
}
static void drawPaint_handler(SkPipeReader& reader, uint32_t packedVerb, SkCanvas* canvas) {
@@ -581,13 +573,8 @@ static void drawVertices_handler(SkPipeReader& reader, uint32_t packedVerb, SkCa
if (0 == vertexCount) {
vertexCount = reader.read32();
}
- sk_sp<SkXfermode> xfer;
- unsigned xmode = (packedVerb & kXMode_DrawVerticesMask) >> kXMode_DrawVerticesShift;
- if (0xFF == xmode) {
- xfer = reader.readXfermode();
- } else {
- xfer = SkXfermode::Make((SkXfermode::Mode)xmode);
- }
+ SkBlendMode bmode = (SkBlendMode)
+ ((packedVerb & kXMode_DrawVerticesMask) >> kXMode_DrawVerticesShift);
const SkPoint* vertices = skip<SkPoint>(reader, vertexCount);
const SkPoint* texs = nullptr;
if (packedVerb & kHasTex_DrawVerticesMask) {
@@ -604,7 +591,7 @@ static void drawVertices_handler(SkPipeReader& reader, uint32_t packedVerb, SkCa
indices = skip<uint16_t>(reader, indexCount);
}
- canvas->drawVertices(vmode, vertexCount, vertices, texs, colors, xfer.get(),
+ canvas->drawVertices(vmode, vertexCount, vertices, texs, colors, bmode,
indices, indexCount, read_paint(reader));
}