SkMultiPictureDocument & SkMultiPictureDocumentReader
also, a new DM::Src.
motivation: To be used to test the printing pipeline in Chromium.
BUG=skia:5370
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2023593002
Review-Url: https://codereview.chromium.org/2023593002
diff --git a/dm/DMSrcSink.h b/dm/DMSrcSink.h
index 42f0e6d..395f59e 100644
--- a/dm/DMSrcSink.h
+++ b/dm/DMSrcSink.h
@@ -15,6 +15,7 @@
#include "SkBitmapRegionDecoder.h"
#include "SkCanvas.h"
#include "SkData.h"
+#include "SkMultiPictureDocumentReader.h"
#include "SkPicture.h"
#include "gm.h"
@@ -66,6 +67,11 @@
virtual void modifyGrContextOptions(GrContextOptions* options) const {}
virtual bool veto(SinkFlags) const { return false; }
+ virtual int pageCount() const { return 1; }
+ virtual Error SK_WARN_UNUSED_RESULT draw(int, SkCanvas* canvas) const {
+ return this->draw(canvas);
+ }
+ virtual SkISize size(int) const { return this->size(); }
// Force Tasks using this Src to run on the main thread?
virtual bool serial() const { return false; }
};
@@ -243,6 +249,24 @@
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+class MSKPSrc : public Src {
+public:
+ explicit MSKPSrc(Path path);
+
+ int pageCount() const override;
+ Error draw(SkCanvas* c) const override;
+ Error draw(int, SkCanvas*) const override;
+ SkISize size() const override;
+ SkISize size(int) const override;
+ Name name() const override;
+
+private:
+ Path fPath;
+ SkMultiPictureDocumentReader fReader;
+};
+
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
class NullSink : public Sink {
public:
NullSink() {}