aboutsummaryrefslogtreecommitdiffhomepage
path: root/dm
diff options
context:
space:
mode:
authorGravatar halcanary <halcanary@google.com>2016-04-27 07:45:18 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-04-27 07:45:18 -0700
commit4b6566644f704cf9e30c71fa547c9b5915752792 (patch)
treef670fd01006423b2282ce74a80921aea121a77cf /dm
parentd1556071715d28217b7c64774335fcce2cbf46c6 (diff)
SkDocument/PDF: new API
Diffstat (limited to 'dm')
-rw-r--r--dm/DM.cpp1
-rw-r--r--dm/DMSrcSink.cpp21
-rw-r--r--dm/DMSrcSink.h2
3 files changed, 13 insertions, 11 deletions
diff --git a/dm/DM.cpp b/dm/DM.cpp
index e9b4585940..fe1432bf32 100644
--- a/dm/DM.cpp
+++ b/dm/DM.cpp
@@ -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 {