diff options
author | reed <reed@google.com> | 2015-12-16 08:27:10 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-12-16 08:27:10 -0800 |
commit | 32704674f64cb6a14356dfebe060cd3484c06cc7 (patch) | |
tree | 7a72757624ed59f421c931ce5c02e7644f4987d3 /src/pipe | |
parent | 4657ce2324ea197507c4ba728d81138f56da13b1 (diff) |
Revert of remove drawSprite from canvas (patchset #4 id:60001 of https://codereview.chromium.org/1534443003/ )
Reason for revert:
need to remove an override in chrome
Original issue's description:
> remove drawSprite from canvas
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/4657ce2324ea197507c4ba728d81138f56da13b1
TBR=fmalita@chromium.org,robertphillips@google.com,senorblanco@chromium.org,mtklein@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Review URL: https://codereview.chromium.org/1529803004
Diffstat (limited to 'src/pipe')
-rw-r--r-- | src/pipe/SkGPipePriv.h | 1 | ||||
-rw-r--r-- | src/pipe/SkGPipeRead.cpp | 12 | ||||
-rw-r--r-- | src/pipe/SkGPipeWrite.cpp | 11 |
3 files changed, 24 insertions, 0 deletions
diff --git a/src/pipe/SkGPipePriv.h b/src/pipe/SkGPipePriv.h index 1820a4941a..c4217f3bf9 100644 --- a/src/pipe/SkGPipePriv.h +++ b/src/pipe/SkGPipePriv.h @@ -57,6 +57,7 @@ enum DrawOps { kDrawPosTextH_DrawOp, kDrawRect_DrawOp, kDrawRRect_DrawOp, + kDrawSprite_DrawOp, kDrawText_DrawOp, kDrawTextBlob_DrawOp, kDrawTextOnPath_DrawOp, diff --git a/src/pipe/SkGPipeRead.cpp b/src/pipe/SkGPipeRead.cpp index 24f3e2d1ea..4d57a6cca9 100644 --- a/src/pipe/SkGPipeRead.cpp +++ b/src/pipe/SkGPipeRead.cpp @@ -654,6 +654,17 @@ static void drawBitmapRect_rp(SkCanvas* canvas, SkReader32* reader, } } +static void drawSprite_rp(SkCanvas* canvas, SkReader32* reader, uint32_t op32, + SkGPipeState* state) { + BitmapHolder holder(reader, op32, state); + bool hasPaint = SkToBool(DrawOp_unpackFlags(op32) & kDrawBitmap_HasPaint_DrawOpFlag); + const SkIPoint* point = skip<SkIPoint>(reader); + const SkBitmap* bitmap = holder.getBitmap(); + if (state->shouldDraw()) { + canvas->drawSprite(*bitmap, point->fX, point->fY, hasPaint ? &state->paint() : nullptr); + } +} + static void drawImage_rp(SkCanvas* canvas, SkReader32* reader, uint32_t op32, SkGPipeState* state) { unsigned slot = DrawOp_unpackData(op32); unsigned flags = DrawOp_unpackFlags(op32); @@ -880,6 +891,7 @@ static const ReadProc gReadTable[] = { drawPosTextH_rp, drawRect_rp, drawRRect_rp, + drawSprite_rp, drawText_rp, drawTextBlob_rp, drawTextOnPath_rp, diff --git a/src/pipe/SkGPipeWrite.cpp b/src/pipe/SkGPipeWrite.cpp index 2cab09c9e1..0fccb80d0a 100644 --- a/src/pipe/SkGPipeWrite.cpp +++ b/src/pipe/SkGPipeWrite.cpp @@ -284,6 +284,7 @@ protected: const SkPaint*) override; void onDrawBitmapNine(const SkBitmap&, const SkIRect& center, const SkRect& dst, const SkPaint*) override; + void onDrawSprite(const SkBitmap&, int left, int top, const SkPaint*) override; void onDrawVertices(VertexMode vmode, int vertexCount, const SkPoint vertices[], const SkPoint texs[], const SkColor colors[], SkXfermode* xmode, @@ -827,6 +828,16 @@ void SkGPipeCanvas::onDrawBitmapNine(const SkBitmap& bm, const SkIRect& center, } } +void SkGPipeCanvas::onDrawSprite(const SkBitmap& bm, int left, int top, const SkPaint* paint) { + NOTIFY_SETUP(this); + size_t opBytesNeeded = sizeof(int32_t) * 2; + + if (this->commonDrawBitmap(bm, kDrawSprite_DrawOp, 0, opBytesNeeded, paint)) { + fWriter.write32(left); + fWriter.write32(top); + } +} + bool SkGPipeCanvas::commonDrawImage(const SkImage* image, DrawOps op, unsigned flags, size_t opBytesNeeded, const SkPaint* paint) { if (fDone) { |