Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1027)

Unified Diff: src/pdf/SkPDFDocument.h

Issue 1802033003: SkPDF: SkPDFDocument reorganized so that some objects can be serialized early. (Closed) Base URL: https://skia.googlesource.com/skia.git@SkPdfDumpMethod
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/pdf/SkPDFDocument.cpp » ('j') | src/pdf/SkPDFDocument.cpp » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « no previous file | src/pdf/SkPDFDocument.cpp » ('j') | src/pdf/SkPDFDocument.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698