aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pdf/SkPDFDocument.cpp
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2017-12-14 13:25:04 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-12-14 21:20:27 +0000
commita4daf193196c6da63b1c16e3490cad3c5ca6bf8b (patch)
treeda83a9b8ffeb0b07ffb5fdc87705d25c242c5b1c /src/pdf/SkPDFDocument.cpp
parentdbd43481f1da3c9c87f5d913660f216ec531870a (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.cpp87
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