Chromium Code Reviews| Index: src/pdf/SkPDFTypes.h |
| diff --git a/src/pdf/SkPDFTypes.h b/src/pdf/SkPDFTypes.h |
| index f93b030465736216a796eeb51cc8f4f3a7626067..0a7c1bd06c5252609cc4d774707eea98cfdd4025 100644 |
| --- a/src/pdf/SkPDFTypes.h |
| +++ b/src/pdf/SkPDFTypes.h |
| @@ -51,6 +51,13 @@ public: |
| virtual void addResources(SkPDFObjNumMap* catalog, |
| const SkPDFSubstituteMap& substitutes) const {} |
| + /** |
| + * Release all resources associated with this SkPDFObject. It is |
| + * an error to call emitObject() or addResources() after calling |
| + * dump(). |
| + */ |
| + virtual void dump() {} |
|
mtklein
2016/03/18 14:03:26
We usually use dump() to mean, print this to stdou
tomhudson
2016/03/18 14:11:54
Yes! I was concerned but didn't have a better idea
hal.canary
2016/03/18 21:18:07
done.
I like drop better.
hal.canary
2016/03/18 21:18:07
Done.
|
| + |
| private: |
| typedef SkRefCnt INHERITED; |
| }; |
| @@ -178,8 +185,6 @@ private: |
| */ |
| class SkPDFArray final : public SkPDFObject { |
| public: |
| - static const int kMaxLen = 8191; |
| - |
| /** Create a PDF array. Maximum length is 8191. |
| */ |
| SkPDFArray(); |
| @@ -191,6 +196,7 @@ public: |
| const SkPDFSubstituteMap& substitutes) const override; |
| void addResources(SkPDFObjNumMap*, |
| const SkPDFSubstituteMap&) const override; |
| + void dump() override; |
| /** The size of the array. |
| */ |
| @@ -215,9 +221,9 @@ public: |
| void appendObjRef(sk_sp<SkPDFObject>); |
| private: |
| - SkTDArray<SkPDFUnion> fValues; |
| + SkTArray<SkPDFUnion> fValues; |
| void append(SkPDFUnion&& value); |
| - typedef SkPDFObject INHERITED; |
| + SkDEBUGCODE(bool fDumped;) |
| }; |
| /** \class SkPDFDict |
| @@ -226,14 +232,10 @@ private: |
| */ |
| class SkPDFDict : public SkPDFObject { |
| public: |
| - /** Create a PDF dictionary. Maximum number of entries is 4095. |
| - */ |
| - SkPDFDict(); |
| - |
| - /** Create a PDF dictionary with a Type entry. |
| - * @param type The value of the Type entry. |
| + /** Create a PDF dictionary. |
| + * @param type The value of the Type entry, nullptr for no type. |
| */ |
| - explicit SkPDFDict(const char type[]); |
| + explicit SkPDFDict(const char type[] = nullptr); |
| virtual ~SkPDFDict(); |
| @@ -243,6 +245,7 @@ public: |
| const SkPDFSubstituteMap& substitutes) const override; |
| void addResources(SkPDFObjNumMap*, |
| const SkPDFSubstituteMap&) const override; |
| + void dump() override; |
| /** The size of the dictionary. |
| */ |
| @@ -270,10 +273,6 @@ public: |
| void insertString(const char key[], const char value[]); |
| void insertString(const char key[], const SkString& value); |
| - /** Remove all entries from the dictionary. |
| - */ |
| - void clear(); |
| - |
| /** Emit the dictionary, without the "<<" and ">>". |
| */ |
| void emitAll(SkWStream* stream, |
| @@ -284,13 +283,14 @@ private: |
| struct Record { |
| SkPDFUnion fKey; |
| SkPDFUnion fValue; |
| + Record(SkPDFUnion&&, SkPDFUnion&&); |
| + Record(Record&&); |
| + Record& operator=(Record&&); |
| + Record(const Record&) = delete; |
| + Record& operator=(const Record&) = delete; |
| }; |
| - SkTDArray<Record> fRecords; |
| - static const int kMaxLen = 4095; |
| - |
| - void set(SkPDFUnion&& name, SkPDFUnion&& value); |
| - |
| - typedef SkPDFObject INHERITED; |
| + SkTArray<Record> fRecords; |
| + SkDEBUGCODE(bool fDumped;) |
| }; |
| /** \class SkPDFSharedStream |
| @@ -303,18 +303,20 @@ private: |
| class SkPDFSharedStream final : public SkPDFObject { |
| public: |
| // Takes ownership of asset. |
| - SkPDFSharedStream(SkStreamAsset* data) |
| - : fAsset(data), fDict(new SkPDFDict) { SkASSERT(data); } |
| + SkPDFSharedStream(SkStreamAsset* data); |
| + ~SkPDFSharedStream(); |
| SkPDFDict* dict() { return fDict.get(); } |
| void emitObject(SkWStream*, |
| const SkPDFObjNumMap&, |
| const SkPDFSubstituteMap&) const override; |
| void addResources(SkPDFObjNumMap*, |
| const SkPDFSubstituteMap&) const override; |
| + void dump() override; |
| private: |
| SkAutoTDelete<SkStreamAsset> fAsset; |
| sk_sp<SkPDFDict> fDict; |
| + SkDEBUGCODE(bool fDumped;) |
| typedef SkPDFObject INHERITED; |
| }; |
| @@ -344,10 +346,10 @@ public: |
| */ |
| int32_t getObjectNumber(SkPDFObject* obj) const; |
| - const SkTDArray<SkPDFObject*>& objects() const { return fObjects; } |
| + const SkTArray<sk_sp<SkPDFObject>>& objects() const { return fObjects; } |
| private: |
| - SkTDArray<SkPDFObject*> fObjects; |
| + SkTArray<sk_sp<SkPDFObject>> fObjects; |
| SkTHashMap<SkPDFObject*, int32_t> fObjectNumbers; |
| }; |