diff options
Diffstat (limited to 'src/core/SkPicturePlayback.cpp')
| -rw-r--r-- | src/core/SkPicturePlayback.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/core/SkPicturePlayback.cpp b/src/core/SkPicturePlayback.cpp index 7b9e411764..e2159bead9 100644 --- a/src/core/SkPicturePlayback.cpp +++ b/src/core/SkPicturePlayback.cpp @@ -419,6 +419,14 @@ void SkPicturePlayback::handleOp(SkReadBuffer* reader, canvas->drawPaint(*paint); } } break; + case DRAW_BEHIND_PAINT: { + const SkPaint* paint = fPictureData->getPaint(reader); + BREAK_ON_READ_ERROR(reader); + + if (paint) { + SkCanvasPriv::DrawBehind(canvas, *paint); + } + } break; case DRAW_PATCH: { const SkPaint* paint = fPictureData->getPaint(reader); @@ -685,6 +693,16 @@ void SkPicturePlayback::handleOp(SkReadBuffer* reader, case SAVE: canvas->save(); break; + case SAVE_BEHIND: { + uint32_t flags = reader->readInt(); + const SkRect* subset = nullptr; + SkRect storage; + if (flags & SAVEBEHIND_HAS_SUBSET) { + reader->readRect(&storage); + subset = &storage; + } + SkCanvasPriv::SaveBehind(canvas, subset); + } break; case SAVE_LAYER_SAVEFLAGS_DEPRECATED: { SkRect storage; const SkRect* boundsPtr = get_rect_ptr(reader, &storage); |
