// 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(); bool ReleaseFace(FXFT_Face face); int m_Type; union { struct { bool m_bItalic; 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 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 CFontFaceInfo { public: CFX_ByteString m_FilePath; CFX_ByteString m_FaceName; FX_DWORD m_Styles; FX_DWORD m_Charsets; FX_DWORD m_FontOffset; FX_DWORD m_FileSize; CFX_ByteString m_FontTables; }; 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; bool m_bItalic; int m_PitchFamily; CFX_ByteString m_FontTables; }; #endif // CORE_SRC_FXGE_GE_TEXT_INT_H_