aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pipe/SkPipeReader.cpp
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2018-01-03 09:23:34 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-01-03 15:30:29 +0000
commit7c9c9e4239b6e9dfec3469326312e4c9a2c164f9 (patch)
tree90ce9f6812c6b1c0565b74f578bbab77d922baae /src/pipe/SkPipeReader.cpp
parent2823f9f06c15fd581e7518dc4e674ad56917dcdb (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.cpp33
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),