Index: src/pdf/SkPDFDocument.h |
diff --git a/src/pdf/SkPDFDocument.h b/src/pdf/SkPDFDocument.h |
index 8ed76778fe91b8fb79f466967bf50af9f56d5e0d..1c0d940330b0bb6c52383806bc6ece09c9a1aa73 100644 |
--- a/src/pdf/SkPDFDocument.h |
+++ b/src/pdf/SkPDFDocument.h |
@@ -8,6 +8,7 @@ |
#define SkPDFDocument_DEFINED |
#include "SkDocument.h" |
+#include "SkPDFMetadata.h" |
tomhudson
2016/03/21 15:55:12
You also need to #include SkPDFTypes.h here to get
hal.canary
2016/03/21 18:49:18
Done.
|
sk_sp<SkDocument> SkPDFMakeDocument( |
SkWStream* stream, |
@@ -15,4 +16,48 @@ sk_sp<SkDocument> SkPDFMakeDocument( |
SkScalar rasterDpi, |
SkPixelSerializer* jpegEncoder); |
+// Logically part of SkPDFDocument (like SkPDFCanon), but |
djsollen
2016/03/16 12:41:49
but what?
hal.canary
2016/03/21 18:49:18
Done.
|
+struct SkPDFObjectSerializer : SkNoncopyable { |
+ SkPDFObjNumMap fObjNumMap; |
+ SkPDFSubstituteMap fSubstituteMap; |
+ SkTDArray<int32_t> fOffsets; |
+ sk_sp<SkPDFObject> fInfoDict; |
+ size_t fBaseOffset; |
+ int32_t fNextToBeSerialized; // index in fObjNumMap |
+ |
+ SkPDFObjectSerializer(); |
+ void addObjectRecursively(const sk_sp<SkPDFObject>&); |
+ void serializeHeader(SkWStream*, const SkPDFMetadata&); |
+ void serializeObjects(SkWStream*); |
+ void serializeFooter(SkWStream*, const sk_sp<SkPDFObject>, sk_sp<SkPDFObject>); |
+ int32_t offset(SkWStream*); |
+}; |
+ |
+class SkPDFDocument : public SkDocument { |
tomhudson
2016/03/21 15:55:12
This is an implementation detail of SkDocument, bu
hal.canary
2016/03/21 19:40:08
/** Concrete implementation of SkDocument that cre
|
+public: |
+ SkPDFDocument(SkWStream*, |
+ void (*)(SkWStream*, bool), |
+ SkScalar, |
+ SkPixelSerializer*); |
+ virtual ~SkPDFDocument(); |
+ SkCanvas* onBeginPage(SkScalar, SkScalar, const SkRect&) override; |
+ void onEndPage() override; |
+ bool onClose(SkWStream*) override; |
+ void onAbort() override; |
+ void setMetadata(const SkDocument::Attribute[], |
+ int, |
+ const SkTime::DateTime*, |
+ const SkTime::DateTime*) override; |
+ void serialize(const sk_sp<SkPDFObject>&); |
+ SkPDFCanon* canon() { return &fCanon; } |
+ |
+private: |
+ SkPDFObjectSerializer fObjectSerializer; |
+ SkPDFCanon fCanon; |
+ SkTArray<sk_sp<const SkPDFDevice>> fPageDevices; |
+ sk_sp<SkCanvas> fCanvas; |
+ SkScalar fRasterDpi; |
+ SkPDFMetadata fMetadata; |
+}; |
+ |
#endif // SkPDFDocument_DEFINED |