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_PAGE_ 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define _FPDF_PAGE_ 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _FPDF_PARSER_ 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "fpdf_parser.h" 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _FPDF_RESOURCE_ 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "fpdf_resource.h" 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _FX_DIB_H_ 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../fxge/fx_dib.h" 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_PageObjects; 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Page; 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Form; 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_ParseOptions; 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_PageObject; 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_PageRenderCache; 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_StreamFilter; 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_AllStates; 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_ContentParser; 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_StreamContentParser; 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_ResourceNaming; 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFTRANS_GROUP 0x0100 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFTRANS_ISOLATED 0x0200 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFTRANS_KNOCKOUT 0x0400 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDF_CONTENT_NOT_PARSED 0 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDF_CONTENT_PARSING 1 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDF_CONTENT_PARSED 2 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_PageObjects : public CFX_Object 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_PageObjects(FX_BOOL bReleaseMembers = TRUE); 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~CPDF_PageObjects(); 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ContinueParse(IFX_Pause* pPause); 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetParseState() const 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_ParseState; 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsParsed() const 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_ParseState == PDF_CONTENT_PARSED; 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int EstimateParseProgress() const; 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_POSITION GetFirstObjectPosition() const 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_ObjectList.GetHeadPosition(); 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_POSITION GetLastObjectPosition() const 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_ObjectList.GetTailPosition(); 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_PageObject* GetNextObject(FX_POSITION& pos) const 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return (CPDF_PageObject*)m_ObjectList.GetNext(pos); 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_PageObject* GetPrevObject(FX_POSITION& pos) const 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return (CPDF_PageObject*)m_ObjectList.GetPrev(pos); 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_PageObject* GetObjectAt(FX_POSITION pos) const 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return (CPDF_PageObject*)m_ObjectList.GetAt(pos); 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD CountObjects() const 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_ObjectList.GetCount(); 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetObjectIndex(CPDF_PageObject* pObj) const; 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_PageObject* GetObjectByIndex(int index) const; 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_POSITION InsertObject(FX_POSITION posInsertAfter, CPDF_PageObject* pNewObject); 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Transform(const CFX_AffineMatrix& matrix); 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL BackgroundAlphaNeeded() const 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_bBackgroundAlphaNeeded; 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_FloatRect CalcBoundingBox() const; 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* m_pFormDict; 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Stream* m_pFormStream; 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Document* m_pDocument; 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* m_pPageResources; 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* m_pResources; 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_FloatRect m_BBox; 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_Transparency; 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CPDF_ContentParser; 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CPDF_StreamContentParser; 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CPDF_AllStates; 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_PtrList m_ObjectList; 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bBackgroundAlphaNeeded; 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bReleaseMembers; 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void LoadTransInfo(); 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ClearCacheObjects(); 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_ContentParser* m_pParser; 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_ParseState; 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Page : public CPDF_PageObjects, public CFX_PrivateData 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Page(); 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~CPDF_Page(); 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Load(CPDF_Document* pDocument, CPDF_Dictionary* pPageDict, FX_BOOL bPageCache = TRUE); 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void StartParse(CPDF_ParseOptions* pOptions = NULL, FX_BOOL bReParse = FALSE); 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ParseContent(CPDF_ParseOptions* pOptions = NULL, FX_BOOL bReParse = FALSE); 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void GetDisplayMatrix(CFX_AffineMatrix& matrix, int xPos, int yPos, 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int xSize, int ySize, int iRotate) const; 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT GetPageWidth() const 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_PageWidth; 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT GetPageHeight() const 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_PageHeight; 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_FloatRect GetPageBBox() const 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_BBox; 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CFX_AffineMatrix& GetPageMatrix() const 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_PageMatrix; 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* GetPageAttr(FX_BSTR name) const; 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_PageRenderCache* GetRenderCache() const 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pPageRender; 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ClearRenderCache(); 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CPDF_ContentParser; 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT m_PageWidth; 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT m_PageHeight; 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_AffineMatrix m_PageMatrix; 199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_PageRenderCache* m_pPageRender; 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_ParseOptions : public CFX_Object 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_ParseOptions(); 207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bTextOnly; 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bMarkedContent; 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bSeparateForm; 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bDecodeInlineImage; 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Form : public CPDF_PageObjects 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Form(CPDF_Document* pDocument, CPDF_Dictionary* pPageResources, CPDF_Stream* pFormStream, CPDF_Dictionary* pParentResources = NULL); 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~CPDF_Form(); 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void StartParse(CPDF_AllStates* pGraphicStates, CFX_AffineMatrix* pParentMatrix, 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Type3Char* pType3Char, CPDF_ParseOptions* pOptions, int level = 0); 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ParseContent(CPDF_AllStates* pGraphicStates, CFX_AffineMatrix* pParentMatrix, 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Type3Char* pType3Char, CPDF_ParseOptions* pOptions, int level = 0); 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Form* Clone() const; 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_PageContentGenerate : public CFX_Object 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_PageContentGenerate(CPDF_Page* pPage); 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~CPDF_PageContentGenerate(); 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL InsertPageObject(CPDF_PageObject* pPageObject); 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void GenerateContent(); 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void TransformContent(CFX_Matrix& matrix); 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ProcessImage(CFX_ByteTextBuf& buf, CPDF_ImageObject* pImageObj); 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ProcessForm(CFX_ByteTextBuf& buf, FX_LPCBYTE data, FX_DWORD size, CFX_Matrix& matrix); 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString RealizeResource(CPDF_Object* pResourceObj, const FX_CHAR* szType); 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Page* m_pPage; 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Document* m_pDocument; 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_PtrArray m_pageObjects; 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 250