diff options
author | Mike Reed <reed@google.com> | 2018-01-03 09:23:34 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-01-03 15:30:29 +0000 |
commit | 7c9c9e4239b6e9dfec3469326312e4c9a2c164f9 (patch) | |
tree | 90ce9f6812c6b1c0565b74f578bbab77d922baae /src/pipe/SkPipeReader.cpp | |
parent | 2823f9f06c15fd581e7518dc4e674ad56917dcdb (diff) |
update pipe for lattice and shadowrec
- move some lattice routines into shared helper (SkCanvasPriv)
Bug: skia:
Change-Id: Ibbb80dd7461c7fd3082a0220604ab42cbb8815be
Reviewed-on: https://skia-review.googlesource.com/90540
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'src/pipe/SkPipeReader.cpp')
-rw-r--r-- | src/pipe/SkPipeReader.cpp | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/src/pipe/SkPipeReader.cpp b/src/pipe/SkPipeReader.cpp index 846368e66d..f8dc23885d 100644 --- a/src/pipe/SkPipeReader.cpp +++ b/src/pipe/SkPipeReader.cpp @@ -6,7 +6,9 @@ */ #include "SkCanvas.h" +#include "SkCanvasPriv.h" #include "SkDeduper.h" +#include "SkDrawShadowInfo.h" #include "SkPicture.h" #include "SkPictureRecorder.h" #include "SkPipe.h" @@ -480,6 +482,15 @@ static void drawPath_handler(SkPipeReader& reader, uint32_t packedVerb, SkCanvas canvas->drawPath(path, read_paint(reader)); } +static void drawShadowRec_handler(SkPipeReader& reader, uint32_t packedVerb, SkCanvas* canvas) { + SkASSERT(SkPipeVerb::kDrawShadowRec == unpack_verb(packedVerb)); + SkPath path; + reader.readPath(&path); + SkDrawShadowRec rec; + reader.readPad32(&rec, sizeof(rec)); + canvas->private_draw_shadow_rec(path, rec); +} + static void drawPoints_handler(SkPipeReader& reader, uint32_t packedVerb, SkCanvas* canvas) { SkASSERT(SkPipeVerb::kDrawPoints == unpack_verb(packedVerb)); SkCanvas::PointMode mode = (SkCanvas::PointMode)unpack_verb_extra(packedVerb); @@ -539,26 +550,9 @@ static void drawImageLattice_handler(SkPipeReader& reader, uint32_t packedVerb, sk_sp<SkImage> image(reader.readImage()); SkCanvas::Lattice lattice; - lattice.fXCount = (packedVerb >> kXCount_DrawImageLatticeShift) & kCount_DrawImageLatticeMask; - if (lattice.fXCount == kCount_DrawImageLatticeMask) { - lattice.fXCount = reader.read32(); - } - lattice.fYCount = (packedVerb >> kXCount_DrawImageLatticeShift) & kCount_DrawImageLatticeMask; - if (lattice.fYCount == kCount_DrawImageLatticeMask) { - lattice.fYCount = reader.read32(); - } - lattice.fXDivs = skip<int32_t>(reader, lattice.fXCount); - lattice.fYDivs = skip<int32_t>(reader, lattice.fYCount); - if (packedVerb & kHasFlags_DrawImageLatticeMask) { - int32_t count = (lattice.fXCount + 1) * (lattice.fYCount + 1); - SkASSERT(count > 0); - lattice.fRectTypes = skip<SkCanvas::Lattice::RectType>(reader, count); - lattice.fColors = skip<SkColor>(reader, count); - } else { - lattice.fRectTypes = nullptr; - lattice.fColors = nullptr; + if (!SkCanvasPriv::ReadLattice(reader, &lattice)) { + return; } - lattice.fBounds = skip<SkIRect>(reader); const SkRect* dst = skip<SkRect>(reader); SkPaint paintStorage, *paint = nullptr; @@ -749,6 +743,7 @@ const HandlerRec gPipeHandlers[] = { HANDLER(drawPoints), HANDLER(drawRect), HANDLER(drawPath), + HANDLER(drawShadowRec), HANDLER(drawOval), HANDLER(drawRRect), |