Add FPDF_GetSecurityHandlerRevision
[pdfium.git] / fpdfsdk / include / pdfwindow / PWL_FontMap.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 _PWL_FONTMAP_H_
8 #define _PWL_FONTMAP_H_
9
10 struct CPWL_FontMap_Data
11 {
12         CPDF_Font*                      pFont;
13         FX_INT32                        nCharset;
14         CFX_ByteString          sFontName;
15 };
16
17 struct CPWL_FontMap_Native
18 {
19         FX_INT32                        nCharset;
20         CFX_ByteString          sFontName;
21 };
22
23 #ifndef ANSI_CHARSET
24
25 #define ANSI_CHARSET            0
26 #define DEFAULT_CHARSET         1
27 #define SYMBOL_CHARSET          2
28 #define SHIFTJIS_CHARSET        128
29 #define HANGEUL_CHARSET         129
30 #define HANGUL_CHARSET          129
31 #define GB2312_CHARSET          134
32 #define CHINESEBIG5_CHARSET     136
33 #define OEM_CHARSET             255
34 #define JOHAB_CHARSET           130
35 #define HEBREW_CHARSET          177
36 #define ARABIC_CHARSET          178
37 #define GREEK_CHARSET           161
38 #define TURKISH_CHARSET         162
39 #define VIETNAMESE_CHARSET      163
40 #define THAI_CHARSET            222
41 #define EASTEUROPE_CHARSET      238
42 #define RUSSIAN_CHARSET         204
43 #define BALTIC_CHARSET          186
44
45 #endif
46
47 #ifndef PWL_CLASS
48
49         #ifdef FX_READER_DLL
50                 #define PWL_CLASS               __declspec(dllexport)
51         #else
52                 #define PWL_CLASS
53         #endif
54 #endif
55
56 class IFX_SystemHandler;
57 class PWL_CLASS CPWL_FontMap : public IFX_Edit_FontMap
58 {
59 public:
60         CPWL_FontMap(IFX_SystemHandler* pSystemHandler);
61         virtual ~CPWL_FontMap();
62
63         virtual CPDF_Font*                                                      GetPDFFont(FX_INT32 nFontIndex);
64         virtual CFX_ByteString                                          GetPDFFontAlias(FX_INT32 nFontIndex);
65         virtual FX_INT32                                                        GetWordFontIndex(FX_WORD word, FX_INT32 nCharset, FX_INT32 nFontIndex);
66         virtual FX_INT32                                                        CharCodeFromUnicode(FX_INT32 nFontIndex, FX_WORD word);
67         virtual FX_INT32                                                        CharSetFromUnicode(FX_WORD word, FX_INT32 nOldCharset);
68
69 public:
70         virtual void                                                            Initial(FX_LPCSTR fontname = NULL);
71         void                                                                            SetSystemHandler(IFX_SystemHandler* pSystemHandler);
72
73         FX_INT32                                                                        GetFontMapCount() const;
74         const CPWL_FontMap_Data*                                        GetFontMapData(FX_INT32 nIndex) const;
75
76 public:
77         static FX_INT32                                                         GetNativeCharset();
78         CFX_ByteString                                                          GetNativeFontName(FX_INT32 nCharset);
79
80         static CFX_ByteString                                           GetDefaultFontByCharset(FX_INT32 nCharset);
81
82         CPDF_Font*                                                                      AddFontToDocument(CPDF_Document* pDoc, CFX_ByteString& sFontName, FX_BYTE nCharset);
83         static FX_BOOL                                                          IsStandardFont(const CFX_ByteString& sFontName);                                                        
84         CPDF_Font*                                                                      AddStandardFont(CPDF_Document* pDoc, CFX_ByteString& sFontName);
85         CPDF_Font*                                                                      AddSystemFont(CPDF_Document* pDoc, CFX_ByteString& sFontName, 
86                                                                                                         FX_BYTE nCharset);
87
88 protected:
89         virtual CPDF_Font*                                                      FindFontSameCharset(CFX_ByteString& sFontAlias, FX_INT32 nCharset);
90         virtual void                                                            AddedFont(CPDF_Font* pFont, const CFX_ByteString& sFontAlias);
91         FX_BOOL                                                                         KnowWord(FX_INT32 nFontIndex, FX_WORD word);
92
93         virtual CPDF_Document*                                          GetDocument();
94
95         void                                                                            Empty();
96         FX_INT32                                                                        GetFontIndex(const CFX_ByteString& sFontName, FX_INT32 nCharset, FX_BOOL bFind);
97         FX_INT32                                                                        GetPWLFontIndex(FX_WORD word, FX_INT32 nCharset);
98         FX_INT32                                                                        AddFontData(CPDF_Font* pFont, const CFX_ByteString& sFontAlias, FX_INT32 nCharset = DEFAULT_CHARSET);
99
100         CFX_ByteString                                                          EncodeFontAlias(const CFX_ByteString& sFontName, FX_INT32 nCharset);
101         CFX_ByteString                                                          EncodeFontAlias(const CFX_ByteString& sFontName);
102
103 private:
104         CFX_ByteString                                                          GetFontName(FX_INT32 nFontIndex);
105         FX_INT32                                                                        FindFont(const CFX_ByteString& sFontName, FX_INT32 nCharset = DEFAULT_CHARSET);
106
107         CFX_ByteString                                                          GetNativeFont(FX_INT32 nCharset);
108
109 public:
110         struct CharsetFontMap {
111                 FX_INT32                                                                charset;
112                 const char*                                                             fontname;
113         };
114         static const CharsetFontMap                                     defaultTTFMap[];
115
116 protected:
117         CFX_ArrayTemplate<CPWL_FontMap_Data*>           m_aData;
118         CFX_ArrayTemplate<CPWL_FontMap_Native*>         m_aNativeFont;
119
120 private:
121         CPDF_Document*                                                          m_pPDFDoc;
122         IFX_SystemHandler*                                                      m_pSystemHandler;
123 };
124
125 class PWL_CLASS CPWL_DocFontMap : public CPWL_FontMap
126 {
127 public:
128         CPWL_DocFontMap(IFX_SystemHandler* pSystemHandler, CPDF_Document* pAttachedDoc);
129         virtual ~CPWL_DocFontMap();
130
131         virtual CPDF_Document*                                          GetDocument();
132
133 private:
134         CPDF_Document*                                                          m_pAttachedDoc;
135 };
136
137 #endif