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_PAGEOBJ_H_ 8e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define CORE_INCLUDE_FPDFAPI_FPDF_PAGEOBJ_H_ 9e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 10e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include "../fxge/fx_ge.h" 11e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include "fpdf_resource.h" 12e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 13e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_Path; 14e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_ClipPathData; 15e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_ClipPath; 16e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_ColorStateData; 17e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_ColorState; 18e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_GraphState; 19e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_TextStateData; 20e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_TextState; 21e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_GeneralStateData; 22e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_GeneralState; 23e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_ContentMarkItem; 24e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_ContentMark; 25e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_GraphicStates; 26e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_PageObject; 27e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_TextObject; 28e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_PathObject; 29e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_ImageObject; 30e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_ShadingObject; 31e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_FormObject; 32e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_InlineImages; 33e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovtypedef CFX_PathData CPDF_PathData; 34e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_Path : public CFX_CountRef<CFX_PathData> 35e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 36e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 37e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 38e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 39e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 40e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 41e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int GetPointCount() 42e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 43e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject->m_PointCount; 44e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 45e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 46e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int GetFlag(int index) 47e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 48e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject->m_pPoints[index].m_Flag; 49e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 50e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 51e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT GetPointX(int index) 52e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 53e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject->m_pPoints[index].m_PointX; 54e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 55e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 56e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT GetPointY(int index) 57e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 58e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject->m_pPoints[index].m_PointY; 59e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 60e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 61e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 62e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 63e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 64e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_PATHPOINT* GetPoints() 65e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 66e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject->m_pPoints; 67e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 68e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 69e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 70e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_FloatRect GetBoundingBox() const 71e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 72e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject->GetBoundingBox(); 73e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 74e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 75e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_FloatRect GetBoundingBox(FX_FLOAT line_width, FX_FLOAT miter_limit) const 76e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 77e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject->GetBoundingBox(line_width, miter_limit); 78e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 79e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 80e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void Transform(const CFX_AffineMatrix* pMatrix) 81e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 82e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetModify()->Transform(pMatrix); 83e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 84e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 85e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void Append(CPDF_Path src, const CFX_AffineMatrix* pMatrix) 86e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 87e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov m_pObject->Append(src.m_pObject, pMatrix); 88e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 89e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 90e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void AppendRect(FX_FLOAT left, FX_FLOAT bottom, FX_FLOAT right, FX_FLOAT top) 91e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 92e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov m_pObject->AppendRect(left, bottom, right, top); 93e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 94e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 95e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL IsRect() const 96e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 97e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject->IsRect(); 98e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 99e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 100e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_ClipPathData 101e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 102e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 103e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 104e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_ClipPathData(); 105e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 106e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_ClipPathData(const CPDF_ClipPathData&); 107e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 108e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov ~CPDF_ClipPathData(); 109e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 110e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetCount(int path_count, int text_count); 111e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 112e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 113e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int m_PathCount; 114e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 115e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Path* m_pPathList; 116e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 117e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BYTE* m_pTypeList; 118e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 119e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int m_TextCount; 120e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 121e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_TextObject** m_pTextList; 122e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 123e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_ClipPath : public CFX_CountRef<CPDF_ClipPathData> 124e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 125e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 126e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 127e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_DWORD GetPathCount() const 128e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 129e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject->m_PathCount; 130e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 131e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 132e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Path GetPath(int i) const 133e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 134e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject->m_pPathList[i]; 135e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 136e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 137e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int GetClipType(int i) const 138e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 139e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject->m_pTypeList[i]; 140e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 141e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 142e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_DWORD GetTextCount() const 143e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 144e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject->m_TextCount; 145e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 146e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 147e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_TextObject* GetText(int i) const 148e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 149e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject->m_pTextList[i]; 150e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 151e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 152e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_FloatRect GetClipBox() const; 153e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 154e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void AppendPath(CPDF_Path path, int type, FX_BOOL bAutoMerge); 155e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 156e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void DeletePath(int layer_index); 157e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 158e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void AppendTexts(CPDF_TextObject** pTexts, int count); 159e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 160e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void Transform(const CFX_AffineMatrix& matrix); 161e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 162e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_ColorStateData 163e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 164e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 165e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 166e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_ColorStateData(): m_FillRGB(0), m_StrokeRGB(0) {} 167e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 168e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_ColorStateData(const CPDF_ColorStateData& src); 169e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 170e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void Default(); 171e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 172e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Color m_FillColor; 173e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 174e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_DWORD m_FillRGB; 175e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 176e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Color m_StrokeColor; 177e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 178e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_DWORD m_StrokeRGB; 179e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 180e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_ColorState : public CFX_CountRef<CPDF_ColorStateData> 181e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 182e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 183e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 184e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Color* GetFillColor() const 185e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 186e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject ? &m_pObject->m_FillColor : NULL; 187e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 188e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 189e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Color* GetStrokeColor() const 190e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 191e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject ? &m_pObject->m_StrokeColor : NULL; 192e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 193e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 194e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetFillColor(CPDF_ColorSpace* pCS, FX_FLOAT* pValue, int nValues); 195e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 196e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetStrokeColor(CPDF_ColorSpace* pCS, FX_FLOAT* pValue, int nValues); 197e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 198e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetFillPattern(CPDF_Pattern* pattern, FX_FLOAT* pValue, int nValues); 199e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 200e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetStrokePattern(CPDF_Pattern* pattern, FX_FLOAT* pValue, int nValues); 201e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovprivate: 202e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetColor(CPDF_Color& color, FX_DWORD& rgb, CPDF_ColorSpace* pCS, FX_FLOAT* pValue, int nValues); 203e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 204e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovtypedef CFX_GraphStateData CPDF_GraphStateData; 205e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_GraphState : public CFX_CountRef<CFX_GraphStateData> 206e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 207e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 208e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 209e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_TextStateData 210e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 211e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 212e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 213e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_TextStateData(); 214e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 215e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_TextStateData(const CPDF_TextStateData& src); 216e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 217e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov ~CPDF_TextStateData(); 218e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 219e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Font* m_pFont; 220e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 221e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Document* m_pDocument; 222e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 223e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT m_FontSize; 224e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 225e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT m_CharSpace; 226e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 227e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT m_WordSpace; 228e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 229e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT m_Matrix[4]; 230e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 231e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int m_TextMode; 232e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 233e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT m_CTM[4]; 234e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 235e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_TextState : public CFX_CountRef<CPDF_TextStateData> 236e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 237e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 238e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 239e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Font* GetFont() const 240e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 241e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject->m_pFont; 242e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 243e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 244e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetFont(CPDF_Font* pFont); 245e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 246e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT GetFontSize() const 247e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 248e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject->m_FontSize; 249e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 250e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 251e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT* GetMatrix() const 252e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 253e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject->m_Matrix; 254e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 255e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 256e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 257e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 258e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT GetFontSizeV() const; 259e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 260e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT GetFontSizeH() const; 261e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 262e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT GetBaselineAngle() const; 263e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 264e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT GetShearAngle() const; 265e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 266e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 267e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_TransferFunc; 268e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_GeneralStateData 269e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 270e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 271e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 272e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_GeneralStateData(); 273e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 274e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_GeneralStateData(const CPDF_GeneralStateData& src); 275e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov ~CPDF_GeneralStateData(); 276e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 277e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetBlendMode(FX_BSTR blend_mode); 278e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 279e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov char m_BlendMode[16]; 280e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 281e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int m_BlendType; 282e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 283e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Object* m_pSoftMask; 284e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 285e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT m_SMaskMatrix[6]; 286e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 287e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT m_StrokeAlpha; 288e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 289e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT m_FillAlpha; 290e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 291e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Object* m_pTR; 292e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 293e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_TransferFunc* m_pTransferFunc; 294e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 295e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_Matrix m_Matrix; 296e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 297e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int m_RenderIntent; 298e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 299e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL m_StrokeAdjust; 300e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 301e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL m_AlphaSource; 302e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 303e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL m_TextKnockout; 304e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 305e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL m_StrokeOP; 306e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 307e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL m_FillOP; 308e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 309e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int m_OPMode; 310e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 311e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Object* m_pBG; 312e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 313e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Object* m_pUCR; 314e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 315e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Object* m_pHT; 316e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 317e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT m_Flatness; 318e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 319e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT m_Smoothness; 320e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 321e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_GeneralState : public CFX_CountRef<CPDF_GeneralStateData> 322e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 323e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 324e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 325e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetRenderIntent(const CFX_ByteString& ri); 326e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 327e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int GetBlendType() const 328e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 329e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject ? m_pObject->m_BlendType : FXDIB_BLEND_NORMAL; 330e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 331e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 332e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int GetAlpha(FX_BOOL bStroke) const 333e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 334e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject ? FXSYS_round((bStroke ? m_pObject->m_StrokeAlpha : m_pObject->m_FillAlpha) * 255) : 255; 335e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 336e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 337e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_ContentMarkItem 338e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 339e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 340e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 341e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov typedef enum { 342e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov None, 343e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov PropertiesDict, 344e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov DirectDict, 345e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov MCID 346e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } ParamType; 347e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 348e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_ContentMarkItem(); 349e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 350e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_ContentMarkItem(const CPDF_ContentMarkItem& src); 351e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 352e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov ~CPDF_ContentMarkItem(); 353e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 354e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov inline const CFX_ByteString& GetName() const 355e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 356e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_MarkName; 357e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 358e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 359e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov inline ParamType GetParamType() const 360e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 361e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_ParamType; 362e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 363e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 364e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov inline void* GetParam() const 365e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 366e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pParam; 367e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 368e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 369e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov inline FX_BOOL HasMCID() const; 370e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 371e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov inline void SetName(const CFX_ByteString& name) 372e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 373e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov m_MarkName = name; 374e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 375e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 376e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov inline void SetParam(ParamType type, void* param) 377e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 378e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov m_ParamType = type; 379e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov m_pParam = param; 380e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 381e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovprivate: 382e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 383e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteString m_MarkName; 384e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 385e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov ParamType m_ParamType; 386e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 387e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void* m_pParam; 388e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 389e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_ContentMarkData 390e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 391e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 392e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 393e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_ContentMarkData() { } 394e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 395e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_ContentMarkData(const CPDF_ContentMarkData& src); 396e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 397e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov inline int CountItems() const 398e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 399e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_Marks.GetSize(); 400e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 401e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 402e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov inline CPDF_ContentMarkItem& GetItem(int index) const 403e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 404e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_Marks[index]; 405e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 406e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 407e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int GetMCID() const; 408e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 409e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void AddMark(const CFX_ByteString& name, CPDF_Dictionary* pDict, FX_BOOL bDictNeedClone); 410e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 411e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void DeleteLastMark(); 412e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovprivate: 413e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 414e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ObjectArray<CPDF_ContentMarkItem> m_Marks; 415e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 416e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_ContentMark : public CFX_CountRef<CPDF_ContentMarkData> 417e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 418e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 419e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 420e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int GetMCID() const 421e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 422e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_pObject ? m_pObject->GetMCID() : -1; 423e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 424e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 425e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL HasMark(FX_BSTR mark) const; 426e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 427e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL LookupMark(FX_BSTR mark, CPDF_Dictionary*& pDict) const; 428e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 429e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PDFPAGE_TEXT 1 430e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PDFPAGE_PATH 2 431e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PDFPAGE_IMAGE 3 432e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PDFPAGE_SHADING 4 433e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PDFPAGE_FORM 5 434e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PDFPAGE_INLINES 6 435e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_GraphicStates 436e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 437e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 438e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 439e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void CopyStates(const CPDF_GraphicStates& src); 440e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 441e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void DefaultStates(); 442e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 443e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_ClipPath m_ClipPath; 444e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 445e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_GraphState m_GraphState; 446e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 447e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_ColorState m_ColorState; 448e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 449e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_TextState m_TextState; 450e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 451e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_GeneralState m_GeneralState; 452e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 453e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_PageObject : public CPDF_GraphicStates 454e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 455e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 456e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov static CPDF_PageObject* Create(int type); 457e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual ~CPDF_PageObject(); 458e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 459e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_PageObject* Clone() const; 460e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 461e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void Copy(const CPDF_PageObject* pSrcObject); 462e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 463e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void Transform(const CFX_AffineMatrix& matrix) = 0; 464e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 465e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 466e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 467e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void RemoveClipPath(); 468e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 469e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void AppendClipPath(CPDF_Path path, int type, FX_BOOL bAutoMerge); 470e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 471e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void CopyClipPath(CPDF_PageObject* pObj); 472e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 473e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void TransformClipPath(CFX_AffineMatrix& matrix); 474e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 475e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void TransformGeneralState(CFX_AffineMatrix& matrix); 476e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 477e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 478e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetColorState(CPDF_ColorState state) 479e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 480e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov m_ColorState = state; 481e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 482e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 483e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_RECT GetBBox(const CFX_AffineMatrix* pMatrix) const; 484e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 485e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int m_Type; 486e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 487e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT m_Left; 488e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 489e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT m_Right; 490e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 491e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT m_Top; 492e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 493e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT m_Bottom; 494e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 495e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_ContentMark m_ContentMark; 496e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovprotected: 497e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 498e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void CopyData(const CPDF_PageObject* pSrcObject) {} 499e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 500e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void RecalcBBox(); 501e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 502e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_PageObject() {} 503e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 504e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 505e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovstruct CPDF_TextObjectItem { 506e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 507e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_DWORD m_CharCode; 508e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 509e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT m_OriginX; 510e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 511e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT m_OriginY; 512e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 513e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_TextObject : public CPDF_PageObject 514e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 515e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 516e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 517e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_TextObject(); 518e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 519e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual ~CPDF_TextObject(); 520e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 521e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int CountItems() const 522e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 523e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_nChars; 524e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 525e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 526e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void GetItemInfo(int index, CPDF_TextObjectItem* pInfo) const; 527e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 528e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int CountChars() const; 529e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 530e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void GetCharInfo(int index, FX_DWORD& charcode, FX_FLOAT& kerning) const; 531e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void GetCharInfo(int index, CPDF_TextObjectItem* pInfo) const; 532e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 533e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void GetCharRect(int index, CFX_FloatRect& rect) const; 534e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 535e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 536e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT GetCharWidth(FX_DWORD charcode) const; 537e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT GetSpaceCharWidth() const; 538e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 539e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT GetPosX() const 540e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 541e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_PosX; 542e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 543e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 544e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT GetPosY() const 545e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 546e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_PosY; 547e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 548e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 549e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void GetTextMatrix(CFX_AffineMatrix* pMatrix) const; 550e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 551e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Font* GetFont() const 552e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 553e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_TextState.GetFont(); 554e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 555e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 556e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT GetFontSize() const 557e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 558e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return m_TextState.GetFontSize(); 559e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 560e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 561e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetEmpty(); 562e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 563e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetText(const CFX_ByteString& text); 564e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 565e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetText(CFX_ByteString* pStrs, FX_FLOAT* pKerning, int nSegs); 566e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 567e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetText(int nChars, FX_DWORD* pCharCodes, FX_FLOAT* pKernings); 568e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 569e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetPosition(FX_FLOAT x, FX_FLOAT y); 570e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 571e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetTextState(CPDF_TextState TextState); 572e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void Transform(const CFX_AffineMatrix& matrix); 573e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 574e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void CalcCharPos(FX_FLOAT* pPosArray) const; 575e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 576e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 577e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 578e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetData(int nChars, FX_DWORD* pCharCodes, FX_FLOAT* pCharPos, FX_FLOAT x, FX_FLOAT y); 579e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 580e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void GetData(int& nChars, FX_DWORD*& pCharCodes, FX_FLOAT*& pCharPos) 581e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 582e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov nChars = m_nChars; 583e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pCharCodes = m_pCharCodes; 584e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pCharPos = m_pCharPos; 585e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 586e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 587e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 588e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void RecalcPositionData() 589e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 590e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CalcPositionData(NULL, NULL, 1); 591e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 592e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovprotected: 593e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void CopyData(const CPDF_PageObject* pSrcObject); 594e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 595e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT m_PosX; 596e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 597e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT m_PosY; 598e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 599e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int m_nChars; 600e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 601e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_DWORD* m_pCharCodes; 602e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 603e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT* m_pCharPos; 604e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 605e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetSegments(const CFX_ByteString* pStrs, FX_FLOAT* pKerning, int nSegs); 606e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 607e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void CalcPositionData(FX_FLOAT* pTextAdvanceX, FX_FLOAT* pTextAdvanceY, FX_FLOAT horz_scale, int level = 0); 608e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov friend class CPDF_StreamContentParser; 609e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov friend class CPDF_RenderStatus; 610e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov friend class CPDF_QuickDrawer; 611e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov friend class CPDF_TextRenderer; 612e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov friend class CTextPage; 613e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov friend class CPDF_ContentGenerator; 614e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 615e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_PathObject : public CPDF_PageObject 616e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 617e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 618e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 619e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_PathObject() 620e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 621e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov m_Type = PDFPAGE_PATH; 622e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 623e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 624e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual ~CPDF_PathObject() {} 625e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void Transform(const CFX_AffineMatrix& maxtrix); 626e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 627e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetGraphState(CPDF_GraphState GraphState); 628e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 629e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Path m_Path; 630e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 631e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov int m_FillType; 632e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 633e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL m_bStroke; 634e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 635e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_AffineMatrix m_Matrix; 636e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 637e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 638e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void CalcBoundingBox(); 639e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovprotected: 640e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void CopyData(const CPDF_PageObject* pSrcObjet); 641e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 642e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_ImageObject : public CPDF_PageObject 643e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 644e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 645e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 646e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_ImageObject(); 647e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 648e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual ~CPDF_ImageObject(); 649e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void Transform(const CFX_AffineMatrix& matrix); 650e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 651e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Image* m_pImage; 652e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 653e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_AffineMatrix m_Matrix; 654e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 655e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void CalcBoundingBox(); 656e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovprivate: 657e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void CopyData(const CPDF_PageObject* pSrcObjet); 658e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 659e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_ShadingObject : public CPDF_PageObject 660e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 661e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 662e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 663e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_ShadingObject(); 664e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 665e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual ~CPDF_ShadingObject(); 666e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 667e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_ShadingPattern* m_pShading; 668e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 669e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_AffineMatrix m_Matrix; 670e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 671e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Page* m_pPage; 672e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void Transform(const CFX_AffineMatrix& matrix); 673e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 674e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void CalcBoundingBox(); 675e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovprotected: 676e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void CopyData(const CPDF_PageObject* pSrcObjet); 677e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 678e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_FormObject : public CPDF_PageObject 679e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 680e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 681e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 682e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_FormObject() 683e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 684e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov m_Type = PDFPAGE_FORM; 685e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov m_pForm = NULL; 686e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 687e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 688e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual ~CPDF_FormObject(); 689e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void Transform(const CFX_AffineMatrix& matrix); 690e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 691e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Form* m_pForm; 692e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 693e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_AffineMatrix m_FormMatrix; 694e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 695e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void CalcBoundingBox(); 696e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovprotected: 697e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void CopyData(const CPDF_PageObject* pSrcObjet); 698e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 699e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPDF_InlineImages : public CPDF_PageObject 700e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 701e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 702e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 703e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_InlineImages(); 704e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 705e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual ~CPDF_InlineImages(); 706e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 707e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Stream* m_pStream; 708e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 709e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_DIBitmap* m_pBitmap; 710e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 711e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ArrayTemplate<CFX_AffineMatrix> m_Matrices; 712e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 713e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void AddMatrix(CFX_AffineMatrix& matrix); 714e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovprotected: 715e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void Transform(const CFX_AffineMatrix& matrix) {} 716e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void CopyData(const CPDF_PageObject* pSrcObjet) {} 717e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 718e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 719e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#endif // CORE_INCLUDE_FPDFAPI_FPDF_PAGEOBJ_H_ 720