Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: xfa/fgas/font/fgas_stdfontmgr.h

Issue 2037563002: Replace IFGAS_Font with underlying concrete type (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: Fix Windows Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "third_party/freetype/include/freetype/fttypes.h" 12 #include "third_party/freetype/include/freetype/fttypes.h"
13 #include "xfa/fgas/font/fgas_font.h" 13 #include "xfa/fgas/font/fgas_font.h"
14 14
15 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ 15 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
16 int32_t FX_GetSimilarValue(FX_FONTDESCRIPTOR const* pFont, 16 int32_t FX_GetSimilarValue(FX_FONTDESCRIPTOR const* pFont,
17 uint32_t dwFontStyles); 17 uint32_t dwFontStyles);
18 FX_FONTDESCRIPTOR const* FX_DefFontMatcher(FX_LPFONTMATCHPARAMS pParams, 18 FX_FONTDESCRIPTOR const* FX_DefFontMatcher(FX_LPFONTMATCHPARAMS pParams,
19 const CFX_FontDescriptors& fonts); 19 const CFX_FontDescriptors& fonts);
20 20
21 class CFX_StdFontMgrImp : public IFX_FontMgr { 21 class CFX_StdFontMgrImp : public IFX_FontMgr {
22 public: 22 public:
23 explicit CFX_StdFontMgrImp(FX_LPEnumAllFonts pEnumerator); 23 explicit CFX_StdFontMgrImp(FX_LPEnumAllFonts pEnumerator);
24 ~CFX_StdFontMgrImp() override; 24 ~CFX_StdFontMgrImp() override;
25 25
26 // IFX_FontMgr: 26 // IFX_FontMgr:
27 void Release() override { delete this; } 27 void Release() override { delete this; }
28 IFX_Font* GetDefFontByCodePage(uint16_t wCodePage, 28 CFX_GEFont* GetDefFontByCodePage(
29 uint32_t dwFontStyles, 29 uint16_t wCodePage,
30 const FX_WCHAR* pszFontFamily = NULL) override; 30 uint32_t dwFontStyles,
31 IFX_Font* GetDefFontByCharset(uint8_t nCharset, 31 const FX_WCHAR* pszFontFamily = NULL) override;
32 uint32_t dwFontStyles, 32 CFX_GEFont* GetDefFontByCharset(
33 const FX_WCHAR* pszFontFamily = NULL) override; 33 uint8_t nCharset,
34 IFX_Font* GetDefFontByUnicode(FX_WCHAR wUnicode, 34 uint32_t dwFontStyles,
35 uint32_t dwFontStyles, 35 const FX_WCHAR* pszFontFamily = NULL) override;
36 const FX_WCHAR* pszFontFamily = NULL) override; 36 CFX_GEFont* GetDefFontByUnicode(
37 IFX_Font* GetDefFontByLanguage(uint16_t wLanguage, 37 FX_WCHAR wUnicode,
38 uint32_t dwFontStyles, 38 uint32_t dwFontStyles,
39 const FX_WCHAR* pszFontFamily = NULL) override; 39 const FX_WCHAR* pszFontFamily = NULL) override;
40 IFX_Font* LoadFont(const FX_WCHAR* pszFontFamily, 40 CFX_GEFont* GetDefFontByLanguage(
41 uint32_t dwFontStyles, 41 uint16_t wLanguage,
42 uint16_t wCodePage = 0xFFFF) override; 42 uint32_t dwFontStyles,
43 IFX_Font* LoadFont(const uint8_t* pBuffer, int32_t iLength) override; 43 const FX_WCHAR* pszFontFamily = NULL) override;
44 IFX_Font* LoadFont(const FX_WCHAR* pszFileName) override; 44 CFX_GEFont* LoadFont(const FX_WCHAR* pszFontFamily,
45 IFX_Font* LoadFont(IFX_Stream* pFontStream, 45 uint32_t dwFontStyles,
46 const FX_WCHAR* pszFontAlias = NULL, 46 uint16_t wCodePage = 0xFFFF) override;
47 uint32_t dwFontStyles = 0, 47 CFX_GEFont* LoadFont(const uint8_t* pBuffer, int32_t iLength) override;
48 uint16_t wCodePage = 0, 48 CFX_GEFont* LoadFont(const FX_WCHAR* pszFileName) override;
49 FX_BOOL bSaveStream = FALSE) override; 49 CFX_GEFont* LoadFont(IFX_Stream* pFontStream,
50 IFX_Font* LoadFont(IFX_Font* pSrcFont, 50 const FX_WCHAR* pszFontAlias = NULL,
51 uint32_t dwFontStyles, 51 uint32_t dwFontStyles = 0,
52 uint16_t wCodePage = 0xFFFF) override; 52 uint16_t wCodePage = 0,
53 FX_BOOL bSaveStream = FALSE) override;
54 CFX_GEFont* LoadFont(CFX_GEFont* pSrcFont,
55 uint32_t dwFontStyles,
56 uint16_t wCodePage = 0xFFFF) override;
53 57
54 void ClearFontCache() override; 58 void ClearFontCache() override;
55 void RemoveFont(IFX_Font* pFont) override; 59 void RemoveFont(CFX_GEFont* pFont) override;
56 60
57 protected: 61 protected:
58 void RemoveFont(CFX_MapPtrToPtr& fontMap, IFX_Font* pFont); 62 void RemoveFont(CFX_MapPtrToPtr& fontMap, CFX_GEFont* pFont);
59 FX_FONTDESCRIPTOR const* FindFont(const FX_WCHAR* pszFontFamily, 63 FX_FONTDESCRIPTOR const* FindFont(const FX_WCHAR* pszFontFamily,
60 uint32_t dwFontStyles, 64 uint32_t dwFontStyles,
61 uint32_t dwMatchFlags, 65 uint32_t dwMatchFlags,
62 uint16_t wCodePage, 66 uint16_t wCodePage,
63 uint32_t dwUSB = 999, 67 uint32_t dwUSB = 999,
64 FX_WCHAR wUnicode = 0); 68 FX_WCHAR wUnicode = 0);
65 IFX_Font* GetFont(FX_FONTDESCRIPTOR const* pFD, uint32_t dwFontStyles); 69 CFX_GEFont* GetFont(FX_FONTDESCRIPTOR const* pFD, uint32_t dwFontStyles);
66 70
67 FX_LPEnumAllFonts m_pEnumerator; 71 FX_LPEnumAllFonts m_pEnumerator;
68 CFX_FontDescriptors m_FontFaces; 72 CFX_FontDescriptors m_FontFaces;
69 CFX_ArrayTemplate<IFX_Font*> m_Fonts; 73 CFX_ArrayTemplate<CFX_GEFont*> m_Fonts;
70 CFX_MapPtrToPtr m_CPFonts; 74 CFX_MapPtrToPtr m_CPFonts;
71 CFX_MapPtrToPtr m_FamilyFonts; 75 CFX_MapPtrToPtr m_FamilyFonts;
72 CFX_MapPtrToPtr m_UnicodeFonts; 76 CFX_MapPtrToPtr m_UnicodeFonts;
73 CFX_MapPtrToPtr m_BufferFonts; 77 CFX_MapPtrToPtr m_BufferFonts;
74 CFX_MapPtrToPtr m_FileFonts; 78 CFX_MapPtrToPtr m_FileFonts;
75 CFX_MapPtrToPtr m_StreamFonts; 79 CFX_MapPtrToPtr m_StreamFonts;
76 CFX_MapPtrToPtr m_DeriveFonts; 80 CFX_MapPtrToPtr m_DeriveFonts;
77 }; 81 };
78 uint32_t FX_GetGdiFontStyles(const LOGFONTW& lf); 82 uint32_t FX_GetGdiFontStyles(const LOGFONTW& lf);
79 83
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 CFX_ByteStringArray m_FolderPaths; 148 CFX_ByteStringArray m_FolderPaths;
145 }; 149 };
146 150
147 class CFX_FontMgrImp : public IFX_FontMgr { 151 class CFX_FontMgrImp : public IFX_FontMgr {
148 public: 152 public:
149 explicit CFX_FontMgrImp(CFX_FontSourceEnum_File* pFontEnum); 153 explicit CFX_FontMgrImp(CFX_FontSourceEnum_File* pFontEnum);
150 ~CFX_FontMgrImp() override; 154 ~CFX_FontMgrImp() override;
151 155
152 // IFX_FontMgr: 156 // IFX_FontMgr:
153 void Release() override; 157 void Release() override;
154 IFX_Font* GetDefFontByCodePage(uint16_t wCodePage, 158 CFX_GEFont* GetDefFontByCodePage(
155 uint32_t dwFontStyles, 159 uint16_t wCodePage,
156 const FX_WCHAR* pszFontFamily = NULL) override; 160 uint32_t dwFontStyles,
157 IFX_Font* GetDefFontByCharset(uint8_t nCharset, 161 const FX_WCHAR* pszFontFamily = NULL) override;
162 CFX_GEFont* GetDefFontByCharset(
163 uint8_t nCharset,
164 uint32_t dwFontStyles,
165 const FX_WCHAR* pszFontFamily = NULL) override;
166 CFX_GEFont* GetDefFontByUnicode(
167 FX_WCHAR wUnicode,
168 uint32_t dwFontStyles,
169 const FX_WCHAR* pszFontFamily = NULL) override;
170 CFX_GEFont* GetDefFontByLanguage(
171 uint16_t wLanguage,
172 uint32_t dwFontStyles,
173 const FX_WCHAR* pszFontFamily = NULL) override;
174 CFX_GEFont* GetFontByCodePage(uint16_t wCodePage,
158 uint32_t dwFontStyles, 175 uint32_t dwFontStyles,
159 const FX_WCHAR* pszFontFamily = NULL) override; 176 const FX_WCHAR* pszFontFamily = NULL) override;
160 IFX_Font* GetDefFontByUnicode(FX_WCHAR wUnicode, 177 CFX_GEFont* GetFontByCharset(uint8_t nCharset,
178 uint32_t dwFontStyles,
179 const FX_WCHAR* pszFontFamily = NULL) override;
180 CFX_GEFont* GetFontByUnicode(FX_WCHAR wUnicode,
181 uint32_t dwFontStyles,
182 const FX_WCHAR* pszFontFamily = NULL) override;
183 CFX_GEFont* GetFontByLanguage(uint16_t wLanguage,
161 uint32_t dwFontStyles, 184 uint32_t dwFontStyles,
162 const FX_WCHAR* pszFontFamily = NULL) override; 185 const FX_WCHAR* pszFontFamily = NULL) override;
163 IFX_Font* GetDefFontByLanguage(uint16_t wLanguage, 186 CFX_GEFont* LoadFont(const uint8_t* pBuffer,
164 uint32_t dwFontStyles, 187 int32_t iLength,
165 const FX_WCHAR* pszFontFamily = NULL) override; 188 int32_t iFaceIndex,
166 IFX_Font* GetFontByCodePage(uint16_t wCodePage, 189 int32_t* pFaceCount) override;
167 uint32_t dwFontStyles, 190 CFX_GEFont* LoadFont(const FX_WCHAR* pszFileName,
168 const FX_WCHAR* pszFontFamily = NULL) override; 191 int32_t iFaceIndex,
169 IFX_Font* GetFontByCharset(uint8_t nCharset, 192 int32_t* pFaceCount) override;
170 uint32_t dwFontStyles, 193 CFX_GEFont* LoadFont(IFX_Stream* pFontStream,
171 const FX_WCHAR* pszFontFamily = NULL) override; 194 int32_t iFaceIndex,
172 IFX_Font* GetFontByUnicode(FX_WCHAR wUnicode, 195 int32_t* pFaceCount,
173 uint32_t dwFontStyles, 196 FX_BOOL bSaveStream = FALSE) override;
174 const FX_WCHAR* pszFontFamily = NULL) override;
175 IFX_Font* GetFontByLanguage(uint16_t wLanguage,
176 uint32_t dwFontStyles,
177 const FX_WCHAR* pszFontFamily = NULL) override;
178 IFX_Font* LoadFont(const uint8_t* pBuffer,
179 int32_t iLength,
180 int32_t iFaceIndex,
181 int32_t* pFaceCount) override;
182 IFX_Font* LoadFont(const FX_WCHAR* pszFileName,
183 int32_t iFaceIndex,
184 int32_t* pFaceCount) override;
185 IFX_Font* LoadFont(IFX_Stream* pFontStream,
186 int32_t iFaceIndex,
187 int32_t* pFaceCount,
188 FX_BOOL bSaveStream = FALSE) override;
189 void ClearFontCache() override; 197 void ClearFontCache() override;
190 void RemoveFont(IFX_Font* pFont) override; 198 void RemoveFont(CFX_GEFont* pFont) override;
191 199
192 IFX_Font* LoadFont(const CFX_WideString& wsFaceName, 200 CFX_GEFont* LoadFont(const CFX_WideString& wsFaceName,
193 int32_t iFaceIndex, 201 int32_t iFaceIndex,
194 int32_t* pFaceCount); 202 int32_t* pFaceCount);
195 FX_BOOL EnumFonts(); 203 FX_BOOL EnumFonts();
196 FX_BOOL EnumFontsFromFontMapper(); 204 FX_BOOL EnumFontsFromFontMapper();
197 FX_BOOL EnumFontsFromFiles(); 205 FX_BOOL EnumFontsFromFiles();
198 206
199 protected: 207 protected:
200 void RegisterFace(FXFT_Face pFace, 208 void RegisterFace(FXFT_Face pFace,
201 CFX_FontDescriptors& Fonts, 209 CFX_FontDescriptors& Fonts,
202 const CFX_WideString* pFaceName, 210 const CFX_WideString* pFaceName,
203 IFX_FileAccess* pFontAccess); 211 IFX_FileAccess* pFontAccess);
204 void RegisterFaces(IFX_FileRead* pFontStream, 212 void RegisterFaces(IFX_FileRead* pFontStream,
205 const CFX_WideString* pFaceName); 213 const CFX_WideString* pFaceName);
206 void GetNames(const uint8_t* name_table, CFX_WideStringArray& Names); 214 void GetNames(const uint8_t* name_table, CFX_WideStringArray& Names);
207 void GetCharsets(FXFT_Face pFace, CFX_ArrayTemplate<uint16_t>& Charsets); 215 void GetCharsets(FXFT_Face pFace, CFX_ArrayTemplate<uint16_t>& Charsets);
208 void GetUSBCSB(FXFT_Face pFace, uint32_t* USB, uint32_t* CSB); 216 void GetUSBCSB(FXFT_Face pFace, uint32_t* USB, uint32_t* CSB);
209 uint32_t GetFlags(FXFT_Face pFace); 217 uint32_t GetFlags(FXFT_Face pFace);
210 CFX_FontDescriptors m_InstalledFonts; 218 CFX_FontDescriptors m_InstalledFonts;
211 FX_BOOL VerifyUnicode(CFX_FontDescriptor* pDesc, FX_WCHAR wcUnicode); 219 FX_BOOL VerifyUnicode(CFX_FontDescriptor* pDesc, FX_WCHAR wcUnicode);
212 FX_BOOL VerifyUnicode(IFX_Font* pFont, FX_WCHAR wcUnicode); 220 FX_BOOL VerifyUnicode(CFX_GEFont* pFont, FX_WCHAR wcUnicode);
213 int32_t IsPartName(const CFX_WideString& Name1, const CFX_WideString& Name2); 221 int32_t IsPartName(const CFX_WideString& Name1, const CFX_WideString& Name2);
214 int32_t MatchFonts(CFX_FontDescriptorInfos& MatchedFonts, 222 int32_t MatchFonts(CFX_FontDescriptorInfos& MatchedFonts,
215 uint16_t wCodePage, 223 uint16_t wCodePage,
216 uint32_t dwFontStyles, 224 uint32_t dwFontStyles,
217 const CFX_WideString& FontName, 225 const CFX_WideString& FontName,
218 FX_WCHAR wcUnicode = 0xFFFE); 226 FX_WCHAR wcUnicode = 0xFFFE);
219 int32_t CalcPenalty(CFX_FontDescriptor* pInstalled, 227 int32_t CalcPenalty(CFX_FontDescriptor* pInstalled,
220 uint16_t wCodePage, 228 uint16_t wCodePage,
221 uint32_t dwFontStyles, 229 uint32_t dwFontStyles,
222 const CFX_WideString& FontName, 230 const CFX_WideString& FontName,
223 FX_WCHAR wcUnicode = 0xFFFE); 231 FX_WCHAR wcUnicode = 0xFFFE);
224 IFX_Font* LoadFont(IFX_FileAccess* pFontAccess, 232 CFX_GEFont* LoadFont(IFX_FileAccess* pFontAccess,
225 int32_t iFaceIndex, 233 int32_t iFaceIndex,
226 int32_t* pFaceCount, 234 int32_t* pFaceCount,
227 FX_BOOL bWantCache = FALSE); 235 FX_BOOL bWantCache = FALSE);
228 FXFT_Face LoadFace(IFX_FileRead* pFontStream, int32_t iFaceIndex); 236 FXFT_Face LoadFace(IFX_FileRead* pFontStream, int32_t iFaceIndex);
229 IFX_FileRead* CreateFontStream(CFX_FontMapper* pFontMapper, 237 IFX_FileRead* CreateFontStream(CFX_FontMapper* pFontMapper,
230 IFX_SystemFontInfo* pSystemFontInfo, 238 IFX_SystemFontInfo* pSystemFontInfo,
231 uint32_t index); 239 uint32_t index);
232 IFX_FileRead* CreateFontStream(const CFX_ByteString& bsFaceName); 240 IFX_FileRead* CreateFontStream(const CFX_ByteString& bsFaceName);
233 241
234 CFX_MapPtrTemplate<uint32_t, CFX_FontDescriptorInfos*> m_Hash2CandidateList; 242 CFX_MapPtrTemplate<uint32_t, CFX_FontDescriptorInfos*> m_Hash2CandidateList;
235 CFX_MapPtrTemplate<uint32_t, CFX_ArrayTemplate<IFX_Font*>*> m_Hash2Fonts; 243 CFX_MapPtrTemplate<uint32_t, CFX_ArrayTemplate<CFX_GEFont*>*> m_Hash2Fonts;
236 CFX_MapPtrTemplate<uint32_t, IFX_FileAccess*> m_Hash2FileAccess; 244 CFX_MapPtrTemplate<uint32_t, IFX_FileAccess*> m_Hash2FileAccess;
237 CFX_MapPtrTemplate<uint32_t, IFX_Font*> m_FileAccess2IFXFont; 245 CFX_MapPtrTemplate<uint32_t, CFX_GEFont*> m_FileAccess2IFXFont;
238 CFX_MapPtrTemplate<IFX_Font*, IFX_FileRead*> m_IFXFont2FileRead; 246 CFX_MapPtrTemplate<CFX_GEFont*, IFX_FileRead*> m_IFXFont2FileRead;
239 CFX_MapPtrTemplate<FX_WCHAR, IFX_Font*> m_FailedUnicodes2NULL; 247 CFX_MapPtrTemplate<FX_WCHAR, CFX_GEFont*> m_FailedUnicodes2NULL;
240 CFX_FontSourceEnum_File* const m_pFontSource; 248 CFX_FontSourceEnum_File* const m_pFontSource;
241 }; 249 };
242 #endif 250 #endif
243 251
244 #endif // XFA_FGAS_FONT_FGAS_STDFONTMGR_H_ 252 #endif // XFA_FGAS_FONT_FGAS_STDFONTMGR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698