From 0cd2ac6c721120a2628524dad91798aa3e7ec41d Mon Sep 17 00:00:00 2001 From: "reed@google.com" Date: Mon, 14 Oct 2013 20:02:44 +0000 Subject: change SkAnnotation to not inherit from SkFlattenable (does not need dynamic factories) BUG= R=scroggo@google.com Review URL: https://codereview.chromium.org/26606004 git-svn-id: http://skia.googlecode.com/svn/trunk@11762 2bbb7eff-a529-9590-31e7-b0007b416f81 --- src/pipe/SkGPipeWrite.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/pipe/SkGPipeWrite.cpp') diff --git a/src/pipe/SkGPipeWrite.cpp b/src/pipe/SkGPipeWrite.cpp index 58ba102988..05fbb484a5 100644 --- a/src/pipe/SkGPipeWrite.cpp +++ b/src/pipe/SkGPipeWrite.cpp @@ -48,7 +48,6 @@ static SkFlattenable* get_paintflat(const SkPaint& paint, unsigned paintFlat) { case kShader_PaintFlat: return paint.getShader(); case kImageFilter_PaintFlat: return paint.getImageFilter(); case kXfermode_PaintFlat: return paint.getXfermode(); - case kAnnotation_PaintFlat: return paint.getAnnotation(); } SkDEBUGFAIL("never gets here"); return NULL; @@ -1123,6 +1122,26 @@ void SkGPipeCanvas::writePaint(const SkPaint& paint) { // SkDebugf("[%d] %08X\n", i, storage[i]); } } + + // + // Do these after we've written kPaintOp_DrawOp + + if (base.getAnnotation() != paint.getAnnotation()) { + if (NULL == paint.getAnnotation()) { + this->writeOp(kSetAnnotation_DrawOp, 0, 0); + } else { + SkOrderedWriteBuffer buffer(1024); + paint.getAnnotation()->writeToBuffer(buffer); + size = buffer.bytesWritten(); + + SkAutoMalloc storage(size); + buffer.writeToMemory(storage.get()); + + this->writeOp(kSetAnnotation_DrawOp, 0, 1); + fWriter.write32(size); + fWriter.write(storage.get(), size); + } + } } /////////////////////////////////////////////////////////////////////////////// -- cgit v1.2.3