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

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

Issue 2037563002: Replace IFGAS_Font with underlying concrete type (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: rebase 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
« no previous file with comments | « xfa/fde/tto/fde_textout.cpp ('k') | xfa/fgas/font/fgas_gefont.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_FONT_H_ 7 #ifndef XFA_FGAS_FONT_FGAS_FONT_H_
8 #define XFA_FGAS_FONT_FGAS_FONT_H_ 8 #define XFA_FGAS_FONT_FGAS_FONT_H_
9 9
10 #include "core/fxge/include/fx_font.h" 10 #include "core/fxge/include/fx_font.h"
11 #include "xfa/fgas/crt/fgas_stream.h" 11 #include "xfa/fgas/crt/fgas_stream.h"
12 12
13 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ 13 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
14 #include "xfa/fgas/crt/fgas_memory.h" 14 #include "xfa/fgas/crt/fgas_memory.h"
15 #include "xfa/fgas/crt/fgas_utils.h" 15 #include "xfa/fgas/crt/fgas_utils.h"
16 #endif // _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ 16 #endif // _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
17 17
18 class CFX_FontSourceEnum_File; 18 class CFX_FontSourceEnum_File;
19 class CFGAS_GEFont;
19 class CXFA_PDFFontMgr; 20 class CXFA_PDFFontMgr;
20 class IFGAS_Font;
21 class IFGAS_FontMgr; 21 class IFGAS_FontMgr;
22 22
23 #define FX_FONTSTYLE_Normal 0x00 23 #define FX_FONTSTYLE_Normal 0x00
24 #define FX_FONTSTYLE_FixedPitch 0x01 24 #define FX_FONTSTYLE_FixedPitch 0x01
25 #define FX_FONTSTYLE_Serif 0x02 25 #define FX_FONTSTYLE_Serif 0x02
26 #define FX_FONTSTYLE_Symbolic 0x04 26 #define FX_FONTSTYLE_Symbolic 0x04
27 #define FX_FONTSTYLE_Script 0x08 27 #define FX_FONTSTYLE_Script 0x08
28 #define FX_FONTSTYLE_Italic 0x40 28 #define FX_FONTSTYLE_Italic 0x40
29 #define FX_FONTSTYLE_Bold 0x40000 29 #define FX_FONTSTYLE_Bold 0x40000
30 #define FX_FONTSTYLE_BoldItalic (FX_FONTSTYLE_Bold | FX_FONTSTYLE_Italic) 30 #define FX_FONTSTYLE_BoldItalic (FX_FONTSTYLE_Bold | FX_FONTSTYLE_Italic)
31 #define FX_FONTSTYLE_ExactMatch 0x80000000 31 #define FX_FONTSTYLE_ExactMatch 0x80000000
32 #define FX_FONTDECORATION_Underline 0x00000001
33 #define FX_FONTDECORATION_Strikeout 0x00000002
34 #define FX_FONTDECORATION_Overline 0x00000004
35 #define FX_FONTDECORATION_Emphasis 0x00000008
36 #define FX_FONTDECORATION_Superscript 0x00000010
37 #define FX_FONTDECORATION_Subscript 0x00000020
38 #define FX_FONTDECORATION_SmallCapital 0x00000040
39 #define FX_FONTDECORATION_Capital 0x00000080
40 #define FX_FONTDECORATION_Lowercase 0x000000C0
41 #define FX_FONTDECORATION_Raised 0x00000100
42 #define FX_FONTDECORATION_Sunken 0x00000200
43 #define FX_FONTDECORATION_Shadow 0x00000400
44 #define FX_FONTDECORATION_BoundingShape 0x20000000
45 #define FX_FONTDECORATION_Hide 0x40000000
46 #define FX_FONTDECORATION_StrokeFill 0x80000000
47 #define FX_BOUNDINGSHAPE_None 0
48 #define FX_BOUNDINGSHAPE_Circle 1
49 #define FX_BOUNDINGSHAPE_Square 2
50 #define FX_BOUNDINGSHAPE_Triangle 3
51 #define FX_BOUNDINGSHAPE_Diamond 4
52
53 class IFGAS_Font {
54 public:
55 static IFGAS_Font* LoadFont(const FX_WCHAR* pszFontFamily,
56 uint32_t dwFontStyles,
57 uint16_t wCodePage,
58 IFGAS_FontMgr* pFontMgr);
59 static IFGAS_Font* LoadFont(const uint8_t* pBuffer,
60 int32_t iLength,
61 IFGAS_FontMgr* pFontMgr);
62 static IFGAS_Font* LoadFont(const FX_WCHAR* pszFileName,
63 IFGAS_FontMgr* pFontMgr);
64 static IFGAS_Font* LoadFont(IFX_Stream* pFontStream,
65 IFGAS_FontMgr* pFontMgr,
66 FX_BOOL bSaveStream = FALSE);
67 static IFGAS_Font* LoadFont(CFX_Font* pExtFont,
68 IFGAS_FontMgr* pFontMgr,
69 FX_BOOL bTakeOver = FALSE);
70 virtual ~IFGAS_Font() {}
71 virtual void Release() = 0;
72 virtual IFGAS_Font* Retain() = 0;
73 virtual IFGAS_Font* Derive(uint32_t dwFontStyles, uint16_t wCodePage = 0) = 0;
74 virtual void GetFamilyName(CFX_WideString& wsFamily) const = 0;
75 virtual uint32_t GetFontStyles() const = 0;
76 virtual uint8_t GetCharSet() const = 0;
77 virtual FX_BOOL GetCharWidth(FX_WCHAR wUnicode,
78 int32_t& iWidth,
79 FX_BOOL bCharCode = FALSE) = 0;
80 virtual int32_t GetGlyphIndex(FX_WCHAR wUnicode,
81 FX_BOOL bCharCode = FALSE) = 0;
82 virtual int32_t GetAscent() const = 0;
83 virtual int32_t GetDescent() const = 0;
84 virtual FX_BOOL GetCharBBox(FX_WCHAR wUnicode,
85 CFX_Rect& bbox,
86 FX_BOOL bCharCode = FALSE) = 0;
87 virtual FX_BOOL GetBBox(CFX_Rect& bbox) = 0;
88 virtual int32_t GetItalicAngle() const = 0;
89 virtual void Reset() = 0;
90 virtual IFGAS_Font* GetSubstFont(int32_t iGlyphIndex) const = 0;
91 virtual CFX_Font* GetDevFont() const = 0;
92 virtual void SetFontProvider(CXFA_PDFFontMgr* pProvider) = 0;
93 #if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
94 virtual void SetLogicalFontStyle(uint32_t dwLogFontStyle) = 0;
95 #endif
96 };
97 32
98 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ 33 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
99 struct FX_FONTMATCHPARAMS { 34 struct FX_FONTMATCHPARAMS {
100 const FX_WCHAR* pwsFamily; 35 const FX_WCHAR* pwsFamily;
101 uint32_t dwFontStyles; 36 uint32_t dwFontStyles;
102 uint32_t dwUSB; 37 uint32_t dwUSB;
103 uint32_t dwMatchFlags; 38 uint32_t dwMatchFlags;
104 FX_WCHAR wUnicode; 39 FX_WCHAR wUnicode;
105 uint16_t wCodePage; 40 uint16_t wCodePage;
106 }; 41 };
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 FX_LPEnumAllFonts FX_GetDefFontEnumerator(); 78 FX_LPEnumAllFonts FX_GetDefFontEnumerator();
144 typedef FX_FONTDESCRIPTOR const* (*FX_LPMatchFont)( 79 typedef FX_FONTDESCRIPTOR const* (*FX_LPMatchFont)(
145 FX_LPFONTMATCHPARAMS pParams, 80 FX_LPFONTMATCHPARAMS pParams,
146 const CFX_FontDescriptors& fonts); 81 const CFX_FontDescriptors& fonts);
147 FX_LPMatchFont FX_GetDefFontMatchor(); 82 FX_LPMatchFont FX_GetDefFontMatchor();
148 class IFGAS_FontMgr { 83 class IFGAS_FontMgr {
149 public: 84 public:
150 static IFGAS_FontMgr* Create(FX_LPEnumAllFonts pEnumerator); 85 static IFGAS_FontMgr* Create(FX_LPEnumAllFonts pEnumerator);
151 virtual ~IFGAS_FontMgr() {} 86 virtual ~IFGAS_FontMgr() {}
152 virtual void Release() = 0; 87 virtual void Release() = 0;
153 virtual IFGAS_Font* GetDefFontByCodePage( 88 virtual CFGAS_GEFont* GetDefFontByCodePage(
154 uint16_t wCodePage, 89 uint16_t wCodePage,
155 uint32_t dwFontStyles, 90 uint32_t dwFontStyles,
156 const FX_WCHAR* pszFontFamily = NULL) = 0; 91 const FX_WCHAR* pszFontFamily = NULL) = 0;
157 virtual IFGAS_Font* GetDefFontByCharset( 92 virtual CFGAS_GEFont* GetDefFontByCharset(
158 uint8_t nCharset, 93 uint8_t nCharset,
159 uint32_t dwFontStyles, 94 uint32_t dwFontStyles,
160 const FX_WCHAR* pszFontFamily = NULL) = 0; 95 const FX_WCHAR* pszFontFamily = NULL) = 0;
161 virtual IFGAS_Font* GetDefFontByUnicode( 96 virtual CFGAS_GEFont* GetDefFontByUnicode(
162 FX_WCHAR wUnicode, 97 FX_WCHAR wUnicode,
163 uint32_t dwFontStyles, 98 uint32_t dwFontStyles,
164 const FX_WCHAR* pszFontFamily = NULL) = 0; 99 const FX_WCHAR* pszFontFamily = NULL) = 0;
165 virtual IFGAS_Font* GetDefFontByLanguage( 100 virtual CFGAS_GEFont* GetDefFontByLanguage(
166 uint16_t wLanguage, 101 uint16_t wLanguage,
167 uint32_t dwFontStyles, 102 uint32_t dwFontStyles,
168 const FX_WCHAR* pszFontFamily = NULL) = 0; 103 const FX_WCHAR* pszFontFamily = NULL) = 0;
169 virtual IFGAS_Font* LoadFont(const FX_WCHAR* pszFontFamily, 104 virtual CFGAS_GEFont* LoadFont(const FX_WCHAR* pszFontFamily,
170 uint32_t dwFontStyles, 105 uint32_t dwFontStyles,
171 uint16_t wCodePage = 0xFFFF) = 0; 106 uint16_t wCodePage = 0xFFFF) = 0;
172 virtual IFGAS_Font* LoadFont(const uint8_t* pBuffer, int32_t iLength) = 0; 107 virtual CFGAS_GEFont* LoadFont(const uint8_t* pBuffer, int32_t iLength) = 0;
173 virtual IFGAS_Font* LoadFont(const FX_WCHAR* pszFileName) = 0; 108 virtual CFGAS_GEFont* LoadFont(const FX_WCHAR* pszFileName) = 0;
174 virtual IFGAS_Font* LoadFont(IFX_Stream* pFontStream, 109 virtual CFGAS_GEFont* LoadFont(IFX_Stream* pFontStream,
175 const FX_WCHAR* pszFontAlias = NULL, 110 const FX_WCHAR* pszFontAlias = NULL,
176 uint32_t dwFontStyles = 0, 111 uint32_t dwFontStyles = 0,
177 uint16_t wCodePage = 0, 112 uint16_t wCodePage = 0,
178 FX_BOOL bSaveStream = FALSE) = 0; 113 FX_BOOL bSaveStream = FALSE) = 0;
179 virtual IFGAS_Font* LoadFont(IFGAS_Font* pSrcFont, 114 virtual CFGAS_GEFont* LoadFont(CFGAS_GEFont* pSrcFont,
180 uint32_t dwFontStyles, 115 uint32_t dwFontStyles,
181 uint16_t wCodePage = 0xFFFF) = 0; 116 uint16_t wCodePage = 0xFFFF) = 0;
182 virtual void ClearFontCache() = 0; 117 virtual void ClearFontCache() = 0;
183 virtual void RemoveFont(IFGAS_Font* pFont) = 0; 118 virtual void RemoveFont(CFGAS_GEFont* pFont) = 0;
184 }; 119 };
185 120
186 #else // _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ 121 #else // _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
187 122
188 class IFGAS_FontMgr { 123 class IFGAS_FontMgr {
189 public: 124 public:
190 static IFGAS_FontMgr* Create(CFX_FontSourceEnum_File* pFontEnum); 125 static IFGAS_FontMgr* Create(CFX_FontSourceEnum_File* pFontEnum);
191 virtual ~IFGAS_FontMgr() {} 126 virtual ~IFGAS_FontMgr() {}
192 virtual void Release() = 0; 127 virtual void Release() = 0;
193 virtual IFGAS_Font* GetDefFontByCodePage( 128 virtual CFGAS_GEFont* GetDefFontByCodePage(
194 uint16_t wCodePage, 129 uint16_t wCodePage,
195 uint32_t dwFontStyles, 130 uint32_t dwFontStyles,
196 const FX_WCHAR* pszFontFamily = NULL) = 0; 131 const FX_WCHAR* pszFontFamily = NULL) = 0;
197 virtual IFGAS_Font* GetDefFontByCharset( 132 virtual CFGAS_GEFont* GetDefFontByCharset(
198 uint8_t nCharset, 133 uint8_t nCharset,
199 uint32_t dwFontStyles, 134 uint32_t dwFontStyles,
200 const FX_WCHAR* pszFontFamily = NULL) = 0; 135 const FX_WCHAR* pszFontFamily = NULL) = 0;
201 virtual IFGAS_Font* GetDefFontByUnicode( 136 virtual CFGAS_GEFont* GetDefFontByUnicode(
202 FX_WCHAR wUnicode, 137 FX_WCHAR wUnicode,
203 uint32_t dwFontStyles, 138 uint32_t dwFontStyles,
204 const FX_WCHAR* pszFontFamily = NULL) = 0; 139 const FX_WCHAR* pszFontFamily = NULL) = 0;
205 virtual IFGAS_Font* GetDefFontByLanguage( 140 virtual CFGAS_GEFont* GetDefFontByLanguage(
206 uint16_t wLanguage, 141 uint16_t wLanguage,
207 uint32_t dwFontStyles, 142 uint32_t dwFontStyles,
208 const FX_WCHAR* pszFontFamily = NULL) = 0; 143 const FX_WCHAR* pszFontFamily = NULL) = 0;
209 virtual IFGAS_Font* GetFontByCodePage( 144 virtual CFGAS_GEFont* GetFontByCodePage(
210 uint16_t wCodePage, 145 uint16_t wCodePage,
211 uint32_t dwFontStyles, 146 uint32_t dwFontStyles,
212 const FX_WCHAR* pszFontFamily = NULL) = 0; 147 const FX_WCHAR* pszFontFamily = NULL) = 0;
213 inline IFGAS_Font* LoadFont(const FX_WCHAR* pszFontFamily, 148 inline CFGAS_GEFont* LoadFont(const FX_WCHAR* pszFontFamily,
214 uint32_t dwFontStyles, 149 uint32_t dwFontStyles,
215 uint16_t wCodePage) { 150 uint16_t wCodePage) {
216 return GetFontByCodePage(wCodePage, dwFontStyles, pszFontFamily); 151 return GetFontByCodePage(wCodePage, dwFontStyles, pszFontFamily);
217 } 152 }
218 virtual IFGAS_Font* GetFontByCharset( 153 virtual CFGAS_GEFont* GetFontByCharset(
219 uint8_t nCharset, 154 uint8_t nCharset,
220 uint32_t dwFontStyles, 155 uint32_t dwFontStyles,
221 const FX_WCHAR* pszFontFamily = NULL) = 0; 156 const FX_WCHAR* pszFontFamily = NULL) = 0;
222 virtual IFGAS_Font* GetFontByUnicode( 157 virtual CFGAS_GEFont* GetFontByUnicode(
223 FX_WCHAR wUnicode, 158 FX_WCHAR wUnicode,
224 uint32_t dwFontStyles, 159 uint32_t dwFontStyles,
225 const FX_WCHAR* pszFontFamily = NULL) = 0; 160 const FX_WCHAR* pszFontFamily = NULL) = 0;
226 virtual IFGAS_Font* GetFontByLanguage( 161 virtual CFGAS_GEFont* GetFontByLanguage(
227 uint16_t wLanguage, 162 uint16_t wLanguage,
228 uint32_t dwFontStyles, 163 uint32_t dwFontStyles,
229 const FX_WCHAR* pszFontFamily = NULL) = 0; 164 const FX_WCHAR* pszFontFamily = NULL) = 0;
230 virtual IFGAS_Font* LoadFont(const uint8_t* pBuffer, 165 virtual CFGAS_GEFont* LoadFont(const uint8_t* pBuffer,
231 int32_t iLength, 166 int32_t iLength,
232 int32_t iFaceIndex, 167 int32_t iFaceIndex,
233 int32_t* pFaceCount = NULL) = 0; 168 int32_t* pFaceCount = NULL) = 0;
234 virtual IFGAS_Font* LoadFont(const FX_WCHAR* pszFileName, 169 virtual CFGAS_GEFont* LoadFont(const FX_WCHAR* pszFileName,
235 int32_t iFaceIndex, 170 int32_t iFaceIndex,
236 int32_t* pFaceCount = NULL) = 0; 171 int32_t* pFaceCount = NULL) = 0;
237 virtual IFGAS_Font* LoadFont(IFX_Stream* pFontStream, 172 virtual CFGAS_GEFont* LoadFont(IFX_Stream* pFontStream,
238 int32_t iFaceIndex, 173 int32_t iFaceIndex,
239 int32_t* pFaceCount = NULL, 174 int32_t* pFaceCount = NULL,
240 FX_BOOL bSaveStream = FALSE) = 0; 175 FX_BOOL bSaveStream = FALSE) = 0;
241 176
242 virtual void ClearFontCache() = 0; 177 virtual void ClearFontCache() = 0;
243 virtual void RemoveFont(IFGAS_Font* pFont) = 0; 178 virtual void RemoveFont(CFGAS_GEFont* pFont) = 0;
244 }; 179 };
245 #endif // _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ 180 #endif // _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
246 181
247 #endif // XFA_FGAS_FONT_FGAS_FONT_H_ 182 #endif // XFA_FGAS_FONT_FGAS_FONT_H_
OLDNEW
« no previous file with comments | « xfa/fde/tto/fde_textout.cpp ('k') | xfa/fgas/font/fgas_gefont.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698