// Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef CORE_SRC_FXGE_GE_TEXT_INT_H_ #define CORE_SRC_FXGE_GE_TEXT_INT_H_ struct _CFX_UniqueKeyGen { void Generate(int count, ...); FX_CHAR m_Key[128]; int m_KeyLen; }; class CFX_SizeGlyphCache { public: CFX_SizeGlyphCache() { m_GlyphMap.InitHashTable(253); } ~CFX_SizeGlyphCache(); CFX_MapPtrToPtr m_GlyphMap; }; class CTTFontDesc { public: CTTFontDesc() { m_Type = 0; m_pFontData = NULL; m_RefCount = 0; } ~CTTFontDesc(); FX_BOOL ReleaseFace(FXFT_Face face); int m_Type; union { struct { FX_BOOL m_bItalic; FX_BOOL m_bBold; FXFT_Face m_pFace; } m_SingleFace; struct { FXFT_Face m_pFaces[16]; } m_TTCFace; }; uint8_t* m_pFontData; int m_RefCount; }; class CFX_UnicodeEncoding : public IFX_FontEncoding { public: CFX_UnicodeEncoding(CFX_Font* pFont); virtual FX_DWORD GlyphFromCharCodeEx(FX_DWORD charcode, int encoding = ENCODING_UNICODE); private: CFX_Font* m_pFont; virtual FX_DWORD GlyphFromCharCode(FX_DWORD charcode); virtual CFX_WideString UnicodeFromCharCode(FX_DWORD charcode) const { return CFX_WideString((FX_WCHAR)charcode); } virtual FX_DWORD CharCodeFromUnicode(FX_WCHAR Unicode) const { return Unicode; } virtual FX_BOOL IsUnicodeCompatible() const { return TRUE; } }; #define CHARSET_FLAG_ANSI 1 #define CHARSET_FLAG_SYMBOL 2 #define CHARSET_FLAG_SHIFTJIS 4 #define CHARSET_FLAG_BIG5 8 #define CHARSET_FLAG_GB 16 #define CHARSET_FLAG_KOREAN 32 class CFX_FontFaceInfo { public: CFX_FontFaceInfo(CFX_ByteString filePath, CFX_ByteString faceName, CFX_ByteString fontTables, FX_DWORD fontOffset, FX_DWORD fileSize) : m_FilePath(filePath), m_FaceName(faceName), m_FontTables(fontTables), m_FontOffset(fontOffset), m_FileSize(fileSize), m_Styles(0), m_Charsets(0) {} const CFX_ByteString m_FilePath; const CFX_ByteString m_FaceName; const CFX_ByteString m_FontTables; const FX_DWORD m_FontOffset; const FX_DWORD m_FileSize; FX_DWORD m_Styles; FX_DWORD m_Charsets; }; class CFontFileFaceInfo { public: CFontFileFaceInfo(); ~CFontFileFaceInfo(); IFX_FileStream* m_pFile; FXFT_Face m_Face; CFX_ByteString m_FaceName; FX_DWORD m_Charsets; FX_DWORD m_FileSize; FX_DWORD m_FontOffset; int m_Weight; FX_BOOL m_bItalic; int m_PitchFamily; CFX_ByteString m_FontTables; }; #endif // CORE_SRC_FXGE_GE_TEXT_INT_H_