1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved. 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Use of this source code is governed by a BSD-style license that can be 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// found in the LICENSE file. 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _FPDF_OBJECTS_ 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define _FPDF_OBJECTS_ 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _FXCRT_EXTENSION_ 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../fxcrt/fx_ext.h" 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Document; 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_IndirectObjects; 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Null; 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Boolean; 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Number; 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_String; 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Stream; 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_StreamAcc; 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_StreamFilter; 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Array; 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Dictionary; 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Reference; 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass IPDF_DocParser; 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass IFX_FileRead; 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_CryptoHandler; 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFOBJ_INVALID 0 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFOBJ_BOOLEAN 1 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFOBJ_NUMBER 2 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFOBJ_STRING 3 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFOBJ_NAME 4 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFOBJ_ARRAY 5 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFOBJ_DICTIONARY 6 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFOBJ_STREAM 7 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFOBJ_NULL 8 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFOBJ_REFERENCE 9 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef IFX_FileStream* (*FPDF_LPFCloneStreamCallback)(CPDF_Stream *pStream, FX_LPVOID pUserData); 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Object : public CFX_Object 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetType() const 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Type; 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD GetObjNum() const 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_ObjNum; 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsIdentical(CPDF_Object* pObj) const; 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* Clone(FX_BOOL bDirect = FALSE) const; 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* CloneRef(CPDF_IndirectObjects* pObjs) const; 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* GetDirect() const; 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Release(); 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString GetString() const; 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteStringC GetConstString() const; 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString GetUnicodeText(CFX_CharMap* pCharMap = NULL) const; 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT GetNumber() const; 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT GetNumber16() const; 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetInteger() const; 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* GetDict() const; 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Array* GetArray() const; 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetString(const CFX_ByteString& str); 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetUnicodeText(FX_LPCWSTR pUnicodes, int len = -1); 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetDirectType() const; 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsModified() const 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD m_Type; 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object() 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_ObjNum = 0; 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD m_ObjNum; 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Destroy(); 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~CPDF_Object() {} 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CPDF_IndirectObjects; 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CPDF_Parser; 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CPDF_SyntaxParser; 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object(const CPDF_Object& src) {} 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* CloneInternal(FX_BOOL bDirect, CFX_MapPtrToPtr* visited) const; 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Boolean : public CPDF_Object 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_Boolean* Create(FX_BOOL value) 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_NEW CPDF_Boolean(value); 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Boolean() 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Type = PDFOBJ_BOOLEAN; 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Boolean(FX_BOOL value) 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Type = PDFOBJ_BOOLEAN; 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bValue = value; 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Identical(CPDF_Boolean* pOther) const 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_bValue == pOther->m_bValue; 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bValue; 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CPDF_Object; 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Number : public CPDF_Object 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_Number* Create(int value) 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_NEW CPDF_Number(value); 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_Number* Create(FX_FLOAT value) 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_NEW CPDF_Number(value); 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_Number* Create(FX_BSTR str) 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_NEW CPDF_Number(str); 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_Number* Create(FX_BOOL bInteger, void* pData) 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_NEW CPDF_Number(bInteger, pData); 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Number() 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Type = PDFOBJ_NUMBER; 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Number(FX_BOOL bInteger, void* pData); 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Number(int value); 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Number(FX_FLOAT value); 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Number(FX_BSTR str); 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Identical(CPDF_Number* pOther) const; 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString GetString() const; 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetString(FX_BSTR str); 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsInteger() const 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_bInteger; 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetInteger() const 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_bInteger ? m_Integer : (int)m_Float; 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT GetNumber() const 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_bInteger ? (FX_FLOAT)m_Integer : m_Float; 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetNumber(FX_FLOAT value); 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT GetNumber16() const 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return GetNumber(); 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT GetFloat() const 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_bInteger ? (FX_FLOAT)m_Integer : m_Float; 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bInteger; 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov union { 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_Integer; 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT m_Float; 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov }; 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CPDF_Object; 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_String : public CPDF_Object 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_String* Create(const CFX_ByteString& str, FX_BOOL bHex = FALSE) 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_NEW CPDF_String(str, bHex); 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_String* Create(const CFX_WideString& str) 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_NEW CPDF_String(str); 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_String() 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Type = PDFOBJ_STRING; 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bHex = FALSE; 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_String(const CFX_ByteString& str, FX_BOOL bHex = FALSE) : m_String(str) 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Type = PDFOBJ_STRING; 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bHex = bHex; 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_String(const CFX_WideString& str); 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString& GetString() 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_String; 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Identical(CPDF_String* pOther) const 252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_String == pOther->m_String; 254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsHex() const 257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_bHex; 259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString m_String; 263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bHex; 265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CPDF_Object; 266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Name : public CPDF_Object 268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_Name* Create(const CFX_ByteString& str) 272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_NEW CPDF_Name(str); 274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_Name* Create(FX_BSTR str) 277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_NEW CPDF_Name(str); 279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_Name* Create(FX_LPCSTR str) 282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_NEW CPDF_Name(str); 284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Name(const CFX_ByteString& str) : m_Name(str) 287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Type = PDFOBJ_NAME; 289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Name(FX_BSTR str) : m_Name(str) 292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Type = PDFOBJ_NAME; 294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Name(FX_LPCSTR str) : m_Name(str) 297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Type = PDFOBJ_NAME; 299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString& GetString() 302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Name; 304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Identical(CPDF_Name* pOther) const 307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Name == pOther->m_Name; 309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString m_Name; 313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CPDF_Object; 314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Array : public CPDF_Object 316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_Array* Create() 320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_NEW CPDF_Array(); 322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Array() 325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Type = PDFOBJ_ARRAY; 327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD GetCount() const 330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Objects.GetSize(); 332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* GetElement(FX_DWORD index) const; 335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* GetElementValue(FX_DWORD index) const; 337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_AffineMatrix GetMatrix(); 341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_FloatRect GetRect(); 343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString GetString(FX_DWORD index) const; 348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteStringC GetConstString(FX_DWORD index) const; 350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetInteger(FX_DWORD index) const; 352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT GetNumber(FX_DWORD index) const; 354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* GetDict(FX_DWORD index) const; 356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Stream* GetStream(FX_DWORD index) const; 358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Array* GetArray(FX_DWORD index) const; 360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT GetFloat(FX_DWORD index) const 362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return GetNumber(index); 364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAt(FX_DWORD index, CPDF_Object* pObj, CPDF_IndirectObjects* pObjs = NULL); 370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void InsertAt(FX_DWORD index, CPDF_Object* pObj, CPDF_IndirectObjects* pObjs = NULL); 373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void RemoveAt(FX_DWORD index); 375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Add(CPDF_Object* pObj, CPDF_IndirectObjects* pObjs = NULL); 378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void AddNumber(FX_FLOAT f); 382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void AddInteger(int i); 384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void AddString(const CFX_ByteString& str); 386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void AddName(const CFX_ByteString& str); 388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void AddReference(CPDF_IndirectObjects* pDoc, FX_DWORD objnum); 390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void AddReference(CPDF_IndirectObjects* pDoc, CPDF_Object* obj) 392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov AddReference(pDoc, obj->GetObjNum()); 394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT GetNumber16(FX_DWORD index) const 398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return GetNumber(index); 400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void AddNumber16(FX_FLOAT value) 403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov AddNumber(value); 405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Identical(CPDF_Array* pOther) const; 408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~CPDF_Array(); 411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_PtrArray m_Objects; 413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CPDF_Object; 414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Dictionary : public CPDF_Object 416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_Dictionary* Create() 420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_NEW CPDF_Dictionary(); 422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary() 425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Type = PDFOBJ_DICTIONARY; 427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* GetElement(FX_BSTR key) const; 432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* GetElementValue(FX_BSTR key) const; 434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString GetString(FX_BSTR key) const; 440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteStringC GetConstString(FX_BSTR key) const; 442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString GetString(FX_BSTR key, FX_BSTR default_str) const; 444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteStringC GetConstString(FX_BSTR key, FX_BSTR default_str) const; 446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString GetUnicodeText(FX_BSTR key, CFX_CharMap* pCharMap = NULL) const; 448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetInteger(FX_BSTR key) const; 450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetInteger(FX_BSTR key, int default_int) const; 452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL GetBoolean(FX_BSTR key, FX_BOOL bDefault = FALSE) const; 454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT GetNumber(FX_BSTR key) const; 456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* GetDict(FX_BSTR key) const; 458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Stream* GetStream(FX_BSTR key) const; 460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Array* GetArray(FX_BSTR key) const; 462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_FloatRect GetRect(FX_BSTR key) const; 464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_AffineMatrix GetMatrix(FX_BSTR key) const; 466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT GetFloat(FX_BSTR key) const 468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return GetNumber(key); 470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL KeyExist(FX_BSTR key) const; 474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_POSITION GetStartPos() const; 476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* GetNextElement(FX_POSITION& pos, CFX_ByteString& key) const; 478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAt(FX_BSTR key, CPDF_Object* pObj, CPDF_IndirectObjects* pObjs = NULL); 480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAtName(FX_BSTR key, const CFX_ByteString& name); 484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAtString(FX_BSTR key, const CFX_ByteString& string); 487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAtInteger(FX_BSTR key, int i); 490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAtNumber(FX_BSTR key, FX_FLOAT f); 493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAtReference(FX_BSTR key, CPDF_IndirectObjects* pDoc, FX_DWORD objnum); 495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAtReference(FX_BSTR key, CPDF_IndirectObjects* pDoc, CPDF_Object* obj) 497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetAtReference(key, pDoc, obj->GetObjNum()); 499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void AddReference(FX_BSTR key, CPDF_IndirectObjects* pDoc, FX_DWORD objnum); 502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void AddReference(FX_BSTR key, CPDF_IndirectObjects* pDoc, CPDF_Object* obj) 504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov AddReference(key, pDoc, obj->GetObjNum()); 506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAtRect(FX_BSTR key, const CFX_FloatRect& rect); 509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAtMatrix(FX_BSTR key, const CFX_AffineMatrix& matrix); 511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAtBoolean(FX_BSTR key, FX_BOOL bValue); 513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void RemoveAt(FX_BSTR key); 517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ReplaceKey(FX_BSTR oldkey, FX_BSTR newkey); 520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Identical(CPDF_Dictionary* pDict) const; 522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetCount() const 524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Map.GetCount(); 526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void AddValue(FX_BSTR key, CPDF_Object* pObj); 529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~CPDF_Dictionary(); 532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_CMapByteStringToPtr m_Map; 534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CPDF_Object; 536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Stream : public CPDF_Object 538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_Stream* Create(FX_LPBYTE pData, FX_DWORD size, CPDF_Dictionary* pDict) 542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_NEW CPDF_Stream(pData, size, pDict); 544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Stream(FX_LPBYTE pData, FX_DWORD size, CPDF_Dictionary* pDict); 547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* GetDict() const 549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pDict; 551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetData(FX_LPCBYTE pData, FX_DWORD size, FX_BOOL bCompressed, FX_BOOL bKeepBuf); 554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void InitStream(FX_BYTE* pData, FX_DWORD size, CPDF_Dictionary* pDict); 556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void InitStream(IFX_FileRead *pFile, CPDF_Dictionary* pDict); 558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Identical(CPDF_Stream* pOther) const; 560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_StreamFilter* GetStreamFilter(FX_BOOL bRaw = FALSE) const; 562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD GetRawSize() const 566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_dwSize; 568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL ReadRawData(FX_FILESIZE start_pos, FX_LPBYTE pBuf, FX_DWORD buf_size) const; 571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsMemoryBased() const 574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_GenNum == (FX_DWORD) - 1; 576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Stream* Clone(FX_BOOL bDirect, FPDF_LPFCloneStreamCallback lpfCallback, FX_LPVOID pUserData) const; 579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~CPDF_Stream(); 582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* m_pDict; 584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD m_dwSize; 586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD m_GenNum; 588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov union { 590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_LPBYTE m_pDataBuf; 592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_FileRead* m_pFile; 594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov }; 595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FILESIZE m_FileOffset; 597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_CryptoHandler* m_pCryptoHandler; 599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void InitStream(CPDF_Dictionary* pDict); 601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CPDF_Object; 602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CPDF_StreamAcc; 603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CPDF_AttachmentAcc; 604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_StreamAcc : public CFX_Object 606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_StreamAcc(); 610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~CPDF_StreamAcc(); 612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void LoadAllData(const CPDF_Stream* pStream, FX_BOOL bRawAccess = FALSE, 614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD estimated_size = 0, FX_BOOL bImageAcc = FALSE); 615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPDF_Stream* GetStream() const 617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pStream; 619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* GetDict() const 622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pStream->GetDict(); 624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_LPCBYTE GetData() const; 627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD GetSize() const; 629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_LPBYTE DetachData(); 631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CFX_ByteString& GetImageDecoder() 633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_ImageDecoder; 635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPDF_Dictionary* GetImageParam() 638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pImageParam; 640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_LPBYTE m_pData; 644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD m_dwSize; 646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bNewBuf; 648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString m_ImageDecoder; 650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* m_pImageParam; 652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPDF_Stream* m_pStream; 654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_LPBYTE m_pSrcData; 656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 657ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_DataFilter* FPDF_CreateFilter(FX_BSTR name, const CPDF_Dictionary* pParam, int width = 0, int height = 0); 658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FPDF_FILTER_BUFFER_SIZE 20480 659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_StreamFilter : public CFX_Object 660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~CPDF_StreamFilter(); 664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD ReadBlock(FX_LPBYTE buffer, FX_DWORD size); 666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD GetSrcPos() 668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_SrcOffset; 670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPDF_Stream* GetStream() 673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pStream; 675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_StreamFilter() {} 679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD ReadLeftOver(FX_LPBYTE buffer, FX_DWORD buf_size); 681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPDF_Stream* m_pStream; 683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_DataFilter* m_pFilter; 685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_BinaryBuf* m_pBuffer; 687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD m_BufOffset; 689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD m_SrcOffset; 691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BYTE m_SrcBuffer[FPDF_FILTER_BUFFER_SIZE]; 693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CPDF_Stream; 694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Null : public CPDF_Object 696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_Null* Create() 700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_NEW CPDF_Null(); 702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Null() 705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Type = PDFOBJ_NULL; 707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Reference : public CPDF_Object 710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_Reference* Create(CPDF_IndirectObjects* pDoc, int objnum) 714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_NEW CPDF_Reference(pDoc, objnum); 716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Reference(CPDF_IndirectObjects* pDoc, int objnum) 719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Type = PDFOBJ_REFERENCE; 721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pObjList = pDoc; 722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_RefObjNum = objnum; 723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_IndirectObjects* GetObjList() const 726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pObjList; 728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD GetRefObjNum() const 731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_RefObjNum; 733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetRef(CPDF_IndirectObjects* pDoc, FX_DWORD objnum); 736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Identical(CPDF_Reference* pOther) const 738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_RefObjNum == pOther->m_RefObjNum; 740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_IndirectObjects* m_pObjList; 744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD m_RefObjNum; 746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CPDF_Object; 747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_IndirectObjects : public CFX_Object 749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_IndirectObjects(IPDF_DocParser* pParser); 753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~CPDF_IndirectObjects(); 755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* GetIndirectObject(FX_DWORD objnum, struct PARSE_CONTEXT* pContext = NULL); 757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetIndirectType(FX_DWORD objnum); 759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD AddIndirectObject(CPDF_Object* pObj); 761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ReleaseIndirectObject(FX_DWORD objnum); 763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void InsertIndirectObject(FX_DWORD objnum, CPDF_Object* pObj); 765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD GetLastObjNum() const; 767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_POSITION GetStartPosition() const 769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_IndirectObjs.GetStartPosition(); 771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void GetNextAssoc(FX_POSITION& rPos, FX_DWORD& objnum, CPDF_Object*& pObject) const 774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_IndirectObjs.GetNextAssoc(rPos, (void*&)objnum, (void*&)pObject); 776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_MapPtrToPtr m_IndirectObjs; 780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IPDF_DocParser* m_pParser; 782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD m_LastObjNum; 784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 786