Extern in .cpp file is a code smell, part 2.
[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 #include "../../../include/fxge/fx_freetype.h"
11
12 struct _CFX_UniqueKeyGen {
13   void Generate(int count, ...);
14   FX_CHAR m_Key[128];
15   int m_KeyLen;
16 };
17 class CFX_SizeGlyphCache {
18  public:
19   CFX_SizeGlyphCache() { m_GlyphMap.InitHashTable(253); }
20   ~CFX_SizeGlyphCache();
21   CFX_MapPtrToPtr m_GlyphMap;
22 };
23 class CTTFontDesc {
24  public:
25   CTTFontDesc() {
26     m_Type = 0;
27     m_pFontData = NULL;
28     m_RefCount = 0;
29   }
30   ~CTTFontDesc();
31   FX_BOOL ReleaseFace(FXFT_Face face);
32   int m_Type;
33   union {
34     struct {
35       FX_BOOL m_bItalic;
36       FX_BOOL m_bBold;
37       FXFT_Face m_pFace;
38     } m_SingleFace;
39     struct {
40       FXFT_Face m_pFaces[16];
41     } m_TTCFace;
42   };
43   uint8_t* m_pFontData;
44   int m_RefCount;
45 };
46
47 #define CHARSET_FLAG_ANSI 1
48 #define CHARSET_FLAG_SYMBOL 2
49 #define CHARSET_FLAG_SHIFTJIS 4
50 #define CHARSET_FLAG_BIG5 8
51 #define CHARSET_FLAG_GB 16
52 #define CHARSET_FLAG_KOREAN 32
53
54 class CFX_FontFaceInfo {
55  public:
56   CFX_FontFaceInfo(CFX_ByteString filePath,
57                    CFX_ByteString faceName,
58                    CFX_ByteString fontTables,
59                    FX_DWORD fontOffset,
60                    FX_DWORD fileSize)
61       : m_FilePath(filePath),
62         m_FaceName(faceName),
63         m_FontTables(fontTables),
64         m_FontOffset(fontOffset),
65         m_FileSize(fileSize),
66         m_Styles(0),
67         m_Charsets(0) {}
68
69   const CFX_ByteString m_FilePath;
70   const CFX_ByteString m_FaceName;
71   const CFX_ByteString m_FontTables;
72   const FX_DWORD m_FontOffset;
73   const FX_DWORD m_FileSize;
74   FX_DWORD m_Styles;
75   FX_DWORD m_Charsets;
76 };
77
78 class CFontFileFaceInfo {
79  public:
80   CFontFileFaceInfo();
81   ~CFontFileFaceInfo();
82
83   IFX_FileStream* m_pFile;
84   FXFT_Face m_Face;
85   CFX_ByteString m_FaceName;
86   FX_DWORD m_Charsets;
87   FX_DWORD m_FileSize;
88   FX_DWORD m_FontOffset;
89   int m_Weight;
90   FX_BOOL m_bItalic;
91   int m_PitchFamily;
92   CFX_ByteString m_FontTables;
93 };
94
95 #endif  // CORE_SRC_FXGE_GE_TEXT_INT_H_