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