| // 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 _TEXT_INT_H_ |
| #define _TEXT_INT_H_ |
| |
| struct _CFX_UniqueKeyGen { |
| void Generate(int count, ...); |
| FX_CHAR m_Key[128]; |
| int m_KeyLen; |
| }; |
| class CFX_SizeGlyphCache : public CFX_Object |
| { |
| public: |
| CFX_SizeGlyphCache() |
| { |
| m_GlyphMap.InitHashTable(253); |
| } |
| ~CFX_SizeGlyphCache(); |
| CFX_MapPtrToPtr m_GlyphMap; |
| }; |
| class CTTFontDesc : public CFX_Object |
| { |
| 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; |
| }; |
| FX_BYTE* 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 CFontFaceInfo : public CFX_Object |
| { |
| 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 CFX_Object |
| { |
| 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; |
| }; |
| class CFX_FontEncodingEX : public IFX_FontEncodingEx
|
| {
|
| public:
|
| CFX_FontEncodingEX();
|
| FX_BOOL Init(CFX_Font* pFont, FX_DWORD EncodingID);
|
| virtual FX_DWORD GlyphIndexFromName(FX_LPCSTR pStrName);
|
| virtual CFX_ByteString NameFromGlyphIndex(FX_DWORD dwGlyphIndex);
|
| virtual FX_DWORD CharCodeFromGlyphIndex(FX_DWORD dwGlyphIndex);
|
| virtual FX_DWORD GlyphFromCharCode(FX_DWORD charcode);
|
| virtual CFX_WideString UnicodeFromCharCode(FX_DWORD charcode) const;
|
| virtual FX_DWORD CharCodeFromUnicode(FX_WCHAR Unicode) const;
|
| virtual FX_BOOL IsUnicodeCompatible() const;
|
| virtual FX_DWORD GlyphFromCharCodeEx(FX_DWORD charcode, int encoding = ENCODING_UNICODE)
|
| {
|
| return GlyphFromCharCode(charcode);
|
| }
|
| private:
|
| CFX_Font* m_pFont;
|
| FX_DWORD m_nEncodingID;
|
| };
|
| #endif // _TEXT_INT_H_ |