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_RESOURCE_ 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define _FPDF_RESOURCE_ 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _FPDF_PARSER_ 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "fpdf_parser.h" 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _FX_FONT_H_ 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../fxge/fx_font.h" 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Font; 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Type1Font; 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_TrueTypeFont; 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_CIDFont; 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Type3Font; 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_FontEncoding; 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_CMap; 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_CID2UnicodeMap; 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_ColorSpace; 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Color; 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Function; 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Pattern; 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_TilingPattern; 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_ShadingPattern; 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Image; 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Face; 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_ToUnicodeMap; 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_SubstFont; 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Font; 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_RenderContext; 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Form; 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_ImageObject; 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_DIBitmap; 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct FT_FaceRec_* FXFT_Face; 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_CTTGSUBTable; 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Page; 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_TYPE1 1 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_TRUETYPE 2 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_TYPE3 3 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_CIDFONT 4 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_FIXEDPITCH 1 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_SERIF 2 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_SYMBOLIC 4 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_SCRIPT 8 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_NONSYMBOLIC 32 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_ITALIC 64 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_ALLCAP 0x10000 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_SMALLCAP 0x20000 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_FORCEBOLD 0x40000 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_USEEXTERNATTR 0x80000 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_WCHAR PDF_UnicodeFromAdobeName(const FX_CHAR* name); 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_ByteString PDF_AdobeNameFromUnicode(FX_WCHAR unicode); 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Font : public CFX_Object 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_Font* CreateFontF(CPDF_Document* pDoc, CPDF_Dictionary* pFontDict); 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_Font* GetStockFont(CPDF_Document* pDoc, FX_BSTR fontname); 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CPDF_Font(); 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetFontType() const 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_FontType; 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString GetFontTypeName() const; 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CFX_ByteString& GetBaseFont() const 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_BaseFont; 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CFX_SubstFont* GetSubstFont() const 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Font.GetSubstFont(); 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD GetFlags() const 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Flags; 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_BOOL IsVertWriting()const; 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Type1Font* GetType1Font() const 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_FontType == PDFFONT_TYPE1 ? (CPDF_Type1Font*)(void*)this : NULL; 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_TrueTypeFont* GetTrueTypeFont() const 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_FontType == PDFFONT_TRUETYPE ? (CPDF_TrueTypeFont*)(void*)this : NULL; 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_CIDFont* GetCIDFont() const 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return (m_FontType == PDFFONT_CIDFONT) ? (CPDF_CIDFont*)(void*)this : NULL; 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Type3Font* GetType3Font() const 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return (m_FontType == PDFFONT_TYPE3) ? (CPDF_Type3Font*)(void*)this : NULL; 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsEmbedded() const 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_FontType == PDFFONT_TYPE3 || m_pFontFile != NULL; 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_BOOL IsUnicodeCompatible() const 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_StreamAcc* GetFontFile() const 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pFontFile; 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* GetFontDict() const 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pFontDict; 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsStandardFont() const; 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FXFT_Face GetFace() const 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Font.GetFace(); 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_DWORD GetNextChar(FX_LPCSTR pString, int& offset) const 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return (FX_BYTE)pString[offset++]; 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int CountChar(FX_LPCSTR pString, int size) const 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return size; 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void AppendChar(CFX_ByteString& str, FX_DWORD charcode) const; 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int AppendChar(FX_LPSTR buf, FX_DWORD charcode) const 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *buf = (FX_CHAR)charcode; 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 1; 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int GetCharSize(FX_DWORD charcode) const 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 1; 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int GlyphFromCharCode(FX_DWORD charcode, FX_BOOL *pVertGlyph = NULL) = 0; 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int GlyphFromCharCodeExt(FX_DWORD charcode) 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return GlyphFromCharCode(charcode); 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString UnicodeFromCharCode(FX_DWORD charcode) const; 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD CharCodeFromUnicode(FX_WCHAR Unicode) const; 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_CharMap* GetCharMap() 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pCharMap; 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString EncodeString(const CFX_WideString& str) const; 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString DecodeString(const CFX_ByteString& str) const; 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void GetFontBBox(FX_RECT& rect) const 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rect = m_FontBBox; 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetTypeAscent() const 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Ascent; 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetTypeDescent() const 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Descent; 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetItalicAngle() const 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_ItalicAngle; 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetStemV() const 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_StemV; 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetStringWidth(const FX_CHAR* pString, int size); 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int GetCharWidthF(FX_DWORD charcode, int level = 0) = 0; 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int GetCharTypeWidth(FX_DWORD charcode); 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual void GetCharBBox(FX_DWORD charcode, FX_RECT& rect, int level = 0) = 0; 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Document* m_pDocument; 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov class CFX_PathData* LoadGlyphPath(FX_DWORD charcode, int dest_width = 0); 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Font m_Font; 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Font(); 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Initialize(); 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Load(); 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_BOOL _Load() = 0; 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_WCHAR _UnicodeFromCharCode(FX_DWORD charcode) const = 0; 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_DWORD _CharCodeFromUnicode(FX_WCHAR Unicode) const = 0; 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void LoadUnicodeMap(); 250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void LoadPDFEncoding(CPDF_Object* pEncoding, int& iBaseEncoding, 252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString*& pCharNames, FX_BOOL bEmbedded, FX_BOOL bTrueType); 253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void LoadFontDescriptor(CPDF_Dictionary*); 255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void LoadCharWidths(FX_WORD* pWidths); 257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void CheckFontMetrics(); 259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_CharMap* m_pCharMap; 261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_FontType; 265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString m_BaseFont; 267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_StreamAcc* m_pFontFile; 269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* m_pFontDict; 271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_ToUnicodeMap* m_pToUnicodeMap; 273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bToUnicodeLoaded; 275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_Flags; 280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_RECT m_FontBBox; 282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_StemV; 284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_Ascent; 286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_Descent; 288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_ItalicAngle; 290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_ENCODING_BUILTIN 0 293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_ENCODING_WINANSI 1 294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_ENCODING_MACROMAN 2 295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_ENCODING_MACEXPERT 3 296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_ENCODING_STANDARD 4 297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_ENCODING_ADOBE_SYMBOL 5 298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_ENCODING_ZAPFDINGBATS 6 299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_ENCODING_PDFDOC 7 300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_ENCODING_MS_SYMBOL 8 301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFFONT_ENCODING_UNICODE 9 302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_FontEncoding : public CFX_Object 303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FontEncoding(); 307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FontEncoding(int PredefinedEncoding); 309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void LoadEncoding(CPDF_Object* pEncoding); 311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsIdentical(CPDF_FontEncoding* pAnother) const; 313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WCHAR UnicodeFromCharCode(FX_BYTE charcode) const 315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Unicodes[charcode]; 317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int CharCodeFromUnicode(FX_WCHAR unicode) const; 320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetUnicode(FX_BYTE charcode, FX_WCHAR unicode) 322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Unicodes[charcode] = unicode; 324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* Realize(); 327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WCHAR m_Unicodes[256]; 330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_SimpleFont : public CPDF_Font 332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_SimpleFont(); 336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CPDF_SimpleFont(); 338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FontEncoding* GetEncoding() 340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return &m_Encoding; 342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int GetCharWidthF(FX_DWORD charcode, int level = 0); 344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual void GetCharBBox(FX_DWORD charcode, FX_RECT& rect, int level = 0); 345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int GlyphFromCharCode(FX_DWORD charcode, FX_BOOL *pVertGlyph = NULL); 346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_BOOL IsUnicodeCompatible() const; 347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL LoadCommon(); 350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void LoadSubstFont(); 352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void LoadFaceMetrics(); 354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual void LoadGlyphMap() = 0; 356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_WCHAR _UnicodeFromCharCode(FX_DWORD charcode) const 357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Encoding.UnicodeFromCharCode((FX_BYTE)charcode); 359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_DWORD _CharCodeFromUnicode(FX_WCHAR Unicode) const 361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Encoding.CharCodeFromUnicode(Unicode); 363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FontEncoding m_Encoding; 368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD m_GlyphIndex[256]; 370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD m_ExtGID[256]; 371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString* m_pCharNames; 376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_BaseEncoding; 378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD m_CharWidth[256]; 383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_SMALL_RECT m_CharBBox[256]; 385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bUseFontWidth; 387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void LoadCharMetrics(int charcode); 389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Type1Font : public CPDF_SimpleFont 392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Type1Font(); 396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetBase14Font() 398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Base14Font; 400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int GlyphFromCharCodeExt(FX_DWORD charcode); 402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_BOOL _Load(); 404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_Base14Font; 406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual void LoadGlyphMap(); 407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_TrueTypeFont : public CPDF_SimpleFont 409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_TrueTypeFont(); 413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_BOOL _Load(); 415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual void LoadGlyphMap(); 416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Type3Char : public CFX_Object 418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Type3Char(); 422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~CPDF_Type3Char(); 424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL LoadBitmap(CPDF_RenderContext* pContext); 426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bColored; 428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bPageRequired; 430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Form* m_pForm; 434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_AffineMatrix m_ImageMatrix; 436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_DIBitmap* m_pBitmap; 438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_Width; 441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_RECT m_BBox; 443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Type3Font : public CPDF_SimpleFont 445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Type3Font(); 448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CPDF_Type3Font(); 449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetPageResources(CPDF_Dictionary* pResources) 450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pPageResources = pResources; 452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Type3Char* LoadChar(FX_DWORD charcode, int level = 0); 454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int GetCharWidthF(FX_DWORD charcode, int level = 0); 455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int GetCharTypeWidth(FX_DWORD charcode) 456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return GetCharWidthF(charcode); 458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual void GetCharBBox(FX_DWORD charcode, FX_RECT& rect, int level = 0); 460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_AffineMatrix& GetFontMatrix() 461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_FontMatrix; 463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void CheckType3FontMetrics(); 465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_BOOL _Load(); 467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual void LoadGlyphMap() {} 468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_CharWidthL[256]; 469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* m_pCharProcs; 470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* m_pPageResources; 471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* m_pFontResources; 472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_MapPtrToPtr m_CacheMap; 473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_MapPtrToPtr m_DeletedMap; 474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_AffineMatrix m_FontMatrix; 476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define CIDSET_UNKNOWN 0 478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define CIDSET_GB1 1 479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define CIDSET_CNS1 2 480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define CIDSET_JAPAN1 3 481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define CIDSET_KOREA1 4 482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define CIDSET_UNICODE 5 483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_CIDFont : public CPDF_Font 484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_CIDFont(); 488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CPDF_CIDFont(); 490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL LoadGB2312(); 492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int GlyphFromCharCode(FX_DWORD charcode, FX_BOOL *pVertGlyph = NULL); 493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int GetCharWidthF(FX_DWORD charcode, int level = 0); 494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual void GetCharBBox(FX_DWORD charcode, FX_RECT& rect, int level = 0); 495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD CIDFromCharCode(FX_DWORD charcode) const; 497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsTrueType() 499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return !m_bType1; 501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_DWORD GetNextChar(const FX_CHAR* pString, int& offset) const; 505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int CountChar(const FX_CHAR* pString, int size) const; 506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int AppendChar(FX_LPSTR str, FX_DWORD charcode) const; 507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int GetCharSize(FX_DWORD charcode) const; 508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetCharset() const 511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Charset; 513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_LPCBYTE GetCIDTransform(FX_WORD CID) const; 516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_BOOL IsVertWriting() const; 520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov short GetVertWidth(FX_WORD CID) const; 522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void GetVertOrigin(FX_WORD CID, short& vx, short& vy) const; 524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_BOOL IsUnicodeCompatible() const; 526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_BOOL IsFontStyleFromCharCode(FX_DWORD charcode) const; 527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CPDF_Font; 529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_BOOL _Load(); 530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_WCHAR _UnicodeFromCharCode(FX_DWORD charcode) const; 531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_DWORD _CharCodeFromUnicode(FX_WCHAR Unicode) const; 532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetGlyphIndex(FX_DWORD unicodeb, FX_BOOL *pVertGlyph); 533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_CMap* m_pCMap; 535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_CMap* m_pAllocatedCMap; 537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_CID2UnicodeMap* m_pCID2UnicodeMap; 539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_Charset; 541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bType1; 543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_StreamAcc* m_pCIDToGIDMap; 545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bCIDIsGID; 546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD m_DefaultWidth; 550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD* m_pAnsiWidths; 552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_SMALL_RECT m_CharBBox[256]; 554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_DWordArray m_WidthList; 556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov short m_DefaultVY; 558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov short m_DefaultW1; 560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_DWordArray m_VertMetrics; 562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void LoadMetricsArray(CPDF_Array* pArray, CFX_DWordArray& result, int nElements); 565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void LoadSubstFont(); 567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bAdobeCourierStd; 569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_CTTGSUBTable* m_pTTGSUBTable; 571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFCS_DEVICEGRAY 1 573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFCS_DEVICERGB 2 575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFCS_DEVICECMYK 3 576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFCS_CALGRAY 4 577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFCS_CALRGB 5 578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFCS_LAB 6 579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFCS_ICCBASED 7 580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFCS_SEPARATION 8 581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFCS_DEVICEN 9 582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFCS_INDEXED 10 583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFCS_PATTERN 11 584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_ColorSpace : public CFX_Object 585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_ColorSpace* GetStockCS(int Family); 589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_ColorSpace* Load(CPDF_Document* pDoc, CPDF_Object* pCSObj); 591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ReleaseCS(); 593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetBufSize() const; 595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT* CreateBuf(); 597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void GetDefaultColor(FX_FLOAT* buf) const; 599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int CountComponents() const 601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_nComponents; 603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetFamily() const 606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Family; 608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual void GetDefaultValue(int iComponent, FX_FLOAT& value, FX_FLOAT& min, FX_FLOAT& max) const 611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov value = 0; 613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov min = 0; 614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov max = 1.0f; 615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL sRGB() const; 618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_BOOL GetRGB(FX_FLOAT* pBuf, FX_FLOAT& R, FX_FLOAT& G, FX_FLOAT& B) const = 0; 622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_BOOL SetRGB(FX_FLOAT* pBuf, FX_FLOAT R, FX_FLOAT G, FX_FLOAT B) const 624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL GetCMYK(FX_FLOAT* pBuf, FX_FLOAT& c, FX_FLOAT& m, FX_FLOAT& y, FX_FLOAT& k) const; 632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL SetCMYK(FX_FLOAT* pBuf, FX_FLOAT c, FX_FLOAT m, FX_FLOAT y, FX_FLOAT k) const; 634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual void TranslateImageLine(FX_LPBYTE dest_buf, FX_LPCBYTE src_buf, int pixels, 637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int image_width, int image_height, FX_BOOL bTransMask = FALSE) const; 638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Array*& GetArray() 640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pArray; 642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetMaxIndex() const; 645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual CPDF_ColorSpace* GetBaseCS() const 647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return NULL; 649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual void EnableStdConversion(FX_BOOL bEnabled); 652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Document* m_pDocument; 653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_ColorSpace(); 656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CPDF_ColorSpace() {} 658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) 659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_BOOL v_GetCMYK(FX_FLOAT* pBuf, FX_FLOAT& c, FX_FLOAT& m, FX_FLOAT& y, FX_FLOAT& k) const 663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_BOOL v_SetCMYK(FX_FLOAT* pBuf, FX_FLOAT c, FX_FLOAT m, FX_FLOAT y, FX_FLOAT k) const 667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_Family; 672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_nComponents; 674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Array* m_pArray; 676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD m_dwStdConversion; 678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Color : public CFX_Object 680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Color() 684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pBuffer = NULL; 686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pCS = NULL; 687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Color(int family); 690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~CPDF_Color(); 692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsNull() const 694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pBuffer == NULL; 696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsEqual(const CPDF_Color& other) const; 699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsPattern() const 701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pCS && m_pCS->GetFamily() == PDFCS_PATTERN; 703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Copy(const CPDF_Color* pSrc); 706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetColorSpace(CPDF_ColorSpace* pCS); 708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetValue(FX_FLOAT* comp); 710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetValue(CPDF_Pattern* pPattern, FX_FLOAT* comp, int ncomps); 712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL GetRGB(int& R, int& G, int& B) const; 714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Pattern* GetPattern() const; 716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_ColorSpace* GetPatternCS() const; 718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT* GetPatternColor() const; 720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_ColorSpace* m_pCS; 722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT* m_pBuffer; 724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ReleaseBuffer(); 726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ReleaseColorSpace(); 727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PATTERN_TILING 1 729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PATTERN_SHADING 2 730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Pattern : public CFX_Object 731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CPDF_Pattern() {} 735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* m_pPatternObj; 737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_PatternType; 739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_AffineMatrix m_Pattern2Form; 741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_AffineMatrix m_ParentMatrix; 742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Document* m_pDocument; 744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Pattern(const CFX_AffineMatrix* pParentMatrix) 748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pParentMatrix) { 750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_ParentMatrix = *pParentMatrix; 751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_TilingPattern : public CPDF_Pattern 755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_TilingPattern(CPDF_Document* pDoc, CPDF_Object* pPatternObj, const CFX_AffineMatrix* parentMatrix); 759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CPDF_TilingPattern(); 761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Load(); 763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bColored; 767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_FloatRect m_BBox; 769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT m_XStep; 771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT m_YStep; 773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Form* m_pForm; 777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_ShadingPattern : public CPDF_Pattern 779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_ShadingPattern(CPDF_Document* pDoc, CPDF_Object* pPatternObj, FX_BOOL bShading, const CFX_AffineMatrix* parentMatrix); 783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CPDF_ShadingPattern(); 785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* m_pShadingObj; 787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bShadingObj; 789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Load(); 791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Reload(); 793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_ShadingType; 795ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 796ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_ColorSpace* m_pCS; 797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Function* m_pFunctions[4]; 800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_nFuncs; 802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Clear(); 804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 805ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstruct CPDF_MeshVertex { 806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT x, y; 807ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT r, g, b; 808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_MeshStream : public CFX_Object 810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 812ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 813ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Load(CPDF_Stream* pShadingStream, CPDF_Function** pFuncs, int nFuncs, CPDF_ColorSpace* pCS); 814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 815ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD GetFlag(); 816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void GetCoords(FX_FLOAT& x, FX_FLOAT& y); 818ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void GetColor(FX_FLOAT& r, FX_FLOAT& g, FX_FLOAT& b); 820ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD GetVertex(CPDF_MeshVertex& vertex, CFX_AffineMatrix* pObject2Bitmap); 822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL GetVertexRow(CPDF_MeshVertex* vertex, int count, CFX_AffineMatrix* pObject2Bitmap); 824ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Function** m_pFuncs; 825ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_ColorSpace* m_pCS; 826ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD m_nFuncs, m_nCoordBits, m_nCompBits, m_nFlagBits, m_nComps; 827ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD m_CoordMax, m_CompMax; 828ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT m_xmin, m_xmax, m_ymin, m_ymax; 829ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT m_ColorMin[8], m_ColorMax[8]; 830ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_StreamAcc m_Stream; 831ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_BitStream m_BitStream; 832ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 833ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDF_IMAGE_NO_COMPRESS 0x0000 834ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDF_IMAGE_LOSSY_COMPRESS 0x0001 835ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDF_IMAGE_LOSSLESS_COMPRESS 0x0002 836ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDF_IMAGE_MASK_LOSSY_COMPRESS 0x0004 837ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDF_IMAGE_MASK_LOSSLESS_COMPRESS 0x0008 838ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_ImageSetParam 839ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 840ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 841ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_ImageSetParam() 842ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov : pMatteColor(NULL) 843ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov , nQuality(80) 844ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 845ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 846ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_ARGB* pMatteColor; 847ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nQuality; 848ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 849ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Image : public CFX_Object 850ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 851ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 852ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 853ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Image(CPDF_Document* pDoc); 854ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 855ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~CPDF_Image(); 856ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 857ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL LoadImageF(CPDF_Stream* pImageStream, FX_BOOL bInline); 858ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 859ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Release(); 860ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 861ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Image* Clone(); 862ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 863ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsInline() 864ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 865ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_bInline; 866ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 867ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 868ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetInlineDict(CPDF_Dictionary* pDict) 869ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 870ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pInlineDict = pDict; 871ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 872ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 873ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* GetInlineDict() const 874ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 875ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pInlineDict; 876ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 877ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 878ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Stream* GetStream() const 879ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 880ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pStream; 881ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 882ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 883ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* GetDict() const 884ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 885ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pStream->GetDict(); 886ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 887ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 888ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* GetOC() const 889ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 890ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pOC; 891ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 892ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 893ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Document* GetDocument() const 894ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 895ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pDocument; 896ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 897ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 898ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 899ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 900ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetPixelHeight() const 901ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 902ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Height; 903ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 904ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 905ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetPixelWidth() const 906ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 907ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Width; 908ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 909ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 910ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 911ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsMask() const 912ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 913ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_bIsMask; 914ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 915ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 916ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsInterpol() const 917ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 918ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_bInterpolate; 919ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 920ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 921ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_DIBSource* LoadDIBSource(CFX_DIBSource** ppMask = NULL, FX_DWORD* pMatteColor = NULL, FX_BOOL bStdCS = FALSE, FX_DWORD GroupFamily = 0, FX_BOOL bLoadMask = FALSE) const; 922ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 923ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 924ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 925ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetImage(const CFX_DIBitmap* pDIBitmap, FX_INT32 iCompress, IFX_FileWrite *pFileWrite = NULL, IFX_FileRead *pFileRead = NULL, const CFX_DIBitmap* pMask = NULL, const CPDF_ImageSetParam* pParam = NULL); 926ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 927ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetJpegImage(FX_BYTE* pImageData, FX_DWORD size); 928ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 929ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetJpegImage(IFX_FileRead *pFile); 930ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 931ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ResetCache(CPDF_Page* pPage, const CFX_DIBitmap* pDIBitmap); 932ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 933ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 934ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL StartLoadDIBSource(CPDF_Dictionary* pFormResource, CPDF_Dictionary* pPageResource, FX_BOOL bStdCS = FALSE, FX_DWORD GroupFamily = 0, FX_BOOL bLoadMask = FALSE); 935ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Continue(IFX_Pause* pPause); 936ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_DIBSource* DetachBitmap(); 937ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_DIBSource* DetachMask(); 938ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_DIBSource* m_pDIBSource; 939ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_DIBSource* m_pMask; 940ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD m_MatteColor; 941ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 942ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 943ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Stream* m_pStream; 944ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bInline; 945ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* m_pInlineDict; 946ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 947ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 m_Height; 948ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 949ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 m_Width; 950ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 951ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bIsMask; 952ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 953ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bInterpolate; 954ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 955ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Document* m_pDocument; 956ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 957ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* m_pOC; 958ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* InitJPEG(FX_LPBYTE pData, FX_DWORD size); 959ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 960ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 961