1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6
7 #ifndef DWRITE_3_H_INCLUDED
8 #define DWRITE_3_H_INCLUDED
9
10 #include <dwrite_2.h>
11
12 #define DWRITE_MAKE_FONT_AXIS_TAG(a,b,c,d) \
13 (static_cast<DWRITE_FONT_AXIS_TAG>(DWRITE_MAKE_OPENTYPE_TAG(a,b,c,d)))
14
15 enum DWRITE_RENDERING_MODE1 {
16 DWRITE_RENDERING_MODE1_DEFAULT = DWRITE_RENDERING_MODE_DEFAULT,
17 DWRITE_RENDERING_MODE1_ALIASED = DWRITE_RENDERING_MODE_ALIASED,
18 DWRITE_RENDERING_MODE1_GDI_CLASSIC = DWRITE_RENDERING_MODE_GDI_CLASSIC,
19 DWRITE_RENDERING_MODE1_GDI_NATURAL = DWRITE_RENDERING_MODE_GDI_NATURAL,
20 DWRITE_RENDERING_MODE1_NATURAL = DWRITE_RENDERING_MODE_NATURAL,
21 DWRITE_RENDERING_MODE1_NATURAL_SYMMETRIC = DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC,
22 DWRITE_RENDERING_MODE1_OUTLINE = DWRITE_RENDERING_MODE_OUTLINE,
23 DWRITE_RENDERING_MODE1_NATURAL_SYMMETRIC_DOWNSAMPLED
24 };
25
26 enum DWRITE_FONT_AXIS_TAG : UINT32 {
27 DWRITE_FONT_AXIS_TAG_WEIGHT = DWRITE_MAKE_FONT_AXIS_TAG('w','g','h','t'),
28 DWRITE_FONT_AXIS_TAG_WIDTH = DWRITE_MAKE_FONT_AXIS_TAG('w','d','t','h'),
29 DWRITE_FONT_AXIS_TAG_SLANT = DWRITE_MAKE_FONT_AXIS_TAG('s','l','n','t'),
30 DWRITE_FONT_AXIS_TAG_OPTICAL_SIZE = DWRITE_MAKE_FONT_AXIS_TAG('o','p','s','z'),
31 DWRITE_FONT_AXIS_TAG_ITALIC = DWRITE_MAKE_FONT_AXIS_TAG('i','t','a','l')
32 };
33
34 enum DWRITE_FONT_AXIS_ATTRIBUTES {
35 DWRITE_FONT_AXIS_ATTRIBUTES_NONE = 0x0000,
36 DWRITE_FONT_AXIS_ATTRIBUTES_VARIABLE = 0x0001,
37 DWRITE_FONT_AXIS_ATTRIBUTES_HIDDEN = 0x0002
38 };
39
40 struct DWRITE_GLYPH_IMAGE_DATA {
41 void const *imageData;
42 UINT32 imageDataSize;
43 UINT32 uniqueDataId;
44 UINT32 pixelsPerEm;
45 D2D1_SIZE_U pixelSize;
46 D2D1_POINT_2L horizontalLeftOrigin;
47 D2D1_POINT_2L horizontalRightOrigin;
48 D2D1_POINT_2L verticalTopOrigin;
49 D2D1_POINT_2L verticalBottomOrigin;
50 };
51
52 struct DWRITE_FONT_AXIS_VALUE {
53 DWRITE_FONT_AXIS_TAG axisTag;
54 FLOAT value;
55 };
56
57 struct DWRITE_FONT_AXIS_RANGE {
58 DWRITE_FONT_AXIS_TAG axisTag;
59 FLOAT minValue;
60 FLOAT maxValue;
61 };
62
63 interface IDWriteFontResource;
64 interface IDWriteFontFaceReference1;
65 interface IDWriteFontFaceReference;
66
67 #undef INTERFACE
68 #define INTERFACE IDWriteFontFace3
DECLARE_INTERFACE_(IDWriteFontFace3,IDWriteFontFace2)69 DECLARE_INTERFACE_(IDWriteFontFace3,IDWriteFontFace2)
70 {
71 BEGIN_INTERFACE
72
73 #ifndef __cplusplus
74 /* IUnknown methods */
75 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
76 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
77 STDMETHOD_(ULONG, Release)(THIS) PURE;
78
79 /* IDWriteFontFace methods */
80 STDMETHOD_(DWRITE_FONT_FACE_TYPE, GetType)(THIS) PURE;
81
82 STDMETHOD(GetFiles)(THIS_
83 UINT32 *numberOfFiles,
84 IDWriteFontFile **fontFiles) PURE;
85
86 STDMETHOD_(UINT32, GetIndex)(THIS) PURE;
87 STDMETHOD_(DWRITE_FONT_SIMULATIONS, GetSimulations)(THIS) PURE;
88 STDMETHOD_(WINBOOL, IsSymbolFont)(THIS) PURE;
89
90 STDMETHOD_(void, GetMetrics)(THIS_
91 DWRITE_FONT_METRICS *fontFaceMetrics) PURE;
92
93 STDMETHOD_(UINT16, GetGlyphCount)(THIS) PURE;
94
95 STDMETHOD(GetDesignGlyphMetrics)(THIS_
96 UINT16 const *glyphIndices,
97 UINT32 glyphCount,
98 DWRITE_GLYPH_METRICS *glyphMetrics,
99 WINBOOL isSideways __MINGW_DEF_ARG_VAL(FALSE)) PURE;
100
101 STDMETHOD(GetGlyphIndices)(THIS_
102 UINT32 const *codePoints,
103 UINT32 codePointCount,
104 UINT16 *glyphIndices) PURE;
105
106 STDMETHOD(TryGetFontTable)(THIS_
107 UINT32 openTypeTableTag,
108 const void **tableData,
109 UINT32 *tableSize,
110 void **tableContext,
111 WINBOOL *exists) PURE;
112
113 STDMETHOD_(void, ReleaseFontTable)(THIS_
114 void *tableContext) PURE;
115
116 STDMETHOD(GetGlyphRunOutline)(THIS_
117 FLOAT emSize,
118 UINT16 const *glyphIndices,
119 FLOAT const *glyphAdvances,
120 DWRITE_GLYPH_OFFSET const *glyphOffsets,
121 UINT32 glyphCount,
122 WINBOOL isSideways,
123 WINBOOL isRightToLeft,
124 IDWriteGeometrySink *geometrySink) PURE;
125
126 STDMETHOD(GetRecommendedRenderingMode)(THIS_
127 FLOAT emSize,
128 FLOAT pixelsPerDip,
129 DWRITE_MEASURING_MODE measuringMode,
130 IDWriteRenderingParams *renderingParams,
131 DWRITE_RENDERING_MODE *renderingMode) PURE;
132
133 STDMETHOD(GetGdiCompatibleMetrics)(THIS_
134 FLOAT emSize,
135 FLOAT pixelsPerDip,
136 DWRITE_MATRIX const *transform,
137 DWRITE_FONT_METRICS *fontFaceMetrics) PURE;
138
139 STDMETHOD(GetGdiCompatibleGlyphMetrics)(THIS_
140 FLOAT emSize,
141 FLOAT pixelsPerDip,
142 DWRITE_MATRIX const *transform,
143 WINBOOL useGdiNatural,
144 UINT16 const *glyphIndices,
145 UINT32 glyphCount,
146 DWRITE_GLYPH_METRICS *glyphMetrics,
147 WINBOOL isSideways __MINGW_DEF_ARG_VAL(FALSE)) PURE;
148
149 /* IDWriteFontFace1 methods */
150 STDMETHOD_(void, GetMetrics)(THIS_ DWRITE_FONT_METRICS1*) PURE;
151 STDMETHOD(GetGdiCompatibleMetrics)(THIS_ FLOAT,FLOAT,DWRITE_MATRIX const*,DWRITE_FONT_METRICS1*) PURE;
152 STDMETHOD_(void, GetCaretMetrics)(THIS_ DWRITE_CARET_METRICS*) PURE;
153 STDMETHOD(GetUnicodeRanges)(THIS_ UINT32, DWRITE_UNICODE_RANGE*,UINT32*) PURE;
154 STDMETHOD_(BOOL, IsMonospacedFont)(THIS) PURE;
155 STDMETHOD(GetDesignGlyphAdvances)(THIS_ UINT32,UINT16 const*,INT32*,BOOL isSideways __MINGW_DEF_ARG_VAL(FALSE)) PURE;
156 STDMETHOD(GetGdiCompatibleGlyphAdvances)(THIS_ FLOAT,FLOAT,DWRITE_MATRIX const*,BOOL,BOOL,UINT32,
157 UINT16 const*,INT32*) PURE;
158 STDMETHOD(GetKerningPairAdjustments)(THIS_ UINT32,UINT16 const*,INT32*) PURE;
159 STDMETHOD_(BOOL, HasKerningPairs)(THIS);
160 STDMETHOD(GetRecommendedRenderingMode)(FLOAT,FLOAT,FLOAT,DWRITE_MATRIX const*,BOOL,
161 DWRITE_OUTLINE_THRESHOLD,DWRITE_MEASURING_MODE,DWRITE_RENDERING_MODE*) PURE;
162 STDMETHOD(GetVerticalGlyphVariants)(THIS_ UINT32,UINT16 const*,UINT16*);
163 STDMETHOD_(BOOL, HasVerticalGlyphVariants)(THIS);
164
165 /* IDWriteFontFace2 methods */
166 STDMETHOD_(BOOL, IsColorFont)(THIS) PURE;
167 STDMETHOD_(UINT32, GetColorPaletteCount)(THIS) PURE;
168 STDMETHOD_(UINT32, GetPaletteEntryCount)(THIS) PURE;
169 STDMETHOD(GetPaletteEntries)(THIS_
170 UINT32 colorPaletteIndex,
171 UINT32 firstEntryIndex,
172 UINT32 entryCount,
173 DWRITE_COLOR_F* paletteEntries
174 ) PURE;
175
176 STDMETHOD(GetRecommendedRenderingMode)(THIS_
177 FLOAT fontEmSize,
178 FLOAT dpiX,
179 FLOAT dpiY,
180 DWRITE_MATRIX const* transform,
181 BOOL isSideways,
182 DWRITE_OUTLINE_THRESHOLD outlineThreshold,
183 DWRITE_MEASURING_MODE measuringMode,
184 IDWriteRenderingParams* renderingParams,
185 DWRITE_RENDERING_MODE* renderingMode,
186 DWRITE_GRID_FIT_MODE* gridFitMode
187 ) PURE;
188 #endif
189
190 /* IDWriteFontFace3 methods */
191 STDMETHOD(GetFontFaceReference)(THIS_ IDWriteFontFaceReference **fontFaceReference) PURE;
192 STDMETHOD_(void, GetPanose)(THIS_ DWRITE_PANOSE *panose) PURE;
193 STDMETHOD_(DWRITE_FONT_WEIGHT, GetWeight)(THIS) PURE;
194 STDMETHOD_(DWRITE_FONT_STRETCH, GetStretch)(THIS) PURE;
195 STDMETHOD_(DWRITE_FONT_STYLE, GetStyle)(THIS) PURE;
196 STDMETHOD(GetFamilyNames)(THIS_ IDWriteLocalizedStrings **names) PURE;
197 STDMETHOD(GetFaceNames)(THIS_ IDWriteLocalizedStrings **names) PURE;
198 STDMETHOD(GetInformationalStrings)(THIS_ DWRITE_INFORMATIONAL_STRING_ID informationalStringID,
199 IDWriteLocalizedStrings **informationalStrings, BOOL *exists) PURE;
200 STDMETHOD_(BOOL, HasCharacter)(THIS_ UINT32 unicodeValue) PURE;
201 STDMETHOD(GetRecommendedRenderingMode)(THIS_ FLOAT fontEmSize, FLOAT dpiX, FLOAT dpiY,
202 DWRITE_MATRIX const *transform, BOOL isSideways, DWRITE_OUTLINE_THRESHOLD outlineThreshold,
203 DWRITE_MEASURING_MODE measuringMode, IDWriteRenderingParams *renderingParams,
204 DWRITE_RENDERING_MODE1 *renderingMode, DWRITE_GRID_FIT_MODE *gridFitMode) PURE;
205
206 #ifdef __cplusplus
207 using IDWriteFontFace2::GetRecommendedRenderingMode;
208 #endif
209
210 STDMETHOD_(BOOL, IsCharacterLocal)(THIS_ UINT32 unicodeValue) PURE;
211 STDMETHOD_(BOOL, IsGlyphLocal)(THIS_ UINT16 glyphId) PURE;
212 STDMETHOD(AreCharactersLocal)(THIS_ WCHAR const *characters, UINT32 characterCount,
213 BOOL enqueueIfNotLocal, BOOL *isLocal) PURE;
214 STDMETHOD(AreGlyphsLocal)(THIS_ UINT16 const *glyphIndices, UINT32 glyphCount,
215 BOOL enqueueIfNotLocal, BOOL *isLocal) PURE;
216
217 END_INTERFACE
218 };
219
220 __CRT_UUID_DECL(IDWriteFontFace3, 0xd37d7598,0x09be,0x4222,0xa2,0x36,0x20,0x81,0x34,0x1c,0xc1,0xf2)
221
222 #undef INTERFACE
223 #define INTERFACE IDWriteFontFace4
DECLARE_INTERFACE_(IDWriteFontFace4,IDWriteFontFace3)224 DECLARE_INTERFACE_(IDWriteFontFace4,IDWriteFontFace3)
225 {
226 BEGIN_INTERFACE
227
228 #ifndef __cplusplus
229 /* IUnknown methods */
230 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
231 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
232 STDMETHOD_(ULONG, Release)(THIS) PURE;
233
234 /* IDWriteFontFace methods */
235 STDMETHOD_(DWRITE_FONT_FACE_TYPE, GetType)(THIS) PURE;
236
237 STDMETHOD(GetFiles)(THIS_
238 UINT32 *numberOfFiles,
239 IDWriteFontFile **fontFiles) PURE;
240
241 STDMETHOD_(UINT32, GetIndex)(THIS) PURE;
242 STDMETHOD_(DWRITE_FONT_SIMULATIONS, GetSimulations)(THIS) PURE;
243 STDMETHOD_(WINBOOL, IsSymbolFont)(THIS) PURE;
244
245 STDMETHOD_(void, GetMetrics)(THIS_
246 DWRITE_FONT_METRICS *fontFaceMetrics) PURE;
247
248 STDMETHOD_(UINT16, GetGlyphCount)(THIS) PURE;
249
250 STDMETHOD(GetDesignGlyphMetrics)(THIS_
251 UINT16 const *glyphIndices,
252 UINT32 glyphCount,
253 DWRITE_GLYPH_METRICS *glyphMetrics,
254 WINBOOL isSideways __MINGW_DEF_ARG_VAL(FALSE)) PURE;
255
256 STDMETHOD(GetGlyphIndices)(THIS_
257 UINT32 const *codePoints,
258 UINT32 codePointCount,
259 UINT16 *glyphIndices) PURE;
260
261 STDMETHOD(TryGetFontTable)(THIS_
262 UINT32 openTypeTableTag,
263 const void **tableData,
264 UINT32 *tableSize,
265 void **tableContext,
266 WINBOOL *exists) PURE;
267
268 STDMETHOD_(void, ReleaseFontTable)(THIS_
269 void *tableContext) PURE;
270
271 STDMETHOD(GetGlyphRunOutline)(THIS_
272 FLOAT emSize,
273 UINT16 const *glyphIndices,
274 FLOAT const *glyphAdvances,
275 DWRITE_GLYPH_OFFSET const *glyphOffsets,
276 UINT32 glyphCount,
277 WINBOOL isSideways,
278 WINBOOL isRightToLeft,
279 IDWriteGeometrySink *geometrySink) PURE;
280
281 STDMETHOD(GetRecommendedRenderingMode)(THIS_
282 FLOAT emSize,
283 FLOAT pixelsPerDip,
284 DWRITE_MEASURING_MODE measuringMode,
285 IDWriteRenderingParams *renderingParams,
286 DWRITE_RENDERING_MODE *renderingMode) PURE;
287
288 STDMETHOD(GetGdiCompatibleMetrics)(THIS_
289 FLOAT emSize,
290 FLOAT pixelsPerDip,
291 DWRITE_MATRIX const *transform,
292 DWRITE_FONT_METRICS *fontFaceMetrics) PURE;
293
294 STDMETHOD(GetGdiCompatibleGlyphMetrics)(THIS_
295 FLOAT emSize,
296 FLOAT pixelsPerDip,
297 DWRITE_MATRIX const *transform,
298 WINBOOL useGdiNatural,
299 UINT16 const *glyphIndices,
300 UINT32 glyphCount,
301 DWRITE_GLYPH_METRICS *glyphMetrics,
302 WINBOOL isSideways __MINGW_DEF_ARG_VAL(FALSE)) PURE;
303
304 /* IDWriteFontFace1 methods */
305 STDMETHOD_(void, GetMetrics)(THIS_ DWRITE_FONT_METRICS1*) PURE;
306 STDMETHOD(GetGdiCompatibleMetrics)(THIS_ FLOAT,FLOAT,DWRITE_MATRIX const*,DWRITE_FONT_METRICS1*) PURE;
307 STDMETHOD_(void, GetCaretMetrics)(THIS_ DWRITE_CARET_METRICS*) PURE;
308 STDMETHOD(GetUnicodeRanges)(THIS_ UINT32, DWRITE_UNICODE_RANGE*,UINT32*) PURE;
309 STDMETHOD_(BOOL, IsMonospacedFont)(THIS) PURE;
310 STDMETHOD(GetDesignGlyphAdvances)(THIS_ UINT32,UINT16 const*,INT32*,BOOL isSideways __MINGW_DEF_ARG_VAL(FALSE)) PURE;
311 STDMETHOD(GetGdiCompatibleGlyphAdvances)(THIS_ FLOAT,FLOAT,DWRITE_MATRIX const*,BOOL,BOOL,UINT32,
312 UINT16 const*,INT32*) PURE;
313 STDMETHOD(GetKerningPairAdjustments)(THIS_ UINT32,UINT16 const*,INT32*) PURE;
314 STDMETHOD_(BOOL, HasKerningPairs)(THIS);
315 STDMETHOD(GetRecommendedRenderingMode)(FLOAT,FLOAT,FLOAT,DWRITE_MATRIX const*,BOOL,
316 DWRITE_OUTLINE_THRESHOLD,DWRITE_MEASURING_MODE,DWRITE_RENDERING_MODE*) PURE;
317 STDMETHOD(GetVerticalGlyphVariants)(THIS_ UINT32,UINT16 const*,UINT16*);
318 STDMETHOD_(BOOL, HasVerticalGlyphVariants)(THIS);
319
320 /* IDWriteFontFace2 methods */
321 STDMETHOD_(BOOL, IsColorFont)(THIS) PURE;
322 STDMETHOD_(UINT32, GetColorPaletteCount)(THIS) PURE;
323 STDMETHOD_(UINT32, GetPaletteEntryCount)(THIS) PURE;
324 STDMETHOD(GetPaletteEntries)(THIS_
325 UINT32 colorPaletteIndex,
326 UINT32 firstEntryIndex,
327 UINT32 entryCount,
328 DWRITE_COLOR_F* paletteEntries
329 ) PURE;
330
331 STDMETHOD(GetRecommendedRenderingMode)(THIS_
332 FLOAT fontEmSize,
333 FLOAT dpiX,
334 FLOAT dpiY,
335 DWRITE_MATRIX const* transform,
336 BOOL isSideways,
337 DWRITE_OUTLINE_THRESHOLD outlineThreshold,
338 DWRITE_MEASURING_MODE measuringMode,
339 IDWriteRenderingParams* renderingParams,
340 DWRITE_RENDERING_MODE* renderingMode,
341 DWRITE_GRID_FIT_MODE* gridFitMode
342 ) PURE;
343
344 /* IDWriteFontFace3 methods */
345 STDMETHOD(GetFontFaceReference)(THIS_ IDWriteFontFaceReference **fontFaceReference) PURE;
346 STDMETHOD_(void, GetPanose)(THIS_ DWRITE_PANOSE *panose) PURE;
347 STDMETHOD_(DWRITE_FONT_WEIGHT, GetWeight)(THIS) PURE;
348 STDMETHOD_(DWRITE_FONT_STRETCH, GetStretch)(THIS) PURE;
349 STDMETHOD_(DWRITE_FONT_STYLE, GetStyle)(THIS) PURE;
350 STDMETHOD(GetFamilyNames)(THIS_ IDWriteLocalizedStrings **names) PURE;
351 STDMETHOD(GetFaceNames)(THIS_ IDWriteLocalizedStrings **names) PURE;
352 STDMETHOD(GetInformationalStrings)(THIS_ DWRITE_INFORMATIONAL_STRING_ID informationalStringID,
353 IDWriteLocalizedStrings **informationalStrings, BOOL *exists) PURE;
354 STDMETHOD_(BOOL, HasCharacter)(THIS_ UINT32 unicodeValue) PURE;
355 STDMETHOD(GetRecommendedRenderingMode)(THIS_ FLOAT fontEmSize, FLOAT dpiX, FLOAT dpiY,
356 DWRITE_MATRIX const *transform, BOOL isSideways, DWRITE_OUTLINE_THRESHOLD outlineThreshold,
357 DWRITE_MEASURING_MODE measuringMode, IDWriteRenderingParams *renderingParams,
358 DWRITE_RENDERING_MODE1 *renderingMode, DWRITE_GRID_FIT_MODE *gridFitMode) PURE;
359 STDMETHOD_(BOOL, IsCharacterLocal)(THIS_ UINT32 unicodeValue) PURE;
360 STDMETHOD_(BOOL, IsGlyphLocal)(THIS_ UINT16 glyphId) PURE;
361 STDMETHOD(AreCharactersLocal)(THIS_ WCHAR const *characters, UINT32 characterCount,
362 BOOL enqueueIfNotLocal, BOOL *isLocal) PURE;
363 STDMETHOD(AreGlyphsLocal)(THIS_ UINT16 const *glyphIndices, UINT32 glyphCount,
364 BOOL enqueueIfNotLocal, BOOL *isLocal) PURE;
365 #endif
366
367 /* IDWriteFontFace4 methods */
368 STDMETHOD_(DWRITE_GLYPH_IMAGE_FORMATS, GetGlyphImageFormats)(THIS) PURE;
369 STDMETHOD(GetGlyphImageFormats)(THIS_ UINT16 glyphId, UINT32 pixelsPerEmFirst,
370 UINT32 pixelsPerEmLast, DWRITE_GLYPH_IMAGE_FORMATS *glyphImageFormats) PURE;
371 STDMETHOD(GetGlyphImageData)(THIS_ UINT16 glyphId, UINT32 pixelsPerEm,
372 DWRITE_GLYPH_IMAGE_FORMATS glyphImageFormat, DWRITE_GLYPH_IMAGE_DATA *glyphData,
373 void **glyphDataContext) PURE;
374 STDMETHOD_(void, ReleaseGlyphImageData)(THIS_ void *glyphDataContext) PURE;
375
376 END_INTERFACE
377 };
378
379 __CRT_UUID_DECL(IDWriteFontFace4, 0x27f2a904,0x4eb8,0x441d,0x96,0x78,0x05,0x63,0xf5,0x3e,0x3e,0x2f)
380
381 #undef INTERFACE
382 #define INTERFACE IDWriteFontFace5
DECLARE_INTERFACE_(IDWriteFontFace5,IDWriteFontFace4)383 DECLARE_INTERFACE_(IDWriteFontFace5,IDWriteFontFace4)
384 {
385 BEGIN_INTERFACE
386
387 #ifndef __cplusplus
388 /* IUnknown methods */
389 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
390 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
391 STDMETHOD_(ULONG, Release)(THIS) PURE;
392
393 /* IDWriteFontFace methods */
394 STDMETHOD_(DWRITE_FONT_FACE_TYPE, GetType)(THIS) PURE;
395
396 STDMETHOD(GetFiles)(THIS_
397 UINT32 *numberOfFiles,
398 IDWriteFontFile **fontFiles) PURE;
399
400 STDMETHOD_(UINT32, GetIndex)(THIS) PURE;
401 STDMETHOD_(DWRITE_FONT_SIMULATIONS, GetSimulations)(THIS) PURE;
402 STDMETHOD_(WINBOOL, IsSymbolFont)(THIS) PURE;
403
404 STDMETHOD_(void, GetMetrics)(THIS_
405 DWRITE_FONT_METRICS *fontFaceMetrics) PURE;
406
407 STDMETHOD_(UINT16, GetGlyphCount)(THIS) PURE;
408
409 STDMETHOD(GetDesignGlyphMetrics)(THIS_
410 UINT16 const *glyphIndices,
411 UINT32 glyphCount,
412 DWRITE_GLYPH_METRICS *glyphMetrics,
413 WINBOOL isSideways __MINGW_DEF_ARG_VAL(FALSE)) PURE;
414
415 STDMETHOD(GetGlyphIndices)(THIS_
416 UINT32 const *codePoints,
417 UINT32 codePointCount,
418 UINT16 *glyphIndices) PURE;
419
420 STDMETHOD(TryGetFontTable)(THIS_
421 UINT32 openTypeTableTag,
422 const void **tableData,
423 UINT32 *tableSize,
424 void **tableContext,
425 WINBOOL *exists) PURE;
426
427 STDMETHOD_(void, ReleaseFontTable)(THIS_
428 void *tableContext) PURE;
429
430 STDMETHOD(GetGlyphRunOutline)(THIS_
431 FLOAT emSize,
432 UINT16 const *glyphIndices,
433 FLOAT const *glyphAdvances,
434 DWRITE_GLYPH_OFFSET const *glyphOffsets,
435 UINT32 glyphCount,
436 WINBOOL isSideways,
437 WINBOOL isRightToLeft,
438 IDWriteGeometrySink *geometrySink) PURE;
439
440 STDMETHOD(GetRecommendedRenderingMode)(THIS_
441 FLOAT emSize,
442 FLOAT pixelsPerDip,
443 DWRITE_MEASURING_MODE measuringMode,
444 IDWriteRenderingParams *renderingParams,
445 DWRITE_RENDERING_MODE *renderingMode) PURE;
446
447 STDMETHOD(GetGdiCompatibleMetrics)(THIS_
448 FLOAT emSize,
449 FLOAT pixelsPerDip,
450 DWRITE_MATRIX const *transform,
451 DWRITE_FONT_METRICS *fontFaceMetrics) PURE;
452
453 STDMETHOD(GetGdiCompatibleGlyphMetrics)(THIS_
454 FLOAT emSize,
455 FLOAT pixelsPerDip,
456 DWRITE_MATRIX const *transform,
457 WINBOOL useGdiNatural,
458 UINT16 const *glyphIndices,
459 UINT32 glyphCount,
460 DWRITE_GLYPH_METRICS *glyphMetrics,
461 WINBOOL isSideways __MINGW_DEF_ARG_VAL(FALSE)) PURE;
462
463 /* IDWriteFontFace1 methods */
464 STDMETHOD_(void, GetMetrics)(THIS_ DWRITE_FONT_METRICS1*) PURE;
465 STDMETHOD(GetGdiCompatibleMetrics)(THIS_ FLOAT,FLOAT,DWRITE_MATRIX const*,DWRITE_FONT_METRICS1*) PURE;
466 STDMETHOD_(void, GetCaretMetrics)(THIS_ DWRITE_CARET_METRICS*) PURE;
467 STDMETHOD(GetUnicodeRanges)(THIS_ UINT32, DWRITE_UNICODE_RANGE*,UINT32*) PURE;
468 STDMETHOD_(BOOL, IsMonospacedFont)(THIS) PURE;
469 STDMETHOD(GetDesignGlyphAdvances)(THIS_ UINT32,UINT16 const*,INT32*,BOOL isSideways __MINGW_DEF_ARG_VAL(FALSE)) PURE;
470 STDMETHOD(GetGdiCompatibleGlyphAdvances)(THIS_ FLOAT,FLOAT,DWRITE_MATRIX const*,BOOL,BOOL,UINT32,
471 UINT16 const*,INT32*) PURE;
472 STDMETHOD(GetKerningPairAdjustments)(THIS_ UINT32,UINT16 const*,INT32*) PURE;
473 STDMETHOD_(BOOL, HasKerningPairs)(THIS);
474 STDMETHOD(GetRecommendedRenderingMode)(FLOAT,FLOAT,FLOAT,DWRITE_MATRIX const*,BOOL,
475 DWRITE_OUTLINE_THRESHOLD,DWRITE_MEASURING_MODE,DWRITE_RENDERING_MODE*) PURE;
476 STDMETHOD(GetVerticalGlyphVariants)(THIS_ UINT32,UINT16 const*,UINT16*);
477 STDMETHOD_(BOOL, HasVerticalGlyphVariants)(THIS);
478
479 /* IDWriteFontFace2 methods */
480 STDMETHOD_(BOOL, IsColorFont)(THIS) PURE;
481 STDMETHOD_(UINT32, GetColorPaletteCount)(THIS) PURE;
482 STDMETHOD_(UINT32, GetPaletteEntryCount)(THIS) PURE;
483 STDMETHOD(GetPaletteEntries)(THIS_
484 UINT32 colorPaletteIndex,
485 UINT32 firstEntryIndex,
486 UINT32 entryCount,
487 DWRITE_COLOR_F* paletteEntries
488 ) PURE;
489
490 STDMETHOD(GetRecommendedRenderingMode)(THIS_
491 FLOAT fontEmSize,
492 FLOAT dpiX,
493 FLOAT dpiY,
494 DWRITE_MATRIX const* transform,
495 BOOL isSideways,
496 DWRITE_OUTLINE_THRESHOLD outlineThreshold,
497 DWRITE_MEASURING_MODE measuringMode,
498 IDWriteRenderingParams* renderingParams,
499 DWRITE_RENDERING_MODE* renderingMode,
500 DWRITE_GRID_FIT_MODE* gridFitMode
501 ) PURE;
502
503 /* IDWriteFontFace3 methods */
504 STDMETHOD(GetFontFaceReference)(THIS_ IDWriteFontFaceReference **fontFaceReference) PURE;
505 STDMETHOD_(void, GetPanose)(THIS_ DWRITE_PANOSE *panose) PURE;
506 STDMETHOD_(DWRITE_FONT_WEIGHT, GetWeight)(THIS) PURE;
507 STDMETHOD_(DWRITE_FONT_STRETCH, GetStretch)(THIS) PURE;
508 STDMETHOD_(DWRITE_FONT_STYLE, GetStyle)(THIS) PURE;
509 STDMETHOD(GetFamilyNames)(THIS_ IDWriteLocalizedStrings **names) PURE;
510 STDMETHOD(GetFaceNames)(THIS_ IDWriteLocalizedStrings **names) PURE;
511 STDMETHOD(GetInformationalStrings)(THIS_ DWRITE_INFORMATIONAL_STRING_ID informationalStringID,
512 IDWriteLocalizedStrings **informationalStrings, BOOL *exists) PURE;
513 STDMETHOD_(BOOL, HasCharacter)(THIS_ UINT32 unicodeValue) PURE;
514 STDMETHOD(GetRecommendedRenderingMode)(THIS_ FLOAT fontEmSize, FLOAT dpiX, FLOAT dpiY,
515 DWRITE_MATRIX const *transform, BOOL isSideways, DWRITE_OUTLINE_THRESHOLD outlineThreshold,
516 DWRITE_MEASURING_MODE measuringMode, IDWriteRenderingParams *renderingParams,
517 DWRITE_RENDERING_MODE1 *renderingMode, DWRITE_GRID_FIT_MODE *gridFitMode) PURE;
518 STDMETHOD_(BOOL, IsCharacterLocal)(THIS_ UINT32 unicodeValue) PURE;
519 STDMETHOD_(BOOL, IsGlyphLocal)(THIS_ UINT16 glyphId) PURE;
520 STDMETHOD(AreCharactersLocal)(THIS_ WCHAR const *characters, UINT32 characterCount,
521 BOOL enqueueIfNotLocal, BOOL *isLocal) PURE;
522 STDMETHOD(AreGlyphsLocal)(THIS_ UINT16 const *glyphIndices, UINT32 glyphCount,
523 BOOL enqueueIfNotLocal, BOOL *isLocal) PURE;
524
525 /* IDWriteFontFace4 methods */
526 STDMETHOD_(DWRITE_GLYPH_IMAGE_FORMATS, GetGlyphImageFormats)(THIS) PURE;
527 STDMETHOD(GetGlyphImageFormats)(THIS_ UINT16 glyphId, UINT32 pixelsPerEmFirst,
528 UINT32 pixelsPerEmLast, DWRITE_GLYPH_IMAGE_FORMATS *glyphImageFormats) PURE;
529 STDMETHOD(GetGlyphImageData)(THIS_ UINT16 glyphId, UINT32 pixelsPerEm,
530 DWRITE_GLYPH_IMAGE_FORMATS glyphImageFormat, DWRITE_GLYPH_IMAGE_DATA *glyphData,
531 void **glyphDataContext) PURE;
532 STDMETHOD_(void, ReleaseGlyphImageData)(THIS_ void *glyphDataContext) PURE;
533 #endif
534
535 /* IDWriteFontFace5 methods */
536 STDMETHOD_(UINT32, GetFontAxisValueCount)(THIS) PURE;
537 STDMETHOD(GetFontAxisValues)(THIS_ DWRITE_FONT_AXIS_VALUE *fontAxisValues,
538 UINT32 fontAxisValueCount) PURE;
539 STDMETHOD_(BOOL, HasVariations)(THIS) PURE;
540 STDMETHOD(GetFontResource)(THIS_ IDWriteFontResource **fontResource) PURE;
541 STDMETHOD_(BOOL, Equals)(THIS_ IDWriteFontFace *fontFace) PURE;
542
543 END_INTERFACE
544 };
545
546 __CRT_UUID_DECL(IDWriteFontFace5, 0x98eff3a5,0xb667,0x479a,0xb1,0x45,0xe2,0xfa,0x5b,0x9f,0xdc,0x29)
547
548 #undef INTERFACE
549 #define INTERFACE IDWriteFontResource
DECLARE_INTERFACE_(IDWriteFontResource,IUnknown)550 DECLARE_INTERFACE_(IDWriteFontResource,IUnknown)
551 {
552 BEGIN_INTERFACE
553
554 #ifndef __cplusplus
555 /* IUnknown methods */
556 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
557 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
558 STDMETHOD_(ULONG, Release)(THIS) PURE;
559 #endif
560
561 STDMETHOD(GetFontFile)(THIS_ IDWriteFontFile **fontFile) PURE;
562 STDMETHOD_(UINT32, GetFontFaceIndex)(THIS) PURE;
563 STDMETHOD_(UINT32, GetFontAxisCount)(THIS) PURE;
564 STDMETHOD(GetDefaultFontAxisValues)(THIS_ DWRITE_FONT_AXIS_VALUE *fontAxisValues,
565 UINT32 fontAxisValueCount) PURE;
566 STDMETHOD(GetFontAxisRanges)(THIS_ DWRITE_FONT_AXIS_RANGE *fontAxisRanges,
567 UINT32 fontAxisRangeCount) PURE;
568 STDMETHOD_(DWRITE_FONT_AXIS_ATTRIBUTES, GetFontAxisAttributes)(THIS_ UINT32 axisIndex) PURE;
569 STDMETHOD(GetAxisNames)(THIS_ UINT32 axisIndex, IDWriteLocalizedStrings **names) PURE;
570 STDMETHOD_(UINT32, GetAxisValueNameCount)(THIS_ UINT32 axisIndex) PURE;
571 STDMETHOD(GetAxisValueNames)(THIS_ UINT32 axisIndex, UINT32 axisValueIndex,
572 DWRITE_FONT_AXIS_RANGE* fontAxisRange, IDWriteLocalizedStrings **names) PURE;
573 STDMETHOD_(BOOL, HasVariations)(THIS) PURE;
574 STDMETHOD(CreateFontFace)(THIS_ DWRITE_FONT_SIMULATIONS fontSimulations,
575 DWRITE_FONT_AXIS_VALUE const *fontAxisValues, UINT32 fontAxisValueCount,
576 IDWriteFontFace5 **fontFace) PURE;
577 STDMETHOD(CreateFontFaceReference)(THIS_ DWRITE_FONT_SIMULATIONS fontSimulations,
578 DWRITE_FONT_AXIS_VALUE const *fontAxisValues, UINT32 fontAxisValueCount,
579 IDWriteFontFaceReference1 **fontFaceReference) PURE;
580
581 END_INTERFACE
582 };
583
584 __CRT_UUID_DECL(IDWriteFontResource, 0x1f803a76,0x6871,0x48e8,0x98,0x7f,0xb9,0x75,0x55,0x1c,0x50,0xf2)
585
586
587 #endif /* DWRITE_3_H_INCLUDED */
588