diff options
author | reed <reed@google.com> | 2016-09-13 08:09:45 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-09-13 08:09:45 -0700 |
commit | 54dc4878b02765efea39e68b218df1e4bfff4b88 (patch) | |
tree | 296347d73c08b8b1d0a0b244ca062434ac48caa1 /src/core/SkReadBuffer.cpp | |
parent | 5f1d0f61ea182829826d9d76cb85346d3e23305d (diff) |
add pipecanvas
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2201323003
Review-Url: https://codereview.chromium.org/2201323003
Diffstat (limited to 'src/core/SkReadBuffer.cpp')
-rw-r--r-- | src/core/SkReadBuffer.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/core/SkReadBuffer.cpp b/src/core/SkReadBuffer.cpp index 43eaf20261..4b9d5987a1 100644 --- a/src/core/SkReadBuffer.cpp +++ b/src/core/SkReadBuffer.cpp @@ -6,6 +6,7 @@ */ #include "SkBitmap.h" +#include "SkDeduper.h" #include "SkErrorInternals.h" #include "SkImage.h" #include "SkImageDeserializer.h" @@ -258,6 +259,11 @@ sk_sp<SkImage> SkReadBuffer::readBitmapAsImage() { } sk_sp<SkImage> SkReadBuffer::readImage() { + if (fInflator) { + SkImage* img = fInflator->getImage(this->read32()); + return img ? sk_ref_sp(img) : nullptr; + } + int width = this->read32(); int height = this->read32(); if (width <= 0 || height <= 0) { // SkImage never has a zero dimension @@ -298,6 +304,10 @@ sk_sp<SkImage> SkReadBuffer::readImage() { } sk_sp<SkTypeface> SkReadBuffer::readTypeface() { + if (fInflator) { + return sk_ref_sp(fInflator->getTypeface(this->read32())); + } + uint32_t index = fReader.readU32(); if (0 == index || index > (unsigned)fTFCount) { return nullptr; @@ -314,7 +324,12 @@ SkFlattenable* SkReadBuffer::readFlattenable(SkFlattenable::Type ft) { SkFlattenable::Factory factory = nullptr; - if (fFactoryCount > 0) { + if (fInflator) { + factory = fInflator->getFactory(this->read32()); + if (!factory) { + return nullptr; + } + } else if (fFactoryCount > 0) { int32_t index = fReader.readU32(); if (0 == index) { return nullptr; // writer failed to give us the flattenable |