1 /*** Autogenerated by WIDL 6.4 from include/dwrite_2.idl - Do not edit ***/
2 
3 #ifdef _WIN32
4 #ifndef __REQUIRED_RPCNDR_H_VERSION__
5 #define __REQUIRED_RPCNDR_H_VERSION__ 475
6 #endif
7 #include <rpc.h>
8 #include <rpcndr.h>
9 #endif
10 
11 #ifndef COM_NO_WINDOWS_H
12 #include <windows.h>
13 #include <ole2.h>
14 #endif
15 
16 #ifndef __dwrite_2_h__
17 #define __dwrite_2_h__
18 
19 /* Forward declarations */
20 
21 #ifndef __IDWriteTextRenderer1_FWD_DEFINED__
22 #define __IDWriteTextRenderer1_FWD_DEFINED__
23 typedef interface IDWriteTextRenderer1 IDWriteTextRenderer1;
24 #ifdef __cplusplus
25 interface IDWriteTextRenderer1;
26 #endif /* __cplusplus */
27 #endif
28 
29 #ifndef __IDWriteFontFallback_FWD_DEFINED__
30 #define __IDWriteFontFallback_FWD_DEFINED__
31 typedef interface IDWriteFontFallback IDWriteFontFallback;
32 #ifdef __cplusplus
33 interface IDWriteFontFallback;
34 #endif /* __cplusplus */
35 #endif
36 
37 #ifndef __IDWriteTextFormat1_FWD_DEFINED__
38 #define __IDWriteTextFormat1_FWD_DEFINED__
39 typedef interface IDWriteTextFormat1 IDWriteTextFormat1;
40 #ifdef __cplusplus
41 interface IDWriteTextFormat1;
42 #endif /* __cplusplus */
43 #endif
44 
45 #ifndef __IDWriteTextLayout2_FWD_DEFINED__
46 #define __IDWriteTextLayout2_FWD_DEFINED__
47 typedef interface IDWriteTextLayout2 IDWriteTextLayout2;
48 #ifdef __cplusplus
49 interface IDWriteTextLayout2;
50 #endif /* __cplusplus */
51 #endif
52 
53 #ifndef __IDWriteTextAnalyzer2_FWD_DEFINED__
54 #define __IDWriteTextAnalyzer2_FWD_DEFINED__
55 typedef interface IDWriteTextAnalyzer2 IDWriteTextAnalyzer2;
56 #ifdef __cplusplus
57 interface IDWriteTextAnalyzer2;
58 #endif /* __cplusplus */
59 #endif
60 
61 #ifndef __IDWriteFontFallbackBuilder_FWD_DEFINED__
62 #define __IDWriteFontFallbackBuilder_FWD_DEFINED__
63 typedef interface IDWriteFontFallbackBuilder IDWriteFontFallbackBuilder;
64 #ifdef __cplusplus
65 interface IDWriteFontFallbackBuilder;
66 #endif /* __cplusplus */
67 #endif
68 
69 #ifndef __IDWriteFont2_FWD_DEFINED__
70 #define __IDWriteFont2_FWD_DEFINED__
71 typedef interface IDWriteFont2 IDWriteFont2;
72 #ifdef __cplusplus
73 interface IDWriteFont2;
74 #endif /* __cplusplus */
75 #endif
76 
77 #ifndef __IDWriteFontFace2_FWD_DEFINED__
78 #define __IDWriteFontFace2_FWD_DEFINED__
79 typedef interface IDWriteFontFace2 IDWriteFontFace2;
80 #ifdef __cplusplus
81 interface IDWriteFontFace2;
82 #endif /* __cplusplus */
83 #endif
84 
85 #ifndef __IDWriteColorGlyphRunEnumerator_FWD_DEFINED__
86 #define __IDWriteColorGlyphRunEnumerator_FWD_DEFINED__
87 typedef interface IDWriteColorGlyphRunEnumerator IDWriteColorGlyphRunEnumerator;
88 #ifdef __cplusplus
89 interface IDWriteColorGlyphRunEnumerator;
90 #endif /* __cplusplus */
91 #endif
92 
93 #ifndef __IDWriteRenderingParams2_FWD_DEFINED__
94 #define __IDWriteRenderingParams2_FWD_DEFINED__
95 typedef interface IDWriteRenderingParams2 IDWriteRenderingParams2;
96 #ifdef __cplusplus
97 interface IDWriteRenderingParams2;
98 #endif /* __cplusplus */
99 #endif
100 
101 #ifndef __IDWriteFactory2_FWD_DEFINED__
102 #define __IDWriteFactory2_FWD_DEFINED__
103 typedef interface IDWriteFactory2 IDWriteFactory2;
104 #ifdef __cplusplus
105 interface IDWriteFactory2;
106 #endif /* __cplusplus */
107 #endif
108 
109 /* Headers for imported files */
110 
111 #include <dwrite_1.h>
112 
113 #ifdef __cplusplus
114 extern "C" {
115 #endif
116 
117 typedef enum DWRITE_OPTICAL_ALIGNMENT {
118     DWRITE_OPTICAL_ALIGNMENT_NONE = 0,
119     DWRITE_OPTICAL_ALIGNMENT_NO_SIDE_BEARINGS = 1
120 } DWRITE_OPTICAL_ALIGNMENT;
121 typedef enum DWRITE_GRID_FIT_MODE {
122     DWRITE_GRID_FIT_MODE_DEFAULT = 0,
123     DWRITE_GRID_FIT_MODE_DISABLED = 1,
124     DWRITE_GRID_FIT_MODE_ENABLED = 2
125 } DWRITE_GRID_FIT_MODE;
126 typedef struct DWRITE_TEXT_METRICS1 {
127     FLOAT left;
128     FLOAT top;
129     FLOAT width;
130     FLOAT widthIncludingTrailingWhitespace;
131     FLOAT height;
132     FLOAT layoutWidth;
133     FLOAT layoutHeight;
134     UINT32 maxBidiReorderingDepth;
135     UINT32 lineCount;
136     FLOAT heightIncludingTrailingWhitespace;
137 } DWRITE_TEXT_METRICS1;
138 #ifndef D3DCOLORVALUE_DEFINED
139 typedef struct _D3DCOLORVALUE {
140     __C89_NAMELESS union {
141         FLOAT r;
142         FLOAT dvR;
143     } __C89_NAMELESSUNIONNAME1;
144     __C89_NAMELESS union {
145         FLOAT g;
146         FLOAT dvG;
147     } __C89_NAMELESSUNIONNAME2;
148     __C89_NAMELESS union {
149         FLOAT b;
150         FLOAT dvB;
151     } __C89_NAMELESSUNIONNAME3;
152     __C89_NAMELESS union {
153         FLOAT a;
154         FLOAT dvA;
155     } __C89_NAMELESSUNIONNAME4;
156 } D3DCOLORVALUE;
157 #define D3DCOLORVALUE_DEFINED
158 #endif
159 typedef D3DCOLORVALUE DWRITE_COLOR_F;
160 typedef struct DWRITE_COLOR_GLYPH_RUN {
161     DWRITE_GLYPH_RUN glyphRun;
162     DWRITE_GLYPH_RUN_DESCRIPTION *glyphRunDescription;
163     FLOAT baselineOriginX;
164     FLOAT baselineOriginY;
165     DWRITE_COLOR_F runColor;
166     UINT16 paletteIndex;
167 } DWRITE_COLOR_GLYPH_RUN;
168 /*****************************************************************************
169  * IDWriteTextRenderer1 interface
170  */
171 #ifndef __IDWriteTextRenderer1_INTERFACE_DEFINED__
172 #define __IDWriteTextRenderer1_INTERFACE_DEFINED__
173 
174 DEFINE_GUID(IID_IDWriteTextRenderer1, 0xd3e0e934, 0x22a0, 0x427e, 0xaa,0xe4, 0x7d,0x95,0x74,0xb5,0x9d,0xb1);
175 #if defined(__cplusplus) && !defined(CINTERFACE)
176 MIDL_INTERFACE("d3e0e934-22a0-427e-aae4-7d9574b59db1")
177 IDWriteTextRenderer1 : public IDWriteTextRenderer
178 {
179     virtual HRESULT STDMETHODCALLTYPE DrawGlyphRun(
180         void *context,
181         FLOAT originX,
182         FLOAT originY,
183         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
184         DWRITE_MEASURING_MODE mode,
185         const DWRITE_GLYPH_RUN *run,
186         const DWRITE_GLYPH_RUN_DESCRIPTION *rundescr,
187         IUnknown *effect) = 0;
188 
189     virtual HRESULT STDMETHODCALLTYPE DrawUnderline(
190         void *context,
191         FLOAT originX,
192         FLOAT originY,
193         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
194         const DWRITE_UNDERLINE *underline,
195         IUnknown *effect) = 0;
196 
197     virtual HRESULT STDMETHODCALLTYPE DrawStrikethrough(
198         void *context,
199         FLOAT originX,
200         FLOAT originY,
201         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
202         const DWRITE_STRIKETHROUGH *strikethrough,
203         IUnknown *effect) = 0;
204 
205     virtual HRESULT STDMETHODCALLTYPE DrawInlineObject(
206         void *context,
207         FLOAT originX,
208         FLOAT originY,
209         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
210         IDWriteInlineObject *inlineObject,
211         WINBOOL is_sideways,
212         WINBOOL is_rtl,
213         IUnknown *effect) = 0;
214 
215 };
216 #ifdef __CRT_UUID_DECL
217 __CRT_UUID_DECL(IDWriteTextRenderer1, 0xd3e0e934, 0x22a0, 0x427e, 0xaa,0xe4, 0x7d,0x95,0x74,0xb5,0x9d,0xb1)
218 #endif
219 #else
220 typedef struct IDWriteTextRenderer1Vtbl {
221     BEGIN_INTERFACE
222 
223     /*** IUnknown methods ***/
224     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
225         IDWriteTextRenderer1 *This,
226         REFIID riid,
227         void **ppvObject);
228 
229     ULONG (STDMETHODCALLTYPE *AddRef)(
230         IDWriteTextRenderer1 *This);
231 
232     ULONG (STDMETHODCALLTYPE *Release)(
233         IDWriteTextRenderer1 *This);
234 
235     /*** IDWritePixelSnapping methods ***/
236     HRESULT (STDMETHODCALLTYPE *IsPixelSnappingDisabled)(
237         IDWriteTextRenderer1 *This,
238         void *client_drawingcontext,
239         WINBOOL *disabled);
240 
241     HRESULT (STDMETHODCALLTYPE *GetCurrentTransform)(
242         IDWriteTextRenderer1 *This,
243         void *client_drawingcontext,
244         DWRITE_MATRIX *transform);
245 
246     HRESULT (STDMETHODCALLTYPE *GetPixelsPerDip)(
247         IDWriteTextRenderer1 *This,
248         void *client_drawingcontext,
249         FLOAT *pixels_per_dip);
250 
251     /*** IDWriteTextRenderer methods ***/
252     HRESULT (STDMETHODCALLTYPE *DrawGlyphRun)(
253         IDWriteTextRenderer1 *This,
254         void *client_drawingcontext,
255         FLOAT baselineOriginX,
256         FLOAT baselineOriginY,
257         DWRITE_MEASURING_MODE mode,
258         const DWRITE_GLYPH_RUN *glyph_run,
259         const DWRITE_GLYPH_RUN_DESCRIPTION *run_descr,
260         IUnknown *drawing_effect);
261 
262     HRESULT (STDMETHODCALLTYPE *DrawUnderline)(
263         IDWriteTextRenderer1 *This,
264         void *client_drawingcontext,
265         FLOAT baselineOriginX,
266         FLOAT baselineOriginY,
267         const DWRITE_UNDERLINE *underline,
268         IUnknown *drawing_effect);
269 
270     HRESULT (STDMETHODCALLTYPE *DrawStrikethrough)(
271         IDWriteTextRenderer1 *This,
272         void *client_drawingcontext,
273         FLOAT baselineOriginX,
274         FLOAT baselineOriginY,
275         const DWRITE_STRIKETHROUGH *strikethrough,
276         IUnknown *drawing_effect);
277 
278     HRESULT (STDMETHODCALLTYPE *DrawInlineObject)(
279         IDWriteTextRenderer1 *This,
280         void *client_drawingcontext,
281         FLOAT originX,
282         FLOAT originY,
283         IDWriteInlineObject *object,
284         WINBOOL is_sideways,
285         WINBOOL is_rtl,
286         IUnknown *drawing_effect);
287 
288     /*** IDWriteTextRenderer1 methods ***/
289     HRESULT (STDMETHODCALLTYPE *IDWriteTextRenderer1_DrawGlyphRun)(
290         IDWriteTextRenderer1 *This,
291         void *context,
292         FLOAT originX,
293         FLOAT originY,
294         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
295         DWRITE_MEASURING_MODE mode,
296         const DWRITE_GLYPH_RUN *run,
297         const DWRITE_GLYPH_RUN_DESCRIPTION *rundescr,
298         IUnknown *effect);
299 
300     HRESULT (STDMETHODCALLTYPE *IDWriteTextRenderer1_DrawUnderline)(
301         IDWriteTextRenderer1 *This,
302         void *context,
303         FLOAT originX,
304         FLOAT originY,
305         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
306         const DWRITE_UNDERLINE *underline,
307         IUnknown *effect);
308 
309     HRESULT (STDMETHODCALLTYPE *IDWriteTextRenderer1_DrawStrikethrough)(
310         IDWriteTextRenderer1 *This,
311         void *context,
312         FLOAT originX,
313         FLOAT originY,
314         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
315         const DWRITE_STRIKETHROUGH *strikethrough,
316         IUnknown *effect);
317 
318     HRESULT (STDMETHODCALLTYPE *IDWriteTextRenderer1_DrawInlineObject)(
319         IDWriteTextRenderer1 *This,
320         void *context,
321         FLOAT originX,
322         FLOAT originY,
323         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
324         IDWriteInlineObject *inlineObject,
325         WINBOOL is_sideways,
326         WINBOOL is_rtl,
327         IUnknown *effect);
328 
329     END_INTERFACE
330 } IDWriteTextRenderer1Vtbl;
331 
332 interface IDWriteTextRenderer1 {
333     CONST_VTBL IDWriteTextRenderer1Vtbl* lpVtbl;
334 };
335 
336 #ifdef COBJMACROS
337 #ifndef WIDL_C_INLINE_WRAPPERS
338 /*** IUnknown methods ***/
339 #define IDWriteTextRenderer1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
340 #define IDWriteTextRenderer1_AddRef(This) (This)->lpVtbl->AddRef(This)
341 #define IDWriteTextRenderer1_Release(This) (This)->lpVtbl->Release(This)
342 /*** IDWritePixelSnapping methods ***/
343 #define IDWriteTextRenderer1_IsPixelSnappingDisabled(This,client_drawingcontext,disabled) (This)->lpVtbl->IsPixelSnappingDisabled(This,client_drawingcontext,disabled)
344 #define IDWriteTextRenderer1_GetCurrentTransform(This,client_drawingcontext,transform) (This)->lpVtbl->GetCurrentTransform(This,client_drawingcontext,transform)
345 #define IDWriteTextRenderer1_GetPixelsPerDip(This,client_drawingcontext,pixels_per_dip) (This)->lpVtbl->GetPixelsPerDip(This,client_drawingcontext,pixels_per_dip)
346 /*** IDWriteTextRenderer methods ***/
347 /*** IDWriteTextRenderer1 methods ***/
348 #define IDWriteTextRenderer1_DrawGlyphRun(This,context,originX,originY,angle,mode,run,rundescr,effect) (This)->lpVtbl->IDWriteTextRenderer1_DrawGlyphRun(This,context,originX,originY,angle,mode,run,rundescr,effect)
349 #define IDWriteTextRenderer1_DrawUnderline(This,context,originX,originY,angle,underline,effect) (This)->lpVtbl->IDWriteTextRenderer1_DrawUnderline(This,context,originX,originY,angle,underline,effect)
350 #define IDWriteTextRenderer1_DrawStrikethrough(This,context,originX,originY,angle,strikethrough,effect) (This)->lpVtbl->IDWriteTextRenderer1_DrawStrikethrough(This,context,originX,originY,angle,strikethrough,effect)
351 #define IDWriteTextRenderer1_DrawInlineObject(This,context,originX,originY,angle,inlineObject,is_sideways,is_rtl,effect) (This)->lpVtbl->IDWriteTextRenderer1_DrawInlineObject(This,context,originX,originY,angle,inlineObject,is_sideways,is_rtl,effect)
352 #else
353 /*** IUnknown methods ***/
354 static FORCEINLINE HRESULT IDWriteTextRenderer1_QueryInterface(IDWriteTextRenderer1* This,REFIID riid,void **ppvObject) {
355     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
356 }
357 static FORCEINLINE ULONG IDWriteTextRenderer1_AddRef(IDWriteTextRenderer1* This) {
358     return This->lpVtbl->AddRef(This);
359 }
360 static FORCEINLINE ULONG IDWriteTextRenderer1_Release(IDWriteTextRenderer1* This) {
361     return This->lpVtbl->Release(This);
362 }
363 /*** IDWritePixelSnapping methods ***/
364 static FORCEINLINE HRESULT IDWriteTextRenderer1_IsPixelSnappingDisabled(IDWriteTextRenderer1* This,void *client_drawingcontext,WINBOOL *disabled) {
365     return This->lpVtbl->IsPixelSnappingDisabled(This,client_drawingcontext,disabled);
366 }
367 static FORCEINLINE HRESULT IDWriteTextRenderer1_GetCurrentTransform(IDWriteTextRenderer1* This,void *client_drawingcontext,DWRITE_MATRIX *transform) {
368     return This->lpVtbl->GetCurrentTransform(This,client_drawingcontext,transform);
369 }
370 static FORCEINLINE HRESULT IDWriteTextRenderer1_GetPixelsPerDip(IDWriteTextRenderer1* This,void *client_drawingcontext,FLOAT *pixels_per_dip) {
371     return This->lpVtbl->GetPixelsPerDip(This,client_drawingcontext,pixels_per_dip);
372 }
373 /*** IDWriteTextRenderer methods ***/
374 /*** IDWriteTextRenderer1 methods ***/
375 static FORCEINLINE HRESULT IDWriteTextRenderer1_DrawGlyphRun(IDWriteTextRenderer1* This,void *context,FLOAT originX,FLOAT originY,DWRITE_GLYPH_ORIENTATION_ANGLE angle,DWRITE_MEASURING_MODE mode,const DWRITE_GLYPH_RUN *run,const DWRITE_GLYPH_RUN_DESCRIPTION *rundescr,IUnknown *effect) {
376     return This->lpVtbl->IDWriteTextRenderer1_DrawGlyphRun(This,context,originX,originY,angle,mode,run,rundescr,effect);
377 }
378 static FORCEINLINE HRESULT IDWriteTextRenderer1_DrawUnderline(IDWriteTextRenderer1* This,void *context,FLOAT originX,FLOAT originY,DWRITE_GLYPH_ORIENTATION_ANGLE angle,const DWRITE_UNDERLINE *underline,IUnknown *effect) {
379     return This->lpVtbl->IDWriteTextRenderer1_DrawUnderline(This,context,originX,originY,angle,underline,effect);
380 }
381 static FORCEINLINE HRESULT IDWriteTextRenderer1_DrawStrikethrough(IDWriteTextRenderer1* This,void *context,FLOAT originX,FLOAT originY,DWRITE_GLYPH_ORIENTATION_ANGLE angle,const DWRITE_STRIKETHROUGH *strikethrough,IUnknown *effect) {
382     return This->lpVtbl->IDWriteTextRenderer1_DrawStrikethrough(This,context,originX,originY,angle,strikethrough,effect);
383 }
384 static FORCEINLINE HRESULT IDWriteTextRenderer1_DrawInlineObject(IDWriteTextRenderer1* This,void *context,FLOAT originX,FLOAT originY,DWRITE_GLYPH_ORIENTATION_ANGLE angle,IDWriteInlineObject *inlineObject,WINBOOL is_sideways,WINBOOL is_rtl,IUnknown *effect) {
385     return This->lpVtbl->IDWriteTextRenderer1_DrawInlineObject(This,context,originX,originY,angle,inlineObject,is_sideways,is_rtl,effect);
386 }
387 #endif
388 #endif
389 
390 #endif
391 
392 
393 #endif  /* __IDWriteTextRenderer1_INTERFACE_DEFINED__ */
394 
395 /*****************************************************************************
396  * IDWriteFontFallback interface
397  */
398 #ifndef __IDWriteFontFallback_INTERFACE_DEFINED__
399 #define __IDWriteFontFallback_INTERFACE_DEFINED__
400 
401 DEFINE_GUID(IID_IDWriteFontFallback, 0xefa008f9, 0xf7a1, 0x48bf, 0xb0,0x5c, 0xf2,0x24,0x71,0x3c,0xc0,0xff);
402 #if defined(__cplusplus) && !defined(CINTERFACE)
403 MIDL_INTERFACE("efa008f9-f7a1-48bf-b05c-f224713cc0ff")
404 IDWriteFontFallback : public IUnknown
405 {
406     virtual HRESULT STDMETHODCALLTYPE MapCharacters(
407         IDWriteTextAnalysisSource *source,
408         UINT32 position,
409         UINT32 length,
410         IDWriteFontCollection *basecollection,
411         const WCHAR *baseFamilyName,
412         DWRITE_FONT_WEIGHT baseWeight,
413         DWRITE_FONT_STYLE baseStyle,
414         DWRITE_FONT_STRETCH baseStretch,
415         UINT32 *mappedLength,
416         IDWriteFont **mappedFont,
417         FLOAT *scale) = 0;
418 
419 };
420 #ifdef __CRT_UUID_DECL
421 __CRT_UUID_DECL(IDWriteFontFallback, 0xefa008f9, 0xf7a1, 0x48bf, 0xb0,0x5c, 0xf2,0x24,0x71,0x3c,0xc0,0xff)
422 #endif
423 #else
424 typedef struct IDWriteFontFallbackVtbl {
425     BEGIN_INTERFACE
426 
427     /*** IUnknown methods ***/
428     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
429         IDWriteFontFallback *This,
430         REFIID riid,
431         void **ppvObject);
432 
433     ULONG (STDMETHODCALLTYPE *AddRef)(
434         IDWriteFontFallback *This);
435 
436     ULONG (STDMETHODCALLTYPE *Release)(
437         IDWriteFontFallback *This);
438 
439     /*** IDWriteFontFallback methods ***/
440     HRESULT (STDMETHODCALLTYPE *MapCharacters)(
441         IDWriteFontFallback *This,
442         IDWriteTextAnalysisSource *source,
443         UINT32 position,
444         UINT32 length,
445         IDWriteFontCollection *basecollection,
446         const WCHAR *baseFamilyName,
447         DWRITE_FONT_WEIGHT baseWeight,
448         DWRITE_FONT_STYLE baseStyle,
449         DWRITE_FONT_STRETCH baseStretch,
450         UINT32 *mappedLength,
451         IDWriteFont **mappedFont,
452         FLOAT *scale);
453 
454     END_INTERFACE
455 } IDWriteFontFallbackVtbl;
456 
457 interface IDWriteFontFallback {
458     CONST_VTBL IDWriteFontFallbackVtbl* lpVtbl;
459 };
460 
461 #ifdef COBJMACROS
462 #ifndef WIDL_C_INLINE_WRAPPERS
463 /*** IUnknown methods ***/
464 #define IDWriteFontFallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
465 #define IDWriteFontFallback_AddRef(This) (This)->lpVtbl->AddRef(This)
466 #define IDWriteFontFallback_Release(This) (This)->lpVtbl->Release(This)
467 /*** IDWriteFontFallback methods ***/
468 #define IDWriteFontFallback_MapCharacters(This,source,position,length,basecollection,baseFamilyName,baseWeight,baseStyle,baseStretch,mappedLength,mappedFont,scale) (This)->lpVtbl->MapCharacters(This,source,position,length,basecollection,baseFamilyName,baseWeight,baseStyle,baseStretch,mappedLength,mappedFont,scale)
469 #else
470 /*** IUnknown methods ***/
471 static FORCEINLINE HRESULT IDWriteFontFallback_QueryInterface(IDWriteFontFallback* This,REFIID riid,void **ppvObject) {
472     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
473 }
474 static FORCEINLINE ULONG IDWriteFontFallback_AddRef(IDWriteFontFallback* This) {
475     return This->lpVtbl->AddRef(This);
476 }
477 static FORCEINLINE ULONG IDWriteFontFallback_Release(IDWriteFontFallback* This) {
478     return This->lpVtbl->Release(This);
479 }
480 /*** IDWriteFontFallback methods ***/
481 static FORCEINLINE HRESULT IDWriteFontFallback_MapCharacters(IDWriteFontFallback* This,IDWriteTextAnalysisSource *source,UINT32 position,UINT32 length,IDWriteFontCollection *basecollection,const WCHAR *baseFamilyName,DWRITE_FONT_WEIGHT baseWeight,DWRITE_FONT_STYLE baseStyle,DWRITE_FONT_STRETCH baseStretch,UINT32 *mappedLength,IDWriteFont **mappedFont,FLOAT *scale) {
482     return This->lpVtbl->MapCharacters(This,source,position,length,basecollection,baseFamilyName,baseWeight,baseStyle,baseStretch,mappedLength,mappedFont,scale);
483 }
484 #endif
485 #endif
486 
487 #endif
488 
489 
490 #endif  /* __IDWriteFontFallback_INTERFACE_DEFINED__ */
491 
492 /*****************************************************************************
493  * IDWriteTextFormat1 interface
494  */
495 #ifndef __IDWriteTextFormat1_INTERFACE_DEFINED__
496 #define __IDWriteTextFormat1_INTERFACE_DEFINED__
497 
498 DEFINE_GUID(IID_IDWriteTextFormat1, 0x5f174b49, 0x0d8b, 0x4cfb, 0x8b,0xca, 0xf1,0xcc,0xe9,0xd0,0x6c,0x67);
499 #if defined(__cplusplus) && !defined(CINTERFACE)
500 MIDL_INTERFACE("5f174b49-0d8b-4cfb-8bca-f1cce9d06c67")
501 IDWriteTextFormat1 : public IDWriteTextFormat
502 {
503     virtual HRESULT STDMETHODCALLTYPE SetVerticalGlyphOrientation(
504         DWRITE_VERTICAL_GLYPH_ORIENTATION orientation) = 0;
505 
506     virtual DWRITE_VERTICAL_GLYPH_ORIENTATION STDMETHODCALLTYPE GetVerticalGlyphOrientation(
507         ) = 0;
508 
509     virtual HRESULT STDMETHODCALLTYPE SetLastLineWrapping(
510         WINBOOL lastline_wrapping_enabled) = 0;
511 
512     virtual WINBOOL STDMETHODCALLTYPE GetLastLineWrapping(
513         ) = 0;
514 
515     virtual HRESULT STDMETHODCALLTYPE SetOpticalAlignment(
516         DWRITE_OPTICAL_ALIGNMENT alignment) = 0;
517 
518     virtual DWRITE_OPTICAL_ALIGNMENT STDMETHODCALLTYPE GetOpticalAlignment(
519         ) = 0;
520 
521     virtual HRESULT STDMETHODCALLTYPE SetFontFallback(
522         IDWriteFontFallback *fallback) = 0;
523 
524     virtual HRESULT STDMETHODCALLTYPE GetFontFallback(
525         IDWriteFontFallback **fallback) = 0;
526 
527 };
528 #ifdef __CRT_UUID_DECL
529 __CRT_UUID_DECL(IDWriteTextFormat1, 0x5f174b49, 0x0d8b, 0x4cfb, 0x8b,0xca, 0xf1,0xcc,0xe9,0xd0,0x6c,0x67)
530 #endif
531 #else
532 typedef struct IDWriteTextFormat1Vtbl {
533     BEGIN_INTERFACE
534 
535     /*** IUnknown methods ***/
536     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
537         IDWriteTextFormat1 *This,
538         REFIID riid,
539         void **ppvObject);
540 
541     ULONG (STDMETHODCALLTYPE *AddRef)(
542         IDWriteTextFormat1 *This);
543 
544     ULONG (STDMETHODCALLTYPE *Release)(
545         IDWriteTextFormat1 *This);
546 
547     /*** IDWriteTextFormat methods ***/
548     HRESULT (STDMETHODCALLTYPE *SetTextAlignment)(
549         IDWriteTextFormat1 *This,
550         DWRITE_TEXT_ALIGNMENT alignment);
551 
552     HRESULT (STDMETHODCALLTYPE *SetParagraphAlignment)(
553         IDWriteTextFormat1 *This,
554         DWRITE_PARAGRAPH_ALIGNMENT alignment);
555 
556     HRESULT (STDMETHODCALLTYPE *SetWordWrapping)(
557         IDWriteTextFormat1 *This,
558         DWRITE_WORD_WRAPPING wrapping);
559 
560     HRESULT (STDMETHODCALLTYPE *SetReadingDirection)(
561         IDWriteTextFormat1 *This,
562         DWRITE_READING_DIRECTION direction);
563 
564     HRESULT (STDMETHODCALLTYPE *SetFlowDirection)(
565         IDWriteTextFormat1 *This,
566         DWRITE_FLOW_DIRECTION direction);
567 
568     HRESULT (STDMETHODCALLTYPE *SetIncrementalTabStop)(
569         IDWriteTextFormat1 *This,
570         FLOAT tabstop);
571 
572     HRESULT (STDMETHODCALLTYPE *SetTrimming)(
573         IDWriteTextFormat1 *This,
574         const DWRITE_TRIMMING *trimming,
575         IDWriteInlineObject *trimming_sign);
576 
577     HRESULT (STDMETHODCALLTYPE *SetLineSpacing)(
578         IDWriteTextFormat1 *This,
579         DWRITE_LINE_SPACING_METHOD spacing,
580         FLOAT line_spacing,
581         FLOAT baseline);
582 
583     DWRITE_TEXT_ALIGNMENT (STDMETHODCALLTYPE *GetTextAlignment)(
584         IDWriteTextFormat1 *This);
585 
586     DWRITE_PARAGRAPH_ALIGNMENT (STDMETHODCALLTYPE *GetParagraphAlignment)(
587         IDWriteTextFormat1 *This);
588 
589     DWRITE_WORD_WRAPPING (STDMETHODCALLTYPE *GetWordWrapping)(
590         IDWriteTextFormat1 *This);
591 
592     DWRITE_READING_DIRECTION (STDMETHODCALLTYPE *GetReadingDirection)(
593         IDWriteTextFormat1 *This);
594 
595     DWRITE_FLOW_DIRECTION (STDMETHODCALLTYPE *GetFlowDirection)(
596         IDWriteTextFormat1 *This);
597 
598     FLOAT (STDMETHODCALLTYPE *GetIncrementalTabStop)(
599         IDWriteTextFormat1 *This);
600 
601     HRESULT (STDMETHODCALLTYPE *GetTrimming)(
602         IDWriteTextFormat1 *This,
603         DWRITE_TRIMMING *options,
604         IDWriteInlineObject **trimming_sign);
605 
606     HRESULT (STDMETHODCALLTYPE *GetLineSpacing)(
607         IDWriteTextFormat1 *This,
608         DWRITE_LINE_SPACING_METHOD *method,
609         FLOAT *spacing,
610         FLOAT *baseline);
611 
612     HRESULT (STDMETHODCALLTYPE *GetFontCollection)(
613         IDWriteTextFormat1 *This,
614         IDWriteFontCollection **collection);
615 
616     UINT32 (STDMETHODCALLTYPE *GetFontFamilyNameLength)(
617         IDWriteTextFormat1 *This);
618 
619     HRESULT (STDMETHODCALLTYPE *GetFontFamilyName)(
620         IDWriteTextFormat1 *This,
621         WCHAR *name,
622         UINT32 size);
623 
624     DWRITE_FONT_WEIGHT (STDMETHODCALLTYPE *GetFontWeight)(
625         IDWriteTextFormat1 *This);
626 
627     DWRITE_FONT_STYLE (STDMETHODCALLTYPE *GetFontStyle)(
628         IDWriteTextFormat1 *This);
629 
630     DWRITE_FONT_STRETCH (STDMETHODCALLTYPE *GetFontStretch)(
631         IDWriteTextFormat1 *This);
632 
633     FLOAT (STDMETHODCALLTYPE *GetFontSize)(
634         IDWriteTextFormat1 *This);
635 
636     UINT32 (STDMETHODCALLTYPE *GetLocaleNameLength)(
637         IDWriteTextFormat1 *This);
638 
639     HRESULT (STDMETHODCALLTYPE *GetLocaleName)(
640         IDWriteTextFormat1 *This,
641         WCHAR *name,
642         UINT32 size);
643 
644     /*** IDWriteTextFormat1 methods ***/
645     HRESULT (STDMETHODCALLTYPE *SetVerticalGlyphOrientation)(
646         IDWriteTextFormat1 *This,
647         DWRITE_VERTICAL_GLYPH_ORIENTATION orientation);
648 
649     DWRITE_VERTICAL_GLYPH_ORIENTATION (STDMETHODCALLTYPE *GetVerticalGlyphOrientation)(
650         IDWriteTextFormat1 *This);
651 
652     HRESULT (STDMETHODCALLTYPE *SetLastLineWrapping)(
653         IDWriteTextFormat1 *This,
654         WINBOOL lastline_wrapping_enabled);
655 
656     WINBOOL (STDMETHODCALLTYPE *GetLastLineWrapping)(
657         IDWriteTextFormat1 *This);
658 
659     HRESULT (STDMETHODCALLTYPE *SetOpticalAlignment)(
660         IDWriteTextFormat1 *This,
661         DWRITE_OPTICAL_ALIGNMENT alignment);
662 
663     DWRITE_OPTICAL_ALIGNMENT (STDMETHODCALLTYPE *GetOpticalAlignment)(
664         IDWriteTextFormat1 *This);
665 
666     HRESULT (STDMETHODCALLTYPE *SetFontFallback)(
667         IDWriteTextFormat1 *This,
668         IDWriteFontFallback *fallback);
669 
670     HRESULT (STDMETHODCALLTYPE *GetFontFallback)(
671         IDWriteTextFormat1 *This,
672         IDWriteFontFallback **fallback);
673 
674     END_INTERFACE
675 } IDWriteTextFormat1Vtbl;
676 
677 interface IDWriteTextFormat1 {
678     CONST_VTBL IDWriteTextFormat1Vtbl* lpVtbl;
679 };
680 
681 #ifdef COBJMACROS
682 #ifndef WIDL_C_INLINE_WRAPPERS
683 /*** IUnknown methods ***/
684 #define IDWriteTextFormat1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
685 #define IDWriteTextFormat1_AddRef(This) (This)->lpVtbl->AddRef(This)
686 #define IDWriteTextFormat1_Release(This) (This)->lpVtbl->Release(This)
687 /*** IDWriteTextFormat methods ***/
688 #define IDWriteTextFormat1_SetTextAlignment(This,alignment) (This)->lpVtbl->SetTextAlignment(This,alignment)
689 #define IDWriteTextFormat1_SetParagraphAlignment(This,alignment) (This)->lpVtbl->SetParagraphAlignment(This,alignment)
690 #define IDWriteTextFormat1_SetWordWrapping(This,wrapping) (This)->lpVtbl->SetWordWrapping(This,wrapping)
691 #define IDWriteTextFormat1_SetReadingDirection(This,direction) (This)->lpVtbl->SetReadingDirection(This,direction)
692 #define IDWriteTextFormat1_SetFlowDirection(This,direction) (This)->lpVtbl->SetFlowDirection(This,direction)
693 #define IDWriteTextFormat1_SetIncrementalTabStop(This,tabstop) (This)->lpVtbl->SetIncrementalTabStop(This,tabstop)
694 #define IDWriteTextFormat1_SetTrimming(This,trimming,trimming_sign) (This)->lpVtbl->SetTrimming(This,trimming,trimming_sign)
695 #define IDWriteTextFormat1_SetLineSpacing(This,spacing,line_spacing,baseline) (This)->lpVtbl->SetLineSpacing(This,spacing,line_spacing,baseline)
696 #define IDWriteTextFormat1_GetTextAlignment(This) (This)->lpVtbl->GetTextAlignment(This)
697 #define IDWriteTextFormat1_GetParagraphAlignment(This) (This)->lpVtbl->GetParagraphAlignment(This)
698 #define IDWriteTextFormat1_GetWordWrapping(This) (This)->lpVtbl->GetWordWrapping(This)
699 #define IDWriteTextFormat1_GetReadingDirection(This) (This)->lpVtbl->GetReadingDirection(This)
700 #define IDWriteTextFormat1_GetFlowDirection(This) (This)->lpVtbl->GetFlowDirection(This)
701 #define IDWriteTextFormat1_GetIncrementalTabStop(This) (This)->lpVtbl->GetIncrementalTabStop(This)
702 #define IDWriteTextFormat1_GetTrimming(This,options,trimming_sign) (This)->lpVtbl->GetTrimming(This,options,trimming_sign)
703 #define IDWriteTextFormat1_GetLineSpacing(This,method,spacing,baseline) (This)->lpVtbl->GetLineSpacing(This,method,spacing,baseline)
704 #define IDWriteTextFormat1_GetFontCollection(This,collection) (This)->lpVtbl->GetFontCollection(This,collection)
705 #define IDWriteTextFormat1_GetFontFamilyNameLength(This) (This)->lpVtbl->GetFontFamilyNameLength(This)
706 #define IDWriteTextFormat1_GetFontFamilyName(This,name,size) (This)->lpVtbl->GetFontFamilyName(This,name,size)
707 #define IDWriteTextFormat1_GetFontWeight(This) (This)->lpVtbl->GetFontWeight(This)
708 #define IDWriteTextFormat1_GetFontStyle(This) (This)->lpVtbl->GetFontStyle(This)
709 #define IDWriteTextFormat1_GetFontStretch(This) (This)->lpVtbl->GetFontStretch(This)
710 #define IDWriteTextFormat1_GetFontSize(This) (This)->lpVtbl->GetFontSize(This)
711 #define IDWriteTextFormat1_GetLocaleNameLength(This) (This)->lpVtbl->GetLocaleNameLength(This)
712 #define IDWriteTextFormat1_GetLocaleName(This,name,size) (This)->lpVtbl->GetLocaleName(This,name,size)
713 /*** IDWriteTextFormat1 methods ***/
714 #define IDWriteTextFormat1_SetVerticalGlyphOrientation(This,orientation) (This)->lpVtbl->SetVerticalGlyphOrientation(This,orientation)
715 #define IDWriteTextFormat1_GetVerticalGlyphOrientation(This) (This)->lpVtbl->GetVerticalGlyphOrientation(This)
716 #define IDWriteTextFormat1_SetLastLineWrapping(This,lastline_wrapping_enabled) (This)->lpVtbl->SetLastLineWrapping(This,lastline_wrapping_enabled)
717 #define IDWriteTextFormat1_GetLastLineWrapping(This) (This)->lpVtbl->GetLastLineWrapping(This)
718 #define IDWriteTextFormat1_SetOpticalAlignment(This,alignment) (This)->lpVtbl->SetOpticalAlignment(This,alignment)
719 #define IDWriteTextFormat1_GetOpticalAlignment(This) (This)->lpVtbl->GetOpticalAlignment(This)
720 #define IDWriteTextFormat1_SetFontFallback(This,fallback) (This)->lpVtbl->SetFontFallback(This,fallback)
721 #define IDWriteTextFormat1_GetFontFallback(This,fallback) (This)->lpVtbl->GetFontFallback(This,fallback)
722 #else
723 /*** IUnknown methods ***/
724 static FORCEINLINE HRESULT IDWriteTextFormat1_QueryInterface(IDWriteTextFormat1* This,REFIID riid,void **ppvObject) {
725     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
726 }
727 static FORCEINLINE ULONG IDWriteTextFormat1_AddRef(IDWriteTextFormat1* This) {
728     return This->lpVtbl->AddRef(This);
729 }
730 static FORCEINLINE ULONG IDWriteTextFormat1_Release(IDWriteTextFormat1* This) {
731     return This->lpVtbl->Release(This);
732 }
733 /*** IDWriteTextFormat methods ***/
734 static FORCEINLINE HRESULT IDWriteTextFormat1_SetTextAlignment(IDWriteTextFormat1* This,DWRITE_TEXT_ALIGNMENT alignment) {
735     return This->lpVtbl->SetTextAlignment(This,alignment);
736 }
737 static FORCEINLINE HRESULT IDWriteTextFormat1_SetParagraphAlignment(IDWriteTextFormat1* This,DWRITE_PARAGRAPH_ALIGNMENT alignment) {
738     return This->lpVtbl->SetParagraphAlignment(This,alignment);
739 }
740 static FORCEINLINE HRESULT IDWriteTextFormat1_SetWordWrapping(IDWriteTextFormat1* This,DWRITE_WORD_WRAPPING wrapping) {
741     return This->lpVtbl->SetWordWrapping(This,wrapping);
742 }
743 static FORCEINLINE HRESULT IDWriteTextFormat1_SetReadingDirection(IDWriteTextFormat1* This,DWRITE_READING_DIRECTION direction) {
744     return This->lpVtbl->SetReadingDirection(This,direction);
745 }
746 static FORCEINLINE HRESULT IDWriteTextFormat1_SetFlowDirection(IDWriteTextFormat1* This,DWRITE_FLOW_DIRECTION direction) {
747     return This->lpVtbl->SetFlowDirection(This,direction);
748 }
749 static FORCEINLINE HRESULT IDWriteTextFormat1_SetIncrementalTabStop(IDWriteTextFormat1* This,FLOAT tabstop) {
750     return This->lpVtbl->SetIncrementalTabStop(This,tabstop);
751 }
752 static FORCEINLINE HRESULT IDWriteTextFormat1_SetTrimming(IDWriteTextFormat1* This,const DWRITE_TRIMMING *trimming,IDWriteInlineObject *trimming_sign) {
753     return This->lpVtbl->SetTrimming(This,trimming,trimming_sign);
754 }
755 static FORCEINLINE HRESULT IDWriteTextFormat1_SetLineSpacing(IDWriteTextFormat1* This,DWRITE_LINE_SPACING_METHOD spacing,FLOAT line_spacing,FLOAT baseline) {
756     return This->lpVtbl->SetLineSpacing(This,spacing,line_spacing,baseline);
757 }
758 static FORCEINLINE DWRITE_TEXT_ALIGNMENT IDWriteTextFormat1_GetTextAlignment(IDWriteTextFormat1* This) {
759     return This->lpVtbl->GetTextAlignment(This);
760 }
761 static FORCEINLINE DWRITE_PARAGRAPH_ALIGNMENT IDWriteTextFormat1_GetParagraphAlignment(IDWriteTextFormat1* This) {
762     return This->lpVtbl->GetParagraphAlignment(This);
763 }
764 static FORCEINLINE DWRITE_WORD_WRAPPING IDWriteTextFormat1_GetWordWrapping(IDWriteTextFormat1* This) {
765     return This->lpVtbl->GetWordWrapping(This);
766 }
767 static FORCEINLINE DWRITE_READING_DIRECTION IDWriteTextFormat1_GetReadingDirection(IDWriteTextFormat1* This) {
768     return This->lpVtbl->GetReadingDirection(This);
769 }
770 static FORCEINLINE DWRITE_FLOW_DIRECTION IDWriteTextFormat1_GetFlowDirection(IDWriteTextFormat1* This) {
771     return This->lpVtbl->GetFlowDirection(This);
772 }
773 static FORCEINLINE FLOAT IDWriteTextFormat1_GetIncrementalTabStop(IDWriteTextFormat1* This) {
774     return This->lpVtbl->GetIncrementalTabStop(This);
775 }
776 static FORCEINLINE HRESULT IDWriteTextFormat1_GetTrimming(IDWriteTextFormat1* This,DWRITE_TRIMMING *options,IDWriteInlineObject **trimming_sign) {
777     return This->lpVtbl->GetTrimming(This,options,trimming_sign);
778 }
779 static FORCEINLINE HRESULT IDWriteTextFormat1_GetLineSpacing(IDWriteTextFormat1* This,DWRITE_LINE_SPACING_METHOD *method,FLOAT *spacing,FLOAT *baseline) {
780     return This->lpVtbl->GetLineSpacing(This,method,spacing,baseline);
781 }
782 static FORCEINLINE HRESULT IDWriteTextFormat1_GetFontCollection(IDWriteTextFormat1* This,IDWriteFontCollection **collection) {
783     return This->lpVtbl->GetFontCollection(This,collection);
784 }
785 static FORCEINLINE UINT32 IDWriteTextFormat1_GetFontFamilyNameLength(IDWriteTextFormat1* This) {
786     return This->lpVtbl->GetFontFamilyNameLength(This);
787 }
788 static FORCEINLINE HRESULT IDWriteTextFormat1_GetFontFamilyName(IDWriteTextFormat1* This,WCHAR *name,UINT32 size) {
789     return This->lpVtbl->GetFontFamilyName(This,name,size);
790 }
791 static FORCEINLINE DWRITE_FONT_WEIGHT IDWriteTextFormat1_GetFontWeight(IDWriteTextFormat1* This) {
792     return This->lpVtbl->GetFontWeight(This);
793 }
794 static FORCEINLINE DWRITE_FONT_STYLE IDWriteTextFormat1_GetFontStyle(IDWriteTextFormat1* This) {
795     return This->lpVtbl->GetFontStyle(This);
796 }
797 static FORCEINLINE DWRITE_FONT_STRETCH IDWriteTextFormat1_GetFontStretch(IDWriteTextFormat1* This) {
798     return This->lpVtbl->GetFontStretch(This);
799 }
800 static FORCEINLINE FLOAT IDWriteTextFormat1_GetFontSize(IDWriteTextFormat1* This) {
801     return This->lpVtbl->GetFontSize(This);
802 }
803 static FORCEINLINE UINT32 IDWriteTextFormat1_GetLocaleNameLength(IDWriteTextFormat1* This) {
804     return This->lpVtbl->GetLocaleNameLength(This);
805 }
806 static FORCEINLINE HRESULT IDWriteTextFormat1_GetLocaleName(IDWriteTextFormat1* This,WCHAR *name,UINT32 size) {
807     return This->lpVtbl->GetLocaleName(This,name,size);
808 }
809 /*** IDWriteTextFormat1 methods ***/
810 static FORCEINLINE HRESULT IDWriteTextFormat1_SetVerticalGlyphOrientation(IDWriteTextFormat1* This,DWRITE_VERTICAL_GLYPH_ORIENTATION orientation) {
811     return This->lpVtbl->SetVerticalGlyphOrientation(This,orientation);
812 }
813 static FORCEINLINE DWRITE_VERTICAL_GLYPH_ORIENTATION IDWriteTextFormat1_GetVerticalGlyphOrientation(IDWriteTextFormat1* This) {
814     return This->lpVtbl->GetVerticalGlyphOrientation(This);
815 }
816 static FORCEINLINE HRESULT IDWriteTextFormat1_SetLastLineWrapping(IDWriteTextFormat1* This,WINBOOL lastline_wrapping_enabled) {
817     return This->lpVtbl->SetLastLineWrapping(This,lastline_wrapping_enabled);
818 }
819 static FORCEINLINE WINBOOL IDWriteTextFormat1_GetLastLineWrapping(IDWriteTextFormat1* This) {
820     return This->lpVtbl->GetLastLineWrapping(This);
821 }
822 static FORCEINLINE HRESULT IDWriteTextFormat1_SetOpticalAlignment(IDWriteTextFormat1* This,DWRITE_OPTICAL_ALIGNMENT alignment) {
823     return This->lpVtbl->SetOpticalAlignment(This,alignment);
824 }
825 static FORCEINLINE DWRITE_OPTICAL_ALIGNMENT IDWriteTextFormat1_GetOpticalAlignment(IDWriteTextFormat1* This) {
826     return This->lpVtbl->GetOpticalAlignment(This);
827 }
828 static FORCEINLINE HRESULT IDWriteTextFormat1_SetFontFallback(IDWriteTextFormat1* This,IDWriteFontFallback *fallback) {
829     return This->lpVtbl->SetFontFallback(This,fallback);
830 }
831 static FORCEINLINE HRESULT IDWriteTextFormat1_GetFontFallback(IDWriteTextFormat1* This,IDWriteFontFallback **fallback) {
832     return This->lpVtbl->GetFontFallback(This,fallback);
833 }
834 #endif
835 #endif
836 
837 #endif
838 
839 
840 #endif  /* __IDWriteTextFormat1_INTERFACE_DEFINED__ */
841 
842 /*****************************************************************************
843  * IDWriteTextLayout2 interface
844  */
845 #ifndef __IDWriteTextLayout2_INTERFACE_DEFINED__
846 #define __IDWriteTextLayout2_INTERFACE_DEFINED__
847 
848 DEFINE_GUID(IID_IDWriteTextLayout2, 0x1093c18f, 0x8d5e, 0x43f0, 0xb0,0x64, 0x09,0x17,0x31,0x1b,0x52,0x5e);
849 #if defined(__cplusplus) && !defined(CINTERFACE)
850 MIDL_INTERFACE("1093c18f-8d5e-43f0-b064-0917311b525e")
851 IDWriteTextLayout2 : public IDWriteTextLayout1
852 {
853     virtual HRESULT STDMETHODCALLTYPE GetMetrics(
854         DWRITE_TEXT_METRICS1 *metrics) = 0;
855 
856     virtual HRESULT STDMETHODCALLTYPE SetVerticalGlyphOrientation(
857         DWRITE_VERTICAL_GLYPH_ORIENTATION orientation) = 0;
858 
859     virtual DWRITE_VERTICAL_GLYPH_ORIENTATION STDMETHODCALLTYPE GetVerticalGlyphOrientation(
860         ) = 0;
861 
862     virtual HRESULT STDMETHODCALLTYPE SetLastLineWrapping(
863         WINBOOL lastline_wrapping_enabled) = 0;
864 
865     virtual WINBOOL STDMETHODCALLTYPE GetLastLineWrapping(
866         ) = 0;
867 
868     virtual HRESULT STDMETHODCALLTYPE SetOpticalAlignment(
869         DWRITE_OPTICAL_ALIGNMENT alignment) = 0;
870 
871     virtual DWRITE_OPTICAL_ALIGNMENT STDMETHODCALLTYPE GetOpticalAlignment(
872         ) = 0;
873 
874     virtual HRESULT STDMETHODCALLTYPE SetFontFallback(
875         IDWriteFontFallback *fallback) = 0;
876 
877     virtual HRESULT STDMETHODCALLTYPE GetFontFallback(
878         IDWriteFontFallback **fallback) = 0;
879 
880 };
881 #ifdef __CRT_UUID_DECL
882 __CRT_UUID_DECL(IDWriteTextLayout2, 0x1093c18f, 0x8d5e, 0x43f0, 0xb0,0x64, 0x09,0x17,0x31,0x1b,0x52,0x5e)
883 #endif
884 #else
885 typedef struct IDWriteTextLayout2Vtbl {
886     BEGIN_INTERFACE
887 
888     /*** IUnknown methods ***/
889     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
890         IDWriteTextLayout2 *This,
891         REFIID riid,
892         void **ppvObject);
893 
894     ULONG (STDMETHODCALLTYPE *AddRef)(
895         IDWriteTextLayout2 *This);
896 
897     ULONG (STDMETHODCALLTYPE *Release)(
898         IDWriteTextLayout2 *This);
899 
900     /*** IDWriteTextFormat methods ***/
901     HRESULT (STDMETHODCALLTYPE *SetTextAlignment)(
902         IDWriteTextLayout2 *This,
903         DWRITE_TEXT_ALIGNMENT alignment);
904 
905     HRESULT (STDMETHODCALLTYPE *SetParagraphAlignment)(
906         IDWriteTextLayout2 *This,
907         DWRITE_PARAGRAPH_ALIGNMENT alignment);
908 
909     HRESULT (STDMETHODCALLTYPE *SetWordWrapping)(
910         IDWriteTextLayout2 *This,
911         DWRITE_WORD_WRAPPING wrapping);
912 
913     HRESULT (STDMETHODCALLTYPE *SetReadingDirection)(
914         IDWriteTextLayout2 *This,
915         DWRITE_READING_DIRECTION direction);
916 
917     HRESULT (STDMETHODCALLTYPE *SetFlowDirection)(
918         IDWriteTextLayout2 *This,
919         DWRITE_FLOW_DIRECTION direction);
920 
921     HRESULT (STDMETHODCALLTYPE *SetIncrementalTabStop)(
922         IDWriteTextLayout2 *This,
923         FLOAT tabstop);
924 
925     HRESULT (STDMETHODCALLTYPE *SetTrimming)(
926         IDWriteTextLayout2 *This,
927         const DWRITE_TRIMMING *trimming,
928         IDWriteInlineObject *trimming_sign);
929 
930     HRESULT (STDMETHODCALLTYPE *SetLineSpacing)(
931         IDWriteTextLayout2 *This,
932         DWRITE_LINE_SPACING_METHOD spacing,
933         FLOAT line_spacing,
934         FLOAT baseline);
935 
936     DWRITE_TEXT_ALIGNMENT (STDMETHODCALLTYPE *GetTextAlignment)(
937         IDWriteTextLayout2 *This);
938 
939     DWRITE_PARAGRAPH_ALIGNMENT (STDMETHODCALLTYPE *GetParagraphAlignment)(
940         IDWriteTextLayout2 *This);
941 
942     DWRITE_WORD_WRAPPING (STDMETHODCALLTYPE *GetWordWrapping)(
943         IDWriteTextLayout2 *This);
944 
945     DWRITE_READING_DIRECTION (STDMETHODCALLTYPE *GetReadingDirection)(
946         IDWriteTextLayout2 *This);
947 
948     DWRITE_FLOW_DIRECTION (STDMETHODCALLTYPE *GetFlowDirection)(
949         IDWriteTextLayout2 *This);
950 
951     FLOAT (STDMETHODCALLTYPE *GetIncrementalTabStop)(
952         IDWriteTextLayout2 *This);
953 
954     HRESULT (STDMETHODCALLTYPE *GetTrimming)(
955         IDWriteTextLayout2 *This,
956         DWRITE_TRIMMING *options,
957         IDWriteInlineObject **trimming_sign);
958 
959     HRESULT (STDMETHODCALLTYPE *GetLineSpacing)(
960         IDWriteTextLayout2 *This,
961         DWRITE_LINE_SPACING_METHOD *method,
962         FLOAT *spacing,
963         FLOAT *baseline);
964 
965     HRESULT (STDMETHODCALLTYPE *GetFontCollection)(
966         IDWriteTextLayout2 *This,
967         IDWriteFontCollection **collection);
968 
969     UINT32 (STDMETHODCALLTYPE *GetFontFamilyNameLength)(
970         IDWriteTextLayout2 *This);
971 
972     HRESULT (STDMETHODCALLTYPE *GetFontFamilyName)(
973         IDWriteTextLayout2 *This,
974         WCHAR *name,
975         UINT32 size);
976 
977     DWRITE_FONT_WEIGHT (STDMETHODCALLTYPE *GetFontWeight)(
978         IDWriteTextLayout2 *This);
979 
980     DWRITE_FONT_STYLE (STDMETHODCALLTYPE *GetFontStyle)(
981         IDWriteTextLayout2 *This);
982 
983     DWRITE_FONT_STRETCH (STDMETHODCALLTYPE *GetFontStretch)(
984         IDWriteTextLayout2 *This);
985 
986     FLOAT (STDMETHODCALLTYPE *GetFontSize)(
987         IDWriteTextLayout2 *This);
988 
989     UINT32 (STDMETHODCALLTYPE *GetLocaleNameLength)(
990         IDWriteTextLayout2 *This);
991 
992     HRESULT (STDMETHODCALLTYPE *GetLocaleName)(
993         IDWriteTextLayout2 *This,
994         WCHAR *name,
995         UINT32 size);
996 
997     /*** IDWriteTextLayout methods ***/
998     HRESULT (STDMETHODCALLTYPE *SetMaxWidth)(
999         IDWriteTextLayout2 *This,
1000         FLOAT maxWidth);
1001 
1002     HRESULT (STDMETHODCALLTYPE *SetMaxHeight)(
1003         IDWriteTextLayout2 *This,
1004         FLOAT maxHeight);
1005 
1006     HRESULT (STDMETHODCALLTYPE *SetFontCollection)(
1007         IDWriteTextLayout2 *This,
1008         IDWriteFontCollection *collection,
1009         DWRITE_TEXT_RANGE range);
1010 
1011     HRESULT (STDMETHODCALLTYPE *SetFontFamilyName)(
1012         IDWriteTextLayout2 *This,
1013         const WCHAR *name,
1014         DWRITE_TEXT_RANGE range);
1015 
1016     HRESULT (STDMETHODCALLTYPE *SetFontWeight)(
1017         IDWriteTextLayout2 *This,
1018         DWRITE_FONT_WEIGHT weight,
1019         DWRITE_TEXT_RANGE range);
1020 
1021     HRESULT (STDMETHODCALLTYPE *SetFontStyle)(
1022         IDWriteTextLayout2 *This,
1023         DWRITE_FONT_STYLE style,
1024         DWRITE_TEXT_RANGE range);
1025 
1026     HRESULT (STDMETHODCALLTYPE *SetFontStretch)(
1027         IDWriteTextLayout2 *This,
1028         DWRITE_FONT_STRETCH stretch,
1029         DWRITE_TEXT_RANGE range);
1030 
1031     HRESULT (STDMETHODCALLTYPE *SetFontSize)(
1032         IDWriteTextLayout2 *This,
1033         FLOAT size,
1034         DWRITE_TEXT_RANGE range);
1035 
1036     HRESULT (STDMETHODCALLTYPE *SetUnderline)(
1037         IDWriteTextLayout2 *This,
1038         WINBOOL underline,
1039         DWRITE_TEXT_RANGE range);
1040 
1041     HRESULT (STDMETHODCALLTYPE *SetStrikethrough)(
1042         IDWriteTextLayout2 *This,
1043         WINBOOL strikethrough,
1044         DWRITE_TEXT_RANGE range);
1045 
1046     HRESULT (STDMETHODCALLTYPE *SetDrawingEffect)(
1047         IDWriteTextLayout2 *This,
1048         IUnknown *effect,
1049         DWRITE_TEXT_RANGE range);
1050 
1051     HRESULT (STDMETHODCALLTYPE *SetInlineObject)(
1052         IDWriteTextLayout2 *This,
1053         IDWriteInlineObject *object,
1054         DWRITE_TEXT_RANGE range);
1055 
1056     HRESULT (STDMETHODCALLTYPE *SetTypography)(
1057         IDWriteTextLayout2 *This,
1058         IDWriteTypography *typography,
1059         DWRITE_TEXT_RANGE range);
1060 
1061     HRESULT (STDMETHODCALLTYPE *SetLocaleName)(
1062         IDWriteTextLayout2 *This,
1063         const WCHAR *locale,
1064         DWRITE_TEXT_RANGE range);
1065 
1066     FLOAT (STDMETHODCALLTYPE *GetMaxWidth)(
1067         IDWriteTextLayout2 *This);
1068 
1069     FLOAT (STDMETHODCALLTYPE *GetMaxHeight)(
1070         IDWriteTextLayout2 *This);
1071 
1072     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontCollection)(
1073         IDWriteTextLayout2 *This,
1074         UINT32 pos,
1075         IDWriteFontCollection **collection,
1076         DWRITE_TEXT_RANGE *range);
1077 
1078     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontFamilyNameLength)(
1079         IDWriteTextLayout2 *This,
1080         UINT32 pos,
1081         UINT32 *len,
1082         DWRITE_TEXT_RANGE *range);
1083 
1084     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontFamilyName)(
1085         IDWriteTextLayout2 *This,
1086         UINT32 position,
1087         WCHAR *name,
1088         UINT32 name_size,
1089         DWRITE_TEXT_RANGE *range);
1090 
1091     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontWeight)(
1092         IDWriteTextLayout2 *This,
1093         UINT32 position,
1094         DWRITE_FONT_WEIGHT *weight,
1095         DWRITE_TEXT_RANGE *range);
1096 
1097     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontStyle)(
1098         IDWriteTextLayout2 *This,
1099         UINT32 currentPosition,
1100         DWRITE_FONT_STYLE *style,
1101         DWRITE_TEXT_RANGE *range);
1102 
1103     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontStretch)(
1104         IDWriteTextLayout2 *This,
1105         UINT32 position,
1106         DWRITE_FONT_STRETCH *stretch,
1107         DWRITE_TEXT_RANGE *range);
1108 
1109     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontSize)(
1110         IDWriteTextLayout2 *This,
1111         UINT32 position,
1112         FLOAT *size,
1113         DWRITE_TEXT_RANGE *range);
1114 
1115     HRESULT (STDMETHODCALLTYPE *GetUnderline)(
1116         IDWriteTextLayout2 *This,
1117         UINT32 position,
1118         WINBOOL *has_underline,
1119         DWRITE_TEXT_RANGE *range);
1120 
1121     HRESULT (STDMETHODCALLTYPE *GetStrikethrough)(
1122         IDWriteTextLayout2 *This,
1123         UINT32 position,
1124         WINBOOL *has_strikethrough,
1125         DWRITE_TEXT_RANGE *range);
1126 
1127     HRESULT (STDMETHODCALLTYPE *GetDrawingEffect)(
1128         IDWriteTextLayout2 *This,
1129         UINT32 position,
1130         IUnknown **effect,
1131         DWRITE_TEXT_RANGE *range);
1132 
1133     HRESULT (STDMETHODCALLTYPE *GetInlineObject)(
1134         IDWriteTextLayout2 *This,
1135         UINT32 position,
1136         IDWriteInlineObject **object,
1137         DWRITE_TEXT_RANGE *range);
1138 
1139     HRESULT (STDMETHODCALLTYPE *GetTypography)(
1140         IDWriteTextLayout2 *This,
1141         UINT32 position,
1142         IDWriteTypography **typography,
1143         DWRITE_TEXT_RANGE *range);
1144 
1145     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetLocaleNameLength)(
1146         IDWriteTextLayout2 *This,
1147         UINT32 position,
1148         UINT32 *length,
1149         DWRITE_TEXT_RANGE *range);
1150 
1151     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetLocaleName)(
1152         IDWriteTextLayout2 *This,
1153         UINT32 position,
1154         WCHAR *name,
1155         UINT32 name_size,
1156         DWRITE_TEXT_RANGE *range);
1157 
1158     HRESULT (STDMETHODCALLTYPE *Draw)(
1159         IDWriteTextLayout2 *This,
1160         void *context,
1161         IDWriteTextRenderer *renderer,
1162         FLOAT originX,
1163         FLOAT originY);
1164 
1165     HRESULT (STDMETHODCALLTYPE *GetLineMetrics)(
1166         IDWriteTextLayout2 *This,
1167         DWRITE_LINE_METRICS *metrics,
1168         UINT32 max_count,
1169         UINT32 *actual_count);
1170 
1171     HRESULT (STDMETHODCALLTYPE *GetMetrics)(
1172         IDWriteTextLayout2 *This,
1173         DWRITE_TEXT_METRICS *metrics);
1174 
1175     HRESULT (STDMETHODCALLTYPE *GetOverhangMetrics)(
1176         IDWriteTextLayout2 *This,
1177         DWRITE_OVERHANG_METRICS *overhangs);
1178 
1179     HRESULT (STDMETHODCALLTYPE *GetClusterMetrics)(
1180         IDWriteTextLayout2 *This,
1181         DWRITE_CLUSTER_METRICS *metrics,
1182         UINT32 max_count,
1183         UINT32 *act_count);
1184 
1185     HRESULT (STDMETHODCALLTYPE *DetermineMinWidth)(
1186         IDWriteTextLayout2 *This,
1187         FLOAT *min_width);
1188 
1189     HRESULT (STDMETHODCALLTYPE *HitTestPoint)(
1190         IDWriteTextLayout2 *This,
1191         FLOAT pointX,
1192         FLOAT pointY,
1193         WINBOOL *is_trailinghit,
1194         WINBOOL *is_inside,
1195         DWRITE_HIT_TEST_METRICS *metrics);
1196 
1197     HRESULT (STDMETHODCALLTYPE *HitTestTextPosition)(
1198         IDWriteTextLayout2 *This,
1199         UINT32 textPosition,
1200         WINBOOL is_trailinghit,
1201         FLOAT *pointX,
1202         FLOAT *pointY,
1203         DWRITE_HIT_TEST_METRICS *metrics);
1204 
1205     HRESULT (STDMETHODCALLTYPE *HitTestTextRange)(
1206         IDWriteTextLayout2 *This,
1207         UINT32 textPosition,
1208         UINT32 textLength,
1209         FLOAT originX,
1210         FLOAT originY,
1211         DWRITE_HIT_TEST_METRICS *metrics,
1212         UINT32 max_metricscount,
1213         UINT32 *actual_metricscount);
1214 
1215     /*** IDWriteTextLayout1 methods ***/
1216     HRESULT (STDMETHODCALLTYPE *SetPairKerning)(
1217         IDWriteTextLayout2 *This,
1218         WINBOOL is_pairkerning_enabled,
1219         DWRITE_TEXT_RANGE range);
1220 
1221     HRESULT (STDMETHODCALLTYPE *GetPairKerning)(
1222         IDWriteTextLayout2 *This,
1223         UINT32 position,
1224         WINBOOL *is_pairkerning_enabled,
1225         DWRITE_TEXT_RANGE *range);
1226 
1227     HRESULT (STDMETHODCALLTYPE *SetCharacterSpacing)(
1228         IDWriteTextLayout2 *This,
1229         FLOAT leading_spacing,
1230         FLOAT trailing_spacing,
1231         FLOAT minimum_advance_width,
1232         DWRITE_TEXT_RANGE range);
1233 
1234     HRESULT (STDMETHODCALLTYPE *GetCharacterSpacing)(
1235         IDWriteTextLayout2 *This,
1236         UINT32 position,
1237         FLOAT *leading_spacing,
1238         FLOAT *trailing_spacing,
1239         FLOAT *minimum_advance_width,
1240         DWRITE_TEXT_RANGE *range);
1241 
1242     /*** IDWriteTextLayout2 methods ***/
1243     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout2_GetMetrics)(
1244         IDWriteTextLayout2 *This,
1245         DWRITE_TEXT_METRICS1 *metrics);
1246 
1247     HRESULT (STDMETHODCALLTYPE *SetVerticalGlyphOrientation)(
1248         IDWriteTextLayout2 *This,
1249         DWRITE_VERTICAL_GLYPH_ORIENTATION orientation);
1250 
1251     DWRITE_VERTICAL_GLYPH_ORIENTATION (STDMETHODCALLTYPE *GetVerticalGlyphOrientation)(
1252         IDWriteTextLayout2 *This);
1253 
1254     HRESULT (STDMETHODCALLTYPE *SetLastLineWrapping)(
1255         IDWriteTextLayout2 *This,
1256         WINBOOL lastline_wrapping_enabled);
1257 
1258     WINBOOL (STDMETHODCALLTYPE *GetLastLineWrapping)(
1259         IDWriteTextLayout2 *This);
1260 
1261     HRESULT (STDMETHODCALLTYPE *SetOpticalAlignment)(
1262         IDWriteTextLayout2 *This,
1263         DWRITE_OPTICAL_ALIGNMENT alignment);
1264 
1265     DWRITE_OPTICAL_ALIGNMENT (STDMETHODCALLTYPE *GetOpticalAlignment)(
1266         IDWriteTextLayout2 *This);
1267 
1268     HRESULT (STDMETHODCALLTYPE *SetFontFallback)(
1269         IDWriteTextLayout2 *This,
1270         IDWriteFontFallback *fallback);
1271 
1272     HRESULT (STDMETHODCALLTYPE *GetFontFallback)(
1273         IDWriteTextLayout2 *This,
1274         IDWriteFontFallback **fallback);
1275 
1276     END_INTERFACE
1277 } IDWriteTextLayout2Vtbl;
1278 
1279 interface IDWriteTextLayout2 {
1280     CONST_VTBL IDWriteTextLayout2Vtbl* lpVtbl;
1281 };
1282 
1283 #ifdef COBJMACROS
1284 #ifndef WIDL_C_INLINE_WRAPPERS
1285 /*** IUnknown methods ***/
1286 #define IDWriteTextLayout2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1287 #define IDWriteTextLayout2_AddRef(This) (This)->lpVtbl->AddRef(This)
1288 #define IDWriteTextLayout2_Release(This) (This)->lpVtbl->Release(This)
1289 /*** IDWriteTextFormat methods ***/
1290 #define IDWriteTextLayout2_SetTextAlignment(This,alignment) (This)->lpVtbl->SetTextAlignment(This,alignment)
1291 #define IDWriteTextLayout2_SetParagraphAlignment(This,alignment) (This)->lpVtbl->SetParagraphAlignment(This,alignment)
1292 #define IDWriteTextLayout2_SetWordWrapping(This,wrapping) (This)->lpVtbl->SetWordWrapping(This,wrapping)
1293 #define IDWriteTextLayout2_SetReadingDirection(This,direction) (This)->lpVtbl->SetReadingDirection(This,direction)
1294 #define IDWriteTextLayout2_SetFlowDirection(This,direction) (This)->lpVtbl->SetFlowDirection(This,direction)
1295 #define IDWriteTextLayout2_SetIncrementalTabStop(This,tabstop) (This)->lpVtbl->SetIncrementalTabStop(This,tabstop)
1296 #define IDWriteTextLayout2_SetTrimming(This,trimming,trimming_sign) (This)->lpVtbl->SetTrimming(This,trimming,trimming_sign)
1297 #define IDWriteTextLayout2_SetLineSpacing(This,spacing,line_spacing,baseline) (This)->lpVtbl->SetLineSpacing(This,spacing,line_spacing,baseline)
1298 #define IDWriteTextLayout2_GetTextAlignment(This) (This)->lpVtbl->GetTextAlignment(This)
1299 #define IDWriteTextLayout2_GetParagraphAlignment(This) (This)->lpVtbl->GetParagraphAlignment(This)
1300 #define IDWriteTextLayout2_GetWordWrapping(This) (This)->lpVtbl->GetWordWrapping(This)
1301 #define IDWriteTextLayout2_GetReadingDirection(This) (This)->lpVtbl->GetReadingDirection(This)
1302 #define IDWriteTextLayout2_GetFlowDirection(This) (This)->lpVtbl->GetFlowDirection(This)
1303 #define IDWriteTextLayout2_GetIncrementalTabStop(This) (This)->lpVtbl->GetIncrementalTabStop(This)
1304 #define IDWriteTextLayout2_GetTrimming(This,options,trimming_sign) (This)->lpVtbl->GetTrimming(This,options,trimming_sign)
1305 #define IDWriteTextLayout2_GetLineSpacing(This,method,spacing,baseline) (This)->lpVtbl->GetLineSpacing(This,method,spacing,baseline)
1306 /*** IDWriteTextLayout methods ***/
1307 #define IDWriteTextLayout2_SetMaxWidth(This,maxWidth) (This)->lpVtbl->SetMaxWidth(This,maxWidth)
1308 #define IDWriteTextLayout2_SetMaxHeight(This,maxHeight) (This)->lpVtbl->SetMaxHeight(This,maxHeight)
1309 #define IDWriteTextLayout2_SetFontCollection(This,collection,range) (This)->lpVtbl->SetFontCollection(This,collection,range)
1310 #define IDWriteTextLayout2_SetFontFamilyName(This,name,range) (This)->lpVtbl->SetFontFamilyName(This,name,range)
1311 #define IDWriteTextLayout2_SetFontWeight(This,weight,range) (This)->lpVtbl->SetFontWeight(This,weight,range)
1312 #define IDWriteTextLayout2_SetFontStyle(This,style,range) (This)->lpVtbl->SetFontStyle(This,style,range)
1313 #define IDWriteTextLayout2_SetFontStretch(This,stretch,range) (This)->lpVtbl->SetFontStretch(This,stretch,range)
1314 #define IDWriteTextLayout2_SetFontSize(This,size,range) (This)->lpVtbl->SetFontSize(This,size,range)
1315 #define IDWriteTextLayout2_SetUnderline(This,underline,range) (This)->lpVtbl->SetUnderline(This,underline,range)
1316 #define IDWriteTextLayout2_SetStrikethrough(This,strikethrough,range) (This)->lpVtbl->SetStrikethrough(This,strikethrough,range)
1317 #define IDWriteTextLayout2_SetDrawingEffect(This,effect,range) (This)->lpVtbl->SetDrawingEffect(This,effect,range)
1318 #define IDWriteTextLayout2_SetInlineObject(This,object,range) (This)->lpVtbl->SetInlineObject(This,object,range)
1319 #define IDWriteTextLayout2_SetTypography(This,typography,range) (This)->lpVtbl->SetTypography(This,typography,range)
1320 #define IDWriteTextLayout2_SetLocaleName(This,locale,range) (This)->lpVtbl->SetLocaleName(This,locale,range)
1321 #define IDWriteTextLayout2_GetMaxWidth(This) (This)->lpVtbl->GetMaxWidth(This)
1322 #define IDWriteTextLayout2_GetMaxHeight(This) (This)->lpVtbl->GetMaxHeight(This)
1323 #define IDWriteTextLayout2_GetFontCollection(This,pos,collection,range) (This)->lpVtbl->IDWriteTextLayout_GetFontCollection(This,pos,collection,range)
1324 #define IDWriteTextLayout2_GetFontFamilyNameLength(This,pos,len,range) (This)->lpVtbl->IDWriteTextLayout_GetFontFamilyNameLength(This,pos,len,range)
1325 #define IDWriteTextLayout2_GetFontFamilyName(This,position,name,name_size,range) (This)->lpVtbl->IDWriteTextLayout_GetFontFamilyName(This,position,name,name_size,range)
1326 #define IDWriteTextLayout2_GetFontWeight(This,position,weight,range) (This)->lpVtbl->IDWriteTextLayout_GetFontWeight(This,position,weight,range)
1327 #define IDWriteTextLayout2_GetFontStyle(This,currentPosition,style,range) (This)->lpVtbl->IDWriteTextLayout_GetFontStyle(This,currentPosition,style,range)
1328 #define IDWriteTextLayout2_GetFontStretch(This,position,stretch,range) (This)->lpVtbl->IDWriteTextLayout_GetFontStretch(This,position,stretch,range)
1329 #define IDWriteTextLayout2_GetFontSize(This,position,size,range) (This)->lpVtbl->IDWriteTextLayout_GetFontSize(This,position,size,range)
1330 #define IDWriteTextLayout2_GetUnderline(This,position,has_underline,range) (This)->lpVtbl->GetUnderline(This,position,has_underline,range)
1331 #define IDWriteTextLayout2_GetStrikethrough(This,position,has_strikethrough,range) (This)->lpVtbl->GetStrikethrough(This,position,has_strikethrough,range)
1332 #define IDWriteTextLayout2_GetDrawingEffect(This,position,effect,range) (This)->lpVtbl->GetDrawingEffect(This,position,effect,range)
1333 #define IDWriteTextLayout2_GetInlineObject(This,position,object,range) (This)->lpVtbl->GetInlineObject(This,position,object,range)
1334 #define IDWriteTextLayout2_GetTypography(This,position,typography,range) (This)->lpVtbl->GetTypography(This,position,typography,range)
1335 #define IDWriteTextLayout2_GetLocaleNameLength(This,position,length,range) (This)->lpVtbl->IDWriteTextLayout_GetLocaleNameLength(This,position,length,range)
1336 #define IDWriteTextLayout2_GetLocaleName(This,position,name,name_size,range) (This)->lpVtbl->IDWriteTextLayout_GetLocaleName(This,position,name,name_size,range)
1337 #define IDWriteTextLayout2_Draw(This,context,renderer,originX,originY) (This)->lpVtbl->Draw(This,context,renderer,originX,originY)
1338 #define IDWriteTextLayout2_GetLineMetrics(This,metrics,max_count,actual_count) (This)->lpVtbl->GetLineMetrics(This,metrics,max_count,actual_count)
1339 #define IDWriteTextLayout2_GetOverhangMetrics(This,overhangs) (This)->lpVtbl->GetOverhangMetrics(This,overhangs)
1340 #define IDWriteTextLayout2_GetClusterMetrics(This,metrics,max_count,act_count) (This)->lpVtbl->GetClusterMetrics(This,metrics,max_count,act_count)
1341 #define IDWriteTextLayout2_DetermineMinWidth(This,min_width) (This)->lpVtbl->DetermineMinWidth(This,min_width)
1342 #define IDWriteTextLayout2_HitTestPoint(This,pointX,pointY,is_trailinghit,is_inside,metrics) (This)->lpVtbl->HitTestPoint(This,pointX,pointY,is_trailinghit,is_inside,metrics)
1343 #define IDWriteTextLayout2_HitTestTextPosition(This,textPosition,is_trailinghit,pointX,pointY,metrics) (This)->lpVtbl->HitTestTextPosition(This,textPosition,is_trailinghit,pointX,pointY,metrics)
1344 #define IDWriteTextLayout2_HitTestTextRange(This,textPosition,textLength,originX,originY,metrics,max_metricscount,actual_metricscount) (This)->lpVtbl->HitTestTextRange(This,textPosition,textLength,originX,originY,metrics,max_metricscount,actual_metricscount)
1345 /*** IDWriteTextLayout1 methods ***/
1346 #define IDWriteTextLayout2_SetPairKerning(This,is_pairkerning_enabled,range) (This)->lpVtbl->SetPairKerning(This,is_pairkerning_enabled,range)
1347 #define IDWriteTextLayout2_GetPairKerning(This,position,is_pairkerning_enabled,range) (This)->lpVtbl->GetPairKerning(This,position,is_pairkerning_enabled,range)
1348 #define IDWriteTextLayout2_SetCharacterSpacing(This,leading_spacing,trailing_spacing,minimum_advance_width,range) (This)->lpVtbl->SetCharacterSpacing(This,leading_spacing,trailing_spacing,minimum_advance_width,range)
1349 #define IDWriteTextLayout2_GetCharacterSpacing(This,position,leading_spacing,trailing_spacing,minimum_advance_width,range) (This)->lpVtbl->GetCharacterSpacing(This,position,leading_spacing,trailing_spacing,minimum_advance_width,range)
1350 /*** IDWriteTextLayout2 methods ***/
1351 #define IDWriteTextLayout2_GetMetrics(This,metrics) (This)->lpVtbl->IDWriteTextLayout2_GetMetrics(This,metrics)
1352 #define IDWriteTextLayout2_SetVerticalGlyphOrientation(This,orientation) (This)->lpVtbl->SetVerticalGlyphOrientation(This,orientation)
1353 #define IDWriteTextLayout2_GetVerticalGlyphOrientation(This) (This)->lpVtbl->GetVerticalGlyphOrientation(This)
1354 #define IDWriteTextLayout2_SetLastLineWrapping(This,lastline_wrapping_enabled) (This)->lpVtbl->SetLastLineWrapping(This,lastline_wrapping_enabled)
1355 #define IDWriteTextLayout2_GetLastLineWrapping(This) (This)->lpVtbl->GetLastLineWrapping(This)
1356 #define IDWriteTextLayout2_SetOpticalAlignment(This,alignment) (This)->lpVtbl->SetOpticalAlignment(This,alignment)
1357 #define IDWriteTextLayout2_GetOpticalAlignment(This) (This)->lpVtbl->GetOpticalAlignment(This)
1358 #define IDWriteTextLayout2_SetFontFallback(This,fallback) (This)->lpVtbl->SetFontFallback(This,fallback)
1359 #define IDWriteTextLayout2_GetFontFallback(This,fallback) (This)->lpVtbl->GetFontFallback(This,fallback)
1360 #else
1361 /*** IUnknown methods ***/
1362 static FORCEINLINE HRESULT IDWriteTextLayout2_QueryInterface(IDWriteTextLayout2* This,REFIID riid,void **ppvObject) {
1363     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1364 }
1365 static FORCEINLINE ULONG IDWriteTextLayout2_AddRef(IDWriteTextLayout2* This) {
1366     return This->lpVtbl->AddRef(This);
1367 }
1368 static FORCEINLINE ULONG IDWriteTextLayout2_Release(IDWriteTextLayout2* This) {
1369     return This->lpVtbl->Release(This);
1370 }
1371 /*** IDWriteTextFormat methods ***/
1372 static FORCEINLINE HRESULT IDWriteTextLayout2_SetTextAlignment(IDWriteTextLayout2* This,DWRITE_TEXT_ALIGNMENT alignment) {
1373     return This->lpVtbl->SetTextAlignment(This,alignment);
1374 }
1375 static FORCEINLINE HRESULT IDWriteTextLayout2_SetParagraphAlignment(IDWriteTextLayout2* This,DWRITE_PARAGRAPH_ALIGNMENT alignment) {
1376     return This->lpVtbl->SetParagraphAlignment(This,alignment);
1377 }
1378 static FORCEINLINE HRESULT IDWriteTextLayout2_SetWordWrapping(IDWriteTextLayout2* This,DWRITE_WORD_WRAPPING wrapping) {
1379     return This->lpVtbl->SetWordWrapping(This,wrapping);
1380 }
1381 static FORCEINLINE HRESULT IDWriteTextLayout2_SetReadingDirection(IDWriteTextLayout2* This,DWRITE_READING_DIRECTION direction) {
1382     return This->lpVtbl->SetReadingDirection(This,direction);
1383 }
1384 static FORCEINLINE HRESULT IDWriteTextLayout2_SetFlowDirection(IDWriteTextLayout2* This,DWRITE_FLOW_DIRECTION direction) {
1385     return This->lpVtbl->SetFlowDirection(This,direction);
1386 }
1387 static FORCEINLINE HRESULT IDWriteTextLayout2_SetIncrementalTabStop(IDWriteTextLayout2* This,FLOAT tabstop) {
1388     return This->lpVtbl->SetIncrementalTabStop(This,tabstop);
1389 }
1390 static FORCEINLINE HRESULT IDWriteTextLayout2_SetTrimming(IDWriteTextLayout2* This,const DWRITE_TRIMMING *trimming,IDWriteInlineObject *trimming_sign) {
1391     return This->lpVtbl->SetTrimming(This,trimming,trimming_sign);
1392 }
1393 static FORCEINLINE HRESULT IDWriteTextLayout2_SetLineSpacing(IDWriteTextLayout2* This,DWRITE_LINE_SPACING_METHOD spacing,FLOAT line_spacing,FLOAT baseline) {
1394     return This->lpVtbl->SetLineSpacing(This,spacing,line_spacing,baseline);
1395 }
1396 static FORCEINLINE DWRITE_TEXT_ALIGNMENT IDWriteTextLayout2_GetTextAlignment(IDWriteTextLayout2* This) {
1397     return This->lpVtbl->GetTextAlignment(This);
1398 }
1399 static FORCEINLINE DWRITE_PARAGRAPH_ALIGNMENT IDWriteTextLayout2_GetParagraphAlignment(IDWriteTextLayout2* This) {
1400     return This->lpVtbl->GetParagraphAlignment(This);
1401 }
1402 static FORCEINLINE DWRITE_WORD_WRAPPING IDWriteTextLayout2_GetWordWrapping(IDWriteTextLayout2* This) {
1403     return This->lpVtbl->GetWordWrapping(This);
1404 }
1405 static FORCEINLINE DWRITE_READING_DIRECTION IDWriteTextLayout2_GetReadingDirection(IDWriteTextLayout2* This) {
1406     return This->lpVtbl->GetReadingDirection(This);
1407 }
1408 static FORCEINLINE DWRITE_FLOW_DIRECTION IDWriteTextLayout2_GetFlowDirection(IDWriteTextLayout2* This) {
1409     return This->lpVtbl->GetFlowDirection(This);
1410 }
1411 static FORCEINLINE FLOAT IDWriteTextLayout2_GetIncrementalTabStop(IDWriteTextLayout2* This) {
1412     return This->lpVtbl->GetIncrementalTabStop(This);
1413 }
1414 static FORCEINLINE HRESULT IDWriteTextLayout2_GetTrimming(IDWriteTextLayout2* This,DWRITE_TRIMMING *options,IDWriteInlineObject **trimming_sign) {
1415     return This->lpVtbl->GetTrimming(This,options,trimming_sign);
1416 }
1417 static FORCEINLINE HRESULT IDWriteTextLayout2_GetLineSpacing(IDWriteTextLayout2* This,DWRITE_LINE_SPACING_METHOD *method,FLOAT *spacing,FLOAT *baseline) {
1418     return This->lpVtbl->GetLineSpacing(This,method,spacing,baseline);
1419 }
1420 /*** IDWriteTextLayout methods ***/
1421 static FORCEINLINE HRESULT IDWriteTextLayout2_SetMaxWidth(IDWriteTextLayout2* This,FLOAT maxWidth) {
1422     return This->lpVtbl->SetMaxWidth(This,maxWidth);
1423 }
1424 static FORCEINLINE HRESULT IDWriteTextLayout2_SetMaxHeight(IDWriteTextLayout2* This,FLOAT maxHeight) {
1425     return This->lpVtbl->SetMaxHeight(This,maxHeight);
1426 }
1427 static FORCEINLINE HRESULT IDWriteTextLayout2_SetFontCollection(IDWriteTextLayout2* This,IDWriteFontCollection *collection,DWRITE_TEXT_RANGE range) {
1428     return This->lpVtbl->SetFontCollection(This,collection,range);
1429 }
1430 static FORCEINLINE HRESULT IDWriteTextLayout2_SetFontFamilyName(IDWriteTextLayout2* This,const WCHAR *name,DWRITE_TEXT_RANGE range) {
1431     return This->lpVtbl->SetFontFamilyName(This,name,range);
1432 }
1433 static FORCEINLINE HRESULT IDWriteTextLayout2_SetFontWeight(IDWriteTextLayout2* This,DWRITE_FONT_WEIGHT weight,DWRITE_TEXT_RANGE range) {
1434     return This->lpVtbl->SetFontWeight(This,weight,range);
1435 }
1436 static FORCEINLINE HRESULT IDWriteTextLayout2_SetFontStyle(IDWriteTextLayout2* This,DWRITE_FONT_STYLE style,DWRITE_TEXT_RANGE range) {
1437     return This->lpVtbl->SetFontStyle(This,style,range);
1438 }
1439 static FORCEINLINE HRESULT IDWriteTextLayout2_SetFontStretch(IDWriteTextLayout2* This,DWRITE_FONT_STRETCH stretch,DWRITE_TEXT_RANGE range) {
1440     return This->lpVtbl->SetFontStretch(This,stretch,range);
1441 }
1442 static FORCEINLINE HRESULT IDWriteTextLayout2_SetFontSize(IDWriteTextLayout2* This,FLOAT size,DWRITE_TEXT_RANGE range) {
1443     return This->lpVtbl->SetFontSize(This,size,range);
1444 }
1445 static FORCEINLINE HRESULT IDWriteTextLayout2_SetUnderline(IDWriteTextLayout2* This,WINBOOL underline,DWRITE_TEXT_RANGE range) {
1446     return This->lpVtbl->SetUnderline(This,underline,range);
1447 }
1448 static FORCEINLINE HRESULT IDWriteTextLayout2_SetStrikethrough(IDWriteTextLayout2* This,WINBOOL strikethrough,DWRITE_TEXT_RANGE range) {
1449     return This->lpVtbl->SetStrikethrough(This,strikethrough,range);
1450 }
1451 static FORCEINLINE HRESULT IDWriteTextLayout2_SetDrawingEffect(IDWriteTextLayout2* This,IUnknown *effect,DWRITE_TEXT_RANGE range) {
1452     return This->lpVtbl->SetDrawingEffect(This,effect,range);
1453 }
1454 static FORCEINLINE HRESULT IDWriteTextLayout2_SetInlineObject(IDWriteTextLayout2* This,IDWriteInlineObject *object,DWRITE_TEXT_RANGE range) {
1455     return This->lpVtbl->SetInlineObject(This,object,range);
1456 }
1457 static FORCEINLINE HRESULT IDWriteTextLayout2_SetTypography(IDWriteTextLayout2* This,IDWriteTypography *typography,DWRITE_TEXT_RANGE range) {
1458     return This->lpVtbl->SetTypography(This,typography,range);
1459 }
1460 static FORCEINLINE HRESULT IDWriteTextLayout2_SetLocaleName(IDWriteTextLayout2* This,const WCHAR *locale,DWRITE_TEXT_RANGE range) {
1461     return This->lpVtbl->SetLocaleName(This,locale,range);
1462 }
1463 static FORCEINLINE FLOAT IDWriteTextLayout2_GetMaxWidth(IDWriteTextLayout2* This) {
1464     return This->lpVtbl->GetMaxWidth(This);
1465 }
1466 static FORCEINLINE FLOAT IDWriteTextLayout2_GetMaxHeight(IDWriteTextLayout2* This) {
1467     return This->lpVtbl->GetMaxHeight(This);
1468 }
1469 static FORCEINLINE HRESULT IDWriteTextLayout2_GetFontCollection(IDWriteTextLayout2* This,UINT32 pos,IDWriteFontCollection **collection,DWRITE_TEXT_RANGE *range) {
1470     return This->lpVtbl->IDWriteTextLayout_GetFontCollection(This,pos,collection,range);
1471 }
1472 static FORCEINLINE HRESULT IDWriteTextLayout2_GetFontFamilyNameLength(IDWriteTextLayout2* This,UINT32 pos,UINT32 *len,DWRITE_TEXT_RANGE *range) {
1473     return This->lpVtbl->IDWriteTextLayout_GetFontFamilyNameLength(This,pos,len,range);
1474 }
1475 static FORCEINLINE HRESULT IDWriteTextLayout2_GetFontFamilyName(IDWriteTextLayout2* This,UINT32 position,WCHAR *name,UINT32 name_size,DWRITE_TEXT_RANGE *range) {
1476     return This->lpVtbl->IDWriteTextLayout_GetFontFamilyName(This,position,name,name_size,range);
1477 }
1478 static FORCEINLINE HRESULT IDWriteTextLayout2_GetFontWeight(IDWriteTextLayout2* This,UINT32 position,DWRITE_FONT_WEIGHT *weight,DWRITE_TEXT_RANGE *range) {
1479     return This->lpVtbl->IDWriteTextLayout_GetFontWeight(This,position,weight,range);
1480 }
1481 static FORCEINLINE HRESULT IDWriteTextLayout2_GetFontStyle(IDWriteTextLayout2* This,UINT32 currentPosition,DWRITE_FONT_STYLE *style,DWRITE_TEXT_RANGE *range) {
1482     return This->lpVtbl->IDWriteTextLayout_GetFontStyle(This,currentPosition,style,range);
1483 }
1484 static FORCEINLINE HRESULT IDWriteTextLayout2_GetFontStretch(IDWriteTextLayout2* This,UINT32 position,DWRITE_FONT_STRETCH *stretch,DWRITE_TEXT_RANGE *range) {
1485     return This->lpVtbl->IDWriteTextLayout_GetFontStretch(This,position,stretch,range);
1486 }
1487 static FORCEINLINE HRESULT IDWriteTextLayout2_GetFontSize(IDWriteTextLayout2* This,UINT32 position,FLOAT *size,DWRITE_TEXT_RANGE *range) {
1488     return This->lpVtbl->IDWriteTextLayout_GetFontSize(This,position,size,range);
1489 }
1490 static FORCEINLINE HRESULT IDWriteTextLayout2_GetUnderline(IDWriteTextLayout2* This,UINT32 position,WINBOOL *has_underline,DWRITE_TEXT_RANGE *range) {
1491     return This->lpVtbl->GetUnderline(This,position,has_underline,range);
1492 }
1493 static FORCEINLINE HRESULT IDWriteTextLayout2_GetStrikethrough(IDWriteTextLayout2* This,UINT32 position,WINBOOL *has_strikethrough,DWRITE_TEXT_RANGE *range) {
1494     return This->lpVtbl->GetStrikethrough(This,position,has_strikethrough,range);
1495 }
1496 static FORCEINLINE HRESULT IDWriteTextLayout2_GetDrawingEffect(IDWriteTextLayout2* This,UINT32 position,IUnknown **effect,DWRITE_TEXT_RANGE *range) {
1497     return This->lpVtbl->GetDrawingEffect(This,position,effect,range);
1498 }
1499 static FORCEINLINE HRESULT IDWriteTextLayout2_GetInlineObject(IDWriteTextLayout2* This,UINT32 position,IDWriteInlineObject **object,DWRITE_TEXT_RANGE *range) {
1500     return This->lpVtbl->GetInlineObject(This,position,object,range);
1501 }
1502 static FORCEINLINE HRESULT IDWriteTextLayout2_GetTypography(IDWriteTextLayout2* This,UINT32 position,IDWriteTypography **typography,DWRITE_TEXT_RANGE *range) {
1503     return This->lpVtbl->GetTypography(This,position,typography,range);
1504 }
1505 static FORCEINLINE HRESULT IDWriteTextLayout2_GetLocaleNameLength(IDWriteTextLayout2* This,UINT32 position,UINT32 *length,DWRITE_TEXT_RANGE *range) {
1506     return This->lpVtbl->IDWriteTextLayout_GetLocaleNameLength(This,position,length,range);
1507 }
1508 static FORCEINLINE HRESULT IDWriteTextLayout2_GetLocaleName(IDWriteTextLayout2* This,UINT32 position,WCHAR *name,UINT32 name_size,DWRITE_TEXT_RANGE *range) {
1509     return This->lpVtbl->IDWriteTextLayout_GetLocaleName(This,position,name,name_size,range);
1510 }
1511 static FORCEINLINE HRESULT IDWriteTextLayout2_Draw(IDWriteTextLayout2* This,void *context,IDWriteTextRenderer *renderer,FLOAT originX,FLOAT originY) {
1512     return This->lpVtbl->Draw(This,context,renderer,originX,originY);
1513 }
1514 static FORCEINLINE HRESULT IDWriteTextLayout2_GetLineMetrics(IDWriteTextLayout2* This,DWRITE_LINE_METRICS *metrics,UINT32 max_count,UINT32 *actual_count) {
1515     return This->lpVtbl->GetLineMetrics(This,metrics,max_count,actual_count);
1516 }
1517 static FORCEINLINE HRESULT IDWriteTextLayout2_GetOverhangMetrics(IDWriteTextLayout2* This,DWRITE_OVERHANG_METRICS *overhangs) {
1518     return This->lpVtbl->GetOverhangMetrics(This,overhangs);
1519 }
1520 static FORCEINLINE HRESULT IDWriteTextLayout2_GetClusterMetrics(IDWriteTextLayout2* This,DWRITE_CLUSTER_METRICS *metrics,UINT32 max_count,UINT32 *act_count) {
1521     return This->lpVtbl->GetClusterMetrics(This,metrics,max_count,act_count);
1522 }
1523 static FORCEINLINE HRESULT IDWriteTextLayout2_DetermineMinWidth(IDWriteTextLayout2* This,FLOAT *min_width) {
1524     return This->lpVtbl->DetermineMinWidth(This,min_width);
1525 }
1526 static FORCEINLINE HRESULT IDWriteTextLayout2_HitTestPoint(IDWriteTextLayout2* This,FLOAT pointX,FLOAT pointY,WINBOOL *is_trailinghit,WINBOOL *is_inside,DWRITE_HIT_TEST_METRICS *metrics) {
1527     return This->lpVtbl->HitTestPoint(This,pointX,pointY,is_trailinghit,is_inside,metrics);
1528 }
1529 static FORCEINLINE HRESULT IDWriteTextLayout2_HitTestTextPosition(IDWriteTextLayout2* This,UINT32 textPosition,WINBOOL is_trailinghit,FLOAT *pointX,FLOAT *pointY,DWRITE_HIT_TEST_METRICS *metrics) {
1530     return This->lpVtbl->HitTestTextPosition(This,textPosition,is_trailinghit,pointX,pointY,metrics);
1531 }
1532 static FORCEINLINE HRESULT IDWriteTextLayout2_HitTestTextRange(IDWriteTextLayout2* This,UINT32 textPosition,UINT32 textLength,FLOAT originX,FLOAT originY,DWRITE_HIT_TEST_METRICS *metrics,UINT32 max_metricscount,UINT32 *actual_metricscount) {
1533     return This->lpVtbl->HitTestTextRange(This,textPosition,textLength,originX,originY,metrics,max_metricscount,actual_metricscount);
1534 }
1535 /*** IDWriteTextLayout1 methods ***/
1536 static FORCEINLINE HRESULT IDWriteTextLayout2_SetPairKerning(IDWriteTextLayout2* This,WINBOOL is_pairkerning_enabled,DWRITE_TEXT_RANGE range) {
1537     return This->lpVtbl->SetPairKerning(This,is_pairkerning_enabled,range);
1538 }
1539 static FORCEINLINE HRESULT IDWriteTextLayout2_GetPairKerning(IDWriteTextLayout2* This,UINT32 position,WINBOOL *is_pairkerning_enabled,DWRITE_TEXT_RANGE *range) {
1540     return This->lpVtbl->GetPairKerning(This,position,is_pairkerning_enabled,range);
1541 }
1542 static FORCEINLINE HRESULT IDWriteTextLayout2_SetCharacterSpacing(IDWriteTextLayout2* This,FLOAT leading_spacing,FLOAT trailing_spacing,FLOAT minimum_advance_width,DWRITE_TEXT_RANGE range) {
1543     return This->lpVtbl->SetCharacterSpacing(This,leading_spacing,trailing_spacing,minimum_advance_width,range);
1544 }
1545 static FORCEINLINE HRESULT IDWriteTextLayout2_GetCharacterSpacing(IDWriteTextLayout2* This,UINT32 position,FLOAT *leading_spacing,FLOAT *trailing_spacing,FLOAT *minimum_advance_width,DWRITE_TEXT_RANGE *range) {
1546     return This->lpVtbl->GetCharacterSpacing(This,position,leading_spacing,trailing_spacing,minimum_advance_width,range);
1547 }
1548 /*** IDWriteTextLayout2 methods ***/
1549 static FORCEINLINE HRESULT IDWriteTextLayout2_GetMetrics(IDWriteTextLayout2* This,DWRITE_TEXT_METRICS1 *metrics) {
1550     return This->lpVtbl->IDWriteTextLayout2_GetMetrics(This,metrics);
1551 }
1552 static FORCEINLINE HRESULT IDWriteTextLayout2_SetVerticalGlyphOrientation(IDWriteTextLayout2* This,DWRITE_VERTICAL_GLYPH_ORIENTATION orientation) {
1553     return This->lpVtbl->SetVerticalGlyphOrientation(This,orientation);
1554 }
1555 static FORCEINLINE DWRITE_VERTICAL_GLYPH_ORIENTATION IDWriteTextLayout2_GetVerticalGlyphOrientation(IDWriteTextLayout2* This) {
1556     return This->lpVtbl->GetVerticalGlyphOrientation(This);
1557 }
1558 static FORCEINLINE HRESULT IDWriteTextLayout2_SetLastLineWrapping(IDWriteTextLayout2* This,WINBOOL lastline_wrapping_enabled) {
1559     return This->lpVtbl->SetLastLineWrapping(This,lastline_wrapping_enabled);
1560 }
1561 static FORCEINLINE WINBOOL IDWriteTextLayout2_GetLastLineWrapping(IDWriteTextLayout2* This) {
1562     return This->lpVtbl->GetLastLineWrapping(This);
1563 }
1564 static FORCEINLINE HRESULT IDWriteTextLayout2_SetOpticalAlignment(IDWriteTextLayout2* This,DWRITE_OPTICAL_ALIGNMENT alignment) {
1565     return This->lpVtbl->SetOpticalAlignment(This,alignment);
1566 }
1567 static FORCEINLINE DWRITE_OPTICAL_ALIGNMENT IDWriteTextLayout2_GetOpticalAlignment(IDWriteTextLayout2* This) {
1568     return This->lpVtbl->GetOpticalAlignment(This);
1569 }
1570 static FORCEINLINE HRESULT IDWriteTextLayout2_SetFontFallback(IDWriteTextLayout2* This,IDWriteFontFallback *fallback) {
1571     return This->lpVtbl->SetFontFallback(This,fallback);
1572 }
1573 static FORCEINLINE HRESULT IDWriteTextLayout2_GetFontFallback(IDWriteTextLayout2* This,IDWriteFontFallback **fallback) {
1574     return This->lpVtbl->GetFontFallback(This,fallback);
1575 }
1576 #endif
1577 #endif
1578 
1579 #endif
1580 
1581 
1582 #endif  /* __IDWriteTextLayout2_INTERFACE_DEFINED__ */
1583 
1584 /*****************************************************************************
1585  * IDWriteTextAnalyzer2 interface
1586  */
1587 #ifndef __IDWriteTextAnalyzer2_INTERFACE_DEFINED__
1588 #define __IDWriteTextAnalyzer2_INTERFACE_DEFINED__
1589 
1590 DEFINE_GUID(IID_IDWriteTextAnalyzer2, 0x553a9ff3, 0x5693, 0x4df7, 0xb5,0x2b, 0x74,0x80,0x6f,0x7f,0x2e,0xb9);
1591 #if defined(__cplusplus) && !defined(CINTERFACE)
1592 MIDL_INTERFACE("553a9ff3-5693-4df7-b52b-74806f7f2eb9")
1593 IDWriteTextAnalyzer2 : public IDWriteTextAnalyzer1
1594 {
1595     virtual HRESULT STDMETHODCALLTYPE GetGlyphOrientationTransform(
1596         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
1597         WINBOOL is_sideways,
1598         FLOAT originX,
1599         FLOAT originY,
1600         DWRITE_MATRIX *transform) = 0;
1601 
1602     virtual HRESULT STDMETHODCALLTYPE GetTypographicFeatures(
1603         IDWriteFontFace *fontface,
1604         DWRITE_SCRIPT_ANALYSIS analysis,
1605         const WCHAR *localeName,
1606         UINT32 max_tagcount,
1607         UINT32 *actual_tagcount,
1608         DWRITE_FONT_FEATURE_TAG *tags) = 0;
1609 
1610     virtual HRESULT STDMETHODCALLTYPE CheckTypographicFeature(
1611         IDWriteFontFace *fontface,
1612         DWRITE_SCRIPT_ANALYSIS analysis,
1613         const WCHAR *localeName,
1614         DWRITE_FONT_FEATURE_TAG feature,
1615         UINT32 glyph_count,
1616         const UINT16 *indices,
1617         UINT8 *feature_applies) = 0;
1618 
1619 };
1620 #ifdef __CRT_UUID_DECL
1621 __CRT_UUID_DECL(IDWriteTextAnalyzer2, 0x553a9ff3, 0x5693, 0x4df7, 0xb5,0x2b, 0x74,0x80,0x6f,0x7f,0x2e,0xb9)
1622 #endif
1623 #else
1624 typedef struct IDWriteTextAnalyzer2Vtbl {
1625     BEGIN_INTERFACE
1626 
1627     /*** IUnknown methods ***/
1628     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1629         IDWriteTextAnalyzer2 *This,
1630         REFIID riid,
1631         void **ppvObject);
1632 
1633     ULONG (STDMETHODCALLTYPE *AddRef)(
1634         IDWriteTextAnalyzer2 *This);
1635 
1636     ULONG (STDMETHODCALLTYPE *Release)(
1637         IDWriteTextAnalyzer2 *This);
1638 
1639     /*** IDWriteTextAnalyzer methods ***/
1640     HRESULT (STDMETHODCALLTYPE *AnalyzeScript)(
1641         IDWriteTextAnalyzer2 *This,
1642         IDWriteTextAnalysisSource *source,
1643         UINT32 position,
1644         UINT32 length,
1645         IDWriteTextAnalysisSink *sink);
1646 
1647     HRESULT (STDMETHODCALLTYPE *AnalyzeBidi)(
1648         IDWriteTextAnalyzer2 *This,
1649         IDWriteTextAnalysisSource *source,
1650         UINT32 position,
1651         UINT32 length,
1652         IDWriteTextAnalysisSink *sink);
1653 
1654     HRESULT (STDMETHODCALLTYPE *AnalyzeNumberSubstitution)(
1655         IDWriteTextAnalyzer2 *This,
1656         IDWriteTextAnalysisSource *source,
1657         UINT32 position,
1658         UINT32 length,
1659         IDWriteTextAnalysisSink *sink);
1660 
1661     HRESULT (STDMETHODCALLTYPE *AnalyzeLineBreakpoints)(
1662         IDWriteTextAnalyzer2 *This,
1663         IDWriteTextAnalysisSource *source,
1664         UINT32 position,
1665         UINT32 length,
1666         IDWriteTextAnalysisSink *sink);
1667 
1668     HRESULT (STDMETHODCALLTYPE *GetGlyphs)(
1669         IDWriteTextAnalyzer2 *This,
1670         const WCHAR *text,
1671         UINT32 length,
1672         IDWriteFontFace *font_face,
1673         WINBOOL is_sideways,
1674         WINBOOL is_rtl,
1675         const DWRITE_SCRIPT_ANALYSIS *analysis,
1676         const WCHAR *locale,
1677         IDWriteNumberSubstitution *substitution,
1678         const DWRITE_TYPOGRAPHIC_FEATURES **features,
1679         const UINT32 *feature_range_len,
1680         UINT32 feature_ranges,
1681         UINT32 max_glyph_count,
1682         UINT16 *clustermap,
1683         DWRITE_SHAPING_TEXT_PROPERTIES *text_props,
1684         UINT16 *glyph_indices,
1685         DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,
1686         UINT32 *actual_glyph_count);
1687 
1688     HRESULT (STDMETHODCALLTYPE *GetGlyphPlacements)(
1689         IDWriteTextAnalyzer2 *This,
1690         const WCHAR *text,
1691         const UINT16 *clustermap,
1692         DWRITE_SHAPING_TEXT_PROPERTIES *props,
1693         UINT32 text_len,
1694         const UINT16 *glyph_indices,
1695         const DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,
1696         UINT32 glyph_count,
1697         IDWriteFontFace *font_face,
1698         FLOAT fontEmSize,
1699         WINBOOL is_sideways,
1700         WINBOOL is_rtl,
1701         const DWRITE_SCRIPT_ANALYSIS *analysis,
1702         const WCHAR *locale,
1703         const DWRITE_TYPOGRAPHIC_FEATURES **features,
1704         const UINT32 *feature_range_len,
1705         UINT32 feature_ranges,
1706         FLOAT *glyph_advances,
1707         DWRITE_GLYPH_OFFSET *glyph_offsets);
1708 
1709     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleGlyphPlacements)(
1710         IDWriteTextAnalyzer2 *This,
1711         const WCHAR *text,
1712         const UINT16 *clustermap,
1713         DWRITE_SHAPING_TEXT_PROPERTIES *props,
1714         UINT32 text_len,
1715         const UINT16 *glyph_indices,
1716         const DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,
1717         UINT32 glyph_count,
1718         IDWriteFontFace *font_face,
1719         FLOAT fontEmSize,
1720         FLOAT pixels_per_dip,
1721         const DWRITE_MATRIX *transform,
1722         WINBOOL use_gdi_natural,
1723         WINBOOL is_sideways,
1724         WINBOOL is_rtl,
1725         const DWRITE_SCRIPT_ANALYSIS *analysis,
1726         const WCHAR *locale,
1727         const DWRITE_TYPOGRAPHIC_FEATURES **features,
1728         const UINT32 *feature_range_lengths,
1729         UINT32 feature_ranges,
1730         FLOAT *glyph_advances,
1731         DWRITE_GLYPH_OFFSET *glyph_offsets);
1732 
1733     /*** IDWriteTextAnalyzer1 methods ***/
1734     HRESULT (STDMETHODCALLTYPE *ApplyCharacterSpacing)(
1735         IDWriteTextAnalyzer2 *This,
1736         FLOAT leading_spacing,
1737         FLOAT trailing_spacing,
1738         FLOAT min_advance_width,
1739         UINT32 len,
1740         UINT32 glyph_count,
1741         const UINT16 *clustermap,
1742         const FLOAT *advances,
1743         const DWRITE_GLYPH_OFFSET *offsets,
1744         const DWRITE_SHAPING_GLYPH_PROPERTIES *props,
1745         FLOAT *modified_advances,
1746         DWRITE_GLYPH_OFFSET *modified_offsets);
1747 
1748     HRESULT (STDMETHODCALLTYPE *GetBaseline)(
1749         IDWriteTextAnalyzer2 *This,
1750         IDWriteFontFace *face,
1751         DWRITE_BASELINE baseline,
1752         WINBOOL vertical,
1753         WINBOOL is_simulation_allowed,
1754         DWRITE_SCRIPT_ANALYSIS sa,
1755         const WCHAR *localeName,
1756         INT32 *baseline_coord,
1757         WINBOOL *exists);
1758 
1759     HRESULT (STDMETHODCALLTYPE *AnalyzeVerticalGlyphOrientation)(
1760         IDWriteTextAnalyzer2 *This,
1761         IDWriteTextAnalysisSource1 *source,
1762         UINT32 text_pos,
1763         UINT32 len,
1764         IDWriteTextAnalysisSink1 *sink);
1765 
1766     HRESULT (STDMETHODCALLTYPE *GetGlyphOrientationTransform)(
1767         IDWriteTextAnalyzer2 *This,
1768         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
1769         WINBOOL is_sideways,
1770         DWRITE_MATRIX *transform);
1771 
1772     HRESULT (STDMETHODCALLTYPE *GetScriptProperties)(
1773         IDWriteTextAnalyzer2 *This,
1774         DWRITE_SCRIPT_ANALYSIS sa,
1775         DWRITE_SCRIPT_PROPERTIES *props);
1776 
1777     HRESULT (STDMETHODCALLTYPE *GetTextComplexity)(
1778         IDWriteTextAnalyzer2 *This,
1779         const WCHAR *text,
1780         UINT32 len,
1781         IDWriteFontFace *face,
1782         WINBOOL *is_simple,
1783         UINT32 *len_read,
1784         UINT16 *indices);
1785 
1786     HRESULT (STDMETHODCALLTYPE *GetJustificationOpportunities)(
1787         IDWriteTextAnalyzer2 *This,
1788         IDWriteFontFace *face,
1789         FLOAT font_em_size,
1790         DWRITE_SCRIPT_ANALYSIS sa,
1791         UINT32 length,
1792         UINT32 glyph_count,
1793         const WCHAR *text,
1794         const UINT16 *clustermap,
1795         const DWRITE_SHAPING_GLYPH_PROPERTIES *prop,
1796         DWRITE_JUSTIFICATION_OPPORTUNITY *jo);
1797 
1798     HRESULT (STDMETHODCALLTYPE *JustifyGlyphAdvances)(
1799         IDWriteTextAnalyzer2 *This,
1800         FLOAT width,
1801         UINT32 glyph_count,
1802         const DWRITE_JUSTIFICATION_OPPORTUNITY *jo,
1803         const FLOAT *advances,
1804         const DWRITE_GLYPH_OFFSET *offsets,
1805         FLOAT *justifiedadvances,
1806         DWRITE_GLYPH_OFFSET *justifiedoffsets);
1807 
1808     HRESULT (STDMETHODCALLTYPE *GetJustifiedGlyphs)(
1809         IDWriteTextAnalyzer2 *This,
1810         IDWriteFontFace *face,
1811         FLOAT font_em_size,
1812         DWRITE_SCRIPT_ANALYSIS sa,
1813         UINT32 length,
1814         UINT32 glyph_count,
1815         UINT32 max_glyphcount,
1816         const UINT16 *clustermap,
1817         const UINT16 *indices,
1818         const FLOAT *advances,
1819         const FLOAT *justifiedadvances,
1820         const DWRITE_GLYPH_OFFSET *justifiedoffsets,
1821         const DWRITE_SHAPING_GLYPH_PROPERTIES *prop,
1822         UINT32 *actual_count,
1823         UINT16 *modified_clustermap,
1824         UINT16 *modified_indices,
1825         FLOAT *modified_advances,
1826         DWRITE_GLYPH_OFFSET *modified_offsets);
1827 
1828     /*** IDWriteTextAnalyzer2 methods ***/
1829     HRESULT (STDMETHODCALLTYPE *IDWriteTextAnalyzer2_GetGlyphOrientationTransform)(
1830         IDWriteTextAnalyzer2 *This,
1831         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
1832         WINBOOL is_sideways,
1833         FLOAT originX,
1834         FLOAT originY,
1835         DWRITE_MATRIX *transform);
1836 
1837     HRESULT (STDMETHODCALLTYPE *GetTypographicFeatures)(
1838         IDWriteTextAnalyzer2 *This,
1839         IDWriteFontFace *fontface,
1840         DWRITE_SCRIPT_ANALYSIS analysis,
1841         const WCHAR *localeName,
1842         UINT32 max_tagcount,
1843         UINT32 *actual_tagcount,
1844         DWRITE_FONT_FEATURE_TAG *tags);
1845 
1846     HRESULT (STDMETHODCALLTYPE *CheckTypographicFeature)(
1847         IDWriteTextAnalyzer2 *This,
1848         IDWriteFontFace *fontface,
1849         DWRITE_SCRIPT_ANALYSIS analysis,
1850         const WCHAR *localeName,
1851         DWRITE_FONT_FEATURE_TAG feature,
1852         UINT32 glyph_count,
1853         const UINT16 *indices,
1854         UINT8 *feature_applies);
1855 
1856     END_INTERFACE
1857 } IDWriteTextAnalyzer2Vtbl;
1858 
1859 interface IDWriteTextAnalyzer2 {
1860     CONST_VTBL IDWriteTextAnalyzer2Vtbl* lpVtbl;
1861 };
1862 
1863 #ifdef COBJMACROS
1864 #ifndef WIDL_C_INLINE_WRAPPERS
1865 /*** IUnknown methods ***/
1866 #define IDWriteTextAnalyzer2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1867 #define IDWriteTextAnalyzer2_AddRef(This) (This)->lpVtbl->AddRef(This)
1868 #define IDWriteTextAnalyzer2_Release(This) (This)->lpVtbl->Release(This)
1869 /*** IDWriteTextAnalyzer methods ***/
1870 #define IDWriteTextAnalyzer2_AnalyzeScript(This,source,position,length,sink) (This)->lpVtbl->AnalyzeScript(This,source,position,length,sink)
1871 #define IDWriteTextAnalyzer2_AnalyzeBidi(This,source,position,length,sink) (This)->lpVtbl->AnalyzeBidi(This,source,position,length,sink)
1872 #define IDWriteTextAnalyzer2_AnalyzeNumberSubstitution(This,source,position,length,sink) (This)->lpVtbl->AnalyzeNumberSubstitution(This,source,position,length,sink)
1873 #define IDWriteTextAnalyzer2_AnalyzeLineBreakpoints(This,source,position,length,sink) (This)->lpVtbl->AnalyzeLineBreakpoints(This,source,position,length,sink)
1874 #define IDWriteTextAnalyzer2_GetGlyphs(This,text,length,font_face,is_sideways,is_rtl,analysis,locale,substitution,features,feature_range_len,feature_ranges,max_glyph_count,clustermap,text_props,glyph_indices,glyph_props,actual_glyph_count) (This)->lpVtbl->GetGlyphs(This,text,length,font_face,is_sideways,is_rtl,analysis,locale,substitution,features,feature_range_len,feature_ranges,max_glyph_count,clustermap,text_props,glyph_indices,glyph_props,actual_glyph_count)
1875 #define IDWriteTextAnalyzer2_GetGlyphPlacements(This,text,clustermap,props,text_len,glyph_indices,glyph_props,glyph_count,font_face,fontEmSize,is_sideways,is_rtl,analysis,locale,features,feature_range_len,feature_ranges,glyph_advances,glyph_offsets) (This)->lpVtbl->GetGlyphPlacements(This,text,clustermap,props,text_len,glyph_indices,glyph_props,glyph_count,font_face,fontEmSize,is_sideways,is_rtl,analysis,locale,features,feature_range_len,feature_ranges,glyph_advances,glyph_offsets)
1876 #define IDWriteTextAnalyzer2_GetGdiCompatibleGlyphPlacements(This,text,clustermap,props,text_len,glyph_indices,glyph_props,glyph_count,font_face,fontEmSize,pixels_per_dip,transform,use_gdi_natural,is_sideways,is_rtl,analysis,locale,features,feature_range_lengths,feature_ranges,glyph_advances,glyph_offsets) (This)->lpVtbl->GetGdiCompatibleGlyphPlacements(This,text,clustermap,props,text_len,glyph_indices,glyph_props,glyph_count,font_face,fontEmSize,pixels_per_dip,transform,use_gdi_natural,is_sideways,is_rtl,analysis,locale,features,feature_range_lengths,feature_ranges,glyph_advances,glyph_offsets)
1877 /*** IDWriteTextAnalyzer1 methods ***/
1878 #define IDWriteTextAnalyzer2_ApplyCharacterSpacing(This,leading_spacing,trailing_spacing,min_advance_width,len,glyph_count,clustermap,advances,offsets,props,modified_advances,modified_offsets) (This)->lpVtbl->ApplyCharacterSpacing(This,leading_spacing,trailing_spacing,min_advance_width,len,glyph_count,clustermap,advances,offsets,props,modified_advances,modified_offsets)
1879 #define IDWriteTextAnalyzer2_GetBaseline(This,face,baseline,vertical,is_simulation_allowed,sa,localeName,baseline_coord,exists) (This)->lpVtbl->GetBaseline(This,face,baseline,vertical,is_simulation_allowed,sa,localeName,baseline_coord,exists)
1880 #define IDWriteTextAnalyzer2_AnalyzeVerticalGlyphOrientation(This,source,text_pos,len,sink) (This)->lpVtbl->AnalyzeVerticalGlyphOrientation(This,source,text_pos,len,sink)
1881 #define IDWriteTextAnalyzer2_GetScriptProperties(This,sa,props) (This)->lpVtbl->GetScriptProperties(This,sa,props)
1882 #define IDWriteTextAnalyzer2_GetTextComplexity(This,text,len,face,is_simple,len_read,indices) (This)->lpVtbl->GetTextComplexity(This,text,len,face,is_simple,len_read,indices)
1883 #define IDWriteTextAnalyzer2_GetJustificationOpportunities(This,face,font_em_size,sa,length,glyph_count,text,clustermap,prop,jo) (This)->lpVtbl->GetJustificationOpportunities(This,face,font_em_size,sa,length,glyph_count,text,clustermap,prop,jo)
1884 #define IDWriteTextAnalyzer2_JustifyGlyphAdvances(This,width,glyph_count,jo,advances,offsets,justifiedadvances,justifiedoffsets) (This)->lpVtbl->JustifyGlyphAdvances(This,width,glyph_count,jo,advances,offsets,justifiedadvances,justifiedoffsets)
1885 #define IDWriteTextAnalyzer2_GetJustifiedGlyphs(This,face,font_em_size,sa,length,glyph_count,max_glyphcount,clustermap,indices,advances,justifiedadvances,justifiedoffsets,prop,actual_count,modified_clustermap,modified_indices,modified_advances,modified_offsets) (This)->lpVtbl->GetJustifiedGlyphs(This,face,font_em_size,sa,length,glyph_count,max_glyphcount,clustermap,indices,advances,justifiedadvances,justifiedoffsets,prop,actual_count,modified_clustermap,modified_indices,modified_advances,modified_offsets)
1886 /*** IDWriteTextAnalyzer2 methods ***/
1887 #define IDWriteTextAnalyzer2_GetGlyphOrientationTransform(This,angle,is_sideways,originX,originY,transform) (This)->lpVtbl->IDWriteTextAnalyzer2_GetGlyphOrientationTransform(This,angle,is_sideways,originX,originY,transform)
1888 #define IDWriteTextAnalyzer2_GetTypographicFeatures(This,fontface,analysis,localeName,max_tagcount,actual_tagcount,tags) (This)->lpVtbl->GetTypographicFeatures(This,fontface,analysis,localeName,max_tagcount,actual_tagcount,tags)
1889 #define IDWriteTextAnalyzer2_CheckTypographicFeature(This,fontface,analysis,localeName,feature,glyph_count,indices,feature_applies) (This)->lpVtbl->CheckTypographicFeature(This,fontface,analysis,localeName,feature,glyph_count,indices,feature_applies)
1890 #else
1891 /*** IUnknown methods ***/
1892 static FORCEINLINE HRESULT IDWriteTextAnalyzer2_QueryInterface(IDWriteTextAnalyzer2* This,REFIID riid,void **ppvObject) {
1893     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1894 }
1895 static FORCEINLINE ULONG IDWriteTextAnalyzer2_AddRef(IDWriteTextAnalyzer2* This) {
1896     return This->lpVtbl->AddRef(This);
1897 }
1898 static FORCEINLINE ULONG IDWriteTextAnalyzer2_Release(IDWriteTextAnalyzer2* This) {
1899     return This->lpVtbl->Release(This);
1900 }
1901 /*** IDWriteTextAnalyzer methods ***/
1902 static FORCEINLINE HRESULT IDWriteTextAnalyzer2_AnalyzeScript(IDWriteTextAnalyzer2* This,IDWriteTextAnalysisSource *source,UINT32 position,UINT32 length,IDWriteTextAnalysisSink *sink) {
1903     return This->lpVtbl->AnalyzeScript(This,source,position,length,sink);
1904 }
1905 static FORCEINLINE HRESULT IDWriteTextAnalyzer2_AnalyzeBidi(IDWriteTextAnalyzer2* This,IDWriteTextAnalysisSource *source,UINT32 position,UINT32 length,IDWriteTextAnalysisSink *sink) {
1906     return This->lpVtbl->AnalyzeBidi(This,source,position,length,sink);
1907 }
1908 static FORCEINLINE HRESULT IDWriteTextAnalyzer2_AnalyzeNumberSubstitution(IDWriteTextAnalyzer2* This,IDWriteTextAnalysisSource *source,UINT32 position,UINT32 length,IDWriteTextAnalysisSink *sink) {
1909     return This->lpVtbl->AnalyzeNumberSubstitution(This,source,position,length,sink);
1910 }
1911 static FORCEINLINE HRESULT IDWriteTextAnalyzer2_AnalyzeLineBreakpoints(IDWriteTextAnalyzer2* This,IDWriteTextAnalysisSource *source,UINT32 position,UINT32 length,IDWriteTextAnalysisSink *sink) {
1912     return This->lpVtbl->AnalyzeLineBreakpoints(This,source,position,length,sink);
1913 }
1914 static FORCEINLINE HRESULT IDWriteTextAnalyzer2_GetGlyphs(IDWriteTextAnalyzer2* This,const WCHAR *text,UINT32 length,IDWriteFontFace *font_face,WINBOOL is_sideways,WINBOOL is_rtl,const DWRITE_SCRIPT_ANALYSIS *analysis,const WCHAR *locale,IDWriteNumberSubstitution *substitution,const DWRITE_TYPOGRAPHIC_FEATURES **features,const UINT32 *feature_range_len,UINT32 feature_ranges,UINT32 max_glyph_count,UINT16 *clustermap,DWRITE_SHAPING_TEXT_PROPERTIES *text_props,UINT16 *glyph_indices,DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,UINT32 *actual_glyph_count) {
1915     return This->lpVtbl->GetGlyphs(This,text,length,font_face,is_sideways,is_rtl,analysis,locale,substitution,features,feature_range_len,feature_ranges,max_glyph_count,clustermap,text_props,glyph_indices,glyph_props,actual_glyph_count);
1916 }
1917 static FORCEINLINE HRESULT IDWriteTextAnalyzer2_GetGlyphPlacements(IDWriteTextAnalyzer2* This,const WCHAR *text,const UINT16 *clustermap,DWRITE_SHAPING_TEXT_PROPERTIES *props,UINT32 text_len,const UINT16 *glyph_indices,const DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,UINT32 glyph_count,IDWriteFontFace *font_face,FLOAT fontEmSize,WINBOOL is_sideways,WINBOOL is_rtl,const DWRITE_SCRIPT_ANALYSIS *analysis,const WCHAR *locale,const DWRITE_TYPOGRAPHIC_FEATURES **features,const UINT32 *feature_range_len,UINT32 feature_ranges,FLOAT *glyph_advances,DWRITE_GLYPH_OFFSET *glyph_offsets) {
1918     return This->lpVtbl->GetGlyphPlacements(This,text,clustermap,props,text_len,glyph_indices,glyph_props,glyph_count,font_face,fontEmSize,is_sideways,is_rtl,analysis,locale,features,feature_range_len,feature_ranges,glyph_advances,glyph_offsets);
1919 }
1920 static FORCEINLINE HRESULT IDWriteTextAnalyzer2_GetGdiCompatibleGlyphPlacements(IDWriteTextAnalyzer2* This,const WCHAR *text,const UINT16 *clustermap,DWRITE_SHAPING_TEXT_PROPERTIES *props,UINT32 text_len,const UINT16 *glyph_indices,const DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,UINT32 glyph_count,IDWriteFontFace *font_face,FLOAT fontEmSize,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,WINBOOL use_gdi_natural,WINBOOL is_sideways,WINBOOL is_rtl,const DWRITE_SCRIPT_ANALYSIS *analysis,const WCHAR *locale,const DWRITE_TYPOGRAPHIC_FEATURES **features,const UINT32 *feature_range_lengths,UINT32 feature_ranges,FLOAT *glyph_advances,DWRITE_GLYPH_OFFSET *glyph_offsets) {
1921     return This->lpVtbl->GetGdiCompatibleGlyphPlacements(This,text,clustermap,props,text_len,glyph_indices,glyph_props,glyph_count,font_face,fontEmSize,pixels_per_dip,transform,use_gdi_natural,is_sideways,is_rtl,analysis,locale,features,feature_range_lengths,feature_ranges,glyph_advances,glyph_offsets);
1922 }
1923 /*** IDWriteTextAnalyzer1 methods ***/
1924 static FORCEINLINE HRESULT IDWriteTextAnalyzer2_ApplyCharacterSpacing(IDWriteTextAnalyzer2* This,FLOAT leading_spacing,FLOAT trailing_spacing,FLOAT min_advance_width,UINT32 len,UINT32 glyph_count,const UINT16 *clustermap,const FLOAT *advances,const DWRITE_GLYPH_OFFSET *offsets,const DWRITE_SHAPING_GLYPH_PROPERTIES *props,FLOAT *modified_advances,DWRITE_GLYPH_OFFSET *modified_offsets) {
1925     return This->lpVtbl->ApplyCharacterSpacing(This,leading_spacing,trailing_spacing,min_advance_width,len,glyph_count,clustermap,advances,offsets,props,modified_advances,modified_offsets);
1926 }
1927 static FORCEINLINE HRESULT IDWriteTextAnalyzer2_GetBaseline(IDWriteTextAnalyzer2* This,IDWriteFontFace *face,DWRITE_BASELINE baseline,WINBOOL vertical,WINBOOL is_simulation_allowed,DWRITE_SCRIPT_ANALYSIS sa,const WCHAR *localeName,INT32 *baseline_coord,WINBOOL *exists) {
1928     return This->lpVtbl->GetBaseline(This,face,baseline,vertical,is_simulation_allowed,sa,localeName,baseline_coord,exists);
1929 }
1930 static FORCEINLINE HRESULT IDWriteTextAnalyzer2_AnalyzeVerticalGlyphOrientation(IDWriteTextAnalyzer2* This,IDWriteTextAnalysisSource1 *source,UINT32 text_pos,UINT32 len,IDWriteTextAnalysisSink1 *sink) {
1931     return This->lpVtbl->AnalyzeVerticalGlyphOrientation(This,source,text_pos,len,sink);
1932 }
1933 static FORCEINLINE HRESULT IDWriteTextAnalyzer2_GetScriptProperties(IDWriteTextAnalyzer2* This,DWRITE_SCRIPT_ANALYSIS sa,DWRITE_SCRIPT_PROPERTIES *props) {
1934     return This->lpVtbl->GetScriptProperties(This,sa,props);
1935 }
1936 static FORCEINLINE HRESULT IDWriteTextAnalyzer2_GetTextComplexity(IDWriteTextAnalyzer2* This,const WCHAR *text,UINT32 len,IDWriteFontFace *face,WINBOOL *is_simple,UINT32 *len_read,UINT16 *indices) {
1937     return This->lpVtbl->GetTextComplexity(This,text,len,face,is_simple,len_read,indices);
1938 }
1939 static FORCEINLINE HRESULT IDWriteTextAnalyzer2_GetJustificationOpportunities(IDWriteTextAnalyzer2* This,IDWriteFontFace *face,FLOAT font_em_size,DWRITE_SCRIPT_ANALYSIS sa,UINT32 length,UINT32 glyph_count,const WCHAR *text,const UINT16 *clustermap,const DWRITE_SHAPING_GLYPH_PROPERTIES *prop,DWRITE_JUSTIFICATION_OPPORTUNITY *jo) {
1940     return This->lpVtbl->GetJustificationOpportunities(This,face,font_em_size,sa,length,glyph_count,text,clustermap,prop,jo);
1941 }
1942 static FORCEINLINE HRESULT IDWriteTextAnalyzer2_JustifyGlyphAdvances(IDWriteTextAnalyzer2* This,FLOAT width,UINT32 glyph_count,const DWRITE_JUSTIFICATION_OPPORTUNITY *jo,const FLOAT *advances,const DWRITE_GLYPH_OFFSET *offsets,FLOAT *justifiedadvances,DWRITE_GLYPH_OFFSET *justifiedoffsets) {
1943     return This->lpVtbl->JustifyGlyphAdvances(This,width,glyph_count,jo,advances,offsets,justifiedadvances,justifiedoffsets);
1944 }
1945 static FORCEINLINE HRESULT IDWriteTextAnalyzer2_GetJustifiedGlyphs(IDWriteTextAnalyzer2* This,IDWriteFontFace *face,FLOAT font_em_size,DWRITE_SCRIPT_ANALYSIS sa,UINT32 length,UINT32 glyph_count,UINT32 max_glyphcount,const UINT16 *clustermap,const UINT16 *indices,const FLOAT *advances,const FLOAT *justifiedadvances,const DWRITE_GLYPH_OFFSET *justifiedoffsets,const DWRITE_SHAPING_GLYPH_PROPERTIES *prop,UINT32 *actual_count,UINT16 *modified_clustermap,UINT16 *modified_indices,FLOAT *modified_advances,DWRITE_GLYPH_OFFSET *modified_offsets) {
1946     return This->lpVtbl->GetJustifiedGlyphs(This,face,font_em_size,sa,length,glyph_count,max_glyphcount,clustermap,indices,advances,justifiedadvances,justifiedoffsets,prop,actual_count,modified_clustermap,modified_indices,modified_advances,modified_offsets);
1947 }
1948 /*** IDWriteTextAnalyzer2 methods ***/
1949 static FORCEINLINE HRESULT IDWriteTextAnalyzer2_GetGlyphOrientationTransform(IDWriteTextAnalyzer2* This,DWRITE_GLYPH_ORIENTATION_ANGLE angle,WINBOOL is_sideways,FLOAT originX,FLOAT originY,DWRITE_MATRIX *transform) {
1950     return This->lpVtbl->IDWriteTextAnalyzer2_GetGlyphOrientationTransform(This,angle,is_sideways,originX,originY,transform);
1951 }
1952 static FORCEINLINE HRESULT IDWriteTextAnalyzer2_GetTypographicFeatures(IDWriteTextAnalyzer2* This,IDWriteFontFace *fontface,DWRITE_SCRIPT_ANALYSIS analysis,const WCHAR *localeName,UINT32 max_tagcount,UINT32 *actual_tagcount,DWRITE_FONT_FEATURE_TAG *tags) {
1953     return This->lpVtbl->GetTypographicFeatures(This,fontface,analysis,localeName,max_tagcount,actual_tagcount,tags);
1954 }
1955 static FORCEINLINE HRESULT IDWriteTextAnalyzer2_CheckTypographicFeature(IDWriteTextAnalyzer2* This,IDWriteFontFace *fontface,DWRITE_SCRIPT_ANALYSIS analysis,const WCHAR *localeName,DWRITE_FONT_FEATURE_TAG feature,UINT32 glyph_count,const UINT16 *indices,UINT8 *feature_applies) {
1956     return This->lpVtbl->CheckTypographicFeature(This,fontface,analysis,localeName,feature,glyph_count,indices,feature_applies);
1957 }
1958 #endif
1959 #endif
1960 
1961 #endif
1962 
1963 
1964 #endif  /* __IDWriteTextAnalyzer2_INTERFACE_DEFINED__ */
1965 
1966 /*****************************************************************************
1967  * IDWriteFontFallbackBuilder interface
1968  */
1969 #ifndef __IDWriteFontFallbackBuilder_INTERFACE_DEFINED__
1970 #define __IDWriteFontFallbackBuilder_INTERFACE_DEFINED__
1971 
1972 DEFINE_GUID(IID_IDWriteFontFallbackBuilder, 0xfd882d06, 0x8aba, 0x4fb8, 0xb8,0x49, 0x8b,0xe8,0xb7,0x3e,0x14,0xde);
1973 #if defined(__cplusplus) && !defined(CINTERFACE)
1974 MIDL_INTERFACE("fd882d06-8aba-4fb8-b849-8be8b73e14de")
1975 IDWriteFontFallbackBuilder : public IUnknown
1976 {
1977     virtual HRESULT STDMETHODCALLTYPE AddMapping(
1978         const DWRITE_UNICODE_RANGE *ranges,
1979         UINT32 rangesCount,
1980         const WCHAR **targetFamilyNames,
1981         UINT32 targetFamilyNamesCount,
1982         IDWriteFontCollection *collection = 0,
1983         const WCHAR *localeName = 0,
1984         const WCHAR *baseFamilyName = 0,
1985         FLOAT scale = 1) = 0;
1986 
1987     virtual HRESULT STDMETHODCALLTYPE AddMappings(
1988         IDWriteFontFallback *fallback) = 0;
1989 
1990     virtual HRESULT STDMETHODCALLTYPE CreateFontFallback(
1991         IDWriteFontFallback **fallback) = 0;
1992 
1993 };
1994 #ifdef __CRT_UUID_DECL
1995 __CRT_UUID_DECL(IDWriteFontFallbackBuilder, 0xfd882d06, 0x8aba, 0x4fb8, 0xb8,0x49, 0x8b,0xe8,0xb7,0x3e,0x14,0xde)
1996 #endif
1997 #else
1998 typedef struct IDWriteFontFallbackBuilderVtbl {
1999     BEGIN_INTERFACE
2000 
2001     /*** IUnknown methods ***/
2002     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2003         IDWriteFontFallbackBuilder *This,
2004         REFIID riid,
2005         void **ppvObject);
2006 
2007     ULONG (STDMETHODCALLTYPE *AddRef)(
2008         IDWriteFontFallbackBuilder *This);
2009 
2010     ULONG (STDMETHODCALLTYPE *Release)(
2011         IDWriteFontFallbackBuilder *This);
2012 
2013     /*** IDWriteFontFallbackBuilder methods ***/
2014     HRESULT (STDMETHODCALLTYPE *AddMapping)(
2015         IDWriteFontFallbackBuilder *This,
2016         const DWRITE_UNICODE_RANGE *ranges,
2017         UINT32 rangesCount,
2018         const WCHAR **targetFamilyNames,
2019         UINT32 targetFamilyNamesCount,
2020         IDWriteFontCollection *collection,
2021         const WCHAR *localeName,
2022         const WCHAR *baseFamilyName,
2023         FLOAT scale);
2024 
2025     HRESULT (STDMETHODCALLTYPE *AddMappings)(
2026         IDWriteFontFallbackBuilder *This,
2027         IDWriteFontFallback *fallback);
2028 
2029     HRESULT (STDMETHODCALLTYPE *CreateFontFallback)(
2030         IDWriteFontFallbackBuilder *This,
2031         IDWriteFontFallback **fallback);
2032 
2033     END_INTERFACE
2034 } IDWriteFontFallbackBuilderVtbl;
2035 
2036 interface IDWriteFontFallbackBuilder {
2037     CONST_VTBL IDWriteFontFallbackBuilderVtbl* lpVtbl;
2038 };
2039 
2040 #ifdef COBJMACROS
2041 #ifndef WIDL_C_INLINE_WRAPPERS
2042 /*** IUnknown methods ***/
2043 #define IDWriteFontFallbackBuilder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2044 #define IDWriteFontFallbackBuilder_AddRef(This) (This)->lpVtbl->AddRef(This)
2045 #define IDWriteFontFallbackBuilder_Release(This) (This)->lpVtbl->Release(This)
2046 /*** IDWriteFontFallbackBuilder methods ***/
2047 #define IDWriteFontFallbackBuilder_AddMapping(This,ranges,rangesCount,targetFamilyNames,targetFamilyNamesCount,collection,localeName,baseFamilyName,scale) (This)->lpVtbl->AddMapping(This,ranges,rangesCount,targetFamilyNames,targetFamilyNamesCount,collection,localeName,baseFamilyName,scale)
2048 #define IDWriteFontFallbackBuilder_AddMappings(This,fallback) (This)->lpVtbl->AddMappings(This,fallback)
2049 #define IDWriteFontFallbackBuilder_CreateFontFallback(This,fallback) (This)->lpVtbl->CreateFontFallback(This,fallback)
2050 #else
2051 /*** IUnknown methods ***/
2052 static FORCEINLINE HRESULT IDWriteFontFallbackBuilder_QueryInterface(IDWriteFontFallbackBuilder* This,REFIID riid,void **ppvObject) {
2053     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2054 }
2055 static FORCEINLINE ULONG IDWriteFontFallbackBuilder_AddRef(IDWriteFontFallbackBuilder* This) {
2056     return This->lpVtbl->AddRef(This);
2057 }
2058 static FORCEINLINE ULONG IDWriteFontFallbackBuilder_Release(IDWriteFontFallbackBuilder* This) {
2059     return This->lpVtbl->Release(This);
2060 }
2061 /*** IDWriteFontFallbackBuilder methods ***/
2062 static FORCEINLINE HRESULT IDWriteFontFallbackBuilder_AddMapping(IDWriteFontFallbackBuilder* This,const DWRITE_UNICODE_RANGE *ranges,UINT32 rangesCount,const WCHAR **targetFamilyNames,UINT32 targetFamilyNamesCount,IDWriteFontCollection *collection,const WCHAR *localeName,const WCHAR *baseFamilyName,FLOAT scale) {
2063     return This->lpVtbl->AddMapping(This,ranges,rangesCount,targetFamilyNames,targetFamilyNamesCount,collection,localeName,baseFamilyName,scale);
2064 }
2065 static FORCEINLINE HRESULT IDWriteFontFallbackBuilder_AddMappings(IDWriteFontFallbackBuilder* This,IDWriteFontFallback *fallback) {
2066     return This->lpVtbl->AddMappings(This,fallback);
2067 }
2068 static FORCEINLINE HRESULT IDWriteFontFallbackBuilder_CreateFontFallback(IDWriteFontFallbackBuilder* This,IDWriteFontFallback **fallback) {
2069     return This->lpVtbl->CreateFontFallback(This,fallback);
2070 }
2071 #endif
2072 #endif
2073 
2074 #endif
2075 
2076 
2077 #endif  /* __IDWriteFontFallbackBuilder_INTERFACE_DEFINED__ */
2078 
2079 /*****************************************************************************
2080  * IDWriteFont2 interface
2081  */
2082 #ifndef __IDWriteFont2_INTERFACE_DEFINED__
2083 #define __IDWriteFont2_INTERFACE_DEFINED__
2084 
2085 DEFINE_GUID(IID_IDWriteFont2, 0x29748ed6, 0x8c9c, 0x4a6a, 0xbe,0x0b, 0xd9,0x12,0xe8,0x53,0x89,0x44);
2086 #if defined(__cplusplus) && !defined(CINTERFACE)
2087 MIDL_INTERFACE("29748ed6-8c9c-4a6a-be0b-d912e8538944")
2088 IDWriteFont2 : public IDWriteFont1
2089 {
2090     virtual WINBOOL STDMETHODCALLTYPE IsColorFont(
2091         ) = 0;
2092 
2093 };
2094 #ifdef __CRT_UUID_DECL
2095 __CRT_UUID_DECL(IDWriteFont2, 0x29748ed6, 0x8c9c, 0x4a6a, 0xbe,0x0b, 0xd9,0x12,0xe8,0x53,0x89,0x44)
2096 #endif
2097 #else
2098 typedef struct IDWriteFont2Vtbl {
2099     BEGIN_INTERFACE
2100 
2101     /*** IUnknown methods ***/
2102     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2103         IDWriteFont2 *This,
2104         REFIID riid,
2105         void **ppvObject);
2106 
2107     ULONG (STDMETHODCALLTYPE *AddRef)(
2108         IDWriteFont2 *This);
2109 
2110     ULONG (STDMETHODCALLTYPE *Release)(
2111         IDWriteFont2 *This);
2112 
2113     /*** IDWriteFont methods ***/
2114     HRESULT (STDMETHODCALLTYPE *GetFontFamily)(
2115         IDWriteFont2 *This,
2116         IDWriteFontFamily **family);
2117 
2118     DWRITE_FONT_WEIGHT (STDMETHODCALLTYPE *GetWeight)(
2119         IDWriteFont2 *This);
2120 
2121     DWRITE_FONT_STRETCH (STDMETHODCALLTYPE *GetStretch)(
2122         IDWriteFont2 *This);
2123 
2124     DWRITE_FONT_STYLE (STDMETHODCALLTYPE *GetStyle)(
2125         IDWriteFont2 *This);
2126 
2127     WINBOOL (STDMETHODCALLTYPE *IsSymbolFont)(
2128         IDWriteFont2 *This);
2129 
2130     HRESULT (STDMETHODCALLTYPE *GetFaceNames)(
2131         IDWriteFont2 *This,
2132         IDWriteLocalizedStrings **names);
2133 
2134     HRESULT (STDMETHODCALLTYPE *GetInformationalStrings)(
2135         IDWriteFont2 *This,
2136         DWRITE_INFORMATIONAL_STRING_ID stringid,
2137         IDWriteLocalizedStrings **strings,
2138         WINBOOL *exists);
2139 
2140     DWRITE_FONT_SIMULATIONS (STDMETHODCALLTYPE *GetSimulations)(
2141         IDWriteFont2 *This);
2142 
2143     void (STDMETHODCALLTYPE *GetMetrics)(
2144         IDWriteFont2 *This,
2145         DWRITE_FONT_METRICS *metrics);
2146 
2147     HRESULT (STDMETHODCALLTYPE *HasCharacter)(
2148         IDWriteFont2 *This,
2149         UINT32 value,
2150         WINBOOL *exists);
2151 
2152     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
2153         IDWriteFont2 *This,
2154         IDWriteFontFace **face);
2155 
2156     /*** IDWriteFont1 methods ***/
2157     void (STDMETHODCALLTYPE *IDWriteFont1_GetMetrics)(
2158         IDWriteFont2 *This,
2159         DWRITE_FONT_METRICS1 *metrics);
2160 
2161     void (STDMETHODCALLTYPE *GetPanose)(
2162         IDWriteFont2 *This,
2163         DWRITE_PANOSE *panose);
2164 
2165     HRESULT (STDMETHODCALLTYPE *GetUnicodeRanges)(
2166         IDWriteFont2 *This,
2167         UINT32 max_count,
2168         DWRITE_UNICODE_RANGE *ranges,
2169         UINT32 *count);
2170 
2171     WINBOOL (STDMETHODCALLTYPE *IsMonospacedFont)(
2172         IDWriteFont2 *This);
2173 
2174     /*** IDWriteFont2 methods ***/
2175     WINBOOL (STDMETHODCALLTYPE *IsColorFont)(
2176         IDWriteFont2 *This);
2177 
2178     END_INTERFACE
2179 } IDWriteFont2Vtbl;
2180 
2181 interface IDWriteFont2 {
2182     CONST_VTBL IDWriteFont2Vtbl* lpVtbl;
2183 };
2184 
2185 #ifdef COBJMACROS
2186 #ifndef WIDL_C_INLINE_WRAPPERS
2187 /*** IUnknown methods ***/
2188 #define IDWriteFont2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2189 #define IDWriteFont2_AddRef(This) (This)->lpVtbl->AddRef(This)
2190 #define IDWriteFont2_Release(This) (This)->lpVtbl->Release(This)
2191 /*** IDWriteFont methods ***/
2192 #define IDWriteFont2_GetFontFamily(This,family) (This)->lpVtbl->GetFontFamily(This,family)
2193 #define IDWriteFont2_GetWeight(This) (This)->lpVtbl->GetWeight(This)
2194 #define IDWriteFont2_GetStretch(This) (This)->lpVtbl->GetStretch(This)
2195 #define IDWriteFont2_GetStyle(This) (This)->lpVtbl->GetStyle(This)
2196 #define IDWriteFont2_IsSymbolFont(This) (This)->lpVtbl->IsSymbolFont(This)
2197 #define IDWriteFont2_GetFaceNames(This,names) (This)->lpVtbl->GetFaceNames(This,names)
2198 #define IDWriteFont2_GetInformationalStrings(This,stringid,strings,exists) (This)->lpVtbl->GetInformationalStrings(This,stringid,strings,exists)
2199 #define IDWriteFont2_GetSimulations(This) (This)->lpVtbl->GetSimulations(This)
2200 #define IDWriteFont2_HasCharacter(This,value,exists) (This)->lpVtbl->HasCharacter(This,value,exists)
2201 #define IDWriteFont2_CreateFontFace(This,face) (This)->lpVtbl->CreateFontFace(This,face)
2202 /*** IDWriteFont1 methods ***/
2203 #define IDWriteFont2_GetMetrics(This,metrics) (This)->lpVtbl->IDWriteFont1_GetMetrics(This,metrics)
2204 #define IDWriteFont2_GetPanose(This,panose) (This)->lpVtbl->GetPanose(This,panose)
2205 #define IDWriteFont2_GetUnicodeRanges(This,max_count,ranges,count) (This)->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count)
2206 #define IDWriteFont2_IsMonospacedFont(This) (This)->lpVtbl->IsMonospacedFont(This)
2207 /*** IDWriteFont2 methods ***/
2208 #define IDWriteFont2_IsColorFont(This) (This)->lpVtbl->IsColorFont(This)
2209 #else
2210 /*** IUnknown methods ***/
2211 static FORCEINLINE HRESULT IDWriteFont2_QueryInterface(IDWriteFont2* This,REFIID riid,void **ppvObject) {
2212     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2213 }
2214 static FORCEINLINE ULONG IDWriteFont2_AddRef(IDWriteFont2* This) {
2215     return This->lpVtbl->AddRef(This);
2216 }
2217 static FORCEINLINE ULONG IDWriteFont2_Release(IDWriteFont2* This) {
2218     return This->lpVtbl->Release(This);
2219 }
2220 /*** IDWriteFont methods ***/
2221 static FORCEINLINE HRESULT IDWriteFont2_GetFontFamily(IDWriteFont2* This,IDWriteFontFamily **family) {
2222     return This->lpVtbl->GetFontFamily(This,family);
2223 }
2224 static FORCEINLINE DWRITE_FONT_WEIGHT IDWriteFont2_GetWeight(IDWriteFont2* This) {
2225     return This->lpVtbl->GetWeight(This);
2226 }
2227 static FORCEINLINE DWRITE_FONT_STRETCH IDWriteFont2_GetStretch(IDWriteFont2* This) {
2228     return This->lpVtbl->GetStretch(This);
2229 }
2230 static FORCEINLINE DWRITE_FONT_STYLE IDWriteFont2_GetStyle(IDWriteFont2* This) {
2231     return This->lpVtbl->GetStyle(This);
2232 }
2233 static FORCEINLINE WINBOOL IDWriteFont2_IsSymbolFont(IDWriteFont2* This) {
2234     return This->lpVtbl->IsSymbolFont(This);
2235 }
2236 static FORCEINLINE HRESULT IDWriteFont2_GetFaceNames(IDWriteFont2* This,IDWriteLocalizedStrings **names) {
2237     return This->lpVtbl->GetFaceNames(This,names);
2238 }
2239 static FORCEINLINE HRESULT IDWriteFont2_GetInformationalStrings(IDWriteFont2* This,DWRITE_INFORMATIONAL_STRING_ID stringid,IDWriteLocalizedStrings **strings,WINBOOL *exists) {
2240     return This->lpVtbl->GetInformationalStrings(This,stringid,strings,exists);
2241 }
2242 static FORCEINLINE DWRITE_FONT_SIMULATIONS IDWriteFont2_GetSimulations(IDWriteFont2* This) {
2243     return This->lpVtbl->GetSimulations(This);
2244 }
2245 static FORCEINLINE HRESULT IDWriteFont2_HasCharacter(IDWriteFont2* This,UINT32 value,WINBOOL *exists) {
2246     return This->lpVtbl->HasCharacter(This,value,exists);
2247 }
2248 static FORCEINLINE HRESULT IDWriteFont2_CreateFontFace(IDWriteFont2* This,IDWriteFontFace **face) {
2249     return This->lpVtbl->CreateFontFace(This,face);
2250 }
2251 /*** IDWriteFont1 methods ***/
2252 static FORCEINLINE void IDWriteFont2_GetMetrics(IDWriteFont2* This,DWRITE_FONT_METRICS1 *metrics) {
2253     This->lpVtbl->IDWriteFont1_GetMetrics(This,metrics);
2254 }
2255 static FORCEINLINE void IDWriteFont2_GetPanose(IDWriteFont2* This,DWRITE_PANOSE *panose) {
2256     This->lpVtbl->GetPanose(This,panose);
2257 }
2258 static FORCEINLINE HRESULT IDWriteFont2_GetUnicodeRanges(IDWriteFont2* This,UINT32 max_count,DWRITE_UNICODE_RANGE *ranges,UINT32 *count) {
2259     return This->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count);
2260 }
2261 static FORCEINLINE WINBOOL IDWriteFont2_IsMonospacedFont(IDWriteFont2* This) {
2262     return This->lpVtbl->IsMonospacedFont(This);
2263 }
2264 /*** IDWriteFont2 methods ***/
2265 static FORCEINLINE WINBOOL IDWriteFont2_IsColorFont(IDWriteFont2* This) {
2266     return This->lpVtbl->IsColorFont(This);
2267 }
2268 #endif
2269 #endif
2270 
2271 #endif
2272 
2273 
2274 #endif  /* __IDWriteFont2_INTERFACE_DEFINED__ */
2275 
2276 /*****************************************************************************
2277  * IDWriteFontFace2 interface
2278  */
2279 #ifndef __IDWriteFontFace2_INTERFACE_DEFINED__
2280 #define __IDWriteFontFace2_INTERFACE_DEFINED__
2281 
2282 DEFINE_GUID(IID_IDWriteFontFace2, 0xd8b768ff, 0x64bc, 0x4e66, 0x98,0x2b, 0xec,0x8e,0x87,0xf6,0x93,0xf7);
2283 #if defined(__cplusplus) && !defined(CINTERFACE)
2284 MIDL_INTERFACE("d8b768ff-64bc-4e66-982b-ec8e87f693f7")
2285 IDWriteFontFace2 : public IDWriteFontFace1
2286 {
2287     virtual WINBOOL STDMETHODCALLTYPE IsColorFont(
2288         ) = 0;
2289 
2290     virtual UINT32 STDMETHODCALLTYPE GetColorPaletteCount(
2291         ) = 0;
2292 
2293     virtual UINT32 STDMETHODCALLTYPE GetPaletteEntryCount(
2294         ) = 0;
2295 
2296     virtual HRESULT STDMETHODCALLTYPE GetPaletteEntries(
2297         UINT32 palette_index,
2298         UINT32 first_entry_index,
2299         UINT32 entry_count,
2300         DWRITE_COLOR_F *entries) = 0;
2301 
2302     virtual HRESULT STDMETHODCALLTYPE GetRecommendedRenderingMode(
2303         FLOAT fontEmSize,
2304         FLOAT dpiX,
2305         FLOAT dpiY,
2306         const DWRITE_MATRIX *transform,
2307         WINBOOL is_sideways,
2308         DWRITE_OUTLINE_THRESHOLD threshold,
2309         DWRITE_MEASURING_MODE measuringmode,
2310         IDWriteRenderingParams *params,
2311         DWRITE_RENDERING_MODE *renderingmode,
2312         DWRITE_GRID_FIT_MODE *gridfitmode) = 0;
2313 
2314 };
2315 #ifdef __CRT_UUID_DECL
2316 __CRT_UUID_DECL(IDWriteFontFace2, 0xd8b768ff, 0x64bc, 0x4e66, 0x98,0x2b, 0xec,0x8e,0x87,0xf6,0x93,0xf7)
2317 #endif
2318 #else
2319 typedef struct IDWriteFontFace2Vtbl {
2320     BEGIN_INTERFACE
2321 
2322     /*** IUnknown methods ***/
2323     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2324         IDWriteFontFace2 *This,
2325         REFIID riid,
2326         void **ppvObject);
2327 
2328     ULONG (STDMETHODCALLTYPE *AddRef)(
2329         IDWriteFontFace2 *This);
2330 
2331     ULONG (STDMETHODCALLTYPE *Release)(
2332         IDWriteFontFace2 *This);
2333 
2334     /*** IDWriteFontFace methods ***/
2335     DWRITE_FONT_FACE_TYPE (STDMETHODCALLTYPE *GetType)(
2336         IDWriteFontFace2 *This);
2337 
2338     HRESULT (STDMETHODCALLTYPE *GetFiles)(
2339         IDWriteFontFace2 *This,
2340         UINT32 *number_of_files,
2341         IDWriteFontFile **fontfiles);
2342 
2343     UINT32 (STDMETHODCALLTYPE *GetIndex)(
2344         IDWriteFontFace2 *This);
2345 
2346     DWRITE_FONT_SIMULATIONS (STDMETHODCALLTYPE *GetSimulations)(
2347         IDWriteFontFace2 *This);
2348 
2349     WINBOOL (STDMETHODCALLTYPE *IsSymbolFont)(
2350         IDWriteFontFace2 *This);
2351 
2352     void (STDMETHODCALLTYPE *GetMetrics)(
2353         IDWriteFontFace2 *This,
2354         DWRITE_FONT_METRICS *metrics);
2355 
2356     UINT16 (STDMETHODCALLTYPE *GetGlyphCount)(
2357         IDWriteFontFace2 *This);
2358 
2359     HRESULT (STDMETHODCALLTYPE *GetDesignGlyphMetrics)(
2360         IDWriteFontFace2 *This,
2361         const UINT16 *glyph_indices,
2362         UINT32 glyph_count,
2363         DWRITE_GLYPH_METRICS *metrics,
2364         WINBOOL is_sideways);
2365 
2366     HRESULT (STDMETHODCALLTYPE *GetGlyphIndices)(
2367         IDWriteFontFace2 *This,
2368         const UINT32 *codepoints,
2369         UINT32 count,
2370         UINT16 *glyph_indices);
2371 
2372     HRESULT (STDMETHODCALLTYPE *TryGetFontTable)(
2373         IDWriteFontFace2 *This,
2374         UINT32 table_tag,
2375         const void **table_data,
2376         UINT32 *table_size,
2377         void **context,
2378         WINBOOL *exists);
2379 
2380     void (STDMETHODCALLTYPE *ReleaseFontTable)(
2381         IDWriteFontFace2 *This,
2382         void *table_context);
2383 
2384     HRESULT (STDMETHODCALLTYPE *GetGlyphRunOutline)(
2385         IDWriteFontFace2 *This,
2386         FLOAT emSize,
2387         const UINT16 *glyph_indices,
2388         const FLOAT *glyph_advances,
2389         const DWRITE_GLYPH_OFFSET *glyph_offsets,
2390         UINT32 glyph_count,
2391         WINBOOL is_sideways,
2392         WINBOOL is_rtl,
2393         IDWriteGeometrySink *geometrysink);
2394 
2395     HRESULT (STDMETHODCALLTYPE *GetRecommendedRenderingMode)(
2396         IDWriteFontFace2 *This,
2397         FLOAT emSize,
2398         FLOAT pixels_per_dip,
2399         DWRITE_MEASURING_MODE mode,
2400         IDWriteRenderingParams *params,
2401         DWRITE_RENDERING_MODE *rendering_mode);
2402 
2403     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleMetrics)(
2404         IDWriteFontFace2 *This,
2405         FLOAT emSize,
2406         FLOAT pixels_per_dip,
2407         const DWRITE_MATRIX *transform,
2408         DWRITE_FONT_METRICS *metrics);
2409 
2410     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleGlyphMetrics)(
2411         IDWriteFontFace2 *This,
2412         FLOAT emSize,
2413         FLOAT pixels_per_dip,
2414         const DWRITE_MATRIX *transform,
2415         WINBOOL use_gdi_natural,
2416         const UINT16 *glyph_indices,
2417         UINT32 glyph_count,
2418         DWRITE_GLYPH_METRICS *metrics,
2419         WINBOOL is_sideways);
2420 
2421     /*** IDWriteFontFace1 methods ***/
2422     void (STDMETHODCALLTYPE *IDWriteFontFace1_GetMetrics)(
2423         IDWriteFontFace2 *This,
2424         DWRITE_FONT_METRICS1 *metrics);
2425 
2426     HRESULT (STDMETHODCALLTYPE *IDWriteFontFace1_GetGdiCompatibleMetrics)(
2427         IDWriteFontFace2 *This,
2428         FLOAT em_size,
2429         FLOAT pixels_per_dip,
2430         const DWRITE_MATRIX *transform,
2431         DWRITE_FONT_METRICS1 *metrics);
2432 
2433     void (STDMETHODCALLTYPE *GetCaretMetrics)(
2434         IDWriteFontFace2 *This,
2435         DWRITE_CARET_METRICS *metrics);
2436 
2437     HRESULT (STDMETHODCALLTYPE *GetUnicodeRanges)(
2438         IDWriteFontFace2 *This,
2439         UINT32 max_count,
2440         DWRITE_UNICODE_RANGE *ranges,
2441         UINT32 *count);
2442 
2443     WINBOOL (STDMETHODCALLTYPE *IsMonospacedFont)(
2444         IDWriteFontFace2 *This);
2445 
2446     HRESULT (STDMETHODCALLTYPE *GetDesignGlyphAdvances)(
2447         IDWriteFontFace2 *This,
2448         UINT32 glyph_count,
2449         const UINT16 *indices,
2450         INT32 *advances,
2451         WINBOOL is_sideways);
2452 
2453     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleGlyphAdvances)(
2454         IDWriteFontFace2 *This,
2455         FLOAT em_size,
2456         FLOAT pixels_per_dip,
2457         const DWRITE_MATRIX *transform,
2458         WINBOOL use_gdi_natural,
2459         WINBOOL is_sideways,
2460         UINT32 glyph_count,
2461         const UINT16 *indices,
2462         INT32 *advances);
2463 
2464     HRESULT (STDMETHODCALLTYPE *GetKerningPairAdjustments)(
2465         IDWriteFontFace2 *This,
2466         UINT32 glyph_count,
2467         const UINT16 *indices,
2468         INT32 *adjustments);
2469 
2470     WINBOOL (STDMETHODCALLTYPE *HasKerningPairs)(
2471         IDWriteFontFace2 *This);
2472 
2473     HRESULT (STDMETHODCALLTYPE *IDWriteFontFace1_GetRecommendedRenderingMode)(
2474         IDWriteFontFace2 *This,
2475         FLOAT font_emsize,
2476         FLOAT dpiX,
2477         FLOAT dpiY,
2478         const DWRITE_MATRIX *transform,
2479         WINBOOL is_sideways,
2480         DWRITE_OUTLINE_THRESHOLD threshold,
2481         DWRITE_MEASURING_MODE measuring_mode,
2482         DWRITE_RENDERING_MODE *rendering_mode);
2483 
2484     HRESULT (STDMETHODCALLTYPE *GetVerticalGlyphVariants)(
2485         IDWriteFontFace2 *This,
2486         UINT32 glyph_count,
2487         const UINT16 *nominal_indices,
2488         UINT16 *vertical_indices);
2489 
2490     WINBOOL (STDMETHODCALLTYPE *HasVerticalGlyphVariants)(
2491         IDWriteFontFace2 *This);
2492 
2493     /*** IDWriteFontFace2 methods ***/
2494     WINBOOL (STDMETHODCALLTYPE *IsColorFont)(
2495         IDWriteFontFace2 *This);
2496 
2497     UINT32 (STDMETHODCALLTYPE *GetColorPaletteCount)(
2498         IDWriteFontFace2 *This);
2499 
2500     UINT32 (STDMETHODCALLTYPE *GetPaletteEntryCount)(
2501         IDWriteFontFace2 *This);
2502 
2503     HRESULT (STDMETHODCALLTYPE *GetPaletteEntries)(
2504         IDWriteFontFace2 *This,
2505         UINT32 palette_index,
2506         UINT32 first_entry_index,
2507         UINT32 entry_count,
2508         DWRITE_COLOR_F *entries);
2509 
2510     HRESULT (STDMETHODCALLTYPE *IDWriteFontFace2_GetRecommendedRenderingMode)(
2511         IDWriteFontFace2 *This,
2512         FLOAT fontEmSize,
2513         FLOAT dpiX,
2514         FLOAT dpiY,
2515         const DWRITE_MATRIX *transform,
2516         WINBOOL is_sideways,
2517         DWRITE_OUTLINE_THRESHOLD threshold,
2518         DWRITE_MEASURING_MODE measuringmode,
2519         IDWriteRenderingParams *params,
2520         DWRITE_RENDERING_MODE *renderingmode,
2521         DWRITE_GRID_FIT_MODE *gridfitmode);
2522 
2523     END_INTERFACE
2524 } IDWriteFontFace2Vtbl;
2525 
2526 interface IDWriteFontFace2 {
2527     CONST_VTBL IDWriteFontFace2Vtbl* lpVtbl;
2528 };
2529 
2530 #ifdef COBJMACROS
2531 #ifndef WIDL_C_INLINE_WRAPPERS
2532 /*** IUnknown methods ***/
2533 #define IDWriteFontFace2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2534 #define IDWriteFontFace2_AddRef(This) (This)->lpVtbl->AddRef(This)
2535 #define IDWriteFontFace2_Release(This) (This)->lpVtbl->Release(This)
2536 /*** IDWriteFontFace methods ***/
2537 #define IDWriteFontFace2_GetType(This) (This)->lpVtbl->GetType(This)
2538 #define IDWriteFontFace2_GetFiles(This,number_of_files,fontfiles) (This)->lpVtbl->GetFiles(This,number_of_files,fontfiles)
2539 #define IDWriteFontFace2_GetIndex(This) (This)->lpVtbl->GetIndex(This)
2540 #define IDWriteFontFace2_GetSimulations(This) (This)->lpVtbl->GetSimulations(This)
2541 #define IDWriteFontFace2_IsSymbolFont(This) (This)->lpVtbl->IsSymbolFont(This)
2542 #define IDWriteFontFace2_GetGlyphCount(This) (This)->lpVtbl->GetGlyphCount(This)
2543 #define IDWriteFontFace2_GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways) (This)->lpVtbl->GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways)
2544 #define IDWriteFontFace2_GetGlyphIndices(This,codepoints,count,glyph_indices) (This)->lpVtbl->GetGlyphIndices(This,codepoints,count,glyph_indices)
2545 #define IDWriteFontFace2_TryGetFontTable(This,table_tag,table_data,table_size,context,exists) (This)->lpVtbl->TryGetFontTable(This,table_tag,table_data,table_size,context,exists)
2546 #define IDWriteFontFace2_ReleaseFontTable(This,table_context) (This)->lpVtbl->ReleaseFontTable(This,table_context)
2547 #define IDWriteFontFace2_GetGlyphRunOutline(This,emSize,glyph_indices,glyph_advances,glyph_offsets,glyph_count,is_sideways,is_rtl,geometrysink) (This)->lpVtbl->GetGlyphRunOutline(This,emSize,glyph_indices,glyph_advances,glyph_offsets,glyph_count,is_sideways,is_rtl,geometrysink)
2548 #define IDWriteFontFace2_GetGdiCompatibleGlyphMetrics(This,emSize,pixels_per_dip,transform,use_gdi_natural,glyph_indices,glyph_count,metrics,is_sideways) (This)->lpVtbl->GetGdiCompatibleGlyphMetrics(This,emSize,pixels_per_dip,transform,use_gdi_natural,glyph_indices,glyph_count,metrics,is_sideways)
2549 /*** IDWriteFontFace1 methods ***/
2550 #define IDWriteFontFace2_GetMetrics(This,metrics) (This)->lpVtbl->IDWriteFontFace1_GetMetrics(This,metrics)
2551 #define IDWriteFontFace2_GetGdiCompatibleMetrics(This,em_size,pixels_per_dip,transform,metrics) (This)->lpVtbl->IDWriteFontFace1_GetGdiCompatibleMetrics(This,em_size,pixels_per_dip,transform,metrics)
2552 #define IDWriteFontFace2_GetCaretMetrics(This,metrics) (This)->lpVtbl->GetCaretMetrics(This,metrics)
2553 #define IDWriteFontFace2_GetUnicodeRanges(This,max_count,ranges,count) (This)->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count)
2554 #define IDWriteFontFace2_IsMonospacedFont(This) (This)->lpVtbl->IsMonospacedFont(This)
2555 #define IDWriteFontFace2_GetDesignGlyphAdvances(This,glyph_count,indices,advances,is_sideways) (This)->lpVtbl->GetDesignGlyphAdvances(This,glyph_count,indices,advances,is_sideways)
2556 #define IDWriteFontFace2_GetGdiCompatibleGlyphAdvances(This,em_size,pixels_per_dip,transform,use_gdi_natural,is_sideways,glyph_count,indices,advances) (This)->lpVtbl->GetGdiCompatibleGlyphAdvances(This,em_size,pixels_per_dip,transform,use_gdi_natural,is_sideways,glyph_count,indices,advances)
2557 #define IDWriteFontFace2_GetKerningPairAdjustments(This,glyph_count,indices,adjustments) (This)->lpVtbl->GetKerningPairAdjustments(This,glyph_count,indices,adjustments)
2558 #define IDWriteFontFace2_HasKerningPairs(This) (This)->lpVtbl->HasKerningPairs(This)
2559 #define IDWriteFontFace2_GetVerticalGlyphVariants(This,glyph_count,nominal_indices,vertical_indices) (This)->lpVtbl->GetVerticalGlyphVariants(This,glyph_count,nominal_indices,vertical_indices)
2560 #define IDWriteFontFace2_HasVerticalGlyphVariants(This) (This)->lpVtbl->HasVerticalGlyphVariants(This)
2561 /*** IDWriteFontFace2 methods ***/
2562 #define IDWriteFontFace2_IsColorFont(This) (This)->lpVtbl->IsColorFont(This)
2563 #define IDWriteFontFace2_GetColorPaletteCount(This) (This)->lpVtbl->GetColorPaletteCount(This)
2564 #define IDWriteFontFace2_GetPaletteEntryCount(This) (This)->lpVtbl->GetPaletteEntryCount(This)
2565 #define IDWriteFontFace2_GetPaletteEntries(This,palette_index,first_entry_index,entry_count,entries) (This)->lpVtbl->GetPaletteEntries(This,palette_index,first_entry_index,entry_count,entries)
2566 #define IDWriteFontFace2_GetRecommendedRenderingMode(This,fontEmSize,dpiX,dpiY,transform,is_sideways,threshold,measuringmode,params,renderingmode,gridfitmode) (This)->lpVtbl->IDWriteFontFace2_GetRecommendedRenderingMode(This,fontEmSize,dpiX,dpiY,transform,is_sideways,threshold,measuringmode,params,renderingmode,gridfitmode)
2567 #else
2568 /*** IUnknown methods ***/
2569 static FORCEINLINE HRESULT IDWriteFontFace2_QueryInterface(IDWriteFontFace2* This,REFIID riid,void **ppvObject) {
2570     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2571 }
2572 static FORCEINLINE ULONG IDWriteFontFace2_AddRef(IDWriteFontFace2* This) {
2573     return This->lpVtbl->AddRef(This);
2574 }
2575 static FORCEINLINE ULONG IDWriteFontFace2_Release(IDWriteFontFace2* This) {
2576     return This->lpVtbl->Release(This);
2577 }
2578 /*** IDWriteFontFace methods ***/
2579 static FORCEINLINE DWRITE_FONT_FACE_TYPE IDWriteFontFace2_GetType(IDWriteFontFace2* This) {
2580     return This->lpVtbl->GetType(This);
2581 }
2582 static FORCEINLINE HRESULT IDWriteFontFace2_GetFiles(IDWriteFontFace2* This,UINT32 *number_of_files,IDWriteFontFile **fontfiles) {
2583     return This->lpVtbl->GetFiles(This,number_of_files,fontfiles);
2584 }
2585 static FORCEINLINE UINT32 IDWriteFontFace2_GetIndex(IDWriteFontFace2* This) {
2586     return This->lpVtbl->GetIndex(This);
2587 }
2588 static FORCEINLINE DWRITE_FONT_SIMULATIONS IDWriteFontFace2_GetSimulations(IDWriteFontFace2* This) {
2589     return This->lpVtbl->GetSimulations(This);
2590 }
2591 static FORCEINLINE WINBOOL IDWriteFontFace2_IsSymbolFont(IDWriteFontFace2* This) {
2592     return This->lpVtbl->IsSymbolFont(This);
2593 }
2594 static FORCEINLINE UINT16 IDWriteFontFace2_GetGlyphCount(IDWriteFontFace2* This) {
2595     return This->lpVtbl->GetGlyphCount(This);
2596 }
2597 static FORCEINLINE HRESULT IDWriteFontFace2_GetDesignGlyphMetrics(IDWriteFontFace2* This,const UINT16 *glyph_indices,UINT32 glyph_count,DWRITE_GLYPH_METRICS *metrics,WINBOOL is_sideways) {
2598     return This->lpVtbl->GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways);
2599 }
2600 static FORCEINLINE HRESULT IDWriteFontFace2_GetGlyphIndices(IDWriteFontFace2* This,const UINT32 *codepoints,UINT32 count,UINT16 *glyph_indices) {
2601     return This->lpVtbl->GetGlyphIndices(This,codepoints,count,glyph_indices);
2602 }
2603 static FORCEINLINE HRESULT IDWriteFontFace2_TryGetFontTable(IDWriteFontFace2* This,UINT32 table_tag,const void **table_data,UINT32 *table_size,void **context,WINBOOL *exists) {
2604     return This->lpVtbl->TryGetFontTable(This,table_tag,table_data,table_size,context,exists);
2605 }
2606 static FORCEINLINE void IDWriteFontFace2_ReleaseFontTable(IDWriteFontFace2* This,void *table_context) {
2607     This->lpVtbl->ReleaseFontTable(This,table_context);
2608 }
2609 static FORCEINLINE HRESULT IDWriteFontFace2_GetGlyphRunOutline(IDWriteFontFace2* This,FLOAT emSize,const UINT16 *glyph_indices,const FLOAT *glyph_advances,const DWRITE_GLYPH_OFFSET *glyph_offsets,UINT32 glyph_count,WINBOOL is_sideways,WINBOOL is_rtl,IDWriteGeometrySink *geometrysink) {
2610     return This->lpVtbl->GetGlyphRunOutline(This,emSize,glyph_indices,glyph_advances,glyph_offsets,glyph_count,is_sideways,is_rtl,geometrysink);
2611 }
2612 static FORCEINLINE HRESULT IDWriteFontFace2_GetGdiCompatibleGlyphMetrics(IDWriteFontFace2* This,FLOAT emSize,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,WINBOOL use_gdi_natural,const UINT16 *glyph_indices,UINT32 glyph_count,DWRITE_GLYPH_METRICS *metrics,WINBOOL is_sideways) {
2613     return This->lpVtbl->GetGdiCompatibleGlyphMetrics(This,emSize,pixels_per_dip,transform,use_gdi_natural,glyph_indices,glyph_count,metrics,is_sideways);
2614 }
2615 /*** IDWriteFontFace1 methods ***/
2616 static FORCEINLINE void IDWriteFontFace2_GetMetrics(IDWriteFontFace2* This,DWRITE_FONT_METRICS1 *metrics) {
2617     This->lpVtbl->IDWriteFontFace1_GetMetrics(This,metrics);
2618 }
2619 static FORCEINLINE HRESULT IDWriteFontFace2_GetGdiCompatibleMetrics(IDWriteFontFace2* This,FLOAT em_size,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,DWRITE_FONT_METRICS1 *metrics) {
2620     return This->lpVtbl->IDWriteFontFace1_GetGdiCompatibleMetrics(This,em_size,pixels_per_dip,transform,metrics);
2621 }
2622 static FORCEINLINE void IDWriteFontFace2_GetCaretMetrics(IDWriteFontFace2* This,DWRITE_CARET_METRICS *metrics) {
2623     This->lpVtbl->GetCaretMetrics(This,metrics);
2624 }
2625 static FORCEINLINE HRESULT IDWriteFontFace2_GetUnicodeRanges(IDWriteFontFace2* This,UINT32 max_count,DWRITE_UNICODE_RANGE *ranges,UINT32 *count) {
2626     return This->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count);
2627 }
2628 static FORCEINLINE WINBOOL IDWriteFontFace2_IsMonospacedFont(IDWriteFontFace2* This) {
2629     return This->lpVtbl->IsMonospacedFont(This);
2630 }
2631 static FORCEINLINE HRESULT IDWriteFontFace2_GetDesignGlyphAdvances(IDWriteFontFace2* This,UINT32 glyph_count,const UINT16 *indices,INT32 *advances,WINBOOL is_sideways) {
2632     return This->lpVtbl->GetDesignGlyphAdvances(This,glyph_count,indices,advances,is_sideways);
2633 }
2634 static FORCEINLINE HRESULT IDWriteFontFace2_GetGdiCompatibleGlyphAdvances(IDWriteFontFace2* This,FLOAT em_size,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,WINBOOL use_gdi_natural,WINBOOL is_sideways,UINT32 glyph_count,const UINT16 *indices,INT32 *advances) {
2635     return This->lpVtbl->GetGdiCompatibleGlyphAdvances(This,em_size,pixels_per_dip,transform,use_gdi_natural,is_sideways,glyph_count,indices,advances);
2636 }
2637 static FORCEINLINE HRESULT IDWriteFontFace2_GetKerningPairAdjustments(IDWriteFontFace2* This,UINT32 glyph_count,const UINT16 *indices,INT32 *adjustments) {
2638     return This->lpVtbl->GetKerningPairAdjustments(This,glyph_count,indices,adjustments);
2639 }
2640 static FORCEINLINE WINBOOL IDWriteFontFace2_HasKerningPairs(IDWriteFontFace2* This) {
2641     return This->lpVtbl->HasKerningPairs(This);
2642 }
2643 static FORCEINLINE HRESULT IDWriteFontFace2_GetVerticalGlyphVariants(IDWriteFontFace2* This,UINT32 glyph_count,const UINT16 *nominal_indices,UINT16 *vertical_indices) {
2644     return This->lpVtbl->GetVerticalGlyphVariants(This,glyph_count,nominal_indices,vertical_indices);
2645 }
2646 static FORCEINLINE WINBOOL IDWriteFontFace2_HasVerticalGlyphVariants(IDWriteFontFace2* This) {
2647     return This->lpVtbl->HasVerticalGlyphVariants(This);
2648 }
2649 /*** IDWriteFontFace2 methods ***/
2650 static FORCEINLINE WINBOOL IDWriteFontFace2_IsColorFont(IDWriteFontFace2* This) {
2651     return This->lpVtbl->IsColorFont(This);
2652 }
2653 static FORCEINLINE UINT32 IDWriteFontFace2_GetColorPaletteCount(IDWriteFontFace2* This) {
2654     return This->lpVtbl->GetColorPaletteCount(This);
2655 }
2656 static FORCEINLINE UINT32 IDWriteFontFace2_GetPaletteEntryCount(IDWriteFontFace2* This) {
2657     return This->lpVtbl->GetPaletteEntryCount(This);
2658 }
2659 static FORCEINLINE HRESULT IDWriteFontFace2_GetPaletteEntries(IDWriteFontFace2* This,UINT32 palette_index,UINT32 first_entry_index,UINT32 entry_count,DWRITE_COLOR_F *entries) {
2660     return This->lpVtbl->GetPaletteEntries(This,palette_index,first_entry_index,entry_count,entries);
2661 }
2662 static FORCEINLINE HRESULT IDWriteFontFace2_GetRecommendedRenderingMode(IDWriteFontFace2* This,FLOAT fontEmSize,FLOAT dpiX,FLOAT dpiY,const DWRITE_MATRIX *transform,WINBOOL is_sideways,DWRITE_OUTLINE_THRESHOLD threshold,DWRITE_MEASURING_MODE measuringmode,IDWriteRenderingParams *params,DWRITE_RENDERING_MODE *renderingmode,DWRITE_GRID_FIT_MODE *gridfitmode) {
2663     return This->lpVtbl->IDWriteFontFace2_GetRecommendedRenderingMode(This,fontEmSize,dpiX,dpiY,transform,is_sideways,threshold,measuringmode,params,renderingmode,gridfitmode);
2664 }
2665 #endif
2666 #endif
2667 
2668 #endif
2669 
2670 
2671 #endif  /* __IDWriteFontFace2_INTERFACE_DEFINED__ */
2672 
2673 /*****************************************************************************
2674  * IDWriteColorGlyphRunEnumerator interface
2675  */
2676 #ifndef __IDWriteColorGlyphRunEnumerator_INTERFACE_DEFINED__
2677 #define __IDWriteColorGlyphRunEnumerator_INTERFACE_DEFINED__
2678 
2679 DEFINE_GUID(IID_IDWriteColorGlyphRunEnumerator, 0xd31fbe17, 0xf157, 0x41a2, 0x8d,0x24, 0xcb,0x77,0x9e,0x05,0x60,0xe8);
2680 #if defined(__cplusplus) && !defined(CINTERFACE)
2681 MIDL_INTERFACE("d31fbe17-f157-41a2-8d24-cb779e0560e8")
2682 IDWriteColorGlyphRunEnumerator : public IUnknown
2683 {
2684     virtual HRESULT STDMETHODCALLTYPE MoveNext(
2685         WINBOOL *hasRun) = 0;
2686 
2687     virtual HRESULT STDMETHODCALLTYPE GetCurrentRun(
2688         const DWRITE_COLOR_GLYPH_RUN **run) = 0;
2689 
2690 };
2691 #ifdef __CRT_UUID_DECL
2692 __CRT_UUID_DECL(IDWriteColorGlyphRunEnumerator, 0xd31fbe17, 0xf157, 0x41a2, 0x8d,0x24, 0xcb,0x77,0x9e,0x05,0x60,0xe8)
2693 #endif
2694 #else
2695 typedef struct IDWriteColorGlyphRunEnumeratorVtbl {
2696     BEGIN_INTERFACE
2697 
2698     /*** IUnknown methods ***/
2699     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2700         IDWriteColorGlyphRunEnumerator *This,
2701         REFIID riid,
2702         void **ppvObject);
2703 
2704     ULONG (STDMETHODCALLTYPE *AddRef)(
2705         IDWriteColorGlyphRunEnumerator *This);
2706 
2707     ULONG (STDMETHODCALLTYPE *Release)(
2708         IDWriteColorGlyphRunEnumerator *This);
2709 
2710     /*** IDWriteColorGlyphRunEnumerator methods ***/
2711     HRESULT (STDMETHODCALLTYPE *MoveNext)(
2712         IDWriteColorGlyphRunEnumerator *This,
2713         WINBOOL *hasRun);
2714 
2715     HRESULT (STDMETHODCALLTYPE *GetCurrentRun)(
2716         IDWriteColorGlyphRunEnumerator *This,
2717         const DWRITE_COLOR_GLYPH_RUN **run);
2718 
2719     END_INTERFACE
2720 } IDWriteColorGlyphRunEnumeratorVtbl;
2721 
2722 interface IDWriteColorGlyphRunEnumerator {
2723     CONST_VTBL IDWriteColorGlyphRunEnumeratorVtbl* lpVtbl;
2724 };
2725 
2726 #ifdef COBJMACROS
2727 #ifndef WIDL_C_INLINE_WRAPPERS
2728 /*** IUnknown methods ***/
2729 #define IDWriteColorGlyphRunEnumerator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2730 #define IDWriteColorGlyphRunEnumerator_AddRef(This) (This)->lpVtbl->AddRef(This)
2731 #define IDWriteColorGlyphRunEnumerator_Release(This) (This)->lpVtbl->Release(This)
2732 /*** IDWriteColorGlyphRunEnumerator methods ***/
2733 #define IDWriteColorGlyphRunEnumerator_MoveNext(This,hasRun) (This)->lpVtbl->MoveNext(This,hasRun)
2734 #define IDWriteColorGlyphRunEnumerator_GetCurrentRun(This,run) (This)->lpVtbl->GetCurrentRun(This,run)
2735 #else
2736 /*** IUnknown methods ***/
2737 static FORCEINLINE HRESULT IDWriteColorGlyphRunEnumerator_QueryInterface(IDWriteColorGlyphRunEnumerator* This,REFIID riid,void **ppvObject) {
2738     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2739 }
2740 static FORCEINLINE ULONG IDWriteColorGlyphRunEnumerator_AddRef(IDWriteColorGlyphRunEnumerator* This) {
2741     return This->lpVtbl->AddRef(This);
2742 }
2743 static FORCEINLINE ULONG IDWriteColorGlyphRunEnumerator_Release(IDWriteColorGlyphRunEnumerator* This) {
2744     return This->lpVtbl->Release(This);
2745 }
2746 /*** IDWriteColorGlyphRunEnumerator methods ***/
2747 static FORCEINLINE HRESULT IDWriteColorGlyphRunEnumerator_MoveNext(IDWriteColorGlyphRunEnumerator* This,WINBOOL *hasRun) {
2748     return This->lpVtbl->MoveNext(This,hasRun);
2749 }
2750 static FORCEINLINE HRESULT IDWriteColorGlyphRunEnumerator_GetCurrentRun(IDWriteColorGlyphRunEnumerator* This,const DWRITE_COLOR_GLYPH_RUN **run) {
2751     return This->lpVtbl->GetCurrentRun(This,run);
2752 }
2753 #endif
2754 #endif
2755 
2756 #endif
2757 
2758 
2759 #endif  /* __IDWriteColorGlyphRunEnumerator_INTERFACE_DEFINED__ */
2760 
2761 /*****************************************************************************
2762  * IDWriteRenderingParams2 interface
2763  */
2764 #ifndef __IDWriteRenderingParams2_INTERFACE_DEFINED__
2765 #define __IDWriteRenderingParams2_INTERFACE_DEFINED__
2766 
2767 DEFINE_GUID(IID_IDWriteRenderingParams2, 0xf9d711c3, 0x9777, 0x40ae, 0x87,0xe8, 0x3e,0x5a,0xf9,0xbf,0x09,0x48);
2768 #if defined(__cplusplus) && !defined(CINTERFACE)
2769 MIDL_INTERFACE("f9d711c3-9777-40ae-87e8-3e5af9bf0948")
2770 IDWriteRenderingParams2 : public IDWriteRenderingParams1
2771 {
2772     virtual DWRITE_GRID_FIT_MODE STDMETHODCALLTYPE GetGridFitMode(
2773         ) = 0;
2774 
2775 };
2776 #ifdef __CRT_UUID_DECL
2777 __CRT_UUID_DECL(IDWriteRenderingParams2, 0xf9d711c3, 0x9777, 0x40ae, 0x87,0xe8, 0x3e,0x5a,0xf9,0xbf,0x09,0x48)
2778 #endif
2779 #else
2780 typedef struct IDWriteRenderingParams2Vtbl {
2781     BEGIN_INTERFACE
2782 
2783     /*** IUnknown methods ***/
2784     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2785         IDWriteRenderingParams2 *This,
2786         REFIID riid,
2787         void **ppvObject);
2788 
2789     ULONG (STDMETHODCALLTYPE *AddRef)(
2790         IDWriteRenderingParams2 *This);
2791 
2792     ULONG (STDMETHODCALLTYPE *Release)(
2793         IDWriteRenderingParams2 *This);
2794 
2795     /*** IDWriteRenderingParams methods ***/
2796     FLOAT (STDMETHODCALLTYPE *GetGamma)(
2797         IDWriteRenderingParams2 *This);
2798 
2799     FLOAT (STDMETHODCALLTYPE *GetEnhancedContrast)(
2800         IDWriteRenderingParams2 *This);
2801 
2802     FLOAT (STDMETHODCALLTYPE *GetClearTypeLevel)(
2803         IDWriteRenderingParams2 *This);
2804 
2805     DWRITE_PIXEL_GEOMETRY (STDMETHODCALLTYPE *GetPixelGeometry)(
2806         IDWriteRenderingParams2 *This);
2807 
2808     DWRITE_RENDERING_MODE (STDMETHODCALLTYPE *GetRenderingMode)(
2809         IDWriteRenderingParams2 *This);
2810 
2811     /*** IDWriteRenderingParams1 methods ***/
2812     FLOAT (STDMETHODCALLTYPE *GetGrayscaleEnhancedContrast)(
2813         IDWriteRenderingParams2 *This);
2814 
2815     /*** IDWriteRenderingParams2 methods ***/
2816     DWRITE_GRID_FIT_MODE (STDMETHODCALLTYPE *GetGridFitMode)(
2817         IDWriteRenderingParams2 *This);
2818 
2819     END_INTERFACE
2820 } IDWriteRenderingParams2Vtbl;
2821 
2822 interface IDWriteRenderingParams2 {
2823     CONST_VTBL IDWriteRenderingParams2Vtbl* lpVtbl;
2824 };
2825 
2826 #ifdef COBJMACROS
2827 #ifndef WIDL_C_INLINE_WRAPPERS
2828 /*** IUnknown methods ***/
2829 #define IDWriteRenderingParams2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2830 #define IDWriteRenderingParams2_AddRef(This) (This)->lpVtbl->AddRef(This)
2831 #define IDWriteRenderingParams2_Release(This) (This)->lpVtbl->Release(This)
2832 /*** IDWriteRenderingParams methods ***/
2833 #define IDWriteRenderingParams2_GetGamma(This) (This)->lpVtbl->GetGamma(This)
2834 #define IDWriteRenderingParams2_GetEnhancedContrast(This) (This)->lpVtbl->GetEnhancedContrast(This)
2835 #define IDWriteRenderingParams2_GetClearTypeLevel(This) (This)->lpVtbl->GetClearTypeLevel(This)
2836 #define IDWriteRenderingParams2_GetPixelGeometry(This) (This)->lpVtbl->GetPixelGeometry(This)
2837 #define IDWriteRenderingParams2_GetRenderingMode(This) (This)->lpVtbl->GetRenderingMode(This)
2838 /*** IDWriteRenderingParams1 methods ***/
2839 #define IDWriteRenderingParams2_GetGrayscaleEnhancedContrast(This) (This)->lpVtbl->GetGrayscaleEnhancedContrast(This)
2840 /*** IDWriteRenderingParams2 methods ***/
2841 #define IDWriteRenderingParams2_GetGridFitMode(This) (This)->lpVtbl->GetGridFitMode(This)
2842 #else
2843 /*** IUnknown methods ***/
2844 static FORCEINLINE HRESULT IDWriteRenderingParams2_QueryInterface(IDWriteRenderingParams2* This,REFIID riid,void **ppvObject) {
2845     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2846 }
2847 static FORCEINLINE ULONG IDWriteRenderingParams2_AddRef(IDWriteRenderingParams2* This) {
2848     return This->lpVtbl->AddRef(This);
2849 }
2850 static FORCEINLINE ULONG IDWriteRenderingParams2_Release(IDWriteRenderingParams2* This) {
2851     return This->lpVtbl->Release(This);
2852 }
2853 /*** IDWriteRenderingParams methods ***/
2854 static FORCEINLINE FLOAT IDWriteRenderingParams2_GetGamma(IDWriteRenderingParams2* This) {
2855     return This->lpVtbl->GetGamma(This);
2856 }
2857 static FORCEINLINE FLOAT IDWriteRenderingParams2_GetEnhancedContrast(IDWriteRenderingParams2* This) {
2858     return This->lpVtbl->GetEnhancedContrast(This);
2859 }
2860 static FORCEINLINE FLOAT IDWriteRenderingParams2_GetClearTypeLevel(IDWriteRenderingParams2* This) {
2861     return This->lpVtbl->GetClearTypeLevel(This);
2862 }
2863 static FORCEINLINE DWRITE_PIXEL_GEOMETRY IDWriteRenderingParams2_GetPixelGeometry(IDWriteRenderingParams2* This) {
2864     return This->lpVtbl->GetPixelGeometry(This);
2865 }
2866 static FORCEINLINE DWRITE_RENDERING_MODE IDWriteRenderingParams2_GetRenderingMode(IDWriteRenderingParams2* This) {
2867     return This->lpVtbl->GetRenderingMode(This);
2868 }
2869 /*** IDWriteRenderingParams1 methods ***/
2870 static FORCEINLINE FLOAT IDWriteRenderingParams2_GetGrayscaleEnhancedContrast(IDWriteRenderingParams2* This) {
2871     return This->lpVtbl->GetGrayscaleEnhancedContrast(This);
2872 }
2873 /*** IDWriteRenderingParams2 methods ***/
2874 static FORCEINLINE DWRITE_GRID_FIT_MODE IDWriteRenderingParams2_GetGridFitMode(IDWriteRenderingParams2* This) {
2875     return This->lpVtbl->GetGridFitMode(This);
2876 }
2877 #endif
2878 #endif
2879 
2880 #endif
2881 
2882 
2883 #endif  /* __IDWriteRenderingParams2_INTERFACE_DEFINED__ */
2884 
2885 /*****************************************************************************
2886  * IDWriteFactory2 interface
2887  */
2888 #ifndef __IDWriteFactory2_INTERFACE_DEFINED__
2889 #define __IDWriteFactory2_INTERFACE_DEFINED__
2890 
2891 DEFINE_GUID(IID_IDWriteFactory2, 0x0439fc60, 0xca44, 0x4994, 0x8d,0xee, 0x3a,0x9a,0xf7,0xb7,0x32,0xec);
2892 #if defined(__cplusplus) && !defined(CINTERFACE)
2893 MIDL_INTERFACE("0439fc60-ca44-4994-8dee-3a9af7b732ec")
2894 IDWriteFactory2 : public IDWriteFactory1
2895 {
2896     virtual HRESULT STDMETHODCALLTYPE GetSystemFontFallback(
2897         IDWriteFontFallback **fallback) = 0;
2898 
2899     virtual HRESULT STDMETHODCALLTYPE CreateFontFallbackBuilder(
2900         IDWriteFontFallbackBuilder **fallbackbuilder) = 0;
2901 
2902     virtual HRESULT STDMETHODCALLTYPE TranslateColorGlyphRun(
2903         FLOAT originX,
2904         FLOAT originY,
2905         const DWRITE_GLYPH_RUN *run,
2906         const DWRITE_GLYPH_RUN_DESCRIPTION *rundescr,
2907         DWRITE_MEASURING_MODE mode,
2908         const DWRITE_MATRIX *transform,
2909         UINT32 palette_index,
2910         IDWriteColorGlyphRunEnumerator **colorlayers) = 0;
2911 
2912     virtual HRESULT STDMETHODCALLTYPE CreateCustomRenderingParams(
2913         FLOAT gamma,
2914         FLOAT contrast,
2915         FLOAT grayscalecontrast,
2916         FLOAT cleartypeLevel,
2917         DWRITE_PIXEL_GEOMETRY pixelGeometry,
2918         DWRITE_RENDERING_MODE renderingMode,
2919         DWRITE_GRID_FIT_MODE gridFitMode,
2920         IDWriteRenderingParams2 **params) = 0;
2921 
2922     virtual HRESULT STDMETHODCALLTYPE CreateGlyphRunAnalysis(
2923         const DWRITE_GLYPH_RUN *run,
2924         const DWRITE_MATRIX *transform,
2925         DWRITE_RENDERING_MODE renderingMode,
2926         DWRITE_MEASURING_MODE measuringMode,
2927         DWRITE_GRID_FIT_MODE gridFitMode,
2928         DWRITE_TEXT_ANTIALIAS_MODE antialiasMode,
2929         FLOAT originX,
2930         FLOAT originY,
2931         IDWriteGlyphRunAnalysis **analysis) = 0;
2932 
2933 };
2934 #ifdef __CRT_UUID_DECL
2935 __CRT_UUID_DECL(IDWriteFactory2, 0x0439fc60, 0xca44, 0x4994, 0x8d,0xee, 0x3a,0x9a,0xf7,0xb7,0x32,0xec)
2936 #endif
2937 #else
2938 typedef struct IDWriteFactory2Vtbl {
2939     BEGIN_INTERFACE
2940 
2941     /*** IUnknown methods ***/
2942     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2943         IDWriteFactory2 *This,
2944         REFIID riid,
2945         void **ppvObject);
2946 
2947     ULONG (STDMETHODCALLTYPE *AddRef)(
2948         IDWriteFactory2 *This);
2949 
2950     ULONG (STDMETHODCALLTYPE *Release)(
2951         IDWriteFactory2 *This);
2952 
2953     /*** IDWriteFactory methods ***/
2954     HRESULT (STDMETHODCALLTYPE *GetSystemFontCollection)(
2955         IDWriteFactory2 *This,
2956         IDWriteFontCollection **collection,
2957         WINBOOL check_for_updates);
2958 
2959     HRESULT (STDMETHODCALLTYPE *CreateCustomFontCollection)(
2960         IDWriteFactory2 *This,
2961         IDWriteFontCollectionLoader *loader,
2962         const void *key,
2963         UINT32 key_size,
2964         IDWriteFontCollection **collection);
2965 
2966     HRESULT (STDMETHODCALLTYPE *RegisterFontCollectionLoader)(
2967         IDWriteFactory2 *This,
2968         IDWriteFontCollectionLoader *loader);
2969 
2970     HRESULT (STDMETHODCALLTYPE *UnregisterFontCollectionLoader)(
2971         IDWriteFactory2 *This,
2972         IDWriteFontCollectionLoader *loader);
2973 
2974     HRESULT (STDMETHODCALLTYPE *CreateFontFileReference)(
2975         IDWriteFactory2 *This,
2976         const WCHAR *path,
2977         const FILETIME *writetime,
2978         IDWriteFontFile **font_file);
2979 
2980     HRESULT (STDMETHODCALLTYPE *CreateCustomFontFileReference)(
2981         IDWriteFactory2 *This,
2982         const void *reference_key,
2983         UINT32 key_size,
2984         IDWriteFontFileLoader *loader,
2985         IDWriteFontFile **font_file);
2986 
2987     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
2988         IDWriteFactory2 *This,
2989         DWRITE_FONT_FACE_TYPE facetype,
2990         UINT32 files_number,
2991         IDWriteFontFile *const *font_files,
2992         UINT32 index,
2993         DWRITE_FONT_SIMULATIONS sim_flags,
2994         IDWriteFontFace **font_face);
2995 
2996     HRESULT (STDMETHODCALLTYPE *CreateRenderingParams)(
2997         IDWriteFactory2 *This,
2998         IDWriteRenderingParams **params);
2999 
3000     HRESULT (STDMETHODCALLTYPE *CreateMonitorRenderingParams)(
3001         IDWriteFactory2 *This,
3002         HMONITOR monitor,
3003         IDWriteRenderingParams **params);
3004 
3005     HRESULT (STDMETHODCALLTYPE *CreateCustomRenderingParams)(
3006         IDWriteFactory2 *This,
3007         FLOAT gamma,
3008         FLOAT enhancedContrast,
3009         FLOAT cleartype_level,
3010         DWRITE_PIXEL_GEOMETRY geometry,
3011         DWRITE_RENDERING_MODE mode,
3012         IDWriteRenderingParams **params);
3013 
3014     HRESULT (STDMETHODCALLTYPE *RegisterFontFileLoader)(
3015         IDWriteFactory2 *This,
3016         IDWriteFontFileLoader *loader);
3017 
3018     HRESULT (STDMETHODCALLTYPE *UnregisterFontFileLoader)(
3019         IDWriteFactory2 *This,
3020         IDWriteFontFileLoader *loader);
3021 
3022     HRESULT (STDMETHODCALLTYPE *CreateTextFormat)(
3023         IDWriteFactory2 *This,
3024         const WCHAR *family_name,
3025         IDWriteFontCollection *collection,
3026         DWRITE_FONT_WEIGHT weight,
3027         DWRITE_FONT_STYLE style,
3028         DWRITE_FONT_STRETCH stretch,
3029         FLOAT size,
3030         const WCHAR *locale,
3031         IDWriteTextFormat **format);
3032 
3033     HRESULT (STDMETHODCALLTYPE *CreateTypography)(
3034         IDWriteFactory2 *This,
3035         IDWriteTypography **typography);
3036 
3037     HRESULT (STDMETHODCALLTYPE *GetGdiInterop)(
3038         IDWriteFactory2 *This,
3039         IDWriteGdiInterop **gdi_interop);
3040 
3041     HRESULT (STDMETHODCALLTYPE *CreateTextLayout)(
3042         IDWriteFactory2 *This,
3043         const WCHAR *string,
3044         UINT32 len,
3045         IDWriteTextFormat *format,
3046         FLOAT max_width,
3047         FLOAT max_height,
3048         IDWriteTextLayout **layout);
3049 
3050     HRESULT (STDMETHODCALLTYPE *CreateGdiCompatibleTextLayout)(
3051         IDWriteFactory2 *This,
3052         const WCHAR *string,
3053         UINT32 len,
3054         IDWriteTextFormat *format,
3055         FLOAT layout_width,
3056         FLOAT layout_height,
3057         FLOAT pixels_per_dip,
3058         const DWRITE_MATRIX *transform,
3059         WINBOOL use_gdi_natural,
3060         IDWriteTextLayout **layout);
3061 
3062     HRESULT (STDMETHODCALLTYPE *CreateEllipsisTrimmingSign)(
3063         IDWriteFactory2 *This,
3064         IDWriteTextFormat *format,
3065         IDWriteInlineObject **trimming_sign);
3066 
3067     HRESULT (STDMETHODCALLTYPE *CreateTextAnalyzer)(
3068         IDWriteFactory2 *This,
3069         IDWriteTextAnalyzer **analyzer);
3070 
3071     HRESULT (STDMETHODCALLTYPE *CreateNumberSubstitution)(
3072         IDWriteFactory2 *This,
3073         DWRITE_NUMBER_SUBSTITUTION_METHOD method,
3074         const WCHAR *locale,
3075         WINBOOL ignore_user_override,
3076         IDWriteNumberSubstitution **substitution);
3077 
3078     HRESULT (STDMETHODCALLTYPE *CreateGlyphRunAnalysis)(
3079         IDWriteFactory2 *This,
3080         const DWRITE_GLYPH_RUN *glyph_run,
3081         FLOAT pixels_per_dip,
3082         const DWRITE_MATRIX *transform,
3083         DWRITE_RENDERING_MODE rendering_mode,
3084         DWRITE_MEASURING_MODE measuring_mode,
3085         FLOAT baseline_x,
3086         FLOAT baseline_y,
3087         IDWriteGlyphRunAnalysis **analysis);
3088 
3089     /*** IDWriteFactory1 methods ***/
3090     HRESULT (STDMETHODCALLTYPE *GetEudcFontCollection)(
3091         IDWriteFactory2 *This,
3092         IDWriteFontCollection **collection,
3093         WINBOOL check_for_updates);
3094 
3095     HRESULT (STDMETHODCALLTYPE *IDWriteFactory1_CreateCustomRenderingParams)(
3096         IDWriteFactory2 *This,
3097         FLOAT gamma,
3098         FLOAT enhcontrast,
3099         FLOAT enhcontrast_grayscale,
3100         FLOAT cleartype_level,
3101         DWRITE_PIXEL_GEOMETRY geometry,
3102         DWRITE_RENDERING_MODE mode,
3103         IDWriteRenderingParams1 **params);
3104 
3105     /*** IDWriteFactory2 methods ***/
3106     HRESULT (STDMETHODCALLTYPE *GetSystemFontFallback)(
3107         IDWriteFactory2 *This,
3108         IDWriteFontFallback **fallback);
3109 
3110     HRESULT (STDMETHODCALLTYPE *CreateFontFallbackBuilder)(
3111         IDWriteFactory2 *This,
3112         IDWriteFontFallbackBuilder **fallbackbuilder);
3113 
3114     HRESULT (STDMETHODCALLTYPE *TranslateColorGlyphRun)(
3115         IDWriteFactory2 *This,
3116         FLOAT originX,
3117         FLOAT originY,
3118         const DWRITE_GLYPH_RUN *run,
3119         const DWRITE_GLYPH_RUN_DESCRIPTION *rundescr,
3120         DWRITE_MEASURING_MODE mode,
3121         const DWRITE_MATRIX *transform,
3122         UINT32 palette_index,
3123         IDWriteColorGlyphRunEnumerator **colorlayers);
3124 
3125     HRESULT (STDMETHODCALLTYPE *IDWriteFactory2_CreateCustomRenderingParams)(
3126         IDWriteFactory2 *This,
3127         FLOAT gamma,
3128         FLOAT contrast,
3129         FLOAT grayscalecontrast,
3130         FLOAT cleartypeLevel,
3131         DWRITE_PIXEL_GEOMETRY pixelGeometry,
3132         DWRITE_RENDERING_MODE renderingMode,
3133         DWRITE_GRID_FIT_MODE gridFitMode,
3134         IDWriteRenderingParams2 **params);
3135 
3136     HRESULT (STDMETHODCALLTYPE *IDWriteFactory2_CreateGlyphRunAnalysis)(
3137         IDWriteFactory2 *This,
3138         const DWRITE_GLYPH_RUN *run,
3139         const DWRITE_MATRIX *transform,
3140         DWRITE_RENDERING_MODE renderingMode,
3141         DWRITE_MEASURING_MODE measuringMode,
3142         DWRITE_GRID_FIT_MODE gridFitMode,
3143         DWRITE_TEXT_ANTIALIAS_MODE antialiasMode,
3144         FLOAT originX,
3145         FLOAT originY,
3146         IDWriteGlyphRunAnalysis **analysis);
3147 
3148     END_INTERFACE
3149 } IDWriteFactory2Vtbl;
3150 
3151 interface IDWriteFactory2 {
3152     CONST_VTBL IDWriteFactory2Vtbl* lpVtbl;
3153 };
3154 
3155 #ifdef COBJMACROS
3156 #ifndef WIDL_C_INLINE_WRAPPERS
3157 /*** IUnknown methods ***/
3158 #define IDWriteFactory2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3159 #define IDWriteFactory2_AddRef(This) (This)->lpVtbl->AddRef(This)
3160 #define IDWriteFactory2_Release(This) (This)->lpVtbl->Release(This)
3161 /*** IDWriteFactory methods ***/
3162 #define IDWriteFactory2_GetSystemFontCollection(This,collection,check_for_updates) (This)->lpVtbl->GetSystemFontCollection(This,collection,check_for_updates)
3163 #define IDWriteFactory2_CreateCustomFontCollection(This,loader,key,key_size,collection) (This)->lpVtbl->CreateCustomFontCollection(This,loader,key,key_size,collection)
3164 #define IDWriteFactory2_RegisterFontCollectionLoader(This,loader) (This)->lpVtbl->RegisterFontCollectionLoader(This,loader)
3165 #define IDWriteFactory2_UnregisterFontCollectionLoader(This,loader) (This)->lpVtbl->UnregisterFontCollectionLoader(This,loader)
3166 #define IDWriteFactory2_CreateFontFileReference(This,path,writetime,font_file) (This)->lpVtbl->CreateFontFileReference(This,path,writetime,font_file)
3167 #define IDWriteFactory2_CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file) (This)->lpVtbl->CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file)
3168 #define IDWriteFactory2_CreateFontFace(This,facetype,files_number,font_files,index,sim_flags,font_face) (This)->lpVtbl->CreateFontFace(This,facetype,files_number,font_files,index,sim_flags,font_face)
3169 #define IDWriteFactory2_CreateRenderingParams(This,params) (This)->lpVtbl->CreateRenderingParams(This,params)
3170 #define IDWriteFactory2_CreateMonitorRenderingParams(This,monitor,params) (This)->lpVtbl->CreateMonitorRenderingParams(This,monitor,params)
3171 #define IDWriteFactory2_RegisterFontFileLoader(This,loader) (This)->lpVtbl->RegisterFontFileLoader(This,loader)
3172 #define IDWriteFactory2_UnregisterFontFileLoader(This,loader) (This)->lpVtbl->UnregisterFontFileLoader(This,loader)
3173 #define IDWriteFactory2_CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format) (This)->lpVtbl->CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format)
3174 #define IDWriteFactory2_CreateTypography(This,typography) (This)->lpVtbl->CreateTypography(This,typography)
3175 #define IDWriteFactory2_GetGdiInterop(This,gdi_interop) (This)->lpVtbl->GetGdiInterop(This,gdi_interop)
3176 #define IDWriteFactory2_CreateTextLayout(This,string,len,format,max_width,max_height,layout) (This)->lpVtbl->CreateTextLayout(This,string,len,format,max_width,max_height,layout)
3177 #define IDWriteFactory2_CreateGdiCompatibleTextLayout(This,string,len,format,layout_width,layout_height,pixels_per_dip,transform,use_gdi_natural,layout) (This)->lpVtbl->CreateGdiCompatibleTextLayout(This,string,len,format,layout_width,layout_height,pixels_per_dip,transform,use_gdi_natural,layout)
3178 #define IDWriteFactory2_CreateEllipsisTrimmingSign(This,format,trimming_sign) (This)->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign)
3179 #define IDWriteFactory2_CreateTextAnalyzer(This,analyzer) (This)->lpVtbl->CreateTextAnalyzer(This,analyzer)
3180 #define IDWriteFactory2_CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution) (This)->lpVtbl->CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution)
3181 /*** IDWriteFactory1 methods ***/
3182 #define IDWriteFactory2_GetEudcFontCollection(This,collection,check_for_updates) (This)->lpVtbl->GetEudcFontCollection(This,collection,check_for_updates)
3183 /*** IDWriteFactory2 methods ***/
3184 #define IDWriteFactory2_GetSystemFontFallback(This,fallback) (This)->lpVtbl->GetSystemFontFallback(This,fallback)
3185 #define IDWriteFactory2_CreateFontFallbackBuilder(This,fallbackbuilder) (This)->lpVtbl->CreateFontFallbackBuilder(This,fallbackbuilder)
3186 #define IDWriteFactory2_TranslateColorGlyphRun(This,originX,originY,run,rundescr,mode,transform,palette_index,colorlayers) (This)->lpVtbl->TranslateColorGlyphRun(This,originX,originY,run,rundescr,mode,transform,palette_index,colorlayers)
3187 #define IDWriteFactory2_CreateCustomRenderingParams(This,gamma,contrast,grayscalecontrast,cleartypeLevel,pixelGeometry,renderingMode,gridFitMode,params) (This)->lpVtbl->IDWriteFactory2_CreateCustomRenderingParams(This,gamma,contrast,grayscalecontrast,cleartypeLevel,pixelGeometry,renderingMode,gridFitMode,params)
3188 #define IDWriteFactory2_CreateGlyphRunAnalysis(This,run,transform,renderingMode,measuringMode,gridFitMode,antialiasMode,originX,originY,analysis) (This)->lpVtbl->IDWriteFactory2_CreateGlyphRunAnalysis(This,run,transform,renderingMode,measuringMode,gridFitMode,antialiasMode,originX,originY,analysis)
3189 #else
3190 /*** IUnknown methods ***/
3191 static FORCEINLINE HRESULT IDWriteFactory2_QueryInterface(IDWriteFactory2* This,REFIID riid,void **ppvObject) {
3192     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3193 }
3194 static FORCEINLINE ULONG IDWriteFactory2_AddRef(IDWriteFactory2* This) {
3195     return This->lpVtbl->AddRef(This);
3196 }
3197 static FORCEINLINE ULONG IDWriteFactory2_Release(IDWriteFactory2* This) {
3198     return This->lpVtbl->Release(This);
3199 }
3200 /*** IDWriteFactory methods ***/
3201 static FORCEINLINE HRESULT IDWriteFactory2_GetSystemFontCollection(IDWriteFactory2* This,IDWriteFontCollection **collection,WINBOOL check_for_updates) {
3202     return This->lpVtbl->GetSystemFontCollection(This,collection,check_for_updates);
3203 }
3204 static FORCEINLINE HRESULT IDWriteFactory2_CreateCustomFontCollection(IDWriteFactory2* This,IDWriteFontCollectionLoader *loader,const void *key,UINT32 key_size,IDWriteFontCollection **collection) {
3205     return This->lpVtbl->CreateCustomFontCollection(This,loader,key,key_size,collection);
3206 }
3207 static FORCEINLINE HRESULT IDWriteFactory2_RegisterFontCollectionLoader(IDWriteFactory2* This,IDWriteFontCollectionLoader *loader) {
3208     return This->lpVtbl->RegisterFontCollectionLoader(This,loader);
3209 }
3210 static FORCEINLINE HRESULT IDWriteFactory2_UnregisterFontCollectionLoader(IDWriteFactory2* This,IDWriteFontCollectionLoader *loader) {
3211     return This->lpVtbl->UnregisterFontCollectionLoader(This,loader);
3212 }
3213 static FORCEINLINE HRESULT IDWriteFactory2_CreateFontFileReference(IDWriteFactory2* This,const WCHAR *path,const FILETIME *writetime,IDWriteFontFile **font_file) {
3214     return This->lpVtbl->CreateFontFileReference(This,path,writetime,font_file);
3215 }
3216 static FORCEINLINE HRESULT IDWriteFactory2_CreateCustomFontFileReference(IDWriteFactory2* This,const void *reference_key,UINT32 key_size,IDWriteFontFileLoader *loader,IDWriteFontFile **font_file) {
3217     return This->lpVtbl->CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file);
3218 }
3219 static FORCEINLINE HRESULT IDWriteFactory2_CreateFontFace(IDWriteFactory2* This,DWRITE_FONT_FACE_TYPE facetype,UINT32 files_number,IDWriteFontFile *const *font_files,UINT32 index,DWRITE_FONT_SIMULATIONS sim_flags,IDWriteFontFace **font_face) {
3220     return This->lpVtbl->CreateFontFace(This,facetype,files_number,font_files,index,sim_flags,font_face);
3221 }
3222 static FORCEINLINE HRESULT IDWriteFactory2_CreateRenderingParams(IDWriteFactory2* This,IDWriteRenderingParams **params) {
3223     return This->lpVtbl->CreateRenderingParams(This,params);
3224 }
3225 static FORCEINLINE HRESULT IDWriteFactory2_CreateMonitorRenderingParams(IDWriteFactory2* This,HMONITOR monitor,IDWriteRenderingParams **params) {
3226     return This->lpVtbl->CreateMonitorRenderingParams(This,monitor,params);
3227 }
3228 static FORCEINLINE HRESULT IDWriteFactory2_RegisterFontFileLoader(IDWriteFactory2* This,IDWriteFontFileLoader *loader) {
3229     return This->lpVtbl->RegisterFontFileLoader(This,loader);
3230 }
3231 static FORCEINLINE HRESULT IDWriteFactory2_UnregisterFontFileLoader(IDWriteFactory2* This,IDWriteFontFileLoader *loader) {
3232     return This->lpVtbl->UnregisterFontFileLoader(This,loader);
3233 }
3234 static FORCEINLINE HRESULT IDWriteFactory2_CreateTextFormat(IDWriteFactory2* This,const WCHAR *family_name,IDWriteFontCollection *collection,DWRITE_FONT_WEIGHT weight,DWRITE_FONT_STYLE style,DWRITE_FONT_STRETCH stretch,FLOAT size,const WCHAR *locale,IDWriteTextFormat **format) {
3235     return This->lpVtbl->CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format);
3236 }
3237 static FORCEINLINE HRESULT IDWriteFactory2_CreateTypography(IDWriteFactory2* This,IDWriteTypography **typography) {
3238     return This->lpVtbl->CreateTypography(This,typography);
3239 }
3240 static FORCEINLINE HRESULT IDWriteFactory2_GetGdiInterop(IDWriteFactory2* This,IDWriteGdiInterop **gdi_interop) {
3241     return This->lpVtbl->GetGdiInterop(This,gdi_interop);
3242 }
3243 static FORCEINLINE HRESULT IDWriteFactory2_CreateTextLayout(IDWriteFactory2* This,const WCHAR *string,UINT32 len,IDWriteTextFormat *format,FLOAT max_width,FLOAT max_height,IDWriteTextLayout **layout) {
3244     return This->lpVtbl->CreateTextLayout(This,string,len,format,max_width,max_height,layout);
3245 }
3246 static FORCEINLINE HRESULT IDWriteFactory2_CreateGdiCompatibleTextLayout(IDWriteFactory2* This,const WCHAR *string,UINT32 len,IDWriteTextFormat *format,FLOAT layout_width,FLOAT layout_height,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,WINBOOL use_gdi_natural,IDWriteTextLayout **layout) {
3247     return This->lpVtbl->CreateGdiCompatibleTextLayout(This,string,len,format,layout_width,layout_height,pixels_per_dip,transform,use_gdi_natural,layout);
3248 }
3249 static FORCEINLINE HRESULT IDWriteFactory2_CreateEllipsisTrimmingSign(IDWriteFactory2* This,IDWriteTextFormat *format,IDWriteInlineObject **trimming_sign) {
3250     return This->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign);
3251 }
3252 static FORCEINLINE HRESULT IDWriteFactory2_CreateTextAnalyzer(IDWriteFactory2* This,IDWriteTextAnalyzer **analyzer) {
3253     return This->lpVtbl->CreateTextAnalyzer(This,analyzer);
3254 }
3255 static FORCEINLINE HRESULT IDWriteFactory2_CreateNumberSubstitution(IDWriteFactory2* This,DWRITE_NUMBER_SUBSTITUTION_METHOD method,const WCHAR *locale,WINBOOL ignore_user_override,IDWriteNumberSubstitution **substitution) {
3256     return This->lpVtbl->CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution);
3257 }
3258 /*** IDWriteFactory1 methods ***/
3259 static FORCEINLINE HRESULT IDWriteFactory2_GetEudcFontCollection(IDWriteFactory2* This,IDWriteFontCollection **collection,WINBOOL check_for_updates) {
3260     return This->lpVtbl->GetEudcFontCollection(This,collection,check_for_updates);
3261 }
3262 /*** IDWriteFactory2 methods ***/
3263 static FORCEINLINE HRESULT IDWriteFactory2_GetSystemFontFallback(IDWriteFactory2* This,IDWriteFontFallback **fallback) {
3264     return This->lpVtbl->GetSystemFontFallback(This,fallback);
3265 }
3266 static FORCEINLINE HRESULT IDWriteFactory2_CreateFontFallbackBuilder(IDWriteFactory2* This,IDWriteFontFallbackBuilder **fallbackbuilder) {
3267     return This->lpVtbl->CreateFontFallbackBuilder(This,fallbackbuilder);
3268 }
3269 static FORCEINLINE HRESULT IDWriteFactory2_TranslateColorGlyphRun(IDWriteFactory2* This,FLOAT originX,FLOAT originY,const DWRITE_GLYPH_RUN *run,const DWRITE_GLYPH_RUN_DESCRIPTION *rundescr,DWRITE_MEASURING_MODE mode,const DWRITE_MATRIX *transform,UINT32 palette_index,IDWriteColorGlyphRunEnumerator **colorlayers) {
3270     return This->lpVtbl->TranslateColorGlyphRun(This,originX,originY,run,rundescr,mode,transform,palette_index,colorlayers);
3271 }
3272 static FORCEINLINE HRESULT IDWriteFactory2_CreateCustomRenderingParams(IDWriteFactory2* This,FLOAT gamma,FLOAT contrast,FLOAT grayscalecontrast,FLOAT cleartypeLevel,DWRITE_PIXEL_GEOMETRY pixelGeometry,DWRITE_RENDERING_MODE renderingMode,DWRITE_GRID_FIT_MODE gridFitMode,IDWriteRenderingParams2 **params) {
3273     return This->lpVtbl->IDWriteFactory2_CreateCustomRenderingParams(This,gamma,contrast,grayscalecontrast,cleartypeLevel,pixelGeometry,renderingMode,gridFitMode,params);
3274 }
3275 static FORCEINLINE HRESULT IDWriteFactory2_CreateGlyphRunAnalysis(IDWriteFactory2* This,const DWRITE_GLYPH_RUN *run,const DWRITE_MATRIX *transform,DWRITE_RENDERING_MODE renderingMode,DWRITE_MEASURING_MODE measuringMode,DWRITE_GRID_FIT_MODE gridFitMode,DWRITE_TEXT_ANTIALIAS_MODE antialiasMode,FLOAT originX,FLOAT originY,IDWriteGlyphRunAnalysis **analysis) {
3276     return This->lpVtbl->IDWriteFactory2_CreateGlyphRunAnalysis(This,run,transform,renderingMode,measuringMode,gridFitMode,antialiasMode,originX,originY,analysis);
3277 }
3278 #endif
3279 #endif
3280 
3281 #endif
3282 
3283 
3284 #endif  /* __IDWriteFactory2_INTERFACE_DEFINED__ */
3285 
3286 /* Begin additional prototypes for all interfaces */
3287 
3288 
3289 /* End additional prototypes */
3290 
3291 #ifdef __cplusplus
3292 }
3293 #endif
3294 
3295 #endif /* __dwrite_2_h__ */
3296