diff options
author | halcanary <halcanary@google.com> | 2016-04-27 07:45:18 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-04-27 07:45:18 -0700 |
commit | 4b6566644f704cf9e30c71fa547c9b5915752792 (patch) | |
tree | f670fd01006423b2282ce74a80921aea121a77cf /dm | |
parent | d1556071715d28217b7c64774335fcce2cbf46c6 (diff) |
SkDocument/PDF: new API
has a pdf/a switch.
sets metadata in factory.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1916093002
Review URL: https://codereview.chromium.org/1916093002
Diffstat (limited to 'dm')
-rw-r--r-- | dm/DM.cpp | 1 | ||||
-rw-r--r-- | dm/DMSrcSink.cpp | 21 | ||||
-rw-r--r-- | dm/DMSrcSink.h | 2 |
3 files changed, 13 insertions, 11 deletions
@@ -878,6 +878,7 @@ static Sink* create_sink(const SkCommandLineConfig* config) { SINK("svg", SVGSink); SINK("null", NullSink); SINK("xps", XPSSink); + SINK("pdfa", PDFSink, true); } #undef SINK return nullptr; diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp index 18ac6b420a..e8018297b7 100644 --- a/dm/DMSrcSink.cpp +++ b/dm/DMSrcSink.cpp @@ -1115,16 +1115,15 @@ static Error draw_skdocument(const Src& src, SkDocument* doc, SkWStream* dst) { } Error PDFSink::draw(const Src& src, SkBitmap*, SkWStream* dst, SkString*) const { - SkAutoTUnref<SkDocument> doc(SkDocument::CreatePDF(dst)); + SkDocument::PDFMetadata metadata; + metadata.fTitle = src.name(); + metadata.fSubject = "rendering correctness test"; + metadata.fCreator = "Skia/DM"; + sk_sp<SkDocument> doc = SkDocument::MakePDF(dst, SK_ScalarDefaultRasterDPI, + metadata, nullptr, fPDFA); if (!doc) { - return "SkDocument::CreatePDF() returned nullptr"; - } - SkTArray<SkDocument::Attribute> info; - info.emplace_back(SkString("Title"), src.name()); - info.emplace_back(SkString("Subject"), - SkString("rendering correctness test")); - info.emplace_back(SkString("Creator"), SkString("Skia/DM")); - doc->setMetadata(&info[0], info.count(), nullptr, nullptr); + return "SkDocument::MakePDF() returned nullptr"; + } return draw_skdocument(src, doc.get(), dst); } @@ -1133,9 +1132,9 @@ Error PDFSink::draw(const Src& src, SkBitmap*, SkWStream* dst, SkString*) const XPSSink::XPSSink() {} Error XPSSink::draw(const Src& src, SkBitmap*, SkWStream* dst, SkString*) const { - SkAutoTUnref<SkDocument> doc(SkDocument::CreateXPS(dst)); + sk_sp<SkDocument> doc(SkDocument::MakeXPS(dst)); if (!doc) { - return "SkDocument::CreateXPS() returned nullptr"; + return "SkDocument::MakeXPS() returned nullptr"; } return draw_skdocument(src, doc.get(), dst); } diff --git a/dm/DMSrcSink.h b/dm/DMSrcSink.h index 6f4eac71f9..5f60dc59fd 100644 --- a/dm/DMSrcSink.h +++ b/dm/DMSrcSink.h @@ -254,9 +254,11 @@ private: class PDFSink : public Sink { public: + PDFSink(bool pdfa = false) : fPDFA(pdfa) {} Error draw(const Src&, SkBitmap*, SkWStream*, SkString*) const override; const char* fileExtension() const override { return "pdf"; } SinkFlags flags() const override { return SinkFlags{ SinkFlags::kVector, SinkFlags::kDirect }; } + bool fPDFA; }; class XPSSink : public Sink { |