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_2_H_INCLUDED
8 #define DWRITE_2_H_INCLUDED
9
10 #include <dwrite_1.h>
11
12 typedef enum DWRITE_GRID_FIT_MODE
13 {
14 DWRITE_GRID_FIT_MODE_DEFAULT,
15 DWRITE_GRID_FIT_MODE_DISABLED,
16 DWRITE_GRID_FIT_MODE_ENABLED
17 } DWRITE_GRID_FIT_MODE;
18
19 #ifndef D3DCOLORVALUE_DEFINED
20 #define D3DCOLORVALUE_DEFINED
21 typedef struct _D3DCOLORVALUE {
22 union {
23 FLOAT r;
24 FLOAT dvR;
25 } DUMMYUNIONNAME1;
26 union {
27 FLOAT g;
28 FLOAT dvG;
29 } DUMMYUNIONNAME2;
30 union {
31 FLOAT b;
32 FLOAT dvB;
33 } DUMMYUNIONNAME3;
34 union {
35 FLOAT a;
36 FLOAT dvA;
37 } DUMMYUNIONNAME4;
38 } D3DCOLORVALUE,*LPD3DCOLORVALUE;
39 #endif /* D3DCOLORVALUE_DEFINED */
40
41 typedef D3DCOLORVALUE DWRITE_COLOR_F;
42
43 typedef struct DWRITE_COLOR_GLYPH_RUN
44 {
45 DWRITE_GLYPH_RUN glyphRun;
46 DWRITE_GLYPH_RUN_DESCRIPTION *glyphRunDescription;
47 FLOAT baselineOriginX;
48 FLOAT baselineOriginY;
49 DWRITE_COLOR_F runColor;
50 UINT16 paletteIndex;
51 } DWRITE_COLOR_GLYPH_RUN;
52
53 #undef INTERFACE
54 #define INTERFACE IDWriteFontFallback
DECLARE_INTERFACE_(IDWriteFontFallback,IUnknown)55 DECLARE_INTERFACE_(IDWriteFontFallback,IUnknown)
56 {
57 BEGIN_INTERFACE
58
59 #ifndef __cplusplus
60 /* IUnknown methods */
61 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
62 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
63 STDMETHOD_(ULONG, Release)(THIS) PURE;
64 #endif
65
66 STDMETHOD(MapCharacters)(THIS_
67 IDWriteTextAnalysisSource *analysisSource,
68 UINT32 textPosition,
69 UINT32 textLength,
70 IDWriteFontCollection *baseFontCollection,
71 wchar_t const *baseFamilyName,
72 DWRITE_FONT_WEIGHT baseWeight,
73 DWRITE_FONT_STYLE baseStyle,
74 DWRITE_FONT_STRETCH baseStretch,
75 UINT32 *mappedLength,
76 IDWriteFont **mappedFont,
77 FLOAT *scale) PURE;
78
79 END_INTERFACE
80 };
81
82 __CRT_UUID_DECL(IDWriteFontFallback, 0xefa008f9,0xf7a1,0x48bf,0xb0,0x5c,0xf2,0x24,0x71,0x3c,0xc0,0xff)
83
84 #undef INTERFACE
85 #define INTERFACE IDWriteFontFallbackBuilder
DECLARE_INTERFACE_(IDWriteFontFallbackBuilder,IUnknown)86 DECLARE_INTERFACE_(IDWriteFontFallbackBuilder,IUnknown)
87 {
88 BEGIN_INTERFACE
89
90 #ifndef __cplusplus
91 /* IUnknown methods */
92 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
93 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
94 STDMETHOD_(ULONG, Release)(THIS) PURE;
95 #endif
96
97 STDMETHOD(AddMapping)(THIS_
98 DWRITE_UNICODE_RANGE const *ranges,
99 UINT32 rangesCount,
100 WCHAR const **targetFamilyNames,
101 UINT32 targetFamilyNamesCount,
102 IDWriteFontCollection *fontCollection __MINGW_DEF_ARG_VAL(NULL),
103 WCHAR const *localeName __MINGW_DEF_ARG_VAL(NULL),
104 WCHAR const *baseFamilyName __MINGW_DEF_ARG_VAL(NULL),
105 FLOAT scale __MINGW_DEF_ARG_VAL(1.0f)) PURE;
106
107 STDMETHOD(AddMappings)(THIS_
108 IDWriteFontFallback *fontFallback) PURE;
109
110 STDMETHOD(CreateFontFallback)(THIS_
111 IDWriteFontFallback **fontFallback) PURE;
112
113 END_INTERFACE
114 };
115
116 __CRT_UUID_DECL(IDWriteFontFallbackBuilder, 0xfd882d06,0x8aba,0x4fb8,0xb8,0x49,0x8b,0xe8,0xb7,0x3e,0x14,0xde)
117
118 #undef INTERFACE
119 #define INTERFACE IDWriteColorGlyphRunEnumerator
DECLARE_INTERFACE_(IDWriteColorGlyphRunEnumerator,IUnknown)120 DECLARE_INTERFACE_(IDWriteColorGlyphRunEnumerator,IUnknown)
121 {
122 BEGIN_INTERFACE
123
124 #ifndef __cplusplus
125 /* IUnknown methods */
126 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
127 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
128 STDMETHOD_(ULONG, Release)(THIS) PURE;
129 #endif
130
131 STDMETHOD(MoveNext)(THIS_
132 BOOL *hasRun) PURE;
133
134 STDMETHOD(GetCurrentRun)(THIS_
135 DWRITE_COLOR_GLYPH_RUN const **colorGlyphRun) PURE;
136
137 END_INTERFACE
138 };
139
140 __CRT_UUID_DECL(IDWriteColorGlyphRunEnumerator, 0xd31fbe17,0xf157,0x41a2,0x8d,0x24,0xcb,0x77,0x9e,0x05,0x60,0xe8)
141
142 #undef INTERFACE
143 #define INTERFACE IDWriteRenderingParams2
DECLARE_INTERFACE_(IDWriteRenderingParams2,IDWriteRenderingParams1)144 DECLARE_INTERFACE_(IDWriteRenderingParams2,IDWriteRenderingParams1)
145 {
146 BEGIN_INTERFACE
147
148 #ifndef __cplusplus
149 /* IUnknown methods */
150 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
151 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
152 STDMETHOD_(ULONG, Release)(THIS) PURE;
153
154 /* IDWriteRenderingParams methods */
155 STDMETHOD_(FLOAT, GetGamma)(THIS) PURE;
156 STDMETHOD_(FLOAT, GetEnhancedContrast)(THIS) PURE;
157 STDMETHOD_(FLOAT, GetClearTypeLevel)(THIS) PURE;
158 STDMETHOD_(DWRITE_PIXEL_GEOMETRY, GetPixelGeometry)(THIS) PURE;
159 STDMETHOD_(DWRITE_RENDERING_MODE, GetRenderingMode)(THIS) PURE;
160
161 /* IDWriteRenderingParams1 methods */
162 STDMETHOD_(FLOAT, GetGrayscaleEnhancedContrast)(THIS) PURE;
163 #endif
164
165 /* IDWriteRenderingParams2 methods */
166 STDMETHOD_(DWRITE_GRID_FIT_MODE, GetGridFitMode)(THIS) PURE;
167
168 END_INTERFACE
169 };
170
171 __CRT_UUID_DECL(IDWriteRenderingParams2, 0xf9d711c3,0x9777,0x40ae,0x87,0xe8,0x3e,0x5a,0xf9,0xbf,0x09,0x48)
172
173 #undef INTERFACE
174 #define INTERFACE IDWriteFactory2
DECLARE_INTERFACE_(IDWriteFactory2,IDWriteFactory1)175 DECLARE_INTERFACE_(IDWriteFactory2,IDWriteFactory1)
176 {
177 BEGIN_INTERFACE
178
179 #ifndef __cplusplus
180 /* IUnknown methods */
181 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
182 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
183 STDMETHOD_(ULONG, Release)(THIS) PURE;
184
185 /* IDWriteFactory methods */
186 STDMETHOD(GetSystemFontCollection)(THIS_
187 IDWriteFontCollection **fontCollection,
188 WINBOOL checkForUpdates __MINGW_DEF_ARG_VAL(FALSE)) PURE;
189
190 STDMETHOD(CreateCustomFontCollection)(THIS_
191 IDWriteFontCollectionLoader *collectionLoader,
192 void const *collectionKey,
193 UINT32 collectionKeySize,
194 IDWriteFontCollection **fontCollection) PURE;
195
196 STDMETHOD(RegisterFontCollectionLoader)(THIS_
197 IDWriteFontCollectionLoader *fontCollectionLoader) PURE;
198
199 STDMETHOD(UnregisterFontCollectionLoader)(THIS_
200 IDWriteFontCollectionLoader *fontCollectionLoader) PURE;
201
202 STDMETHOD(CreateFontFileReference)(THIS_
203 WCHAR const *filePath,
204 FILETIME const *lastWriteTime,
205 IDWriteFontFile **fontFile) PURE;
206
207 STDMETHOD(CreateCustomFontFileReference)(THIS_
208 void const *fontFileReferenceKey,
209 UINT32 fontFileReferenceKeySize,
210 IDWriteFontFileLoader *fontFileLoader,
211 IDWriteFontFile **fontFile) PURE;
212
213 STDMETHOD(CreateFontFace)(THIS_
214 DWRITE_FONT_FACE_TYPE fontFaceType,
215 UINT32 numberOfFiles,
216 IDWriteFontFile *const *fontFiles,
217 UINT32 faceIndex,
218 DWRITE_FONT_SIMULATIONS fontFaceSimulationFlags,
219 IDWriteFontFace **fontFace) PURE;
220
221 STDMETHOD(CreateRenderingParams)(THIS_
222 IDWriteRenderingParams **renderingParams) PURE;
223
224 STDMETHOD(CreateMonitorRenderingParams)(THIS_
225 HMONITOR monitor,
226 IDWriteRenderingParams **renderingParams) PURE;
227
228 STDMETHOD(CreateCustomRenderingParams)(THIS_
229 FLOAT gamma,
230 FLOAT enhancedContrast,
231 FLOAT clearTypeLevel,
232 DWRITE_PIXEL_GEOMETRY pixelGeometry,
233 DWRITE_RENDERING_MODE renderingMode,
234 IDWriteRenderingParams **renderingParams) PURE;
235
236 STDMETHOD(RegisterFontFileLoader)(THIS_
237 IDWriteFontFileLoader *fontFileLoader) PURE;
238
239 STDMETHOD(UnregisterFontFileLoader)(THIS_
240 IDWriteFontFileLoader *fontFileLoader) PURE;
241
242 STDMETHOD(CreateTextFormat)(THIS_
243 WCHAR const *fontFamilyName,
244 IDWriteFontCollection *fontCollection,
245 DWRITE_FONT_WEIGHT fontWeight,
246 DWRITE_FONT_STYLE fontStyle,
247 DWRITE_FONT_STRETCH fontStretch,
248 FLOAT fontSize,
249 WCHAR const *localeName,
250 IDWriteTextFormat **textFormat) PURE;
251
252 STDMETHOD(CreateTypography)(THIS_
253 IDWriteTypography **typography) PURE;
254
255 STDMETHOD(GetGdiInterop)(THIS_
256 IDWriteGdiInterop **gdiInterop) PURE;
257
258 STDMETHOD(CreateTextLayout)(THIS_
259 WCHAR const *string,
260 UINT32 stringLength,
261 IDWriteTextFormat *textFormat,
262 FLOAT maxWidth,
263 FLOAT maxHeight,
264 IDWriteTextLayout **textLayout) PURE;
265
266 STDMETHOD(CreateGdiCompatibleTextLayout)(THIS_
267 WCHAR const *string,
268 UINT32 stringLength,
269 IDWriteTextFormat *textFormat,
270 FLOAT layoutWidth,
271 FLOAT layoutHeight,
272 FLOAT pixelsPerDip,
273 DWRITE_MATRIX const *transform,
274 WINBOOL useGdiNatural,
275 IDWriteTextLayout **textLayout) PURE;
276
277 STDMETHOD(CreateEllipsisTrimmingSign)(THIS_
278 IDWriteTextFormat *textFormat,
279 IDWriteInlineObject **trimmingSign) PURE;
280
281 STDMETHOD(CreateTextAnalyzer)(THIS_
282 IDWriteTextAnalyzer **textAnalyzer) PURE;
283
284 STDMETHOD(CreateNumberSubstitution)(THIS_
285 DWRITE_NUMBER_SUBSTITUTION_METHOD substitutionMethod,
286 WCHAR const *localeName,
287 WINBOOL ignoreUserOverride,
288 IDWriteNumberSubstitution **numberSubstitution) PURE;
289
290 STDMETHOD(CreateGlyphRunAnalysis)(THIS_
291 DWRITE_GLYPH_RUN const *glyphRun,
292 FLOAT pixelsPerDip,
293 DWRITE_MATRIX const *transform,
294 DWRITE_RENDERING_MODE renderingMode,
295 DWRITE_MEASURING_MODE measuringMode,
296 FLOAT baselineOriginX,
297 FLOAT baselineOriginY,
298 IDWriteGlyphRunAnalysis **glyphRunAnalysis) PURE;
299
300 /* IDWriteFactory1 methods */
301 STDMETHOD(GetEudcFontCollection)(THIS_
302 IDWriteFontCollection **fontCollection,
303 BOOL checkForUpdates __MINGW_DEF_ARG_VAL(FALSE)) PURE;
304
305 STDMETHOD(CreateCustomRenderingParams)(THIS_
306 FLOAT gamma,
307 FLOAT enhancedContrast,
308 FLOAT enhancedContrastGrayscale,
309 FLOAT clearTypeLevel,
310 DWRITE_PIXEL_GEOMETRY pixelGeometry,
311 DWRITE_RENDERING_MODE renderingMode,
312 IDWriteRenderingParams1 **renderingParams) PURE;
313 #endif
314
315 /* IDWriteFactory2 methods */
316 STDMETHOD(GetSystemFontFallback)(THIS_
317 IDWriteFontFallback **fontFallback) PURE;
318
319 STDMETHOD(CreateFontFallbackBuilder)(THIS_
320 IDWriteFontFallbackBuilder **fontFallbackBuilder) PURE;
321
322 STDMETHOD(TranslateColorGlyphRun)(THIS_
323 FLOAT baselineOriginX,
324 FLOAT baselineOriginY,
325 DWRITE_GLYPH_RUN const *glyphRun,
326 DWRITE_GLYPH_RUN_DESCRIPTION const *glyphRunDescription,
327 DWRITE_MEASURING_MODE measuringMode,
328 DWRITE_MATRIX const *worldToDeviceTransform,
329 UINT32 colorPaletteIndex,
330 IDWriteColorGlyphRunEnumerator **colorLayers) PURE;
331
332 STDMETHOD(CreateCustomRenderingParams)(THIS_
333 FLOAT gamma,
334 FLOAT enhancedContrast,
335 FLOAT grayscaleEnhancedContrast,
336 FLOAT clearTypeLevel,
337 DWRITE_PIXEL_GEOMETRY pixelGeometry,
338 DWRITE_RENDERING_MODE renderingMode,
339 DWRITE_GRID_FIT_MODE gridFitMode,
340 IDWriteRenderingParams2 **renderingParams) PURE;
341
342 #ifdef __cplusplus
343 using IDWriteFactory::CreateCustomRenderingParams;
344 using IDWriteFactory1::CreateCustomRenderingParams;
345 #endif
346
347 STDMETHOD(CreateGlyphRunAnalysis)(THIS_
348 DWRITE_GLYPH_RUN const *glyphRun,
349 DWRITE_MATRIX const *transform,
350 DWRITE_RENDERING_MODE renderingMode,
351 DWRITE_MEASURING_MODE measuringMode,
352 DWRITE_GRID_FIT_MODE gridFitMode,
353 DWRITE_TEXT_ANTIALIAS_MODE antialiasMode,
354 FLOAT baselineOriginX,
355 FLOAT baselineOriginY,
356 IDWriteGlyphRunAnalysis **glyphRunAnalysis) PURE;
357
358 #ifdef __cplusplus
359 using IDWriteFactory::CreateGlyphRunAnalysis;
360 #endif
361
362 END_INTERFACE
363 };
364
365 __CRT_UUID_DECL(IDWriteFactory2, 0x0439fc60,0xca44,0x4994,0x8d,0xee,0x3a,0x9a,0xf7,0xb7,0x32,0xec)
366
367 #undef INTERFACE
368 #define INTERFACE IDWriteFontFace2
DECLARE_INTERFACE_(IDWriteFontFace2,IDWriteFontFace1)369 DECLARE_INTERFACE_(IDWriteFontFace2,IDWriteFontFace1)
370 {
371 BEGIN_INTERFACE
372
373 #ifndef __cplusplus
374 /* IUnknown methods */
375 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
376 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
377 STDMETHOD_(ULONG, Release)(THIS) PURE;
378
379 /* IDWriteFontFace methods */
380 STDMETHOD_(DWRITE_FONT_FACE_TYPE, GetType)(THIS) PURE;
381
382 STDMETHOD(GetFiles)(THIS_
383 UINT32 *numberOfFiles,
384 IDWriteFontFile **fontFiles) PURE;
385
386 STDMETHOD_(UINT32, GetIndex)(THIS) PURE;
387 STDMETHOD_(DWRITE_FONT_SIMULATIONS, GetSimulations)(THIS) PURE;
388 STDMETHOD_(WINBOOL, IsSymbolFont)(THIS) PURE;
389
390 STDMETHOD_(void, GetMetrics)(THIS_
391 DWRITE_FONT_METRICS *fontFaceMetrics) PURE;
392
393 STDMETHOD_(UINT16, GetGlyphCount)(THIS) PURE;
394
395 STDMETHOD(GetDesignGlyphMetrics)(THIS_
396 UINT16 const *glyphIndices,
397 UINT32 glyphCount,
398 DWRITE_GLYPH_METRICS *glyphMetrics,
399 WINBOOL isSideways __MINGW_DEF_ARG_VAL(FALSE)) PURE;
400
401 STDMETHOD(GetGlyphIndices)(THIS_
402 UINT32 const *codePoints,
403 UINT32 codePointCount,
404 UINT16 *glyphIndices) PURE;
405
406 STDMETHOD(TryGetFontTable)(THIS_
407 UINT32 openTypeTableTag,
408 const void **tableData,
409 UINT32 *tableSize,
410 void **tableContext,
411 WINBOOL *exists) PURE;
412
413 STDMETHOD_(void, ReleaseFontTable)(THIS_
414 void *tableContext) PURE;
415
416 STDMETHOD(GetGlyphRunOutline)(THIS_
417 FLOAT emSize,
418 UINT16 const *glyphIndices,
419 FLOAT const *glyphAdvances,
420 DWRITE_GLYPH_OFFSET const *glyphOffsets,
421 UINT32 glyphCount,
422 WINBOOL isSideways,
423 WINBOOL isRightToLeft,
424 IDWriteGeometrySink *geometrySink) PURE;
425
426 STDMETHOD(GetRecommendedRenderingMode)(THIS_
427 FLOAT emSize,
428 FLOAT pixelsPerDip,
429 DWRITE_MEASURING_MODE measuringMode,
430 IDWriteRenderingParams *renderingParams,
431 DWRITE_RENDERING_MODE *renderingMode) PURE;
432
433 STDMETHOD(GetGdiCompatibleMetrics)(THIS_
434 FLOAT emSize,
435 FLOAT pixelsPerDip,
436 DWRITE_MATRIX const *transform,
437 DWRITE_FONT_METRICS *fontFaceMetrics) PURE;
438
439 STDMETHOD(GetGdiCompatibleGlyphMetrics)(THIS_
440 FLOAT emSize,
441 FLOAT pixelsPerDip,
442 DWRITE_MATRIX const *transform,
443 WINBOOL useGdiNatural,
444 UINT16 const *glyphIndices,
445 UINT32 glyphCount,
446 DWRITE_GLYPH_METRICS *glyphMetrics,
447 WINBOOL isSideways __MINGW_DEF_ARG_VAL(FALSE)) PURE;
448
449 /* IDWriteFontFace1 methods */
450 STDMETHOD_(void, GetMetrics)(THIS_ DWRITE_FONT_METRICS1*) PURE;
451 STDMETHOD(GetGdiCompatibleMetrics)(THIS_ FLOAT,FLOAT,DWRITE_MATRIX const*,DWRITE_FONT_METRICS1*) PURE;
452 STDMETHOD_(void, GetCaretMetrics)(THIS_ DWRITE_CARET_METRICS*) PURE;
453 STDMETHOD(GetUnicodeRanges)(THIS_ UINT32, DWRITE_UNICODE_RANGE*,UINT32*) PURE;
454 STDMETHOD_(BOOL, IsMonospacedFont)(THIS) PURE;
455 STDMETHOD(GetDesignGlyphAdvances)(THIS_ UINT32,UINT16 const*,INT32*,BOOL isSideways __MINGW_DEF_ARG_VAL(FALSE)) PURE;
456 STDMETHOD(GetGdiCompatibleGlyphAdvances)(THIS_ FLOAT,FLOAT,DWRITE_MATRIX const*,BOOL,BOOL,UINT32,
457 UINT16 const*,INT32*) PURE;
458 STDMETHOD(GetKerningPairAdjustments)(THIS_ UINT32,UINT16 const*,INT32*) PURE;
459 STDMETHOD_(BOOL, HasKerningPairs)(THIS);
460 STDMETHOD(GetRecommendedRenderingMode)(FLOAT,FLOAT,FLOAT,DWRITE_MATRIX const*,BOOL,
461 DWRITE_OUTLINE_THRESHOLD,DWRITE_MEASURING_MODE,DWRITE_RENDERING_MODE*) PURE;
462 STDMETHOD(GetVerticalGlyphVariants)(THIS_ UINT32,UINT16 const*,UINT16*);
463 STDMETHOD_(BOOL, HasVerticalGlyphVariants)(THIS);
464 #endif
465
466 /* IDWriteFontFace2 methods */
467 STDMETHOD_(BOOL, IsColorFont)(THIS) PURE;
468 STDMETHOD_(UINT32, GetColorPaletteCount)(THIS) PURE;
469 STDMETHOD_(UINT32, GetPaletteEntryCount)(THIS) PURE;
470 STDMETHOD(GetPaletteEntries)(THIS_
471 UINT32 colorPaletteIndex,
472 UINT32 firstEntryIndex,
473 UINT32 entryCount,
474 DWRITE_COLOR_F* paletteEntries
475 ) PURE;
476
477 STDMETHOD(GetRecommendedRenderingMode)(THIS_
478 FLOAT fontEmSize,
479 FLOAT dpiX,
480 FLOAT dpiY,
481 DWRITE_MATRIX const* transform,
482 BOOL isSideways,
483 DWRITE_OUTLINE_THRESHOLD outlineThreshold,
484 DWRITE_MEASURING_MODE measuringMode,
485 IDWriteRenderingParams* renderingParams,
486 DWRITE_RENDERING_MODE* renderingMode,
487 DWRITE_GRID_FIT_MODE* gridFitMode
488 ) PURE;
489
490 END_INTERFACE
491 };
492
493 __CRT_UUID_DECL(IDWriteFontFace2, 0xd8b768ff,0x64bc,0x4e66,0x98,0x2b,0xec,0x8e,0x87,0xf6,0x93,0xf7)
494
495 #endif /* DWRITE_2_H_INCLUDED */
496