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