| Index: src/core/SkPicture.cpp
|
| diff --git a/src/core/SkPicture.cpp b/src/core/SkPicture.cpp
|
| index 0d7773b520ed87e133019573ee7282e1a35b0267..3296264be8ab76ac666f0adf91f106bc5536dc7b 100644
|
| --- a/src/core/SkPicture.cpp
|
| +++ b/src/core/SkPicture.cpp
|
| @@ -1,4 +1,3 @@
|
| -
|
| /*
|
| * Copyright 2007 The Android Open Source Project
|
| *
|
| @@ -454,7 +453,41 @@ SkPictureData* SkPicture::Backport(const SkRecord& src, const SkPictInfo& info,
|
| return SkNEW_ARGS(SkPictureData, (rec, info, false/*deep copy ops?*/));
|
| }
|
|
|
| -void SkPicture::serialize(SkWStream* stream, EncodeBitmap encoder) const {
|
| +#ifdef SK_LEGACY_ENCODE_BITMAP
|
| +// Helper to support the EncodeBitmap version of serialize.
|
| +// Mimics the old behavior of always accepting the encoded data, and encoding
|
| +// using EncodeBitmap if there was no encoded data.
|
| +class EncodeBitmapSerializer : public SkPixelSerializer {
|
| +public:
|
| + explicit EncodeBitmapSerializer(SkPicture::EncodeBitmap encoder)
|
| + : fEncoder(encoder)
|
| + {
|
| + SkASSERT(fEncoder);
|
| + }
|
| +
|
| + virtual bool onUseEncodedData(const void*, size_t) SK_OVERRIDE { return true; }
|
| +
|
| + virtual SkData* onEncodePixels(const SkImageInfo& info, void* pixels,
|
| + size_t rowBytes) SK_OVERRIDE {
|
| + // Required by signature of EncodeBitmap.
|
| + size_t unused;
|
| + SkBitmap bm;
|
| + bm.installPixels(info, pixels, rowBytes);
|
| + return fEncoder(&unused, bm);
|
| + }
|
| +
|
| +private:
|
| + SkPicture::EncodeBitmap fEncoder;
|
| +};
|
| +
|
| +void SkPicture::serialize(SkWStream* wStream, SkPicture::EncodeBitmap encoder) const {
|
| + EncodeBitmapSerializer serializer(encoder);
|
| + this->serialize(wStream, &serializer);
|
| +}
|
| +
|
| +#endif
|
| +
|
| +void SkPicture::serialize(SkWStream* stream, SkPixelSerializer* pixelSerializer) const {
|
| SkPictInfo info;
|
| this->createHeader(&info);
|
| SkAutoTDelete<SkPictureData> data(Backport(*fRecord, info, this->drawablePicts(),
|
| @@ -463,7 +496,7 @@ void SkPicture::serialize(SkWStream* stream, EncodeBitmap encoder) const {
|
| stream->write(&info, sizeof(info));
|
| if (data) {
|
| stream->writeBool(true);
|
| - data->serialize(stream, encoder);
|
| + data->serialize(stream, pixelSerializer);
|
| } else {
|
| stream->writeBool(false);
|
| }
|
|
|