add serialprocs to MultiDocument, hide redundant methods
Bug: skia:
Change-Id: I6521e93af79439bd8c1d2f5130a68492044a2ee9
Reviewed-on: https://skia-review.googlesource.com/87788
Reviewed-by: Wei Li <weili@chromium.org>
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Mike Reed <reed@google.com>
diff --git a/src/utils/SkMultiPictureDocument.cpp b/src/utils/SkMultiPictureDocument.cpp
index 4ff2d07..b3e84dc 100644
--- a/src/utils/SkMultiPictureDocument.cpp
+++ b/src/utils/SkMultiPictureDocument.cpp
@@ -10,6 +10,7 @@
#include "SkNWayCanvas.h"
#include "SkPicture.h"
#include "SkPictureRecorder.h"
+#include "SkSerialProcs.h"
#include "SkStream.h"
#include "SkTArray.h"
@@ -45,12 +46,15 @@
}
struct MultiPictureDocument final : public SkDocument {
+ const SkSerialProcs fProcs;
SkPictureRecorder fPictureRecorder;
SkSize fCurrentPageSize;
SkTArray<sk_sp<SkPicture>> fPages;
SkTArray<SkSize> fSizes;
- MultiPictureDocument(SkWStream* s, void (*d)(SkWStream*, bool))
- : SkDocument(s, d) {}
+ MultiPictureDocument(SkWStream* s, void (*d)(SkWStream*, bool), const SkSerialProcs* procs)
+ : SkDocument(s, d)
+ , fProcs(procs ? *procs : SkSerialProcs())
+ {}
~MultiPictureDocument() override { this->close(); }
SkCanvas* onBeginPage(SkScalar w, SkScalar h) override {
@@ -77,7 +81,7 @@
c->drawAnnotation(SkRect::MakeEmpty(), kEndPage, nullptr);
}
sk_sp<SkPicture> p = fPictureRecorder.finishRecordingAsPicture();
- p->serialize(wStream);
+ p->serialize(wStream, &fProcs);
fPages.reset();
fSizes.reset();
return;
@@ -89,8 +93,8 @@
};
}
-sk_sp<SkDocument> SkMakeMultiPictureDocument(SkWStream* wStream) {
- return sk_make_sp<MultiPictureDocument>(wStream, nullptr);
+sk_sp<SkDocument> SkMakeMultiPictureDocument(SkWStream* wStream, const SkSerialProcs* procs) {
+ return sk_make_sp<MultiPictureDocument>(wStream, nullptr, procs);
}
////////////////////////////////////////////////////////////////////////////////
@@ -171,7 +175,8 @@
bool SkMultiPictureDocumentRead(SkStreamSeekable* stream,
SkDocumentPage* dstArray,
- int dstArrayCount) {
+ int dstArrayCount,
+ const SkDeserialProcs* procs) {
if (!SkMultiPictureDocumentReadPageSizes(stream, dstArray, dstArrayCount)) {
return false;
}
@@ -181,7 +186,7 @@
SkTMax(joined.height(), dstArray[i].fSize.height())};
}
- auto picture = SkPicture::MakeFromStream(stream);
+ auto picture = SkPicture::MakeFromStream(stream, procs);
PagerCanvas canvas(joined.toCeil(), dstArray, dstArrayCount);
// Must call playback(), not drawPicture() to reach