[PDF] Support image alpha channel plus a couple small fixes.
Fix bug in rendering paths with cubic segments.
Only compress data if the compressed size is smaller than the uncompressed size.
Review URL: http://codereview.appspot.com/4079048
git-svn-id: http://skia.googlecode.com/svn/trunk@747 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/pdf/SkPDFStream.cpp b/src/pdf/SkPDFStream.cpp
index 6947ae4..cbba068 100644
--- a/src/pdf/SkPDFStream.cpp
+++ b/src/pdf/SkPDFStream.cpp
@@ -20,14 +20,18 @@
#include "SkStream.h"
SkPDFStream::SkPDFStream(SkStream* stream) {
- if (SkFlate::HaveFlate()) {
+ if (SkFlate::HaveFlate())
SkAssertResult(SkFlate::Deflate(stream, &fCompressedData));
+
+ if (SkFlate::HaveFlate() &&
+ fCompressedData.getOffset() < stream->getLength()) {
fLength = fCompressedData.getOffset();
SkRefPtr<SkPDFName> flateFilter = new SkPDFName("FlateDecode");
flateFilter->unref(); // SkRefPtr and new both took a reference.
fDict.insert("Filter", flateFilter.get());
} else {
+ fCompressedData.reset();
fPlainData = stream;
fLength = fPlainData->getLength();
}