| Index: src/pdf/SkDeflate.cpp
|
| diff --git a/src/pdf/SkDeflate.cpp b/src/pdf/SkDeflate.cpp
|
| index 0953ef27fb658a866acc60f93009e04eb84566a5..f0c8a5437cb97c78f31fa79fbc8b36d210203ce6 100644
|
| --- a/src/pdf/SkDeflate.cpp
|
| +++ b/src/pdf/SkDeflate.cpp
|
| @@ -30,7 +30,7 @@ template <typename T> void* skia_alloc_func(void*, T items, T size) {
|
|
|
| static void skia_free_func(void*, void* address) { sk_free(address); }
|
|
|
| -bool doFlate(bool compress, SkStream* src, SkWStream* dst) {
|
| +static bool do_inflate(SkStream* src, SkWStream* dst) {
|
| uint8_t inputBuffer[kBufferSize];
|
| uint8_t outputBuffer[kBufferSize];
|
| z_stream flateData;
|
| @@ -42,10 +42,7 @@ bool doFlate(bool compress, SkStream* src, SkWStream* dst) {
|
| flateData.next_out = outputBuffer;
|
| flateData.avail_out = kBufferSize;
|
| int rc;
|
| - if (compress)
|
| - rc = deflateInit(&flateData, Z_DEFAULT_COMPRESSION);
|
| - else
|
| - rc = inflateInit(&flateData);
|
| + rc = inflateInit(&flateData);
|
| if (rc != Z_OK)
|
| return false;
|
|
|
| @@ -81,16 +78,10 @@ bool doFlate(bool compress, SkStream* src, SkWStream* dst) {
|
| flateData.next_in = inputBuffer;
|
| flateData.avail_in = SkToUInt(read);
|
| }
|
| - if (compress)
|
| - rc = deflate(&flateData, Z_NO_FLUSH);
|
| - else
|
| - rc = inflate(&flateData, Z_NO_FLUSH);
|
| + rc = inflate(&flateData, Z_NO_FLUSH);
|
| }
|
| while (rc == Z_OK) {
|
| - if (compress)
|
| - rc = deflate(&flateData, Z_FINISH);
|
| - else
|
| - rc = inflate(&flateData, Z_FINISH);
|
| + rc = inflate(&flateData, Z_FINISH);
|
| if (flateData.avail_out < kBufferSize) {
|
| if (!dst->write(outputBuffer, kBufferSize - flateData.avail_out))
|
| return false;
|
| @@ -99,41 +90,19 @@ bool doFlate(bool compress, SkStream* src, SkWStream* dst) {
|
| }
|
| }
|
|
|
| - if (compress)
|
| - deflateEnd(&flateData);
|
| - else
|
| - inflateEnd(&flateData);
|
| - if (rc == Z_STREAM_END)
|
| - return true;
|
| - return false;
|
| + inflateEnd(&flateData);
|
| + return rc == Z_STREAM_END;
|
| }
|
| +} // namespace
|
|
|
| -}
|
| -
|
| -// static
|
| -bool SkFlate::Deflate(SkStream* src, SkWStream* dst) {
|
| - return doFlate(true, src, dst);
|
| -}
|
| -
|
| -bool SkFlate::Deflate(const void* ptr, size_t len, SkWStream* dst) {
|
| - SkMemoryStream stream(ptr, len);
|
| - return doFlate(true, &stream, dst);
|
| -}
|
| -
|
| -bool SkFlate::Deflate(const SkData* data, SkWStream* dst) {
|
| - if (data) {
|
| - SkMemoryStream stream(data->data(), data->size());
|
| - return doFlate(true, &stream, dst);
|
| +SkStreamAsset* SkInflate(SkStream* src) {
|
| + SkDynamicMemoryWStream decompressedDynamicMemoryWStream;
|
| + if (!do_inflate(src, &decompressedDynamicMemoryWStream)) {
|
| + return nullptr;
|
| }
|
| - return false;
|
| + return decompressedDynamicMemoryWStream.detachAsStream();
|
| }
|
|
|
| -// static
|
| -bool SkFlate::Inflate(SkStream* src, SkWStream* dst) {
|
| - return doFlate(false, src, dst);
|
| -}
|
| -
|
| -
|
| #define SKDEFLATEWSTREAM_INPUT_BUFFER_SIZE 4096
|
| #define SKDEFLATEWSTREAM_OUTPUT_BUFFER_SIZE 4224 // 4096 + 128, usually big
|
| // enough to always do a
|
|
|