diff options
author | 2013-10-09 21:09:00 +0000 | |
---|---|---|
committer | 2013-10-09 21:09:00 +0000 | |
commit | b5a6651f9f69570d964382134d64360915db9a29 (patch) | |
tree | 0cd6b2cb12875a3fe71389c8bada5329cd72f95f /src/doc/SkDocument_PDF.cpp | |
parent | c8fda9d96be0bd944d37a6e23f7adad5f247c51d (diff) |
SkDocument api changes (abort, close return success, set DCT encoder...).
R=reed@google.com, reed
Author: edisonn@google.com
Review URL: https://codereview.chromium.org/26744002
git-svn-id: http://skia.googlecode.com/svn/trunk@11688 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/doc/SkDocument_PDF.cpp')
-rw-r--r-- | src/doc/SkDocument_PDF.cpp | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/src/doc/SkDocument_PDF.cpp b/src/doc/SkDocument_PDF.cpp index 27cf2e88c5..b9b55f8dce 100644 --- a/src/doc/SkDocument_PDF.cpp +++ b/src/doc/SkDocument_PDF.cpp @@ -6,13 +6,15 @@ */ #include "SkDocument.h" -#include "SkPDFDocument.h" #include "SkPDFDevice.h" +#include "SkPDFDocument.h" class SkDocument_PDF : public SkDocument { public: - SkDocument_PDF(SkWStream* stream, void (*doneProc)(SkWStream*)) - : SkDocument(stream, doneProc) { + SkDocument_PDF(SkWStream* stream, void (*doneProc)(SkWStream*), + SkPicture::EncodeBitmap encoder) + : SkDocument(stream, doneProc) + , fEncoder(encoder) { fDoc = SkNEW(SkPDFDocument); fCanvas = NULL; fDevice = NULL; @@ -38,6 +40,9 @@ protected: matrix.setTranslate(content.fLeft, content.fTop); fDevice = SkNEW_ARGS(SkPDFDevice, (pageS, contentS, matrix)); + if (fEncoder) { + fDevice->setDCTEncoder(fEncoder); + } fCanvas = SkNEW_ARGS(SkCanvas, (fDevice)); return fCanvas; } @@ -56,36 +61,44 @@ protected: fDevice = NULL; } - virtual void onClose(SkWStream* stream) SK_OVERRIDE { + virtual bool onClose(SkWStream* stream) SK_OVERRIDE { SkASSERT(NULL == fCanvas); SkASSERT(NULL == fDevice); - fDoc->emitPDF(stream); + bool success = fDoc->emitPDF(stream); + SkDELETE(fDoc); + fDoc = NULL; + return success; + } + + virtual void onAbort() SK_OVERRIDE { SkDELETE(fDoc); fDoc = NULL; } private: SkPDFDocument* fDoc; - SkPDFDevice* fDevice; + SkPDFDevice* fDevice; SkCanvas* fCanvas; + SkPicture::EncodeBitmap fEncoder; }; /////////////////////////////////////////////////////////////////////////////// -SkDocument* SkDocument::CreatePDF(SkWStream* stream, void (*done)(SkWStream*)) { - return stream ? SkNEW_ARGS(SkDocument_PDF, (stream, done)) : NULL; +SkDocument* SkDocument::CreatePDF(SkWStream* stream, void (*done)(SkWStream*), + SkPicture::EncodeBitmap enc) { + return stream ? SkNEW_ARGS(SkDocument_PDF, (stream, done, enc)) : NULL; } static void delete_wstream(SkWStream* stream) { SkDELETE(stream); } -SkDocument* SkDocument::CreatePDF(const char path[]) { +SkDocument* SkDocument::CreatePDF(const char path[], SkPicture::EncodeBitmap enc) { SkFILEWStream* stream = SkNEW_ARGS(SkFILEWStream, (path)); if (!stream->isValid()) { SkDELETE(stream); return NULL; } - return SkNEW_ARGS(SkDocument_PDF, (stream, delete_wstream)); + return SkNEW_ARGS(SkDocument_PDF, (stream, delete_wstream, enc)); } |