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>
diff --git a/tools/debugger/SkDrawCommand.cpp b/tools/debugger/SkDrawCommand.cpp
index 3c2f051..1f0fdf7 100644
--- a/tools/debugger/SkDrawCommand.cpp
+++ b/tools/debugger/SkDrawCommand.cpp
@@ -2941,9 +2941,11 @@
 }
 
 SkDrawPatchCommand::SkDrawPatchCommand(const SkPoint cubics[12], const SkColor colors[4],
-                                       const SkPoint texCoords[4], SkXfermode* xfermode,
+                                       const SkPoint texCoords[4], SkBlendMode bmode,
                                        const SkPaint& paint)
-    : INHERITED(kDrawPatch_OpType) {
+    : INHERITED(kDrawPatch_OpType)
+    , fBlendMode(bmode)
+{
     memcpy(fCubics, cubics, sizeof(fCubics));
     if (colors != nullptr) {
         memcpy(fColors, colors, sizeof(fColors));
@@ -2957,16 +2959,13 @@
     } else {
         fTexCoordsPtr = nullptr;
     }
-    if (xfermode != nullptr) {
-        fXfermode.reset(SkRef(xfermode));
-    }
     fPaint = paint;
 
     fInfo.push(SkObjectParser::PaintToString(paint));
 }
 
 void SkDrawPatchCommand::execute(SkCanvas* canvas) const {
-    canvas->drawPatch(fCubics, fColorsPtr, fTexCoordsPtr, fXfermode, fPaint);
+    canvas->drawPatch(fCubics, fColorsPtr, fTexCoordsPtr, fBlendMode, fPaint);
 }
 
 Json::Value SkDrawPatchCommand::toJSON(UrlDataManager& urlDataManager) const {
@@ -2990,11 +2989,7 @@
         }
         result[SKDEBUGCANVAS_ATTRIBUTE_TEXTURECOORDS] = texCoords;
     }
-    if (fXfermode.get() != nullptr) {
-        Json::Value jsonXfermode;
-        flatten(fXfermode, &jsonXfermode, urlDataManager);
-        result[SKDEBUGCANVAS_ATTRIBUTE_XFERMODE] = jsonXfermode;
-    }
+    // fBlendMode
     return result;
 }
 
@@ -3029,14 +3024,12 @@
     else {
         texCoordsPtr = nullptr;
     }
-    SkAutoTUnref<SkXfermode> xfermode;
-    if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_XFERMODE)) {
-        Json::Value jsonXfermode = command[SKDEBUGCANVAS_ATTRIBUTE_XFERMODE];
-        xfermode.reset((SkXfermode*) load_flattenable(jsonXfermode, urlDataManager));
-    }
+
+    SkBlendMode bmode = SkBlendMode::kSrcOver; // TODO: extract from json
+
     SkPaint paint;
     extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManager, &paint);
-    return new SkDrawPatchCommand(cubics, colorsPtr, texCoordsPtr, xfermode, paint);
+    return new SkDrawPatchCommand(cubics, colorsPtr, texCoordsPtr, bmode, paint);
 }
 
 SkDrawRectCommand::SkDrawRectCommand(const SkRect& rect, const SkPaint& paint)
@@ -3308,10 +3301,12 @@
 
 SkDrawVerticesCommand::SkDrawVerticesCommand(SkCanvas::VertexMode vmode, int vertexCount,
                                              const SkPoint vertices[], const SkPoint texs[],
-                                             const SkColor colors[], SkXfermode* xfermode,
+                                             const SkColor colors[], SkBlendMode bmode,
                                              const uint16_t indices[], int indexCount,
                                              const SkPaint& paint)
-    : INHERITED(kDrawVertices_OpType) {
+    : INHERITED(kDrawVertices_OpType)
+    , fBlendMode(bmode)
+{
     fVmode = vmode;
 
     fVertexCount = vertexCount;
@@ -3333,11 +3328,6 @@
         fColors = nullptr;
     }
 
-    fXfermode = xfermode;
-    if (fXfermode) {
-        fXfermode->ref();
-    }
-
     if (indexCount > 0) {
         fIndices = new uint16_t[indexCount];
         memcpy(fIndices, indices, indexCount * sizeof(uint16_t));
@@ -3357,13 +3347,12 @@
     delete [] fVertices;
     delete [] fTexs;
     delete [] fColors;
-    SkSafeUnref(fXfermode);
     delete [] fIndices;
 }
 
 void SkDrawVerticesCommand::execute(SkCanvas* canvas) const {
     canvas->drawVertices(fVmode, fVertexCount, fVertices,
-                         fTexs, fColors, fXfermode, fIndices,
+                         fTexs, fColors, fBlendMode, fIndices,
                          fIndexCount, fPaint);
 }