Chromium Code Reviews| Index: src/pipe/SkPipeReader.cpp |
| diff --git a/src/pipe/SkPipeReader.cpp b/src/pipe/SkPipeReader.cpp |
| index 2edc2dff20924f8913cd50b1726aeb6364196a15..20c03cd62a554c1827ade8e74582af1e63449f13 100644 |
| --- a/src/pipe/SkPipeReader.cpp |
| +++ b/src/pipe/SkPipeReader.cpp |
| @@ -846,6 +846,7 @@ void SkPipeDeserializer::setTypefaceDeserializer(SkTypefaceDeserializer* tfd) { |
| fImpl->fTFDeserializer = tfd; |
| } |
| +#if 0 |
|
mtklein_C
2016/09/15 20:39:41
Time to kill?
reed1
2016/09/15 21:01:30
Done.
|
| sk_sp<SkPicture> SkPipeDeserializer::readPicture(const void* data, size_t size) { |
| if (size < sizeof(uint32_t) + sizeof(SkRect)) { |
| return nullptr; |
| @@ -864,6 +865,7 @@ sk_sp<SkPicture> SkPipeDeserializer::readPicture(const void* data, size_t size) |
| this->playback(data, size, recorder.beginRecording(cull)); |
| return recorder.finishRecordingAsPicture(); |
| } |
| +#endif |
| sk_sp<SkImage> SkPipeDeserializer::readImage(const void* data, size_t size) { |
| if (size < sizeof(uint32_t)) { |
| @@ -895,6 +897,36 @@ sk_sp<SkImage> SkPipeDeserializer::readImage(const void* data, size_t size) { |
| return sk_ref_sp(fImpl->fImages.get(index - 1)); |
| } |
| +sk_sp<SkPicture> SkPipeDeserializer::readPicture(const void* data, size_t size) { |
| + if (size < sizeof(uint32_t)) { |
| + SkDebugf("-------- data length too short for readPicture %d\n", size); |
| + return nullptr; |
| + } |
| + |
| + const uint32_t* ptr = (const uint32_t*)data; |
| + uint32_t packedVerb = *ptr++; |
| + size -= 4; |
| + |
| + if (SkPipeVerb::kDefinePicture == unpack_verb(packedVerb)) { |
| + SkPipeInflator inflator(&fImpl->fImages, &fImpl->fPictures, |
| + &fImpl->fTypefaces, &fImpl->fFactories, |
| + fImpl->fTFDeserializer); |
| + SkPipeReader reader(this, ptr, size); |
| + reader.setInflator(&inflator); |
| + definePicture_handler(reader, packedVerb, nullptr); |
| + packedVerb = reader.read32(); // read the next verb |
| + } |
| + if (SkPipeVerb::kWritePicture != unpack_verb(packedVerb)) { |
| + SkDebugf("-------- unexpected verb for readPicture %d\n", unpack_verb(packedVerb)); |
| + return nullptr; |
| + } |
| + int index = unpack_verb_extra(packedVerb); |
| + if (0 == index) { |
| + return nullptr; // writer failed |
| + } |
| + return sk_ref_sp(fImpl->fPictures.get(index - 1)); |
| +} |
| + |
| static bool do_playback(SkPipeReader& reader, SkCanvas* canvas, int* endPictureIndex) { |
| int indent = 0; |