diff options
author | Mike Reed <reed@google.com> | 2016-10-28 15:42:34 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-10-28 20:06:17 +0000 |
commit | 7d954ad797176afedb9262fdea4507d0fc60eb9d (patch) | |
tree | 27c6dc324f83877371d91a58beb21e4b00176a94 /src/pipe | |
parent | 99e3f7d6fcb7b3b4340286455733a7de9eb4ef81 (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.cpp | 38 | ||||
-rw-r--r-- | src/pipe/SkPipeCanvas.h | 6 | ||||
-rw-r--r-- | src/pipe/SkPipeReader.cpp | 25 |
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)); } |