aboutsummaryrefslogtreecommitdiffhomepage
path: root/dm/DMSrcSink.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dm/DMSrcSink.cpp')
-rw-r--r--dm/DMSrcSink.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp
index 2229b9c26d..149138d832 100644
--- a/dm/DMSrcSink.cpp
+++ b/dm/DMSrcSink.cpp
@@ -1838,14 +1838,23 @@ Error DebugSink::draw(const Src& src, SkBitmap*, SkWStream* dst, SkString*) cons
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-SVGSink::SVGSink() {}
+SVGSink::SVGSink(int pageIndex) : fPageIndex(pageIndex) {}
Error SVGSink::draw(const Src& src, SkBitmap*, SkWStream* dst, SkString*) const {
#if defined(SK_XML)
+ if (src.pageCount() > 1) {
+ int pageCount = src.pageCount();
+ if (fPageIndex > pageCount - 1) {
+ return Error(SkStringPrintf("Page index %d too high for document with only %d pages.",
+ fPageIndex, pageCount));
+ }
+ }
std::unique_ptr<SkXMLWriter> xmlWriter(new SkXMLStreamWriter(dst));
- return src.draw(SkSVGCanvas::Make(SkRect::MakeWH(SkIntToScalar(src.size().width()),
+ return src.draw(fPageIndex,
+ SkSVGCanvas::Make(SkRect::MakeWH(SkIntToScalar(src.size().width()),
SkIntToScalar(src.size().height())),
- xmlWriter.get()).get());
+ xmlWriter.get())
+ .get());
#else
return Error("SVG sink is disabled.");
#endif // SK_XML