Index: src/pdf/SkPDFTypes.h |
diff --git a/src/pdf/SkPDFTypes.h b/src/pdf/SkPDFTypes.h |
index 23a30b9a2b21c6460206e8e94e9fc07185bfad1e..f1d02cccec081c665791a28c9672fca2b4fa47bc 100644 |
--- a/src/pdf/SkPDFTypes.h |
+++ b/src/pdf/SkPDFTypes.h |
@@ -11,6 +11,7 @@ |
#include "SkRefCnt.h" |
#include "SkScalar.h" |
+#include "SkStream.h" |
#include "SkString.h" |
#include "SkTDArray.h" |
#include "SkTHash.h" |
@@ -19,7 +20,6 @@ |
class SkPDFObjNumMap; |
class SkPDFObject; |
class SkPDFSubstituteMap; |
-class SkWStream; |
/** \class SkPDFObject |
@@ -30,8 +30,6 @@ class SkWStream; |
*/ |
class SkPDFObject : public SkRefCnt { |
public: |
- |
- |
/** Subclasses must implement this method to print the object to the |
* PDF file. |
* @param catalog The object catalog to use. |
@@ -77,7 +75,7 @@ public: |
static SkPDFUnion Int(int32_t); |
- static SkPDFUnion Int(size_t); |
+ static SkPDFUnion Int(size_t v) { return SkPDFUnion::Int(SkToS32(v)); } |
static SkPDFUnion Bool(bool); |
@@ -188,8 +186,6 @@ private: |
*/ |
class SkPDFArray : public SkPDFObject { |
public: |
- |
- |
static const int kMaxLen = 8191; |
/** Create a PDF array. Maximum length is 8191. |
@@ -239,8 +235,6 @@ private: |
*/ |
class SkPDFDict : public SkPDFObject { |
public: |
- |
- |
/** Create a PDF dictionary. Maximum number of entries is 4095. |
*/ |
SkPDFDict(); |
@@ -290,6 +284,12 @@ public: |
*/ |
void clear(); |
+ /** Emit the dictionary, without the "<<" and ">>". |
+ */ |
+ void emitAll(SkWStream* stream, |
+ const SkPDFObjNumMap& objNumMap, |
+ const SkPDFSubstituteMap& substitutes) const; |
+ |
private: |
struct Record { |
SkPDFUnion fKey; |
@@ -303,6 +303,33 @@ private: |
typedef SkPDFObject INHERITED; |
}; |
+/** \class SkPDFSharedStream |
+ |
+ This class takes an asset and assumes that it is backed by |
+ long-lived shared data (for example, an open file |
+ descriptor). That is: no memory savings can be made by holding on |
+ to a compressed version instead. |
+ */ |
+class SkPDFSharedStream : public SkPDFObject { |
+public: |
+ // Takes ownership of asset. |
+ SkPDFSharedStream(SkStreamAsset* data) |
+ : fAsset(data), fDict(SkNEW(SkPDFDict)) { |
+ SkASSERT(data); |
+ } |
+ SkPDFDict* dict() { return fDict; } |
+ void emitObject(SkWStream*, |
+ const SkPDFObjNumMap&, |
+ const SkPDFSubstituteMap&) const override; |
+ void addResources(SkPDFObjNumMap*, |
+ const SkPDFSubstituteMap&) const override; |
+ |
+private: |
+ SkAutoTDelete<SkStreamAsset> fAsset; |
+ SkAutoTUnref<SkPDFDict> fDict; |
+ typedef SkPDFObject INHERITED; |
+}; |
+ |
//////////////////////////////////////////////////////////////////////////////// |
/** \class SkPDFObjNumMap |