OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #ifndef XFA_FGAS_FONT_FGAS_STDFONTMGR_H_ | 7 #ifndef XFA_FGAS_FONT_FGAS_STDFONTMGR_H_ |
8 #define XFA_FGAS_FONT_FGAS_STDFONTMGR_H_ | 8 #define XFA_FGAS_FONT_FGAS_STDFONTMGR_H_ |
9 | 9 |
10 #include "core/fxcrt/include/fx_ext.h" | 10 #include "core/fxcrt/include/fx_ext.h" |
11 #include "core/fxge/include/fx_freetype.h" | 11 #include "core/fxge/include/fx_freetype.h" |
12 #include "core/fxge/include/fx_ge.h" | |
13 #include "third_party/freetype/include/freetype/fttypes.h" | 12 #include "third_party/freetype/include/freetype/fttypes.h" |
14 #include "xfa/fgas/font/fgas_font.h" | 13 #include "xfa/fgas/font/fgas_font.h" |
15 | 14 |
16 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ | 15 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ |
17 int32_t FX_GetSimilarValue(FX_FONTDESCRIPTOR const* pFont, | 16 int32_t FX_GetSimilarValue(FX_FONTDESCRIPTOR const* pFont, |
18 uint32_t dwFontStyles); | 17 uint32_t dwFontStyles); |
19 FX_FONTDESCRIPTOR const* FX_DefFontMatcher(FX_LPFONTMATCHPARAMS pParams, | 18 FX_FONTDESCRIPTOR const* FX_DefFontMatcher(FX_LPFONTMATCHPARAMS pParams, |
20 const CFX_FontDescriptors& fonts); | 19 const CFX_FontDescriptors& fonts); |
21 | 20 |
22 class CFX_StdFontMgrImp : public IFX_FontMgr { | 21 class CFX_StdFontMgrImp : public IFX_FontMgr { |
23 public: | 22 public: |
24 CFX_StdFontMgrImp(FX_LPEnumAllFonts pEnumerator); | 23 explicit CFX_StdFontMgrImp(FX_LPEnumAllFonts pEnumerator); |
25 ~CFX_StdFontMgrImp(); | 24 ~CFX_StdFontMgrImp() override; |
26 virtual void Release() { delete this; } | 25 |
27 virtual IFX_Font* GetDefFontByCodePage(uint16_t wCodePage, | 26 // IFX_FontMgr: |
28 uint32_t dwFontStyles, | 27 void Release() override { delete this; } |
29 const FX_WCHAR* pszFontFamily = NULL); | 28 IFX_Font* GetDefFontByCodePage(uint16_t wCodePage, |
30 virtual IFX_Font* GetDefFontByCharset(uint8_t nCharset, | 29 uint32_t dwFontStyles, |
31 uint32_t dwFontStyles, | 30 const FX_WCHAR* pszFontFamily = NULL) override; |
32 const FX_WCHAR* pszFontFamily = NULL); | 31 IFX_Font* GetDefFontByCharset(uint8_t nCharset, |
33 virtual IFX_Font* GetDefFontByUnicode(FX_WCHAR wUnicode, | 32 uint32_t dwFontStyles, |
34 uint32_t dwFontStyles, | 33 const FX_WCHAR* pszFontFamily = NULL) override; |
35 const FX_WCHAR* pszFontFamily = NULL); | 34 IFX_Font* GetDefFontByUnicode(FX_WCHAR wUnicode, |
36 virtual IFX_Font* GetDefFontByLanguage(uint16_t wLanguage, | 35 uint32_t dwFontStyles, |
37 uint32_t dwFontStyles, | 36 const FX_WCHAR* pszFontFamily = NULL) override; |
38 const FX_WCHAR* pszFontFamily = NULL); | 37 IFX_Font* GetDefFontByLanguage(uint16_t wLanguage, |
39 virtual IFX_Font* LoadFont(const FX_WCHAR* pszFontFamily, | 38 uint32_t dwFontStyles, |
40 uint32_t dwFontStyles, | 39 const FX_WCHAR* pszFontFamily = NULL) override; |
41 uint16_t wCodePage = 0xFFFF); | 40 IFX_Font* LoadFont(const FX_WCHAR* pszFontFamily, |
42 virtual IFX_Font* LoadFont(const uint8_t* pBuffer, int32_t iLength); | 41 uint32_t dwFontStyles, |
43 virtual IFX_Font* LoadFont(const FX_WCHAR* pszFileName); | 42 uint16_t wCodePage = 0xFFFF) override; |
44 virtual IFX_Font* LoadFont(IFX_Stream* pFontStream, | 43 IFX_Font* LoadFont(const uint8_t* pBuffer, int32_t iLength) override; |
45 const FX_WCHAR* pszFontAlias = NULL, | 44 IFX_Font* LoadFont(const FX_WCHAR* pszFileName) override; |
46 uint32_t dwFontStyles = 0, | 45 IFX_Font* LoadFont(IFX_Stream* pFontStream, |
47 uint16_t wCodePage = 0, | 46 const FX_WCHAR* pszFontAlias = NULL, |
48 FX_BOOL bSaveStream = FALSE); | 47 uint32_t dwFontStyles = 0, |
49 virtual IFX_Font* LoadFont(IFX_Font* pSrcFont, | 48 uint16_t wCodePage = 0, |
50 uint32_t dwFontStyles, | 49 FX_BOOL bSaveStream = FALSE) override; |
51 uint16_t wCodePage = 0xFFFF); | 50 IFX_Font* LoadFont(IFX_Font* pSrcFont, |
52 virtual void ClearFontCache(); | 51 uint32_t dwFontStyles, |
53 virtual void RemoveFont(IFX_Font* pFont); | 52 uint16_t wCodePage = 0xFFFF) override; |
| 53 |
| 54 void ClearFontCache(); |
| 55 void RemoveFont(IFX_Font* pFont); |
54 | 56 |
55 protected: | 57 protected: |
56 void RemoveFont(CFX_MapPtrToPtr& fontMap, IFX_Font* pFont); | 58 void RemoveFont(CFX_MapPtrToPtr& fontMap, IFX_Font* pFont); |
57 FX_FONTDESCRIPTOR const* FindFont(const FX_WCHAR* pszFontFamily, | 59 FX_FONTDESCRIPTOR const* FindFont(const FX_WCHAR* pszFontFamily, |
58 uint32_t dwFontStyles, | 60 uint32_t dwFontStyles, |
59 uint32_t dwMatchFlags, | 61 uint32_t dwMatchFlags, |
60 uint16_t wCodePage, | 62 uint16_t wCodePage, |
61 uint32_t dwUSB = 999, | 63 uint32_t dwUSB = 999, |
62 FX_WCHAR wUnicode = 0); | 64 FX_WCHAR wUnicode = 0); |
63 IFX_Font* GetFont(FX_FONTDESCRIPTOR const* pFD, uint32_t dwFontStyles); | 65 IFX_Font* GetFont(FX_FONTDESCRIPTOR const* pFD, uint32_t dwFontStyles); |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 private: | 139 private: |
138 CFX_ByteString GetNextFile(); | 140 CFX_ByteString GetNextFile(); |
139 | 141 |
140 CFX_WideString m_wsNext; | 142 CFX_WideString m_wsNext; |
141 CFX_ObjectArray<FX_HandleParentPath> m_FolderQueue; | 143 CFX_ObjectArray<FX_HandleParentPath> m_FolderQueue; |
142 CFX_ByteStringArray m_FolderPaths; | 144 CFX_ByteStringArray m_FolderPaths; |
143 }; | 145 }; |
144 | 146 |
145 class CFX_FontMgrImp : public IFX_FontMgr { | 147 class CFX_FontMgrImp : public IFX_FontMgr { |
146 public: | 148 public: |
147 CFX_FontMgrImp(CFX_FontSourceEnum_File* pFontEnum); | 149 explicit CFX_FontMgrImp(CFX_FontSourceEnum_File* pFontEnum); |
| 150 ~CFX_FontMgrImp() override; |
148 | 151 |
149 virtual void Release(); | 152 // IFX_FontMgr: |
150 virtual IFX_Font* GetDefFontByCodePage(uint16_t wCodePage, | 153 void Release() override; |
151 uint32_t dwFontStyles, | 154 IFX_Font* GetDefFontByCodePage(uint16_t wCodePage, |
152 const FX_WCHAR* pszFontFamily = NULL); | 155 uint32_t dwFontStyles, |
153 virtual IFX_Font* GetDefFontByCharset(uint8_t nCharset, | 156 const FX_WCHAR* pszFontFamily = NULL) override; |
154 uint32_t dwFontStyles, | 157 IFX_Font* GetDefFontByCharset(uint8_t nCharset, |
155 const FX_WCHAR* pszFontFamily = NULL); | 158 uint32_t dwFontStyles, |
156 virtual IFX_Font* GetDefFontByUnicode(FX_WCHAR wUnicode, | 159 const FX_WCHAR* pszFontFamily = NULL) override; |
157 uint32_t dwFontStyles, | 160 IFX_Font* GetDefFontByUnicode(FX_WCHAR wUnicode, |
158 const FX_WCHAR* pszFontFamily = NULL); | 161 uint32_t dwFontStyles, |
159 virtual IFX_Font* GetDefFontByLanguage(uint16_t wLanguage, | 162 const FX_WCHAR* pszFontFamily = NULL) override; |
160 uint32_t dwFontStyles, | 163 IFX_Font* GetDefFontByLanguage(uint16_t wLanguage, |
161 const FX_WCHAR* pszFontFamily = NULL); | 164 uint32_t dwFontStyles, |
162 virtual IFX_Font* GetFontByCodePage(uint16_t wCodePage, | 165 const FX_WCHAR* pszFontFamily = NULL) override; |
163 uint32_t dwFontStyles, | 166 IFX_Font* GetFontByCodePage(uint16_t wCodePage, |
164 const FX_WCHAR* pszFontFamily = NULL); | 167 uint32_t dwFontStyles, |
165 virtual IFX_Font* GetFontByCharset(uint8_t nCharset, | 168 const FX_WCHAR* pszFontFamily = NULL) override; |
166 uint32_t dwFontStyles, | 169 IFX_Font* GetFontByCharset(uint8_t nCharset, |
167 const FX_WCHAR* pszFontFamily = NULL); | 170 uint32_t dwFontStyles, |
168 virtual IFX_Font* GetFontByUnicode(FX_WCHAR wUnicode, | 171 const FX_WCHAR* pszFontFamily = NULL) override; |
169 uint32_t dwFontStyles, | 172 IFX_Font* GetFontByUnicode(FX_WCHAR wUnicode, |
170 const FX_WCHAR* pszFontFamily = NULL); | 173 uint32_t dwFontStyles, |
171 virtual IFX_Font* GetFontByLanguage(uint16_t wLanguage, | 174 const FX_WCHAR* pszFontFamily = NULL) override; |
172 uint32_t dwFontStyles, | 175 IFX_Font* GetFontByLanguage(uint16_t wLanguage, |
173 const FX_WCHAR* pszFontFamily = NULL); | 176 uint32_t dwFontStyles, |
174 virtual IFX_Font* LoadFont(const uint8_t* pBuffer, | 177 const FX_WCHAR* pszFontFamily = NULL) override; |
175 int32_t iLength, | 178 IFX_Font* LoadFont(const uint8_t* pBuffer, |
176 int32_t iFaceIndex, | 179 int32_t iLength, |
177 int32_t* pFaceCount); | 180 int32_t iFaceIndex, |
178 virtual IFX_Font* LoadFont(const FX_WCHAR* pszFileName, | 181 int32_t* pFaceCount) override; |
179 int32_t iFaceIndex, | 182 IFX_Font* LoadFont(const FX_WCHAR* pszFileName, |
180 int32_t* pFaceCount); | 183 int32_t iFaceIndex, |
181 virtual IFX_Font* LoadFont(IFX_Stream* pFontStream, | 184 int32_t* pFaceCount) override; |
182 int32_t iFaceIndex, | 185 IFX_Font* LoadFont(IFX_Stream* pFontStream, |
183 int32_t* pFaceCount, | 186 int32_t iFaceIndex, |
184 FX_BOOL bSaveStream = FALSE); | 187 int32_t* pFaceCount, |
185 virtual IFX_Font* LoadFont(const CFX_WideString& wsFaceName, | 188 FX_BOOL bSaveStream = FALSE) override; |
186 int32_t iFaceIndex, | 189 void ClearFontCache() override; |
187 int32_t* pFaceCount); | 190 void RemoveFont(IFX_Font* pFont) override; |
188 virtual void ClearFontCache(); | 191 |
189 virtual void RemoveFont(IFX_Font* pFont); | 192 IFX_Font* LoadFont(const CFX_WideString& wsFaceName, |
| 193 int32_t iFaceIndex, |
| 194 int32_t* pFaceCount); |
190 FX_BOOL EnumFonts(); | 195 FX_BOOL EnumFonts(); |
191 FX_BOOL EnumFontsFromFontMapper(); | 196 FX_BOOL EnumFontsFromFontMapper(); |
192 FX_BOOL EnumFontsFromFiles(); | 197 FX_BOOL EnumFontsFromFiles(); |
193 | 198 |
194 protected: | 199 protected: |
195 void RegisterFace(FXFT_Face pFace, | 200 void RegisterFace(FXFT_Face pFace, |
196 CFX_FontDescriptors& Fonts, | 201 CFX_FontDescriptors& Fonts, |
197 const CFX_WideString* pFaceName, | 202 const CFX_WideString* pFaceName, |
198 IFX_FileAccess* pFontAccess); | 203 IFX_FileAccess* pFontAccess); |
199 void RegisterFaces(IFX_FileRead* pFontStream, | 204 void RegisterFaces(IFX_FileRead* pFontStream, |
(...skipping 25 matching lines...) Expand all Loading... |
225 IFX_SystemFontInfo* pSystemFontInfo, | 230 IFX_SystemFontInfo* pSystemFontInfo, |
226 uint32_t index); | 231 uint32_t index); |
227 IFX_FileRead* CreateFontStream(const CFX_ByteString& bsFaceName); | 232 IFX_FileRead* CreateFontStream(const CFX_ByteString& bsFaceName); |
228 | 233 |
229 CFX_MapPtrTemplate<uint32_t, CFX_FontDescriptorInfos*> m_Hash2CandidateList; | 234 CFX_MapPtrTemplate<uint32_t, CFX_FontDescriptorInfos*> m_Hash2CandidateList; |
230 CFX_MapPtrTemplate<uint32_t, CFX_ArrayTemplate<IFX_Font*>*> m_Hash2Fonts; | 235 CFX_MapPtrTemplate<uint32_t, CFX_ArrayTemplate<IFX_Font*>*> m_Hash2Fonts; |
231 CFX_MapPtrTemplate<uint32_t, IFX_FileAccess*> m_Hash2FileAccess; | 236 CFX_MapPtrTemplate<uint32_t, IFX_FileAccess*> m_Hash2FileAccess; |
232 CFX_MapPtrTemplate<uint32_t, IFX_Font*> m_FileAccess2IFXFont; | 237 CFX_MapPtrTemplate<uint32_t, IFX_Font*> m_FileAccess2IFXFont; |
233 CFX_MapPtrTemplate<IFX_Font*, IFX_FileRead*> m_IFXFont2FileRead; | 238 CFX_MapPtrTemplate<IFX_Font*, IFX_FileRead*> m_IFXFont2FileRead; |
234 CFX_MapPtrTemplate<FX_WCHAR, IFX_Font*> m_FailedUnicodes2NULL; | 239 CFX_MapPtrTemplate<FX_WCHAR, IFX_Font*> m_FailedUnicodes2NULL; |
235 CFX_FontSourceEnum_File* m_pFontSource; | 240 CFX_FontSourceEnum_File* const m_pFontSource; |
236 }; | 241 }; |
237 #endif | 242 #endif |
238 | 243 |
239 #endif // XFA_FGAS_FONT_FGAS_STDFONTMGR_H_ | 244 #endif // XFA_FGAS_FONT_FGAS_STDFONTMGR_H_ |
OLD | NEW |