Encode images with DCTDecode (JPEG) in PDFs if it makes sense. Fallback to FlateDecode (zip) if it makes sense. Otherewise include uncompressed stream.
This change will reduce the size of PDFs to 50% (in the case of the existing SKPs, we reduce the total size of PDFs from 105MB to 50MB)
Review URL: https://codereview.appspot.com/7068055
git-svn-id: http://skia.googlecode.com/svn/trunk@8835 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tools/PdfRenderer.h b/tools/PdfRenderer.h
index d2d6637..d2d1a5c 100644
--- a/tools/PdfRenderer.h
+++ b/tools/PdfRenderer.h
@@ -14,6 +14,7 @@
//
#include "SkMath.h"
+#include "SkPDFDevice.h"
#include "SkPicture.h"
#include "SkTypes.h"
#include "SkTDArray.h"
@@ -22,7 +23,6 @@
class SkBitmap;
class SkCanvas;
-class SkPDFDevice;
namespace sk_tools {
@@ -33,9 +33,10 @@
virtual void render() = 0;
virtual void end();
- PdfRenderer()
+ PdfRenderer(EncodeToDCTStream encoder)
: fPicture(NULL)
, fPDFDevice(NULL)
+ , fEncoder(encoder)
{}
void write(SkWStream* stream) const;
@@ -47,7 +48,7 @@
SkAutoTUnref<SkCanvas> fCanvas;
SkPicture* fPicture;
SkPDFDevice* fPDFDevice;
-
+ EncodeToDCTStream fEncoder;
private:
typedef SkRefCnt INHERITED;
@@ -55,6 +56,8 @@
class SimplePdfRenderer : public PdfRenderer {
public:
+ SimplePdfRenderer(EncodeToDCTStream encoder)
+ : PdfRenderer(encoder) {}
virtual void render() SK_OVERRIDE;
private: