diff options
author | 2013-12-30 15:51:25 +0000 | |
---|---|---|
committer | 2013-12-30 15:51:25 +0000 | |
commit | 85e143c33c214e54187aa28146aa7666961a0d17 (patch) | |
tree | ea17e4f5dc71cc57b6044a95a0c1cb09245dd216 /src/core/SkPicturePlayback.cpp | |
parent | fbd9b17711e6f86853f1c5fdb76efce1b9f52bd1 (diff) |
reenable vertices gm, adding picture support
BUG=
Review URL: https://codereview.chromium.org/112913005
git-svn-id: http://skia.googlecode.com/svn/trunk@12845 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core/SkPicturePlayback.cpp')
-rw-r--r-- | src/core/SkPicturePlayback.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/core/SkPicturePlayback.cpp b/src/core/SkPicturePlayback.cpp index cb73689eeb..195afc6526 100644 --- a/src/core/SkPicturePlayback.cpp +++ b/src/core/SkPicturePlayback.cpp @@ -1025,6 +1025,7 @@ void SkPicturePlayback::draw(SkCanvas& canvas, SkDrawPictureCallback* callback) matrix, paint); } break; case DRAW_VERTICES: { + SkAutoTUnref<SkXfermode> xfer; const SkPaint& paint = *getPaint(reader); DrawVertexFlags flags = (DrawVertexFlags)reader.readInt(); SkCanvas::VertexMode vmode = (SkCanvas::VertexMode)reader.readInt(); @@ -1048,7 +1049,14 @@ void SkPicturePlayback::draw(SkCanvas& canvas, SkDrawPictureCallback* callback) indices = (const uint16_t*)reader.skip( iCount * sizeof(uint16_t)); } - canvas.drawVertices(vmode, vCount, verts, texs, colors, NULL, + if (flags & DRAW_VERTICES_HAS_XFER) { + int mode = reader.readInt(); + if (mode < 0 || mode > SkXfermode::kLastMode) { + mode = SkXfermode::kModulate_Mode; + } + xfer.reset(SkXfermode::Create((SkXfermode::Mode)mode)); + } + canvas.drawVertices(vmode, vCount, verts, texs, colors, xfer, indices, iCount, paint); } break; case RESTORE: |