diff options
author | Mike Reed <reed@google.com> | 2017-12-05 15:11:24 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-12-05 20:33:18 +0000 |
commit | 60691a5127852631b03250f15fa6cda9a504befc (patch) | |
tree | 3ee27fd4857e58c890c5f0a2292749885b2a14de /src/core/SkPictureData.cpp | |
parent | c8037dc5edda42cacd839df4e1c7d8cfd0953309 (diff) |
add serial procs to pictures
Bug: skia:7380
Change-Id: Ic1b7e437316c7913711cf5cb119e3fe904cd2c05
Reviewed-on: https://skia-review.googlesource.com/76980
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'src/core/SkPictureData.cpp')
-rw-r--r-- | src/core/SkPictureData.cpp | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/src/core/SkPictureData.cpp b/src/core/SkPictureData.cpp index a5a644fe69..24e161f191 100644 --- a/src/core/SkPictureData.cpp +++ b/src/core/SkPictureData.cpp @@ -278,8 +278,7 @@ void SkPictureData::flattenToBuffer(SkWriteBuffer& buffer) const { } } -void SkPictureData::serialize(SkWStream* stream, - SkPixelSerializer* pixelSerializer, +void SkPictureData::serialize(SkWStream* stream, const SkSerialProcs& procs, SkRefCntSet* topLevelTypeFaceSet) const { // This can happen at pretty much any time, so might as well do it first. write_tag_size(stream, SK_PICT_READER_TAG, fOpData->size()); @@ -294,7 +293,7 @@ void SkPictureData::serialize(SkWStream* stream, SkFactorySet factSet; // buffer refs factSet, so factSet must come first. SkBinaryWriteBuffer buffer(SkBinaryWriteBuffer::kCrossProcess_Flag); buffer.setFactoryRecorder(&factSet); - buffer.setPixelSerializer(sk_ref_sp(pixelSerializer)); + buffer.setSerialProcs(procs); buffer.setTypefaceRecorder(typefaceSet); this->flattenToBuffer(buffer); @@ -307,7 +306,7 @@ void SkPictureData::serialize(SkWStream* stream, size_t bytesWritten() const override { return fBytesWritten; } } devnull; for (int i = 0; i < fPictureCount; i++) { - fPictureRefs[i]->serialize(&devnull, pixelSerializer, typefaceSet); + fPictureRefs[i]->serialize(&devnull, procs, typefaceSet); } // We need to write factories before we write the buffer. @@ -325,7 +324,7 @@ void SkPictureData::serialize(SkWStream* stream, if (fPictureCount > 0) { write_tag_size(stream, SK_PICT_PICTURE_TAG, fPictureCount); for (int i = 0; i < fPictureCount; i++) { - fPictureRefs[i]->serialize(stream, pixelSerializer, typefaceSet); + fPictureRefs[i]->serialize(stream, procs, typefaceSet); } } @@ -383,7 +382,7 @@ static uint32_t pictInfoFlagsToReadBufferFlags(uint32_t pictInfoFlags) { bool SkPictureData::parseStreamTag(SkStream* stream, uint32_t tag, uint32_t size, - SkImageDeserializer* factory, + const SkDeserialProcs& procs, SkTypefacePlayback* topLevelTFPlayback) { /* * By the time we encounter BUFFER_SIZE_TAG, we need to have already seen @@ -436,7 +435,7 @@ bool SkPictureData::parseStreamTag(SkStream* stream, fPictureCount = 0; fPictureRefs = new const SkPicture* [size]; for (uint32_t i = 0; i < size; i++) { - fPictureRefs[i] = SkPicture::MakeFromStream(stream, factory, topLevelTFPlayback).release(); + fPictureRefs[i] = SkPicture::MakeFromStream(stream, procs, topLevelTFPlayback).release(); if (!fPictureRefs[i]) { return false; } @@ -458,7 +457,7 @@ bool SkPictureData::parseStreamTag(SkStream* stream, return false; } fFactoryPlayback->setupBuffer(buffer); - buffer.setImageDeserializer(factory); + buffer.setDeserialProcs(procs); if (fTFPlayback.count() > 0) { // .skp files <= v43 have typefaces serialized with each sub picture. @@ -602,14 +601,14 @@ bool SkPictureData::parseBufferTag(SkReadBuffer& buffer, uint32_t tag, uint32_t SkPictureData* SkPictureData::CreateFromStream(SkStream* stream, const SkPictInfo& info, - SkImageDeserializer* factory, + const SkDeserialProcs& procs, SkTypefacePlayback* topLevelTFPlayback) { std::unique_ptr<SkPictureData> data(new SkPictureData(info)); if (!topLevelTFPlayback) { topLevelTFPlayback = &data->fTFPlayback; } - if (!data->parseStream(stream, factory, topLevelTFPlayback)) { + if (!data->parseStream(stream, procs, topLevelTFPlayback)) { return nullptr; } return data.release(); @@ -627,7 +626,7 @@ SkPictureData* SkPictureData::CreateFromBuffer(SkReadBuffer& buffer, } bool SkPictureData::parseStream(SkStream* stream, - SkImageDeserializer* factory, + const SkDeserialProcs& procs, SkTypefacePlayback* topLevelTFPlayback) { for (;;) { uint32_t tag = stream->readU32(); @@ -636,7 +635,7 @@ bool SkPictureData::parseStream(SkStream* stream, } uint32_t size = stream->readU32(); - if (!this->parseStreamTag(stream, tag, size, factory, topLevelTFPlayback)) { + if (!this->parseStreamTag(stream, tag, size, procs, topLevelTFPlayback)) { return false; // we're invalid } } |