[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();
     }