| Index: src/pipe/SkGPipeRead.cpp
|
| diff --git a/src/pipe/SkGPipeRead.cpp b/src/pipe/SkGPipeRead.cpp
|
| index a5f714480ecc50a5799d6f05b51f58c64c5a63b0..6275469cd2f025b13b444c9d4830c8f8f5c47e3b 100644
|
| --- a/src/pipe/SkGPipeRead.cpp
|
| +++ b/src/pipe/SkGPipeRead.cpp
|
| @@ -15,6 +15,7 @@
|
| #include "SkReader32.h"
|
| #include "SkStream.h"
|
|
|
| +#include "SkAnnotation.h"
|
| #include "SkColorFilter.h"
|
| #include "SkDrawLooper.h"
|
| #include "SkMaskFilter.h"
|
| @@ -53,9 +54,6 @@ static void set_paintflat(SkPaint* paint, SkFlattenable* obj, unsigned paintFlat
|
| case kXfermode_PaintFlat:
|
| paint->setXfermode((SkXfermode*)obj);
|
| break;
|
| - case kAnnotation_PaintFlat:
|
| - paint->setAnnotation((SkAnnotation*)obj);
|
| - break;
|
| default:
|
| SkDEBUGFAIL("never gets here");
|
| }
|
| @@ -672,6 +670,22 @@ static void typeface_rp(SkCanvas*, SkReader32* reader, uint32_t,
|
| p->setTypeface(static_cast<SkTypeface*>(reader->readPtr()));
|
| }
|
|
|
| +static void annotation_rp(SkCanvas*, SkReader32* reader, uint32_t op32,
|
| + SkGPipeState* state) {
|
| + SkPaint* p = state->editPaint();
|
| +
|
| + if (SkToBool(PaintOp_unpackData(op32))) {
|
| + const size_t size = reader->readU32();
|
| + SkAutoMalloc storage(size);
|
| +
|
| + reader->read(storage.get(), size);
|
| + SkOrderedReadBuffer buffer(storage.get(), size);
|
| + p->setAnnotation(SkNEW_ARGS(SkAnnotation, (buffer)))->unref();
|
| + } else {
|
| + p->setAnnotation(NULL);
|
| + }
|
| +}
|
| +
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|
| static void def_Typeface_rp(SkCanvas*, SkReader32*, uint32_t, SkGPipeState* state) {
|
| @@ -755,6 +769,8 @@ static const ReadProc gReadTable[] = {
|
|
|
| paintOp_rp,
|
| typeface_rp,
|
| + annotation_rp,
|
| +
|
| def_Typeface_rp,
|
| def_PaintFlat_rp,
|
| def_Bitmap_rp,
|
|
|