| Index: core/include/fpdfapi/fpdf_objects.h
|
| diff --git a/core/include/fpdfapi/fpdf_objects.h b/core/include/fpdfapi/fpdf_objects.h
|
| index 45b7cc63cb04c5357d7a3b2514e5a4d0b5dd53f4..250b6e00d87bf16a48faf50327a68a20d9e44ac3 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_
|
|
|