Chromium Code Reviews| Index: src/pdf/SkPDFStream.cpp |
| diff --git a/src/pdf/SkPDFStream.cpp b/src/pdf/SkPDFStream.cpp |
| index 50735efa6cb112d614e2bbce79d763cdedb53c56..a9b5864c08c4c00e8e0d703473224e77921ff7a1 100644 |
| --- a/src/pdf/SkPDFStream.cpp |
| +++ b/src/pdf/SkPDFStream.cpp |
| @@ -32,42 +32,32 @@ void SkPDFStream::emitObject(SkWStream* stream, |
| stream->writeText("\nendstream"); |
| } |
| - |
| void SkPDFStream::setData(SkStreamAsset* stream) { |
| SkASSERT(!fCompressedData); // Only call this function once. |
| SkASSERT(stream); |
| // Code assumes that the stream starts at the beginning. |
| #ifdef SK_PDF_LESS_COMPRESSION |
| - std::unique_ptr<SkStreamAsset> duplicate(stream->duplicate()); |
| - SkASSERT(duplicate && duplicate->hasLength()); |
| - if (duplicate && duplicate->hasLength()) { |
| - this->insertInt("Length", duplicate->getLength()); |
| - fCompressedData.reset(duplicate.release()); |
| - return; |
| - } |
| - #endif |
| + fCompressedData.reset(stream->duplicate()); |
| + SkASSERT(fCompressedData && fCompressedData->hasLength()); |
| + this->insertInt("Length", fCompressedData->getLength()); |
| + #else |
| + SkASSERT(stream->hasLength()); |
|
Tom Hudson
2016/06/29 13:37:28
I thought you were getting rid of these?
|
| SkDynamicMemoryWStream compressedData; |
| SkDeflateWStream deflateWStream(&compressedData); |
| SkStreamCopy(&deflateWStream, stream); |
| deflateWStream.finalize(); |
| - size_t length = compressedData.bytesWritten(); |
| + size_t compressedLength = compressedData.bytesWritten(); |
| + size_t originalLength = stream->getLength(); |
| - SkASSERT(stream->hasLength()); |
| - if (stream->hasLength()) { |
| - std::unique_ptr<SkStreamAsset> dup(stream->duplicate()); |
| - SkASSERT(stream->hasLength()); |
| - SkASSERT(stream->getLength() == dup->getLength()); |
| - SkASSERT(dup && dup->hasLength()); |
| - if (dup && dup->hasLength() && |
| - dup->getLength() <= length + strlen("/Filter_/FlateDecode_")) { |
| - this->insertInt("Length", dup->getLength()); |
| - fCompressedData.reset(dup.release()); |
| - return; |
| - } |
| + if (originalLength <= compressedLength + strlen("/Filter_/FlateDecode_")) { |
| + fCompressedData.reset(stream->duplicate()); |
| + this->insertInt("Length", originalLength); |
| + return; |
| } |
| fCompressedData.reset(compressedData.detachAsStream()); |
| this->insertName("Filter", "FlateDecode"); |
| - this->insertInt("Length", length); |
| + this->insertInt("Length", compressedLength); |
| + #endif |
| } |