summaryrefslogtreecommitdiff
path: root/core/include/fpdfapi/fpdf_objects.h
diff options
context:
space:
mode:
Diffstat (limited to 'core/include/fpdfapi/fpdf_objects.h')
-rw-r--r--core/include/fpdfapi/fpdf_objects.h884
1 files changed, 374 insertions, 510 deletions
diff --git a/core/include/fpdfapi/fpdf_objects.h b/core/include/fpdfapi/fpdf_objects.h
index 45b7cc63cb..250b6e00d8 100644
--- a/core/include/fpdfapi/fpdf_objects.h
+++ b/core/include/fpdfapi/fpdf_objects.h
@@ -26,718 +26,582 @@ class CPDF_StreamFilter;
class CPDF_String;
class IFX_FileRead;
-#define PDFOBJ_INVALID 0
-#define PDFOBJ_BOOLEAN 1
-#define PDFOBJ_NUMBER 2
-#define PDFOBJ_STRING 3
-#define PDFOBJ_NAME 4
-#define PDFOBJ_ARRAY 5
-#define PDFOBJ_DICTIONARY 6
-#define PDFOBJ_STREAM 7
-#define PDFOBJ_NULL 8
-#define PDFOBJ_REFERENCE 9
+#define PDFOBJ_INVALID 0
+#define PDFOBJ_BOOLEAN 1
+#define PDFOBJ_NUMBER 2
+#define PDFOBJ_STRING 3
+#define PDFOBJ_NAME 4
+#define PDFOBJ_ARRAY 5
+#define PDFOBJ_DICTIONARY 6
+#define PDFOBJ_STREAM 7
+#define PDFOBJ_NULL 8
+#define PDFOBJ_REFERENCE 9
-typedef IFX_FileStream* (*FPDF_LPFCloneStreamCallback)(CPDF_Stream *pStream, void* pUserData);
-class CPDF_Object
-{
-public:
+typedef IFX_FileStream* (*FPDF_LPFCloneStreamCallback)(CPDF_Stream* pStream,
+ void* pUserData);
+class CPDF_Object {
+ public:
+ int GetType() const { return m_Type; }
- int GetType() const
- {
- return m_Type;
- }
+ FX_DWORD GetObjNum() const { return m_ObjNum; }
- FX_DWORD GetObjNum() const
- {
- return m_ObjNum;
- }
+ FX_DWORD GetGenNum() const { return m_GenNum; }
- FX_DWORD GetGenNum() const
- {
- return m_GenNum;
- }
+ FX_BOOL IsIdentical(CPDF_Object* pObj) const;
- FX_BOOL IsIdentical(CPDF_Object* pObj) const;
+ CPDF_Object* Clone(FX_BOOL bDirect = FALSE) const;
- CPDF_Object* Clone(FX_BOOL bDirect = FALSE) const;
+ CPDF_Object* CloneRef(CPDF_IndirectObjects* pObjs) const;
- CPDF_Object* CloneRef(CPDF_IndirectObjects* pObjs) const;
+ CPDF_Object* GetDirect() const;
- CPDF_Object* GetDirect() const;
+ void Release();
- void Release();
+ CFX_ByteString GetString() const;
- CFX_ByteString GetString() const;
+ CFX_ByteStringC GetConstString() const;
- CFX_ByteStringC GetConstString() const;
+ CFX_WideString GetUnicodeText(CFX_CharMap* pCharMap = NULL) const;
+ FX_FLOAT GetNumber() const;
- CFX_WideString GetUnicodeText(CFX_CharMap* pCharMap = NULL) const;
- FX_FLOAT GetNumber() const;
+ FX_FLOAT GetNumber16() const;
- FX_FLOAT GetNumber16() const;
+ int GetInteger() const;
- int GetInteger() const;
+ CPDF_Dictionary* GetDict() const;
- CPDF_Dictionary* GetDict() const;
+ CPDF_Array* GetArray() const;
- CPDF_Array* GetArray() const;
+ void SetString(const CFX_ByteString& str);
- void SetString(const CFX_ByteString& str);
+ void SetUnicodeText(const FX_WCHAR* pUnicodes, int len = -1);
- void SetUnicodeText(const FX_WCHAR* pUnicodes, int len = -1);
+ int GetDirectType() const;
- int GetDirectType() const;
+ FX_BOOL IsModified() const { return FALSE; }
- FX_BOOL IsModified() const
- {
- return FALSE;
- }
-protected:
- CPDF_Object(FX_DWORD type) : m_Type(type), m_ObjNum(0), m_GenNum(0) { }
- ~CPDF_Object() { }
- void Destroy();
+ protected:
+ CPDF_Object(FX_DWORD type) : m_Type(type), m_ObjNum(0), m_GenNum(0) {}
+ ~CPDF_Object() {}
+ void Destroy();
- static const int OBJECT_REF_MAX_DEPTH = 128;
- static int s_nCurRefDepth;
- FX_DWORD m_Type;
- FX_DWORD m_ObjNum;
- FX_DWORD m_GenNum;
+ static const int OBJECT_REF_MAX_DEPTH = 128;
+ static int s_nCurRefDepth;
+ FX_DWORD m_Type;
+ FX_DWORD m_ObjNum;
+ FX_DWORD m_GenNum;
- friend class CPDF_IndirectObjects;
- friend class CPDF_Parser;
- friend class CPDF_SyntaxParser;
-private:
- CPDF_Object(const CPDF_Object& src) {}
- CPDF_Object* CloneInternal(FX_BOOL bDirect, CFX_MapPtrToPtr* visited) const;
-};
-class CPDF_Boolean : public CPDF_Object
-{
-public:
-
- static CPDF_Boolean* Create(FX_BOOL value)
- {
- return new CPDF_Boolean(value);
- }
-
- CPDF_Boolean() : CPDF_Object(PDFOBJ_BOOLEAN), m_bValue(false) { }
- CPDF_Boolean(FX_BOOL value) : CPDF_Object(PDFOBJ_BOOLEAN), m_bValue(value) { }
-
- FX_BOOL Identical(CPDF_Boolean* pOther) const
- {
- return m_bValue == pOther->m_bValue;
- }
-protected:
-
- FX_BOOL m_bValue;
- friend class CPDF_Object;
+ friend class CPDF_IndirectObjects;
+ friend class CPDF_Parser;
+ friend class CPDF_SyntaxParser;
+
+ private:
+ CPDF_Object(const CPDF_Object& src) {}
+ CPDF_Object* CloneInternal(FX_BOOL bDirect, CFX_MapPtrToPtr* visited) const;
};
-class CPDF_Number : public CPDF_Object
-{
-public:
+class CPDF_Boolean : public CPDF_Object {
+ public:
+ static CPDF_Boolean* Create(FX_BOOL value) { return new CPDF_Boolean(value); }
- static CPDF_Number* Create(int value)
- {
- return new CPDF_Number(value);
- }
+ CPDF_Boolean() : CPDF_Object(PDFOBJ_BOOLEAN), m_bValue(false) {}
+ CPDF_Boolean(FX_BOOL value) : CPDF_Object(PDFOBJ_BOOLEAN), m_bValue(value) {}
- static CPDF_Number* Create(FX_FLOAT value)
- {
- return new CPDF_Number(value);
- }
+ FX_BOOL Identical(CPDF_Boolean* pOther) const {
+ return m_bValue == pOther->m_bValue;
+ }
- static CPDF_Number* Create(const CFX_ByteStringC& str)
- {
- return new CPDF_Number(str);
- }
+ protected:
+ FX_BOOL m_bValue;
+ friend class CPDF_Object;
+};
+class CPDF_Number : public CPDF_Object {
+ public:
+ static CPDF_Number* Create(int value) { return new CPDF_Number(value); }
- static CPDF_Number* Create(FX_BOOL bInteger, void* pData)
- {
- return new CPDF_Number(bInteger, pData);
- }
+ static CPDF_Number* Create(FX_FLOAT value) { return new CPDF_Number(value); }
- CPDF_Number() : CPDF_Object(PDFOBJ_NUMBER), m_bInteger(false), m_Integer(0) { }
+ static CPDF_Number* Create(const CFX_ByteStringC& str) {
+ return new CPDF_Number(str);
+ }
- CPDF_Number(FX_BOOL bInteger, void* pData);
+ static CPDF_Number* Create(FX_BOOL bInteger, void* pData) {
+ return new CPDF_Number(bInteger, pData);
+ }
- CPDF_Number(int value);
+ CPDF_Number() : CPDF_Object(PDFOBJ_NUMBER), m_bInteger(false), m_Integer(0) {}
- CPDF_Number(FX_FLOAT value);
+ CPDF_Number(FX_BOOL bInteger, void* pData);
- CPDF_Number(const CFX_ByteStringC& str);
+ CPDF_Number(int value);
- FX_BOOL Identical(CPDF_Number* pOther) const;
+ CPDF_Number(FX_FLOAT value);
- CFX_ByteString GetString() const;
+ CPDF_Number(const CFX_ByteStringC& str);
- void SetString(const CFX_ByteStringC& str);
+ FX_BOOL Identical(CPDF_Number* pOther) const;
- FX_BOOL IsInteger() const
- {
- return m_bInteger;
- }
+ CFX_ByteString GetString() const;
- int GetInteger() const
- {
- return m_bInteger ? m_Integer : (int)m_Float;
- }
+ void SetString(const CFX_ByteStringC& str);
- FX_FLOAT GetNumber() const
- {
- return m_bInteger ? (FX_FLOAT)m_Integer : m_Float;
- }
+ FX_BOOL IsInteger() const { return m_bInteger; }
- void SetNumber(FX_FLOAT value);
+ int GetInteger() const { return m_bInteger ? m_Integer : (int)m_Float; }
- FX_FLOAT GetNumber16() const
- {
- return GetNumber();
- }
+ FX_FLOAT GetNumber() const {
+ return m_bInteger ? (FX_FLOAT)m_Integer : m_Float;
+ }
- FX_FLOAT GetFloat() const
- {
- return m_bInteger ? (FX_FLOAT)m_Integer : m_Float;
- }
-protected:
+ void SetNumber(FX_FLOAT value);
- FX_BOOL m_bInteger;
+ FX_FLOAT GetNumber16() const { return GetNumber(); }
- union {
+ FX_FLOAT GetFloat() const {
+ return m_bInteger ? (FX_FLOAT)m_Integer : m_Float;
+ }
- int m_Integer;
+ protected:
+ FX_BOOL m_bInteger;
- FX_FLOAT m_Float;
- };
- friend class CPDF_Object;
-};
-class CPDF_String : public CPDF_Object
-{
-public:
+ union {
+ int m_Integer;
- static CPDF_String* Create(const CFX_ByteString& str, FX_BOOL bHex = FALSE)
- {
- return new CPDF_String(str, bHex);
- }
+ FX_FLOAT m_Float;
+ };
+ friend class CPDF_Object;
+};
+class CPDF_String : public CPDF_Object {
+ public:
+ static CPDF_String* Create(const CFX_ByteString& str, FX_BOOL bHex = FALSE) {
+ return new CPDF_String(str, bHex);
+ }
- static CPDF_String* Create(const CFX_WideString& str)
- {
- return new CPDF_String(str);
- }
+ static CPDF_String* Create(const CFX_WideString& str) {
+ return new CPDF_String(str);
+ }
- CPDF_String() : CPDF_Object(PDFOBJ_STRING), m_bHex(FALSE) { }
+ CPDF_String() : CPDF_Object(PDFOBJ_STRING), m_bHex(FALSE) {}
- CPDF_String(const CFX_ByteString& str, FX_BOOL bHex = FALSE)
- : CPDF_Object(PDFOBJ_STRING), m_String(str), m_bHex(bHex) {
- }
+ CPDF_String(const CFX_ByteString& str, FX_BOOL bHex = FALSE)
+ : CPDF_Object(PDFOBJ_STRING), m_String(str), m_bHex(bHex) {}
- CPDF_String(const CFX_WideString& str);
+ CPDF_String(const CFX_WideString& str);
- CFX_ByteString& GetString()
- {
- return m_String;
- }
+ CFX_ByteString& GetString() { return m_String; }
- FX_BOOL Identical(CPDF_String* pOther) const
- {
- return m_String == pOther->m_String;
- }
+ FX_BOOL Identical(CPDF_String* pOther) const {
+ return m_String == pOther->m_String;
+ }
- FX_BOOL IsHex() const
- {
- return m_bHex;
- }
-protected:
+ FX_BOOL IsHex() const { return m_bHex; }
- CFX_ByteString m_String;
+ protected:
+ CFX_ByteString m_String;
- FX_BOOL m_bHex;
- friend class CPDF_Object;
+ FX_BOOL m_bHex;
+ friend class CPDF_Object;
};
-class CPDF_Name : public CPDF_Object
-{
-public:
-
- static CPDF_Name* Create(const CFX_ByteString& str)
- {
- return new CPDF_Name(str);
- }
-
- static CPDF_Name* Create(const CFX_ByteStringC& str)
- {
- return new CPDF_Name(str);
- }
-
- static CPDF_Name* Create(const FX_CHAR* str)
- {
- return new CPDF_Name(str);
- }
-
- CPDF_Name(const CFX_ByteString& str) : CPDF_Object(PDFOBJ_NAME), m_Name(str) { }
- CPDF_Name(const CFX_ByteStringC& str) : CPDF_Object(PDFOBJ_NAME), m_Name(str) { }
- CPDF_Name(const FX_CHAR* str) : CPDF_Object(PDFOBJ_NAME), m_Name(str) { }
-
- CFX_ByteString& GetString()
- {
- return m_Name;
- }
-
- FX_BOOL Identical(CPDF_Name* pOther) const
- {
- return m_Name == pOther->m_Name;
- }
-protected:
-
- CFX_ByteString m_Name;
- friend class CPDF_Object;
-};
-class CPDF_Array : public CPDF_Object
-{
-public:
-
- static CPDF_Array* Create()
- {
- return new CPDF_Array();
- }
-
- CPDF_Array() : CPDF_Object(PDFOBJ_ARRAY) { }
-
- FX_DWORD GetCount() const
- {
- return m_Objects.GetSize();
- }
-
- CPDF_Object* GetElement(FX_DWORD index) const;
+class CPDF_Name : public CPDF_Object {
+ public:
+ static CPDF_Name* Create(const CFX_ByteString& str) {
+ return new CPDF_Name(str);
+ }
- CPDF_Object* GetElementValue(FX_DWORD index) const;
+ static CPDF_Name* Create(const CFX_ByteStringC& str) {
+ return new CPDF_Name(str);
+ }
+ static CPDF_Name* Create(const FX_CHAR* str) { return new CPDF_Name(str); }
+ CPDF_Name(const CFX_ByteString& str)
+ : CPDF_Object(PDFOBJ_NAME), m_Name(str) {}
+ CPDF_Name(const CFX_ByteStringC& str)
+ : CPDF_Object(PDFOBJ_NAME), m_Name(str) {}
+ CPDF_Name(const FX_CHAR* str) : CPDF_Object(PDFOBJ_NAME), m_Name(str) {}
- CFX_AffineMatrix GetMatrix();
+ CFX_ByteString& GetString() { return m_Name; }
- CFX_FloatRect GetRect();
+ FX_BOOL Identical(CPDF_Name* pOther) const {
+ return m_Name == pOther->m_Name;
+ }
+ protected:
+ CFX_ByteString m_Name;
+ friend class CPDF_Object;
+};
+class CPDF_Array : public CPDF_Object {
+ public:
+ static CPDF_Array* Create() { return new CPDF_Array(); }
+ CPDF_Array() : CPDF_Object(PDFOBJ_ARRAY) {}
+ FX_DWORD GetCount() const { return m_Objects.GetSize(); }
- CFX_ByteString GetString(FX_DWORD index) const;
-
- CFX_ByteStringC GetConstString(FX_DWORD index) const;
-
- int GetInteger(FX_DWORD index) const;
-
- FX_FLOAT GetNumber(FX_DWORD index) const;
-
- CPDF_Dictionary* GetDict(FX_DWORD index) const;
+ CPDF_Object* GetElement(FX_DWORD index) const;
- CPDF_Stream* GetStream(FX_DWORD index) const;
+ CPDF_Object* GetElementValue(FX_DWORD index) const;
- CPDF_Array* GetArray(FX_DWORD index) const;
+ CFX_AffineMatrix GetMatrix();
- FX_FLOAT GetFloat(FX_DWORD index) const
- {
- return GetNumber(index);
- }
+ CFX_FloatRect GetRect();
+ CFX_ByteString GetString(FX_DWORD index) const;
+ CFX_ByteStringC GetConstString(FX_DWORD index) const;
+ int GetInteger(FX_DWORD index) const;
- void SetAt(FX_DWORD index, CPDF_Object* pObj, CPDF_IndirectObjects* pObjs = NULL);
+ FX_FLOAT GetNumber(FX_DWORD index) const;
+ CPDF_Dictionary* GetDict(FX_DWORD index) const;
- void InsertAt(FX_DWORD index, CPDF_Object* pObj, CPDF_IndirectObjects* pObjs = NULL);
+ CPDF_Stream* GetStream(FX_DWORD index) const;
- void RemoveAt(FX_DWORD index);
+ CPDF_Array* GetArray(FX_DWORD index) const;
+ FX_FLOAT GetFloat(FX_DWORD index) const { return GetNumber(index); }
- void Add(CPDF_Object* pObj, CPDF_IndirectObjects* pObjs = NULL);
+ void SetAt(FX_DWORD index,
+ CPDF_Object* pObj,
+ CPDF_IndirectObjects* pObjs = NULL);
+ void InsertAt(FX_DWORD index,
+ CPDF_Object* pObj,
+ CPDF_IndirectObjects* pObjs = NULL);
+ void RemoveAt(FX_DWORD index);
- void AddNumber(FX_FLOAT f);
+ void Add(CPDF_Object* pObj, CPDF_IndirectObjects* pObjs = NULL);
- void AddInteger(int i);
+ void AddNumber(FX_FLOAT f);
- void AddString(const CFX_ByteString& str);
+ void AddInteger(int i);
- void AddName(const CFX_ByteString& str);
+ void AddString(const CFX_ByteString& str);
- void AddReference(CPDF_IndirectObjects* pDoc, FX_DWORD objnum);
+ void AddName(const CFX_ByteString& str);
- void AddReference(CPDF_IndirectObjects* pDoc, CPDF_Object* obj)
- {
- AddReference(pDoc, obj->GetObjNum());
- }
+ void AddReference(CPDF_IndirectObjects* pDoc, FX_DWORD objnum);
+ void AddReference(CPDF_IndirectObjects* pDoc, CPDF_Object* obj) {
+ AddReference(pDoc, obj->GetObjNum());
+ }
- FX_FLOAT GetNumber16(FX_DWORD index) const
- {
- return GetNumber(index);
- }
+ FX_FLOAT GetNumber16(FX_DWORD index) const { return GetNumber(index); }
- void AddNumber16(FX_FLOAT value)
- {
- AddNumber(value);
- }
+ void AddNumber16(FX_FLOAT value) { AddNumber(value); }
- FX_BOOL Identical(CPDF_Array* pOther) const;
-protected:
+ FX_BOOL Identical(CPDF_Array* pOther) const;
- ~CPDF_Array();
+ protected:
+ ~CPDF_Array();
- CFX_PtrArray m_Objects;
- friend class CPDF_Object;
+ CFX_PtrArray m_Objects;
+ friend class CPDF_Object;
};
-class CPDF_Dictionary : public CPDF_Object
-{
-public:
+class CPDF_Dictionary : public CPDF_Object {
+ public:
+ static CPDF_Dictionary* Create() { return new CPDF_Dictionary(); }
- static CPDF_Dictionary* Create()
- {
- return new CPDF_Dictionary();
- }
+ CPDF_Dictionary() : CPDF_Object(PDFOBJ_DICTIONARY) {}
- CPDF_Dictionary() : CPDF_Object(PDFOBJ_DICTIONARY) { }
+ CPDF_Object* GetElement(const CFX_ByteStringC& key) const;
- CPDF_Object* GetElement(const CFX_ByteStringC& key) const;
+ CPDF_Object* GetElementValue(const CFX_ByteStringC& key) const;
- CPDF_Object* GetElementValue(const CFX_ByteStringC& key) const;
+ CFX_ByteString GetString(const CFX_ByteStringC& key) const;
+ CFX_ByteStringC GetConstString(const CFX_ByteStringC& key) const;
+ CFX_ByteString GetString(const CFX_ByteStringC& key,
+ const CFX_ByteStringC& default_str) const;
+ CFX_ByteStringC GetConstString(const CFX_ByteStringC& key,
+ const CFX_ByteStringC& default_str) const;
+ CFX_WideString GetUnicodeText(const CFX_ByteStringC& key,
+ CFX_CharMap* pCharMap = NULL) const;
- CFX_ByteString GetString(const CFX_ByteStringC& key) const;
+ int GetInteger(const CFX_ByteStringC& key) const;
- CFX_ByteStringC GetConstString(const CFX_ByteStringC& key) const;
+ int GetInteger(const CFX_ByteStringC& key, int default_int) const;
- CFX_ByteString GetString(const CFX_ByteStringC& key, const CFX_ByteStringC& default_str) const;
+ FX_BOOL GetBoolean(const CFX_ByteStringC& key,
+ FX_BOOL bDefault = FALSE) const;
- CFX_ByteStringC GetConstString(const CFX_ByteStringC& key, const CFX_ByteStringC& default_str) const;
+ FX_FLOAT GetNumber(const CFX_ByteStringC& key) const;
- CFX_WideString GetUnicodeText(const CFX_ByteStringC& key, CFX_CharMap* pCharMap = NULL) const;
+ CPDF_Dictionary* GetDict(const CFX_ByteStringC& key) const;
- int GetInteger(const CFX_ByteStringC& key) const;
+ CPDF_Stream* GetStream(const CFX_ByteStringC& key) const;
- int GetInteger(const CFX_ByteStringC& key, int default_int) const;
+ CPDF_Array* GetArray(const CFX_ByteStringC& key) const;
- FX_BOOL GetBoolean(const CFX_ByteStringC& key, FX_BOOL bDefault = FALSE) const;
+ CFX_FloatRect GetRect(const CFX_ByteStringC& key) const;
- FX_FLOAT GetNumber(const CFX_ByteStringC& key) const;
+ CFX_AffineMatrix GetMatrix(const CFX_ByteStringC& key) const;
- CPDF_Dictionary* GetDict(const CFX_ByteStringC& key) const;
+ FX_FLOAT GetFloat(const CFX_ByteStringC& key) const { return GetNumber(key); }
- CPDF_Stream* GetStream(const CFX_ByteStringC& key) const;
+ FX_BOOL KeyExist(const CFX_ByteStringC& key) const;
- CPDF_Array* GetArray(const CFX_ByteStringC& key) const;
+ FX_POSITION GetStartPos() const;
- CFX_FloatRect GetRect(const CFX_ByteStringC& key) const;
+ CPDF_Object* GetNextElement(FX_POSITION& pos, CFX_ByteString& key) const;
- CFX_AffineMatrix GetMatrix(const CFX_ByteStringC& key) const;
+ void SetAt(const CFX_ByteStringC& key,
+ CPDF_Object* pObj,
+ CPDF_IndirectObjects* pObjs = NULL);
- FX_FLOAT GetFloat(const CFX_ByteStringC& key) const
- {
- return GetNumber(key);
- }
+ void SetAtName(const CFX_ByteStringC& key, const CFX_ByteString& name);
+ void SetAtString(const CFX_ByteStringC& key, const CFX_ByteString& string);
- FX_BOOL KeyExist(const CFX_ByteStringC& key) const;
+ void SetAtInteger(const CFX_ByteStringC& key, int i);
- FX_POSITION GetStartPos() const;
+ void SetAtNumber(const CFX_ByteStringC& key, FX_FLOAT f);
- CPDF_Object* GetNextElement(FX_POSITION& pos, CFX_ByteString& key) const;
+ void SetAtReference(const CFX_ByteStringC& key,
+ CPDF_IndirectObjects* pDoc,
+ FX_DWORD objnum);
- void SetAt(const CFX_ByteStringC& key, CPDF_Object* pObj, CPDF_IndirectObjects* pObjs = NULL);
+ void SetAtReference(const CFX_ByteStringC& key,
+ CPDF_IndirectObjects* pDoc,
+ CPDF_Object* obj) {
+ SetAtReference(key, pDoc, obj->GetObjNum());
+ }
+ void AddReference(const CFX_ByteStringC& key,
+ CPDF_IndirectObjects* pDoc,
+ FX_DWORD objnum);
+ void AddReference(const CFX_ByteStringC& key,
+ CPDF_IndirectObjects* pDoc,
+ CPDF_Object* obj) {
+ AddReference(key, pDoc, obj->GetObjNum());
+ }
- void SetAtName(const CFX_ByteStringC& key, const CFX_ByteString& name);
+ void SetAtRect(const CFX_ByteStringC& key, const CFX_FloatRect& rect);
+ void SetAtMatrix(const CFX_ByteStringC& key, const CFX_AffineMatrix& matrix);
- void SetAtString(const CFX_ByteStringC& key, const CFX_ByteString& string);
+ void SetAtBoolean(const CFX_ByteStringC& key, FX_BOOL bValue);
+ void RemoveAt(const CFX_ByteStringC& key);
- void SetAtInteger(const CFX_ByteStringC& key, int i);
+ void ReplaceKey(const CFX_ByteStringC& oldkey, const CFX_ByteStringC& newkey);
+ FX_BOOL Identical(CPDF_Dictionary* pDict) const;
- void SetAtNumber(const CFX_ByteStringC& key, FX_FLOAT f);
+ int GetCount() const { return m_Map.GetCount(); }
- void SetAtReference(const CFX_ByteStringC& key, CPDF_IndirectObjects* pDoc, FX_DWORD objnum);
+ void AddValue(const CFX_ByteStringC& key, CPDF_Object* pObj);
- void SetAtReference(const CFX_ByteStringC& key, CPDF_IndirectObjects* pDoc, CPDF_Object* obj)
- {
- SetAtReference(key, pDoc, obj->GetObjNum());
- }
+ protected:
+ ~CPDF_Dictionary();
- void AddReference(const CFX_ByteStringC& key, CPDF_IndirectObjects* pDoc, FX_DWORD objnum);
+ CFX_CMapByteStringToPtr m_Map;
- void AddReference(const CFX_ByteStringC& key, CPDF_IndirectObjects* pDoc, CPDF_Object* obj)
- {
- AddReference(key, pDoc, obj->GetObjNum());
- }
-
- void SetAtRect(const CFX_ByteStringC& key, const CFX_FloatRect& rect);
-
- void SetAtMatrix(const CFX_ByteStringC& key, const CFX_AffineMatrix& matrix);
-
- void SetAtBoolean(const CFX_ByteStringC& key, FX_BOOL bValue);
+ friend class CPDF_Object;
+};
+class CPDF_Stream : public CPDF_Object {
+ public:
+ static CPDF_Stream* Create(uint8_t* pData,
+ FX_DWORD size,
+ CPDF_Dictionary* pDict) {
+ return new CPDF_Stream(pData, size, pDict);
+ }
+ CPDF_Stream(uint8_t* pData, FX_DWORD size, CPDF_Dictionary* pDict);
+ CPDF_Dictionary* GetDict() const { return m_pDict; }
- void RemoveAt(const CFX_ByteStringC& key);
+ void SetData(const uint8_t* pData,
+ FX_DWORD size,
+ FX_BOOL bCompressed,
+ FX_BOOL bKeepBuf);
+ void InitStream(uint8_t* pData, FX_DWORD size, CPDF_Dictionary* pDict);
- void ReplaceKey(const CFX_ByteStringC& oldkey, const CFX_ByteStringC& newkey);
+ void InitStream(IFX_FileRead* pFile, CPDF_Dictionary* pDict);
- FX_BOOL Identical(CPDF_Dictionary* pDict) const;
+ FX_BOOL Identical(CPDF_Stream* pOther) const;
- int GetCount() const
- {
- return m_Map.GetCount();
- }
+ CPDF_StreamFilter* GetStreamFilter(FX_BOOL bRaw = FALSE) const;
- void AddValue(const CFX_ByteStringC& key, CPDF_Object* pObj);
-protected:
+ FX_DWORD GetRawSize() const { return m_dwSize; }
- ~CPDF_Dictionary();
+ FX_BOOL ReadRawData(FX_FILESIZE start_pos,
+ uint8_t* pBuf,
+ FX_DWORD buf_size) const;
- CFX_CMapByteStringToPtr m_Map;
+ FX_BOOL IsMemoryBased() const { return m_GenNum == (FX_DWORD)-1; }
- friend class CPDF_Object;
-};
-class CPDF_Stream : public CPDF_Object
-{
-public:
+ CPDF_Stream* Clone(FX_BOOL bDirect,
+ FPDF_LPFCloneStreamCallback lpfCallback,
+ void* pUserData) const;
- static CPDF_Stream* Create(uint8_t* pData, FX_DWORD size, CPDF_Dictionary* pDict)
- {
- return new CPDF_Stream(pData, size, pDict);
- }
+ protected:
+ ~CPDF_Stream();
- CPDF_Stream(uint8_t* pData, FX_DWORD size, CPDF_Dictionary* pDict);
+ CPDF_Dictionary* m_pDict;
- CPDF_Dictionary* GetDict() const
- {
- return m_pDict;
- }
+ FX_DWORD m_dwSize;
- void SetData(const uint8_t* pData, FX_DWORD size, FX_BOOL bCompressed, FX_BOOL bKeepBuf);
+ FX_DWORD m_GenNum;
- void InitStream(uint8_t* pData, FX_DWORD size, CPDF_Dictionary* pDict);
+ union {
+ uint8_t* m_pDataBuf;
- void InitStream(IFX_FileRead *pFile, CPDF_Dictionary* pDict);
+ IFX_FileRead* m_pFile;
+ };
- FX_BOOL Identical(CPDF_Stream* pOther) const;
+ FX_FILESIZE m_FileOffset;
- CPDF_StreamFilter* GetStreamFilter(FX_BOOL bRaw = FALSE) const;
+ CPDF_CryptoHandler* m_pCryptoHandler;
+ void InitStream(CPDF_Dictionary* pDict);
+ friend class CPDF_Object;
+ friend class CPDF_StreamAcc;
+ friend class CPDF_AttachmentAcc;
+};
+class CPDF_StreamAcc {
+ public:
+ CPDF_StreamAcc();
+ ~CPDF_StreamAcc();
- FX_DWORD GetRawSize() const
- {
- return m_dwSize;
- }
+ void LoadAllData(const CPDF_Stream* pStream,
+ FX_BOOL bRawAccess = FALSE,
+ FX_DWORD estimated_size = 0,
+ FX_BOOL bImageAcc = FALSE);
- FX_BOOL ReadRawData(FX_FILESIZE start_pos, uint8_t* pBuf, FX_DWORD buf_size) const;
+ const CPDF_Stream* GetStream() const { return m_pStream; }
+ CPDF_Dictionary* GetDict() const {
+ return m_pStream ? m_pStream->GetDict() : NULL;
+ }
- FX_BOOL IsMemoryBased() const
- {
- return m_GenNum == (FX_DWORD) - 1;
- }
+ const uint8_t* GetData() const;
- CPDF_Stream* Clone(FX_BOOL bDirect, FPDF_LPFCloneStreamCallback lpfCallback, void* pUserData) const;
-protected:
+ FX_DWORD GetSize() const;
- ~CPDF_Stream();
+ uint8_t* DetachData();
- CPDF_Dictionary* m_pDict;
+ const CFX_ByteString& GetImageDecoder() { return m_ImageDecoder; }
- FX_DWORD m_dwSize;
+ const CPDF_Dictionary* GetImageParam() { return m_pImageParam; }
- FX_DWORD m_GenNum;
+ protected:
+ uint8_t* m_pData;
- union {
+ FX_DWORD m_dwSize;
- uint8_t* m_pDataBuf;
+ FX_BOOL m_bNewBuf;
- IFX_FileRead* m_pFile;
- };
+ CFX_ByteString m_ImageDecoder;
- FX_FILESIZE m_FileOffset;
+ CPDF_Dictionary* m_pImageParam;
- CPDF_CryptoHandler* m_pCryptoHandler;
+ const CPDF_Stream* m_pStream;
- void InitStream(CPDF_Dictionary* pDict);
- friend class CPDF_Object;
- friend class CPDF_StreamAcc;
- friend class CPDF_AttachmentAcc;
+ uint8_t* m_pSrcData;
};
-class CPDF_StreamAcc
-{
-public:
-
- CPDF_StreamAcc();
-
- ~CPDF_StreamAcc();
-
- void LoadAllData(const CPDF_Stream* pStream, FX_BOOL bRawAccess = FALSE,
- FX_DWORD estimated_size = 0, FX_BOOL bImageAcc = FALSE);
+CFX_DataFilter* FPDF_CreateFilter(const CFX_ByteStringC& name,
+ const CPDF_Dictionary* pParam,
+ int width = 0,
+ int height = 0);
+#define FPDF_FILTER_BUFFER_SIZE 20480
+class CPDF_StreamFilter {
+ public:
+ ~CPDF_StreamFilter();
- const CPDF_Stream* GetStream() const
- {
- return m_pStream;
- }
+ FX_DWORD ReadBlock(uint8_t* buffer, FX_DWORD size);
- CPDF_Dictionary* GetDict() const
- {
- return m_pStream? m_pStream->GetDict() : NULL;
- }
+ FX_DWORD GetSrcPos() { return m_SrcOffset; }
- const uint8_t* GetData() const;
+ const CPDF_Stream* GetStream() { return m_pStream; }
- FX_DWORD GetSize() const;
+ protected:
+ CPDF_StreamFilter() {}
- uint8_t* DetachData();
+ FX_DWORD ReadLeftOver(uint8_t* buffer, FX_DWORD buf_size);
- const CFX_ByteString& GetImageDecoder()
- {
- return m_ImageDecoder;
- }
+ const CPDF_Stream* m_pStream;
- const CPDF_Dictionary* GetImageParam()
- {
- return m_pImageParam;
- }
-protected:
+ CFX_DataFilter* m_pFilter;
- uint8_t* m_pData;
+ CFX_BinaryBuf* m_pBuffer;
- FX_DWORD m_dwSize;
+ FX_DWORD m_BufOffset;
- FX_BOOL m_bNewBuf;
+ FX_DWORD m_SrcOffset;
- CFX_ByteString m_ImageDecoder;
-
- CPDF_Dictionary* m_pImageParam;
-
- const CPDF_Stream* m_pStream;
-
- uint8_t* m_pSrcData;
+ uint8_t m_SrcBuffer[FPDF_FILTER_BUFFER_SIZE];
+ friend class CPDF_Stream;
};
-CFX_DataFilter* FPDF_CreateFilter(const CFX_ByteStringC& name, const CPDF_Dictionary* pParam, int width = 0, int height = 0);
-#define FPDF_FILTER_BUFFER_SIZE 20480
-class CPDF_StreamFilter
-{
-public:
-
- ~CPDF_StreamFilter();
-
- FX_DWORD ReadBlock(uint8_t* buffer, FX_DWORD size);
+class CPDF_Null : public CPDF_Object {
+ public:
+ static CPDF_Null* Create() { return new CPDF_Null(); }
- FX_DWORD GetSrcPos()
- {
- return m_SrcOffset;
- }
-
- const CPDF_Stream* GetStream()
- {
- return m_pStream;
- }
-protected:
-
- CPDF_StreamFilter() {}
-
- FX_DWORD ReadLeftOver(uint8_t* buffer, FX_DWORD buf_size);
-
- const CPDF_Stream* m_pStream;
-
- CFX_DataFilter* m_pFilter;
+ CPDF_Null() : CPDF_Object(PDFOBJ_NULL) {}
+};
+class CPDF_Reference : public CPDF_Object {
+ public:
+ CPDF_Reference(CPDF_IndirectObjects* pDoc, int objnum)
+ : CPDF_Object(PDFOBJ_REFERENCE), m_pObjList(pDoc), m_RefObjNum(objnum) {}
- CFX_BinaryBuf* m_pBuffer;
+ CPDF_IndirectObjects* GetObjList() const { return m_pObjList; }
- FX_DWORD m_BufOffset;
+ FX_DWORD GetRefObjNum() const { return m_RefObjNum; }
- FX_DWORD m_SrcOffset;
+ void SetRef(CPDF_IndirectObjects* pDoc, FX_DWORD objnum);
- uint8_t m_SrcBuffer[FPDF_FILTER_BUFFER_SIZE];
- friend class CPDF_Stream;
-};
-class CPDF_Null : public CPDF_Object
-{
-public:
+ FX_BOOL Identical(CPDF_Reference* pOther) const {
+ return m_RefObjNum == pOther->m_RefObjNum;
+ }
- static CPDF_Null* Create()
- {
- return new CPDF_Null();
- }
+ protected:
+ CPDF_IndirectObjects* m_pObjList;
- CPDF_Null() : CPDF_Object(PDFOBJ_NULL) { }
+ FX_DWORD m_RefObjNum;
+ friend class CPDF_Object;
};
-class CPDF_Reference : public CPDF_Object
-{
-public:
- CPDF_Reference(CPDF_IndirectObjects* pDoc, int objnum)
- : CPDF_Object(PDFOBJ_REFERENCE), m_pObjList(pDoc), m_RefObjNum(objnum) {
- }
-
- CPDF_IndirectObjects* GetObjList() const
- {
- return m_pObjList;
- }
-
- FX_DWORD GetRefObjNum() const
- {
- return m_RefObjNum;
- }
-
- void SetRef(CPDF_IndirectObjects* pDoc, FX_DWORD objnum);
-
- FX_BOOL Identical(CPDF_Reference* pOther) const
- {
- return m_RefObjNum == pOther->m_RefObjNum;
- }
-protected:
-
- CPDF_IndirectObjects* m_pObjList;
-
- FX_DWORD m_RefObjNum;
- friend class CPDF_Object;
-};
-class CPDF_IndirectObjects
-{
-public:
-
- CPDF_IndirectObjects(CPDF_Parser* pParser);
+class CPDF_IndirectObjects {
+ public:
+ CPDF_IndirectObjects(CPDF_Parser* pParser);
- ~CPDF_IndirectObjects();
+ ~CPDF_IndirectObjects();
- CPDF_Object* GetIndirectObject(FX_DWORD objnum, struct PARSE_CONTEXT* pContext = NULL);
+ CPDF_Object* GetIndirectObject(FX_DWORD objnum,
+ struct PARSE_CONTEXT* pContext = NULL);
- int GetIndirectType(FX_DWORD objnum);
+ int GetIndirectType(FX_DWORD objnum);
- FX_DWORD AddIndirectObject(CPDF_Object* pObj);
+ FX_DWORD AddIndirectObject(CPDF_Object* pObj);
- void ReleaseIndirectObject(FX_DWORD objnum);
+ void ReleaseIndirectObject(FX_DWORD objnum);
- void InsertIndirectObject(FX_DWORD objnum, CPDF_Object* pObj);
+ void InsertIndirectObject(FX_DWORD objnum, CPDF_Object* pObj);
- FX_DWORD GetLastObjNum() const;
+ FX_DWORD GetLastObjNum() const;
- FX_POSITION GetStartPosition() const
- {
- return m_IndirectObjs.GetStartPosition();
- }
+ FX_POSITION GetStartPosition() const {
+ return m_IndirectObjs.GetStartPosition();
+ }
- void GetNextAssoc(FX_POSITION& rPos, FX_DWORD& objnum, CPDF_Object*& pObject) const
- {
- m_IndirectObjs.GetNextAssoc(rPos, (void*&)objnum, (void*&)pObject);
- }
-protected:
+ void GetNextAssoc(FX_POSITION& rPos,
+ FX_DWORD& objnum,
+ CPDF_Object*& pObject) const {
+ m_IndirectObjs.GetNextAssoc(rPos, (void*&)objnum, (void*&)pObject);
+ }
- CFX_MapPtrToPtr m_IndirectObjs;
+ protected:
+ CFX_MapPtrToPtr m_IndirectObjs;
- CPDF_Parser* m_pParser;
+ CPDF_Parser* m_pParser;
- FX_DWORD m_LastObjNum;
+ FX_DWORD m_LastObjNum;
};
#endif // CORE_INCLUDE_FPDFAPI_FPDF_OBJECTS_H_