Add CFX_FontFaceInfo constructor.
[pdfium.git] / core / src / fxge / ge / text_int.h
1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7 #ifndef CORE_SRC_FXGE_GE_TEXT_INT_H_
8 #define CORE_SRC_FXGE_GE_TEXT_INT_H_
9
10 struct _CFX_UniqueKeyGen {
11   void Generate(int count, ...);
12   FX_CHAR m_Key[128];
13   int m_KeyLen;
14 };
15 class CFX_SizeGlyphCache {
16  public:
17   CFX_SizeGlyphCache() { m_GlyphMap.InitHashTable(253); }
18   ~CFX_SizeGlyphCache();
19   CFX_MapPtrToPtr m_GlyphMap;
20 };
21 class CTTFontDesc {
22  public:
23   CTTFontDesc() {
24     m_Type = 0;
25     m_pFontData = NULL;
26     m_RefCount = 0;
27   }
28   ~CTTFontDesc();
29   FX_BOOL ReleaseFace(FXFT_Face face);
30   int m_Type;
31   union {
32     struct {
33       FX_BOOL m_bItalic;
34       FX_BOOL m_bBold;
35       FXFT_Face m_pFace;
36     } m_SingleFace;
37     struct {
38       FXFT_Face m_pFaces[16];
39     } m_TTCFace;
40   };
41   uint8_t* m_pFontData;
42   int m_RefCount;
43 };
44 class CFX_UnicodeEncoding : public IFX_FontEncoding {
45  public:
46   CFX_UnicodeEncoding(CFX_Font* pFont);
47   virtual FX_DWORD GlyphFromCharCodeEx(FX_DWORD charcode,
48                                        int encoding = ENCODING_UNICODE);
49
50  private:
51   CFX_Font* m_pFont;
52   virtual FX_DWORD GlyphFromCharCode(FX_DWORD charcode);
53   virtual CFX_WideString UnicodeFromCharCode(FX_DWORD charcode) const {
54     return CFX_WideString((FX_WCHAR)charcode);
55   }
56   virtual FX_DWORD CharCodeFromUnicode(FX_WCHAR Unicode) const {
57     return Unicode;
58   }
59   virtual FX_BOOL IsUnicodeCompatible() const { return TRUE; }
60 };
61 #define CHARSET_FLAG_ANSI 1
62 #define CHARSET_FLAG_SYMBOL 2
63 #define CHARSET_FLAG_SHIFTJIS 4
64 #define CHARSET_FLAG_BIG5 8
65 #define CHARSET_FLAG_GB 16
66 #define CHARSET_FLAG_KOREAN 32
67
68 class CFX_FontFaceInfo {
69  public:
70   CFX_FontFaceInfo(CFX_ByteString filePath, CFX_ByteString faceName,
71                    CFX_ByteString fontTables, FX_DWORD fontOffset,
72                    FX_DWORD fileSize)
73       : m_FilePath(filePath),
74         m_FaceName(faceName),
75         m_FontTables(fontTables),
76         m_FontOffset(fontOffset),
77         m_FileSize(fileSize),
78         m_Styles(0),
79         m_Charsets(0) {}
80
81   const CFX_ByteString m_FilePath;
82   const CFX_ByteString m_FaceName;
83   const CFX_ByteString m_FontTables;
84   const FX_DWORD m_FontOffset;
85   const FX_DWORD m_FileSize;
86   FX_DWORD m_Styles;
87   FX_DWORD m_Charsets;
88 };
89
90 class CFontFileFaceInfo {
91  public:
92   CFontFileFaceInfo();
93   ~CFontFileFaceInfo();
94
95   IFX_FileStream* m_pFile;
96   FXFT_Face m_Face;
97   CFX_ByteString m_FaceName;
98   FX_DWORD m_Charsets;
99   FX_DWORD m_FileSize;
100   FX_DWORD m_FontOffset;
101   int m_Weight;
102   FX_BOOL m_bItalic;
103   int m_PitchFamily;
104   CFX_ByteString m_FontTables;
105 };
106
107 #endif  // CORE_SRC_FXGE_GE_TEXT_INT_H_