diff options
author | Mike Reed <reed@google.com> | 2017-12-14 13:25:04 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-12-14 21:20:27 +0000 |
commit | a4daf193196c6da63b1c16e3490cad3c5ca6bf8b (patch) | |
tree | da83a9b8ffeb0b07ffb5fdc87705d25c242c5b1c /src/pdf/SkPDFDocument.cpp | |
parent | dbd43481f1da3c9c87f5d913660f216ec531870a (diff) |
Moving extra options/parameters into PDFMetadata
Bug: skia:
Change-Id: I29aa69e5765a7f8ba05b0361912d1f5276d77de3
Reviewed-on: https://skia-review.googlesource.com/84501
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'src/pdf/SkPDFDocument.cpp')
-rw-r--r-- | src/pdf/SkPDFDocument.cpp | 87 |
1 files changed, 56 insertions, 31 deletions
diff --git a/src/pdf/SkPDFDocument.cpp b/src/pdf/SkPDFDocument.cpp index 9b23798a3f..f7c35ca2ac 100644 --- a/src/pdf/SkPDFDocument.cpp +++ b/src/pdf/SkPDFDocument.cpp @@ -12,6 +12,9 @@ #include "SkPDFCanon.h" #include "SkPDFDevice.h" #include "SkPDFUtils.h" +#ifdef SK_SUPPORT_LEGACY_PDF_PIXELSERIALIZER +#include "SkPixelSerializer.h" +#endif #include "SkStream.h" SkPDFObjectSerializer::SkPDFObjectSerializer() : fBaseOffset(0), fNextToBeSerialized(0) {} @@ -173,15 +176,16 @@ static sk_sp<SkPDFDict> generate_page_tree(SkTArray<sk_sp<SkPDFDict>>* pages) { SkPDFDocument::SkPDFDocument(SkWStream* stream, void (*doneProc)(SkWStream*, bool), - SkScalar rasterDpi, - const SkDocument::PDFMetadata& metadata, - sk_sp<SkPixelSerializer> jpegEncoder, - bool pdfa) + const SkDocument::PDFMetadata& metadata +#ifdef SK_SUPPORT_LEGACY_PDF_PIXELSERIALIZER + , sk_sp<SkPixelSerializer> jpegEncoder +#endif + ) : SkDocument(stream, doneProc) - , fRasterDpi(rasterDpi) - , fMetadata(metadata) - , fPDFA(pdfa) { + , fMetadata(metadata) { +#ifdef SK_SUPPORT_LEGACY_PDF_PIXELSERIALIZER fCanon.fPixelSerializer = std::move(jpegEncoder); +#endif } SkPDFDocument::~SkPDFDocument() { @@ -200,7 +204,7 @@ SkCanvas* SkPDFDocument::onBeginPage(SkScalar width, SkScalar height) { // if this is the first page if the document. fObjectSerializer.serializeHeader(this->getStream(), fMetadata); fDests = sk_make_sp<SkPDFDict>(); - if (fPDFA) { + if (fMetadata.fPDFA) { SkPDFMetadata::UUID uuid = SkPDFMetadata::CreateUUID(fMetadata); // We use the same UUID for Document ID and Instance ID since this // is the first revision of this document (and Skia does not @@ -404,7 +408,7 @@ void SkPDFDocument::onClose(SkWStream* stream) { return; } auto docCatalog = sk_make_sp<SkPDFDict>("Catalog"); - if (fPDFA) { + if (fMetadata.fPDFA) { SkASSERT(fXMP); docCatalog->insertObjRef("Metadata", fXMP); // Don't specify OutputIntents if we are not in PDF/A mode since @@ -432,37 +436,58 @@ void SkPDFDocument::onClose(SkWStream* stream) { sk_sp<SkDocument> SkPDFMakeDocument(SkWStream* stream, void (*proc)(SkWStream*, bool), - SkScalar dpi, - const SkDocument::PDFMetadata& metadata, - sk_sp<SkPixelSerializer> jpeg, - bool pdfa) { - if (dpi <= 0) { - dpi = 72.0f; + const SkDocument::PDFMetadata& metadata +#ifdef SK_SUPPORT_LEGACY_PDF_PIXELSERIALIZER + , sk_sp<SkPixelSerializer> jpeg +#endif + ) { + SkDocument::PDFMetadata meta = metadata; + if (meta.fRasterDPI <= 0) { + meta.fRasterDPI = 72.0f; + } + if (meta.fEncodingQuality < 0) { + meta.fEncodingQuality = 0; } - return stream ? sk_make_sp<SkPDFDocument>(stream, proc, dpi, metadata, - std::move(jpeg), pdfa) + return stream ? sk_make_sp<SkPDFDocument>(stream, proc, meta +#ifdef SK_SUPPORT_LEGACY_PDF_PIXELSERIALIZER + , std::move(jpeg) +#endif + ) : nullptr; } -sk_sp<SkDocument> SkDocument::MakePDF(const char path[], SkScalar dpi) { - auto delete_wstream = [](SkWStream* stream, bool) { delete stream; }; - auto stream = skstd::make_unique<SkFILEWStream>(path); - return stream->isValid() - ? SkPDFMakeDocument(stream.release(), delete_wstream, dpi, - SkDocument::PDFMetadata(), nullptr, - false) - : nullptr; +sk_sp<SkDocument> SkDocument::MakePDF(SkWStream* stream, const PDFMetadata& metadata) { + return SkPDFMakeDocument(stream, nullptr, metadata); } +sk_sp<SkDocument> SkDocument::MakePDF(SkWStream* stream) { + return SkPDFMakeDocument(stream, nullptr, PDFMetadata()); +} + +#ifdef SK_SUPPORT_LEGACY_PDF_PIXELSERIALIZER sk_sp<SkDocument> SkDocument::MakePDF(SkWStream* stream, SkScalar dpi, - const SkDocument::PDFMetadata& metadata, + const PDFMetadata& metadata, sk_sp<SkPixelSerializer> jpegEncoder, bool pdfa) { - return SkPDFMakeDocument(stream, nullptr, dpi, metadata, - std::move(jpegEncoder), pdfa); + PDFMetadata meta = metadata; + meta.fRasterDPI = dpi; + meta.fPDFA = pdfa; + return SkPDFMakeDocument(stream, nullptr, meta, jpegEncoder); } - -sk_sp<SkDocument> SkDocument::MakePDF(SkWStream* stream, const PDFMetadata& metadata) { - return MakePDF(stream, SK_ScalarDefaultRasterDPI, metadata, nullptr, false); +sk_sp<SkDocument> SkDocument::MakePDF(SkWStream* stream, SkScalar dpi) { + PDFMetadata meta; + meta.fRasterDPI = dpi; + return SkPDFMakeDocument(stream, nullptr, meta, nullptr); +} +sk_sp<SkDocument> SkDocument::MakePDF(const char path[], SkScalar dpi) { + auto delete_wstream = [](SkWStream* stream, bool) { delete stream; }; + auto stream = skstd::make_unique<SkFILEWStream>(path); + if (!stream->isValid()) { + return nullptr; + } + PDFMetadata meta; + meta.fRasterDPI = dpi; + return SkPDFMakeDocument(stream.release(), delete_wstream, meta, nullptr); } +#endif |