diff options
Diffstat (limited to 'core/include/fpdfapi/fpdf_objects.h')
-rw-r--r-- | core/include/fpdfapi/fpdf_objects.h | 892 |
1 files changed, 379 insertions, 513 deletions
diff --git a/core/include/fpdfapi/fpdf_objects.h b/core/include/fpdfapi/fpdf_objects.h index e6336f6511..925f3efaf1 100644 --- a/core/include/fpdfapi/fpdf_objects.h +++ b/core/include/fpdfapi/fpdf_objects.h @@ -26,724 +26,590 @@ 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; + 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 FX_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; +class CPDF_Boolean : public CPDF_Object { + public: + static CPDF_Boolean* Create(FX_BOOL value) { + return FX_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; }; -class CPDF_Number : public CPDF_Object -{ -public: - - static CPDF_Number* Create(int value) - { - return FX_NEW CPDF_Number(value); - } - - static CPDF_Number* Create(FX_FLOAT value) - { - return FX_NEW CPDF_Number(value); - } +class CPDF_Number : public CPDF_Object { + public: + static CPDF_Number* Create(int value) { return FX_NEW CPDF_Number(value); } - static CPDF_Number* Create(const CFX_ByteStringC& str) - { - return FX_NEW CPDF_Number(str); - } + static CPDF_Number* Create(FX_FLOAT value) { + return FX_NEW CPDF_Number(value); + } - static CPDF_Number* Create(FX_BOOL bInteger, void* pData) - { - return FX_NEW CPDF_Number(bInteger, pData); - } + static CPDF_Number* Create(const CFX_ByteStringC& str) { + return FX_NEW CPDF_Number(str); + } - CPDF_Number() : CPDF_Object(PDFOBJ_NUMBER), m_bInteger(false), m_Integer(0) { } + static CPDF_Number* Create(FX_BOOL bInteger, void* pData) { + return FX_NEW CPDF_Number(bInteger, pData); + } - CPDF_Number(FX_BOOL bInteger, void* pData); + CPDF_Number() : CPDF_Object(PDFOBJ_NUMBER), m_bInteger(false), m_Integer(0) {} - CPDF_Number(int value); + CPDF_Number(FX_BOOL bInteger, void* pData); - CPDF_Number(FX_FLOAT value); + CPDF_Number(int value); - CPDF_Number(const CFX_ByteStringC& str); + CPDF_Number(FX_FLOAT value); - FX_BOOL Identical(CPDF_Number* pOther) const; + CPDF_Number(const CFX_ByteStringC& str); - CFX_ByteString GetString() const; + FX_BOOL Identical(CPDF_Number* pOther) const; - void SetString(const CFX_ByteStringC& str); + CFX_ByteString GetString() const; - FX_BOOL IsInteger() const - { - return m_bInteger; - } + void SetString(const CFX_ByteStringC& str); - int GetInteger() const - { - return m_bInteger ? m_Integer : (int)m_Float; - } + FX_BOOL IsInteger() const { return m_bInteger; } - FX_FLOAT GetNumber() const - { - return m_bInteger ? (FX_FLOAT)m_Integer : m_Float; - } + int GetInteger() const { return m_bInteger ? m_Integer : (int)m_Float; } - void SetNumber(FX_FLOAT value); + FX_FLOAT GetNumber() const { + return m_bInteger ? (FX_FLOAT)m_Integer : m_Float; + } - FX_FLOAT GetNumber16() const - { - return GetNumber(); - } + void SetNumber(FX_FLOAT value); - FX_FLOAT GetFloat() const - { - return m_bInteger ? (FX_FLOAT)m_Integer : m_Float; - } -protected: + FX_FLOAT GetNumber16() const { return GetNumber(); } - FX_BOOL m_bInteger; + FX_FLOAT GetFloat() const { + return m_bInteger ? (FX_FLOAT)m_Integer : m_Float; + } - union { + protected: + FX_BOOL m_bInteger; - int m_Integer; + union { + int m_Integer; - FX_FLOAT m_Float; - }; - friend class CPDF_Object; + FX_FLOAT m_Float; + }; + friend class CPDF_Object; }; -class CPDF_String : public CPDF_Object -{ -public: +class CPDF_String : public CPDF_Object { + public: + static CPDF_String* Create(const CFX_ByteString& str, FX_BOOL bHex = FALSE) { + return FX_NEW CPDF_String(str, bHex); + } - static CPDF_String* Create(const CFX_ByteString& str, FX_BOOL bHex = FALSE) - { - return FX_NEW CPDF_String(str, bHex); - } + static CPDF_String* Create(const CFX_WideString& str) { + return FX_NEW CPDF_String(str); + } - static CPDF_String* Create(const CFX_WideString& str) - { - return FX_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; } - FX_BOOL IsHex() const - { - return m_bHex; - } -protected: + protected: + CFX_ByteString m_String; - CFX_ByteString m_String; - - FX_BOOL m_bHex; - friend class CPDF_Object; -}; -class CPDF_Name : public CPDF_Object -{ -public: - - static CPDF_Name* Create(const CFX_ByteString& str) - { - return FX_NEW CPDF_Name(str); - } - - static CPDF_Name* Create(const CFX_ByteStringC& str) - { - return FX_NEW CPDF_Name(str); - } - - static CPDF_Name* Create(const FX_CHAR* str) - { - return FX_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; + FX_BOOL m_bHex; + friend class CPDF_Object; }; -class CPDF_Array : public CPDF_Object -{ -public: - - static CPDF_Array* Create() - { - return FX_NEW CPDF_Array(); - } - - CPDF_Array() : CPDF_Object(PDFOBJ_ARRAY) { } - - FX_DWORD GetCount() const - { - return m_Objects.GetSize(); - } - - CPDF_Object* GetElement(FX_DWORD index) const; - - CPDF_Object* GetElementValue(FX_DWORD index) const; +class CPDF_Name : public CPDF_Object { + public: + static CPDF_Name* Create(const CFX_ByteString& str) { + return FX_NEW CPDF_Name(str); + } + static CPDF_Name* Create(const CFX_ByteStringC& str) { + return FX_NEW CPDF_Name(str); + } + static CPDF_Name* Create(const FX_CHAR* str) { return FX_NEW CPDF_Name(str); } - CFX_AffineMatrix GetMatrix(); + 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_FloatRect GetRect(); + 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 FX_NEW CPDF_Array(); } + CPDF_Array() : CPDF_Object(PDFOBJ_ARRAY) {} - 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; + FX_DWORD GetCount() const { return m_Objects.GetSize(); } - 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: - - static CPDF_Dictionary* Create() - { - return FX_NEW CPDF_Dictionary(); - } - - CPDF_Dictionary() : CPDF_Object(PDFOBJ_DICTIONARY) { } - - CPDF_Object* GetElement(const CFX_ByteStringC& key) const; - - CPDF_Object* GetElementValue(const CFX_ByteStringC& key) const; - +class CPDF_Dictionary : public CPDF_Object { + public: + static CPDF_Dictionary* Create() { return FX_NEW CPDF_Dictionary(); } + CPDF_Dictionary() : CPDF_Object(PDFOBJ_DICTIONARY) {} + CPDF_Object* GetElement(const CFX_ByteStringC& key) const; + CPDF_Object* GetElementValue(const CFX_ByteStringC& key) const; - CFX_ByteString GetString(const CFX_ByteStringC& key) const; + CFX_ByteString GetString(const CFX_ByteStringC& key) const; - CFX_ByteStringC GetConstString(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_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_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_WideString GetUnicodeText(const CFX_ByteStringC& key, + CFX_CharMap* pCharMap = NULL) const; - int GetInteger(const CFX_ByteStringC& key) const; + int GetInteger(const CFX_ByteStringC& key) const; - int GetInteger(const CFX_ByteStringC& key, int default_int) const; + int GetInteger(const CFX_ByteStringC& key, int default_int) const; - FX_BOOL GetBoolean(const CFX_ByteStringC& key, FX_BOOL bDefault = FALSE) const; + FX_BOOL GetBoolean(const CFX_ByteStringC& key, + FX_BOOL bDefault = FALSE) const; - FX_FLOAT GetNumber(const CFX_ByteStringC& key) const; + FX_FLOAT GetNumber(const CFX_ByteStringC& key) const; - CPDF_Dictionary* GetDict(const CFX_ByteStringC& key) const; + CPDF_Dictionary* GetDict(const CFX_ByteStringC& key) const; - CPDF_Stream* GetStream(const CFX_ByteStringC& key) const; + CPDF_Stream* GetStream(const CFX_ByteStringC& key) const; - CPDF_Array* GetArray(const CFX_ByteStringC& key) const; + CPDF_Array* GetArray(const CFX_ByteStringC& key) const; - CFX_FloatRect GetRect(const CFX_ByteStringC& key) const; + CFX_FloatRect GetRect(const CFX_ByteStringC& key) const; - CFX_AffineMatrix GetMatrix(const CFX_ByteStringC& key) const; + CFX_AffineMatrix GetMatrix(const CFX_ByteStringC& key) const; - FX_FLOAT GetFloat(const CFX_ByteStringC& key) const - { - return GetNumber(key); - } + FX_FLOAT GetFloat(const CFX_ByteStringC& key) const { return GetNumber(key); } + FX_BOOL KeyExist(const CFX_ByteStringC& key) const; - FX_BOOL KeyExist(const CFX_ByteStringC& key) const; + FX_POSITION GetStartPos() const; - FX_POSITION GetStartPos() const; + CPDF_Object* GetNextElement(FX_POSITION& pos, CFX_ByteString& key) const; - CPDF_Object* GetNextElement(FX_POSITION& pos, CFX_ByteString& key) const; + void SetAt(const CFX_ByteStringC& key, + CPDF_Object* pObj, + CPDF_IndirectObjects* pObjs = NULL); - void SetAt(const CFX_ByteStringC& key, CPDF_Object* pObj, CPDF_IndirectObjects* pObjs = NULL); + void SetAtName(const CFX_ByteStringC& key, const CFX_ByteString& name); + void SetAtString(const CFX_ByteStringC& key, const CFX_ByteString& string); + void SetAtInteger(const CFX_ByteStringC& key, int i); - void SetAtName(const CFX_ByteStringC& key, const CFX_ByteString& name); + void SetAtNumber(const CFX_ByteStringC& key, FX_FLOAT f); + void SetAtReference(const CFX_ByteStringC& key, + CPDF_IndirectObjects* pDoc, + FX_DWORD objnum); - void SetAtString(const CFX_ByteStringC& key, const CFX_ByteString& string); + 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 SetAtInteger(const CFX_ByteStringC& key, int i); + 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 SetAtNumber(const CFX_ByteStringC& key, FX_FLOAT f); + void SetAtMatrix(const CFX_ByteStringC& key, const CFX_AffineMatrix& matrix); - void SetAtReference(const CFX_ByteStringC& key, CPDF_IndirectObjects* pDoc, FX_DWORD objnum); + void SetAtBoolean(const CFX_ByteStringC& key, FX_BOOL bValue); - void SetAtReference(const CFX_ByteStringC& key, CPDF_IndirectObjects* pDoc, CPDF_Object* obj) - { - SetAtReference(key, pDoc, obj->GetObjNum()); - } + void RemoveAt(const CFX_ByteStringC& key); - void AddReference(const CFX_ByteStringC& key, CPDF_IndirectObjects* pDoc, FX_DWORD objnum); + void ReplaceKey(const CFX_ByteStringC& oldkey, const CFX_ByteStringC& newkey); - void AddReference(const CFX_ByteStringC& key, CPDF_IndirectObjects* pDoc, CPDF_Object* obj) - { - AddReference(key, pDoc, obj->GetObjNum()); - } + FX_BOOL Identical(CPDF_Dictionary* pDict) const; - void SetAtRect(const CFX_ByteStringC& key, const CFX_FloatRect& rect); + int GetCount() const { return m_Map.GetCount(); } - void SetAtMatrix(const CFX_ByteStringC& key, const CFX_AffineMatrix& matrix); + void AddValue(const CFX_ByteStringC& key, CPDF_Object* pObj); - void SetAtBoolean(const CFX_ByteStringC& key, FX_BOOL bValue); + protected: + ~CPDF_Dictionary(); + CFX_CMapByteStringToPtr m_Map; - - void RemoveAt(const CFX_ByteStringC& key); - - - void ReplaceKey(const CFX_ByteStringC& oldkey, const CFX_ByteStringC& newkey); - - FX_BOOL Identical(CPDF_Dictionary* pDict) const; - - int GetCount() const - { - return m_Map.GetCount(); - } - - void AddValue(const CFX_ByteStringC& key, CPDF_Object* pObj); -protected: - - ~CPDF_Dictionary(); - - CFX_CMapByteStringToPtr m_Map; - - friend class CPDF_Object; + 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 FX_NEW CPDF_Stream(pData, size, pDict); - } +class CPDF_Stream : public CPDF_Object { + public: + static CPDF_Stream* Create(uint8_t* pData, + FX_DWORD size, + CPDF_Dictionary* pDict) { + return FX_NEW CPDF_Stream(pData, size, pDict); + } - CPDF_Stream(uint8_t* pData, FX_DWORD size, CPDF_Dictionary* pDict); + CPDF_Stream(uint8_t* pData, FX_DWORD size, CPDF_Dictionary* pDict); - CPDF_Dictionary* GetDict() const - { - return m_pDict; - } + CPDF_Dictionary* GetDict() const { return m_pDict; } - void SetData(const uint8_t* pData, FX_DWORD size, FX_BOOL bCompressed, FX_BOOL bKeepBuf); + 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 InitStream(uint8_t* pData, FX_DWORD size, CPDF_Dictionary* pDict); - void InitStream(IFX_FileRead *pFile, CPDF_Dictionary* pDict); + void InitStream(IFX_FileRead* pFile, CPDF_Dictionary* pDict); - FX_BOOL Identical(CPDF_Stream* pOther) const; + FX_BOOL Identical(CPDF_Stream* pOther) const; - CPDF_StreamFilter* GetStreamFilter(FX_BOOL bRaw = FALSE) const; + CPDF_StreamFilter* GetStreamFilter(FX_BOOL bRaw = FALSE) const; + FX_DWORD GetRawSize() const { return m_dwSize; } + FX_BOOL ReadRawData(FX_FILESIZE start_pos, + uint8_t* pBuf, + FX_DWORD buf_size) const; - FX_DWORD GetRawSize() const - { - return m_dwSize; - } + FX_BOOL IsMemoryBased() const { return m_GenNum == (FX_DWORD)-1; } - FX_BOOL ReadRawData(FX_FILESIZE start_pos, uint8_t* pBuf, FX_DWORD buf_size) const; + CPDF_Stream* Clone(FX_BOOL bDirect, + FPDF_LPFCloneStreamCallback lpfCallback, + void* pUserData) const; + protected: + ~CPDF_Stream(); - FX_BOOL IsMemoryBased() const - { - return m_GenNum == (FX_DWORD) - 1; - } + CPDF_Dictionary* m_pDict; - CPDF_Stream* Clone(FX_BOOL bDirect, FPDF_LPFCloneStreamCallback lpfCallback, void* pUserData) const; -protected: + FX_DWORD m_dwSize; - ~CPDF_Stream(); + FX_DWORD m_GenNum; - CPDF_Dictionary* m_pDict; + union { + uint8_t* m_pDataBuf; - FX_DWORD m_dwSize; + IFX_FileRead* m_pFile; + }; - FX_DWORD m_GenNum; + FX_FILESIZE m_FileOffset; - union { + CPDF_CryptoHandler* m_pCryptoHandler; - uint8_t* m_pDataBuf; - - IFX_FileRead* m_pFile; - }; - - FX_FILESIZE m_FileOffset; - - CPDF_CryptoHandler* m_pCryptoHandler; - - void InitStream(CPDF_Dictionary* pDict); - friend class CPDF_Object; - friend class CPDF_StreamAcc; - friend class CPDF_AttachmentAcc; + void InitStream(CPDF_Dictionary* pDict); + friend class CPDF_Object; + friend class CPDF_StreamAcc; + friend class CPDF_AttachmentAcc; }; -class CPDF_StreamAcc -{ -public: - - CPDF_StreamAcc(); +class CPDF_StreamAcc { + public: + CPDF_StreamAcc(); - ~CPDF_StreamAcc(); + ~CPDF_StreamAcc(); - void LoadAllData(const CPDF_Stream* pStream, FX_BOOL bRawAccess = FALSE, - FX_DWORD estimated_size = 0, FX_BOOL bImageAcc = FALSE); + void LoadAllData(const CPDF_Stream* pStream, + FX_BOOL bRawAccess = FALSE, + FX_DWORD estimated_size = 0, + FX_BOOL bImageAcc = FALSE); - const CPDF_Stream* GetStream() const - { - return m_pStream; - } + const CPDF_Stream* GetStream() const { return m_pStream; } - CPDF_Dictionary* GetDict() const - { - return m_pStream? m_pStream->GetDict() : NULL; - } + CPDF_Dictionary* GetDict() const { + return m_pStream ? m_pStream->GetDict() : NULL; + } - const uint8_t* GetData() const; + const uint8_t* GetData() const; - FX_DWORD GetSize() const; + FX_DWORD GetSize() const; - uint8_t* DetachData(); + uint8_t* DetachData(); - const CFX_ByteString& GetImageDecoder() - { - return m_ImageDecoder; - } + const CFX_ByteString& GetImageDecoder() { return m_ImageDecoder; } - const CPDF_Dictionary* GetImageParam() - { - return m_pImageParam; - } -protected: + const CPDF_Dictionary* GetImageParam() { return m_pImageParam; } - uint8_t* m_pData; + protected: + uint8_t* m_pData; - FX_DWORD m_dwSize; + FX_DWORD m_dwSize; - FX_BOOL m_bNewBuf; + FX_BOOL m_bNewBuf; - CFX_ByteString m_ImageDecoder; + CFX_ByteString m_ImageDecoder; - CPDF_Dictionary* m_pImageParam; + CPDF_Dictionary* m_pImageParam; - const CPDF_Stream* m_pStream; + const CPDF_Stream* m_pStream; - uint8_t* m_pSrcData; + uint8_t* m_pSrcData; }; -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: +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(); - ~CPDF_StreamFilter(); + FX_DWORD ReadBlock(uint8_t* buffer, FX_DWORD size); - FX_DWORD ReadBlock(uint8_t* buffer, FX_DWORD size); + FX_DWORD GetSrcPos() { return m_SrcOffset; } - FX_DWORD GetSrcPos() - { - return m_SrcOffset; - } + const CPDF_Stream* GetStream() { return m_pStream; } - const CPDF_Stream* GetStream() - { - return m_pStream; - } -protected: + protected: + CPDF_StreamFilter() {} - CPDF_StreamFilter() {} + FX_DWORD ReadLeftOver(uint8_t* buffer, FX_DWORD buf_size); - FX_DWORD ReadLeftOver(uint8_t* buffer, FX_DWORD buf_size); + const CPDF_Stream* m_pStream; - const CPDF_Stream* m_pStream; + CFX_DataFilter* m_pFilter; - CFX_DataFilter* m_pFilter; + CFX_BinaryBuf* m_pBuffer; - CFX_BinaryBuf* m_pBuffer; + FX_DWORD m_BufOffset; - FX_DWORD m_BufOffset; + FX_DWORD m_SrcOffset; - FX_DWORD m_SrcOffset; - - uint8_t m_SrcBuffer[FPDF_FILTER_BUFFER_SIZE]; - friend class CPDF_Stream; + uint8_t m_SrcBuffer[FPDF_FILTER_BUFFER_SIZE]; + friend class CPDF_Stream; }; -class CPDF_Null : public CPDF_Object -{ -public: - - static CPDF_Null* Create() - { - return FX_NEW CPDF_Null(); - } +class CPDF_Null : public CPDF_Object { + public: + static CPDF_Null* Create() { return FX_NEW CPDF_Null(); } - CPDF_Null() : CPDF_Object(PDFOBJ_NULL) { } + CPDF_Null() : CPDF_Object(PDFOBJ_NULL) {} }; -class CPDF_Reference : public CPDF_Object -{ -public: +class CPDF_Reference : public CPDF_Object { + public: + static CPDF_Reference* Create(CPDF_IndirectObjects* pDoc, int objnum) { + return FX_NEW CPDF_Reference(pDoc, objnum); + } - static CPDF_Reference* Create(CPDF_IndirectObjects* pDoc, int objnum) - { - return FX_NEW CPDF_Reference(pDoc, objnum); - } + CPDF_Reference(CPDF_IndirectObjects* pDoc, int objnum) + : CPDF_Object(PDFOBJ_REFERENCE), m_pObjList(pDoc), m_RefObjNum(objnum) {} - CPDF_Reference(CPDF_IndirectObjects* pDoc, int objnum) - : CPDF_Object(PDFOBJ_REFERENCE), m_pObjList(pDoc), m_RefObjNum(objnum) { - } + CPDF_IndirectObjects* GetObjList() const { return m_pObjList; } - CPDF_IndirectObjects* GetObjList() const - { - return m_pObjList; - } + FX_DWORD GetRefObjNum() const { return m_RefObjNum; } - FX_DWORD GetRefObjNum() const - { - return m_RefObjNum; - } + void SetRef(CPDF_IndirectObjects* pDoc, FX_DWORD objnum); - void SetRef(CPDF_IndirectObjects* pDoc, FX_DWORD objnum); + FX_BOOL Identical(CPDF_Reference* pOther) const { + return m_RefObjNum == pOther->m_RefObjNum; + } - FX_BOOL Identical(CPDF_Reference* pOther) const - { - return m_RefObjNum == pOther->m_RefObjNum; - } -protected: + protected: + CPDF_IndirectObjects* m_pObjList; - CPDF_IndirectObjects* m_pObjList; - - FX_DWORD m_RefObjNum; - friend class CPDF_Object; + 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_ |