Add a .gitattributes with "* text=auto" so that new lines are
[pdfium.git] / core / src / fxge / Microsoft SDK / include / GdiPlusFontFamily.h
1 /**************************************************************************\
2 *
3 * Copyright (c) 1998-2000, Microsoft Corp.  All Rights Reserved.
4 *
5 * Module Name:
6 *
7 *   GdiplusFontFamily.h
8 *
9 * Abstract:
10 *
11 *   Font family API related declarations
12 *
13 \**************************************************************************/
14
15 #ifndef _GDIPLUS_FONT_FAMILY_H
16 #define _GDIPLUS_FONT_FAMILY_H
17
18 inline 
19 FontFamily::FontFamily() :
20     nativeFamily (NULL),
21     lastResult    (Ok)
22 {
23 }
24
25 inline 
26 FontFamily::FontFamily(
27     IN const WCHAR*          name,
28     IN const FontCollection* fontCollection
29 )
30 {
31     nativeFamily = NULL;
32     lastResult = DllExports::GdipCreateFontFamilyFromName(
33         name,
34         fontCollection ? fontCollection->nativeFontCollection : NULL,
35         &nativeFamily
36     );
37     
38 #ifndef DCR_USE_NEW_135429
39     if ((INT) lastResult >= 10)
40         lastResult = NotFound;
41 #endif
42 }
43
44 // private method
45 inline
46 FontFamily::FontFamily(
47     IN GpFontFamily *nativeOrig,
48     IN Status status
49 )
50 {
51     lastResult    = status;
52     nativeFamily = nativeOrig;
53 }
54
55 // Generic font family access
56
57 inline const FontFamily *
58 FontFamily::GenericSansSerif() 
59 {
60     if (GenericSansSerifFontFamily != NULL)
61     {
62         return GenericSansSerifFontFamily;
63     }
64
65     GenericSansSerifFontFamily =
66         (FontFamily*) GenericSansSerifFontFamilyBuffer;
67
68     GenericSansSerifFontFamily->lastResult =
69         DllExports::GdipGetGenericFontFamilySansSerif(
70             &(GenericSansSerifFontFamily->nativeFamily)
71         );
72
73 #ifndef DCR_USE_NEW_135429
74     if ((INT) GenericSansSerifFontFamily->lastResult >= 10)
75         GenericSansSerifFontFamily->lastResult = NotFound;
76 #endif
77
78     return GenericSansSerifFontFamily;
79 }
80
81 inline const FontFamily *
82 FontFamily::GenericSerif() 
83 {
84     if (GenericSerifFontFamily != NULL)
85     {
86         return GenericSerifFontFamily;
87     }
88
89     GenericSerifFontFamily =
90         (FontFamily*) GenericSerifFontFamilyBuffer;
91
92     GenericSerifFontFamily->lastResult =
93         DllExports::GdipGetGenericFontFamilySerif(
94             &(GenericSerifFontFamily->nativeFamily)
95         );
96
97 #ifndef DCR_USE_NEW_135429
98     if ((INT) GenericSerifFontFamily->lastResult >= 10)
99         GenericSerifFontFamily->lastResult = NotFound;
100 #endif
101
102     return GenericSerifFontFamily;
103 }
104
105 inline const FontFamily *
106 FontFamily::GenericMonospace()
107 {
108     if (GenericMonospaceFontFamily != NULL)
109     {
110         return GenericMonospaceFontFamily;
111     }
112
113     GenericMonospaceFontFamily =
114         (FontFamily*) GenericMonospaceFontFamilyBuffer;
115
116     GenericMonospaceFontFamily->lastResult =
117         DllExports::GdipGetGenericFontFamilyMonospace(
118             &(GenericMonospaceFontFamily->nativeFamily)
119         );
120
121 #ifndef DCR_USE_NEW_135429
122     if ((INT) GenericMonospaceFontFamily->lastResult >= 10)
123         GenericMonospaceFontFamily->lastResult = NotFound;
124 #endif
125
126     return GenericMonospaceFontFamily;
127 }
128
129 inline FontFamily::~FontFamily()
130 {
131     DllExports::GdipDeleteFontFamily (nativeFamily);
132 }
133
134 inline FontFamily *
135 FontFamily::Clone() const
136 {
137     GpFontFamily * clonedFamily = NULL;
138
139     SetStatus(DllExports::GdipCloneFontFamily (nativeFamily, &clonedFamily));
140
141     return new FontFamily(clonedFamily, lastResult);
142 }
143
144 inline Status 
145 FontFamily::GetFamilyName(
146     IN WCHAR name[LF_FACESIZE],
147     IN LANGID language
148 ) const
149 {
150     return SetStatus(DllExports::GdipGetFamilyName(nativeFamily, 
151                                                    name, 
152                                                    language));
153 }
154
155 inline BOOL 
156 FontFamily::IsStyleAvailable(IN INT style) const
157 {
158     BOOL    StyleAvailable;
159     Status  status;
160
161     status = SetStatus(DllExports::GdipIsStyleAvailable(nativeFamily, style, &StyleAvailable));
162
163     if (status != Ok)
164         StyleAvailable = FALSE;
165
166     return StyleAvailable;
167 }
168
169
170 inline UINT16 
171 FontFamily::GetEmHeight(IN INT style) const
172 {
173     UINT16  EmHeight;
174
175     SetStatus(DllExports::GdipGetEmHeight(nativeFamily, style, &EmHeight));
176
177     return EmHeight;
178 }
179
180 inline UINT16 
181 FontFamily::GetCellAscent(IN INT style) const
182 {
183     UINT16  CellAscent;
184
185     SetStatus(DllExports::GdipGetCellAscent(nativeFamily, style, &CellAscent));
186
187     return CellAscent;
188 }
189
190 inline UINT16 
191 FontFamily::GetCellDescent(IN INT style) const
192 {
193     UINT16  CellDescent;
194
195     SetStatus(DllExports::GdipGetCellDescent(nativeFamily, style, &CellDescent));
196
197     return CellDescent;
198 }
199
200
201 inline UINT16 
202 FontFamily::GetLineSpacing(IN INT style) const
203 {
204     UINT16  LineSpacing;
205
206     SetStatus(DllExports::GdipGetLineSpacing(nativeFamily, style, &LineSpacing));
207
208     return LineSpacing;
209
210 }
211
212 #ifdef TEXTV2
213
214 // The following APIs return data from the font OS/2 table
215
216 inline INT16 
217 FontFamily::GetTypographicAscent(IN INT style) const
218 {
219     INT16  TypographicAscent;
220
221     SetStatus(DllExports::GdipGetTypographicAscent(nativeFamily, style, &TypographicAscent));
222
223     return TypographicAscent;
224 }
225
226 inline INT16 
227 FontFamily::GetTypographicDescent(IN INT style) const
228 {
229     INT16   TypographicDescent;
230
231     SetStatus(DllExports::GdipGetTypographicDescent(nativeFamily, style, &TypographicDescent));
232
233     return TypographicDescent;
234 }
235
236 inline INT16 
237 FontFamily::GetTypographicLineGap(IN INT style) const
238 {
239     INT16   TypographicLineGap;
240
241     SetStatus(DllExports::GdipGetTypographicLineGap(nativeFamily, style, &TypographicLineGap));
242
243     return TypographicLineGap;
244 }
245
246 #endif
247
248 ///////////////////////////////////////////////////////////
249
250 // GetLastStatus - return last error code and clear error code
251
252 inline Status 
253 FontFamily::GetLastStatus() const
254 {
255     Status lastStatus = lastResult;
256     lastResult = Ok;
257
258     return lastStatus;
259 }
260
261 // protected method
262 inline Status
263 FontFamily::SetStatus(Status status) const 
264 {
265     if (status != Ok)
266         return (lastResult = status);
267     else
268         return status;
269 }
270
271 #endif