1 /*** Autogenerated by WIDL 6.4 from include/dwrite_3.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_3_h__
17 #define __dwrite_3_h__
18 
19 /* Forward declarations */
20 
21 #ifndef __IDWriteFontDownloadListener_FWD_DEFINED__
22 #define __IDWriteFontDownloadListener_FWD_DEFINED__
23 typedef interface IDWriteFontDownloadListener IDWriteFontDownloadListener;
24 #ifdef __cplusplus
25 interface IDWriteFontDownloadListener;
26 #endif /* __cplusplus */
27 #endif
28 
29 #ifndef __IDWriteFontDownloadQueue_FWD_DEFINED__
30 #define __IDWriteFontDownloadQueue_FWD_DEFINED__
31 typedef interface IDWriteFontDownloadQueue IDWriteFontDownloadQueue;
32 #ifdef __cplusplus
33 interface IDWriteFontDownloadQueue;
34 #endif /* __cplusplus */
35 #endif
36 
37 #ifndef __IDWriteRenderingParams3_FWD_DEFINED__
38 #define __IDWriteRenderingParams3_FWD_DEFINED__
39 typedef interface IDWriteRenderingParams3 IDWriteRenderingParams3;
40 #ifdef __cplusplus
41 interface IDWriteRenderingParams3;
42 #endif /* __cplusplus */
43 #endif
44 
45 #ifndef __IDWriteStringList_FWD_DEFINED__
46 #define __IDWriteStringList_FWD_DEFINED__
47 typedef interface IDWriteStringList IDWriteStringList;
48 #ifdef __cplusplus
49 interface IDWriteStringList;
50 #endif /* __cplusplus */
51 #endif
52 
53 #ifndef __IDWriteFontSet_FWD_DEFINED__
54 #define __IDWriteFontSet_FWD_DEFINED__
55 typedef interface IDWriteFontSet IDWriteFontSet;
56 #ifdef __cplusplus
57 interface IDWriteFontSet;
58 #endif /* __cplusplus */
59 #endif
60 
61 #ifndef __IDWriteFontResource_FWD_DEFINED__
62 #define __IDWriteFontResource_FWD_DEFINED__
63 typedef interface IDWriteFontResource IDWriteFontResource;
64 #ifdef __cplusplus
65 interface IDWriteFontResource;
66 #endif /* __cplusplus */
67 #endif
68 
69 #ifndef __IDWriteFontSet1_FWD_DEFINED__
70 #define __IDWriteFontSet1_FWD_DEFINED__
71 typedef interface IDWriteFontSet1 IDWriteFontSet1;
72 #ifdef __cplusplus
73 interface IDWriteFontSet1;
74 #endif /* __cplusplus */
75 #endif
76 
77 #ifndef __IDWriteFont3_FWD_DEFINED__
78 #define __IDWriteFont3_FWD_DEFINED__
79 typedef interface IDWriteFont3 IDWriteFont3;
80 #ifdef __cplusplus
81 interface IDWriteFont3;
82 #endif /* __cplusplus */
83 #endif
84 
85 #ifndef __IDWriteFontFamily1_FWD_DEFINED__
86 #define __IDWriteFontFamily1_FWD_DEFINED__
87 typedef interface IDWriteFontFamily1 IDWriteFontFamily1;
88 #ifdef __cplusplus
89 interface IDWriteFontFamily1;
90 #endif /* __cplusplus */
91 #endif
92 
93 #ifndef __IDWriteFontFamily2_FWD_DEFINED__
94 #define __IDWriteFontFamily2_FWD_DEFINED__
95 typedef interface IDWriteFontFamily2 IDWriteFontFamily2;
96 #ifdef __cplusplus
97 interface IDWriteFontFamily2;
98 #endif /* __cplusplus */
99 #endif
100 
101 #ifndef __IDWriteFontCollection1_FWD_DEFINED__
102 #define __IDWriteFontCollection1_FWD_DEFINED__
103 typedef interface IDWriteFontCollection1 IDWriteFontCollection1;
104 #ifdef __cplusplus
105 interface IDWriteFontCollection1;
106 #endif /* __cplusplus */
107 #endif
108 
109 #ifndef __IDWriteFontCollection2_FWD_DEFINED__
110 #define __IDWriteFontCollection2_FWD_DEFINED__
111 typedef interface IDWriteFontCollection2 IDWriteFontCollection2;
112 #ifdef __cplusplus
113 interface IDWriteFontCollection2;
114 #endif /* __cplusplus */
115 #endif
116 
117 #ifndef __IDWriteFontCollection3_FWD_DEFINED__
118 #define __IDWriteFontCollection3_FWD_DEFINED__
119 typedef interface IDWriteFontCollection3 IDWriteFontCollection3;
120 #ifdef __cplusplus
121 interface IDWriteFontCollection3;
122 #endif /* __cplusplus */
123 #endif
124 
125 #ifndef __IDWriteFontFaceReference_FWD_DEFINED__
126 #define __IDWriteFontFaceReference_FWD_DEFINED__
127 typedef interface IDWriteFontFaceReference IDWriteFontFaceReference;
128 #ifdef __cplusplus
129 interface IDWriteFontFaceReference;
130 #endif /* __cplusplus */
131 #endif
132 
133 #ifndef __IDWriteFontFaceReference1_FWD_DEFINED__
134 #define __IDWriteFontFaceReference1_FWD_DEFINED__
135 typedef interface IDWriteFontFaceReference1 IDWriteFontFaceReference1;
136 #ifdef __cplusplus
137 interface IDWriteFontFaceReference1;
138 #endif /* __cplusplus */
139 #endif
140 
141 #ifndef __IDWriteFontList1_FWD_DEFINED__
142 #define __IDWriteFontList1_FWD_DEFINED__
143 typedef interface IDWriteFontList1 IDWriteFontList1;
144 #ifdef __cplusplus
145 interface IDWriteFontList1;
146 #endif /* __cplusplus */
147 #endif
148 
149 #ifndef __IDWriteFontList2_FWD_DEFINED__
150 #define __IDWriteFontList2_FWD_DEFINED__
151 typedef interface IDWriteFontList2 IDWriteFontList2;
152 #ifdef __cplusplus
153 interface IDWriteFontList2;
154 #endif /* __cplusplus */
155 #endif
156 
157 #ifndef __IDWriteFontSet2_FWD_DEFINED__
158 #define __IDWriteFontSet2_FWD_DEFINED__
159 typedef interface IDWriteFontSet2 IDWriteFontSet2;
160 #ifdef __cplusplus
161 interface IDWriteFontSet2;
162 #endif /* __cplusplus */
163 #endif
164 
165 #ifndef __IDWriteFontSet3_FWD_DEFINED__
166 #define __IDWriteFontSet3_FWD_DEFINED__
167 typedef interface IDWriteFontSet3 IDWriteFontSet3;
168 #ifdef __cplusplus
169 interface IDWriteFontSet3;
170 #endif /* __cplusplus */
171 #endif
172 
173 #ifndef __IDWriteFontFace3_FWD_DEFINED__
174 #define __IDWriteFontFace3_FWD_DEFINED__
175 typedef interface IDWriteFontFace3 IDWriteFontFace3;
176 #ifdef __cplusplus
177 interface IDWriteFontFace3;
178 #endif /* __cplusplus */
179 #endif
180 
181 #ifndef __IDWriteTextFormat2_FWD_DEFINED__
182 #define __IDWriteTextFormat2_FWD_DEFINED__
183 typedef interface IDWriteTextFormat2 IDWriteTextFormat2;
184 #ifdef __cplusplus
185 interface IDWriteTextFormat2;
186 #endif /* __cplusplus */
187 #endif
188 
189 #ifndef __IDWriteTextFormat3_FWD_DEFINED__
190 #define __IDWriteTextFormat3_FWD_DEFINED__
191 typedef interface IDWriteTextFormat3 IDWriteTextFormat3;
192 #ifdef __cplusplus
193 interface IDWriteTextFormat3;
194 #endif /* __cplusplus */
195 #endif
196 
197 #ifndef __IDWriteTextLayout3_FWD_DEFINED__
198 #define __IDWriteTextLayout3_FWD_DEFINED__
199 typedef interface IDWriteTextLayout3 IDWriteTextLayout3;
200 #ifdef __cplusplus
201 interface IDWriteTextLayout3;
202 #endif /* __cplusplus */
203 #endif
204 
205 #ifndef __IDWriteTextLayout4_FWD_DEFINED__
206 #define __IDWriteTextLayout4_FWD_DEFINED__
207 typedef interface IDWriteTextLayout4 IDWriteTextLayout4;
208 #ifdef __cplusplus
209 interface IDWriteTextLayout4;
210 #endif /* __cplusplus */
211 #endif
212 
213 #ifndef __IDWriteFontFallback1_FWD_DEFINED__
214 #define __IDWriteFontFallback1_FWD_DEFINED__
215 typedef interface IDWriteFontFallback1 IDWriteFontFallback1;
216 #ifdef __cplusplus
217 interface IDWriteFontFallback1;
218 #endif /* __cplusplus */
219 #endif
220 
221 #ifndef __IDWriteGdiInterop1_FWD_DEFINED__
222 #define __IDWriteGdiInterop1_FWD_DEFINED__
223 typedef interface IDWriteGdiInterop1 IDWriteGdiInterop1;
224 #ifdef __cplusplus
225 interface IDWriteGdiInterop1;
226 #endif /* __cplusplus */
227 #endif
228 
229 #ifndef __IDWriteFontSetBuilder_FWD_DEFINED__
230 #define __IDWriteFontSetBuilder_FWD_DEFINED__
231 typedef interface IDWriteFontSetBuilder IDWriteFontSetBuilder;
232 #ifdef __cplusplus
233 interface IDWriteFontSetBuilder;
234 #endif /* __cplusplus */
235 #endif
236 
237 #ifndef __IDWriteFontSetBuilder1_FWD_DEFINED__
238 #define __IDWriteFontSetBuilder1_FWD_DEFINED__
239 typedef interface IDWriteFontSetBuilder1 IDWriteFontSetBuilder1;
240 #ifdef __cplusplus
241 interface IDWriteFontSetBuilder1;
242 #endif /* __cplusplus */
243 #endif
244 
245 #ifndef __IDWriteFontSetBuilder2_FWD_DEFINED__
246 #define __IDWriteFontSetBuilder2_FWD_DEFINED__
247 typedef interface IDWriteFontSetBuilder2 IDWriteFontSetBuilder2;
248 #ifdef __cplusplus
249 interface IDWriteFontSetBuilder2;
250 #endif /* __cplusplus */
251 #endif
252 
253 #ifndef __IDWriteFactory3_FWD_DEFINED__
254 #define __IDWriteFactory3_FWD_DEFINED__
255 typedef interface IDWriteFactory3 IDWriteFactory3;
256 #ifdef __cplusplus
257 interface IDWriteFactory3;
258 #endif /* __cplusplus */
259 #endif
260 
261 #ifndef __IDWriteFontFace4_FWD_DEFINED__
262 #define __IDWriteFontFace4_FWD_DEFINED__
263 typedef interface IDWriteFontFace4 IDWriteFontFace4;
264 #ifdef __cplusplus
265 interface IDWriteFontFace4;
266 #endif /* __cplusplus */
267 #endif
268 
269 #ifndef __IDWriteFontFace5_FWD_DEFINED__
270 #define __IDWriteFontFace5_FWD_DEFINED__
271 typedef interface IDWriteFontFace5 IDWriteFontFace5;
272 #ifdef __cplusplus
273 interface IDWriteFontFace5;
274 #endif /* __cplusplus */
275 #endif
276 
277 #ifndef __IDWriteColorGlyphRunEnumerator1_FWD_DEFINED__
278 #define __IDWriteColorGlyphRunEnumerator1_FWD_DEFINED__
279 typedef interface IDWriteColorGlyphRunEnumerator1 IDWriteColorGlyphRunEnumerator1;
280 #ifdef __cplusplus
281 interface IDWriteColorGlyphRunEnumerator1;
282 #endif /* __cplusplus */
283 #endif
284 
285 #ifndef __IDWriteFactory4_FWD_DEFINED__
286 #define __IDWriteFactory4_FWD_DEFINED__
287 typedef interface IDWriteFactory4 IDWriteFactory4;
288 #ifdef __cplusplus
289 interface IDWriteFactory4;
290 #endif /* __cplusplus */
291 #endif
292 
293 #ifndef __IDWriteAsyncResult_FWD_DEFINED__
294 #define __IDWriteAsyncResult_FWD_DEFINED__
295 typedef interface IDWriteAsyncResult IDWriteAsyncResult;
296 #ifdef __cplusplus
297 interface IDWriteAsyncResult;
298 #endif /* __cplusplus */
299 #endif
300 
301 #ifndef __IDWriteRemoteFontFileStream_FWD_DEFINED__
302 #define __IDWriteRemoteFontFileStream_FWD_DEFINED__
303 typedef interface IDWriteRemoteFontFileStream IDWriteRemoteFontFileStream;
304 #ifdef __cplusplus
305 interface IDWriteRemoteFontFileStream;
306 #endif /* __cplusplus */
307 #endif
308 
309 #ifndef __IDWriteRemoteFontFileLoader_FWD_DEFINED__
310 #define __IDWriteRemoteFontFileLoader_FWD_DEFINED__
311 typedef interface IDWriteRemoteFontFileLoader IDWriteRemoteFontFileLoader;
312 #ifdef __cplusplus
313 interface IDWriteRemoteFontFileLoader;
314 #endif /* __cplusplus */
315 #endif
316 
317 #ifndef __IDWriteInMemoryFontFileLoader_FWD_DEFINED__
318 #define __IDWriteInMemoryFontFileLoader_FWD_DEFINED__
319 typedef interface IDWriteInMemoryFontFileLoader IDWriteInMemoryFontFileLoader;
320 #ifdef __cplusplus
321 interface IDWriteInMemoryFontFileLoader;
322 #endif /* __cplusplus */
323 #endif
324 
325 #ifndef __IDWriteFactory5_FWD_DEFINED__
326 #define __IDWriteFactory5_FWD_DEFINED__
327 typedef interface IDWriteFactory5 IDWriteFactory5;
328 #ifdef __cplusplus
329 interface IDWriteFactory5;
330 #endif /* __cplusplus */
331 #endif
332 
333 #ifndef __IDWriteFactory6_FWD_DEFINED__
334 #define __IDWriteFactory6_FWD_DEFINED__
335 typedef interface IDWriteFactory6 IDWriteFactory6;
336 #ifdef __cplusplus
337 interface IDWriteFactory6;
338 #endif /* __cplusplus */
339 #endif
340 
341 #ifndef __IDWriteFactory7_FWD_DEFINED__
342 #define __IDWriteFactory7_FWD_DEFINED__
343 typedef interface IDWriteFactory7 IDWriteFactory7;
344 #ifdef __cplusplus
345 interface IDWriteFactory7;
346 #endif /* __cplusplus */
347 #endif
348 
349 /* Headers for imported files */
350 
351 #include <dwrite_2.h>
352 
353 #ifdef __cplusplus
354 extern "C" {
355 #endif
356 
357 #ifndef __IDWriteFontFaceReference_FWD_DEFINED__
358 #define __IDWriteFontFaceReference_FWD_DEFINED__
359 typedef interface IDWriteFontFaceReference IDWriteFontFaceReference;
360 #ifdef __cplusplus
361 interface IDWriteFontFaceReference;
362 #endif /* __cplusplus */
363 #endif
364 
365 #ifndef __IDWriteFontFaceReference1_FWD_DEFINED__
366 #define __IDWriteFontFaceReference1_FWD_DEFINED__
367 typedef interface IDWriteFontFaceReference1 IDWriteFontFaceReference1;
368 #ifdef __cplusplus
369 interface IDWriteFontFaceReference1;
370 #endif /* __cplusplus */
371 #endif
372 
373 #ifndef __IDWriteFontFace3_FWD_DEFINED__
374 #define __IDWriteFontFace3_FWD_DEFINED__
375 typedef interface IDWriteFontFace3 IDWriteFontFace3;
376 #ifdef __cplusplus
377 interface IDWriteFontFace3;
378 #endif /* __cplusplus */
379 #endif
380 
381 #ifndef __IDWriteFontSet_FWD_DEFINED__
382 #define __IDWriteFontSet_FWD_DEFINED__
383 typedef interface IDWriteFontSet IDWriteFontSet;
384 #ifdef __cplusplus
385 interface IDWriteFontSet;
386 #endif /* __cplusplus */
387 #endif
388 
389 #ifndef __IDWriteFontDownloadQueue_FWD_DEFINED__
390 #define __IDWriteFontDownloadQueue_FWD_DEFINED__
391 typedef interface IDWriteFontDownloadQueue IDWriteFontDownloadQueue;
392 #ifdef __cplusplus
393 interface IDWriteFontDownloadQueue;
394 #endif /* __cplusplus */
395 #endif
396 
397 #ifndef __IDWriteFontFace5_FWD_DEFINED__
398 #define __IDWriteFontFace5_FWD_DEFINED__
399 typedef interface IDWriteFontFace5 IDWriteFontFace5;
400 #ifdef __cplusplus
401 interface IDWriteFontFace5;
402 #endif /* __cplusplus */
403 #endif
404 
405 #ifndef __IDWriteFontList2_FWD_DEFINED__
406 #define __IDWriteFontList2_FWD_DEFINED__
407 typedef interface IDWriteFontList2 IDWriteFontList2;
408 #ifdef __cplusplus
409 interface IDWriteFontList2;
410 #endif /* __cplusplus */
411 #endif
412 
413 #ifndef _WINGDI_
414 typedef struct FONTSIGNATURE FONTSIGNATURE;
415 #endif /* _WINGDI_ */
416 typedef enum DWRITE_LOCALITY {
417     DWRITE_LOCALITY_REMOTE = 0,
418     DWRITE_LOCALITY_PARTIAL = 1,
419     DWRITE_LOCALITY_LOCAL = 2
420 } DWRITE_LOCALITY;
421 typedef enum DWRITE_RENDERING_MODE1 {
422     DWRITE_RENDERING_MODE1_DEFAULT = 0,
423     DWRITE_RENDERING_MODE1_ALIASED = 1,
424     DWRITE_RENDERING_MODE1_GDI_CLASSIC = 2,
425     DWRITE_RENDERING_MODE1_GDI_NATURAL = 3,
426     DWRITE_RENDERING_MODE1_NATURAL = 4,
427     DWRITE_RENDERING_MODE1_NATURAL_SYMMETRIC = 5,
428     DWRITE_RENDERING_MODE1_OUTLINE = 6,
429     DWRITE_RENDERING_MODE1_NATURAL_SYMMETRIC_DOWNSAMPLED = 7
430 } DWRITE_RENDERING_MODE1;
431 typedef enum DWRITE_FONT_PROPERTY_ID {
432     DWRITE_FONT_PROPERTY_ID_NONE = 0,
433     DWRITE_FONT_PROPERTY_ID_WEIGHT_STRETCH_STYLE_FAMILY_NAME = 1,
434     DWRITE_FONT_PROPERTY_ID_TYPOGRAPHIC_FAMILY_NAME = 2,
435     DWRITE_FONT_PROPERTY_ID_WEIGHT_STRETCH_STYLE_FACE_NAME = 3,
436     DWRITE_FONT_PROPERTY_ID_FULL_NAME = 4,
437     DWRITE_FONT_PROPERTY_ID_WIN32_FAMILY_NAME = 5,
438     DWRITE_FONT_PROPERTY_ID_POSTSCRIPT_NAME = 6,
439     DWRITE_FONT_PROPERTY_ID_DESIGN_SCRIPT_LANGUAGE_TAG = 7,
440     DWRITE_FONT_PROPERTY_ID_SUPPORTED_SCRIPT_LANGUAGE_TAG = 8,
441     DWRITE_FONT_PROPERTY_ID_SEMANTIC_TAG = 9,
442     DWRITE_FONT_PROPERTY_ID_WEIGHT = 10,
443     DWRITE_FONT_PROPERTY_ID_STRETCH = 11,
444     DWRITE_FONT_PROPERTY_ID_STYLE = 12,
445     DWRITE_FONT_PROPERTY_ID_TYPOGRAPHIC_FACE_NAME = 13,
446     DWRITE_FONT_PROPERTY_ID_TOTAL = DWRITE_FONT_PROPERTY_ID_STYLE + 1,
447     DWRITE_FONT_PROPERTY_ID_TOTAL_RS3 = DWRITE_FONT_PROPERTY_ID_TYPOGRAPHIC_FACE_NAME + 1,
448     DWRITE_FONT_PROPERTY_ID_FAMILY_NAME = DWRITE_FONT_PROPERTY_ID_TYPOGRAPHIC_FAMILY_NAME,
449     DWRITE_FONT_PROPERTY_ID_PREFERRED_FAMILY_NAME = DWRITE_FONT_PROPERTY_ID_WEIGHT_STRETCH_STYLE_FAMILY_NAME,
450     DWRITE_FONT_PROPERTY_ID_FACE_NAME = DWRITE_FONT_PROPERTY_ID_WEIGHT_STRETCH_STYLE_FACE_NAME
451 } DWRITE_FONT_PROPERTY_ID;
452 typedef struct DWRITE_FONT_PROPERTY {
453     DWRITE_FONT_PROPERTY_ID propertyId;
454     const WCHAR *propertyValue;
455     const WCHAR *localeName;
456 } DWRITE_FONT_PROPERTY;
457 #ifdef __cplusplus
458 #define DWRITE_MAKE_FONT_AXIS_TAG(a,b,c,d) (static_cast<DWRITE_FONT_AXIS_TAG>(DWRITE_MAKE_OPENTYPE_TAG(a,b,c,d)))
459 #else
460 #define DWRITE_MAKE_FONT_AXIS_TAG(a,b,c,d) (DWRITE_MAKE_OPENTYPE_TAG(a,b,c,d))
461 #endif
462 typedef enum DWRITE_FONT_AXIS_TAG {
463     DWRITE_FONT_AXIS_TAG_WEIGHT = 0x74686777,
464     DWRITE_FONT_AXIS_TAG_WIDTH = 0x68746477,
465     DWRITE_FONT_AXIS_TAG_SLANT = 0x746e6c73,
466     DWRITE_FONT_AXIS_TAG_OPTICAL_SIZE = 0x7a73706f,
467     DWRITE_FONT_AXIS_TAG_ITALIC = 0x6c617469
468 } DWRITE_FONT_AXIS_TAG;
469 typedef enum DWRITE_FONT_SOURCE_TYPE {
470     DWRITE_FONT_SOURCE_TYPE_UNKNOWN = 0,
471     DWRITE_FONT_SOURCE_TYPE_PER_MACHINE = 1,
472     DWRITE_FONT_SOURCE_TYPE_PER_USER = 2,
473     DWRITE_FONT_SOURCE_TYPE_APPX_PACKAGE = 3,
474     DWRITE_FONT_SOURCE_TYPE_REMOTE_FONT_PROVIDER = 4
475 } DWRITE_FONT_SOURCE_TYPE;
476 typedef struct DWRITE_FONT_AXIS_VALUE {
477     DWRITE_FONT_AXIS_TAG axisTag;
478     FLOAT value;
479 } DWRITE_FONT_AXIS_VALUE;
480 typedef struct DWRITE_FONT_AXIS_RANGE {
481     DWRITE_FONT_AXIS_TAG axisTag;
482     FLOAT minValue;
483     FLOAT maxValue;
484 } DWRITE_FONT_AXIS_RANGE;
485 typedef enum DWRITE_AUTOMATIC_FONT_AXES {
486     DWRITE_AUTOMATIC_FONT_AXES_NONE = 0,
487     DWRITE_AUTOMATIC_FONT_AXES_OPTICAL_SIZE = 1
488 } DWRITE_AUTOMATIC_FONT_AXES;
489 typedef enum DWRITE_FONT_AXIS_ATTRIBUTES {
490     DWRITE_FONT_AXIS_ATTRIBUTES_NONE = 0,
491     DWRITE_FONT_AXIS_ATTRIBUTES_VARIABLE = 1,
492     DWRITE_FONT_AXIS_ATTRIBUTES_HIDDEN = 2
493 } DWRITE_FONT_AXIS_ATTRIBUTES;
494 typedef enum DWRITE_FONT_FAMILY_MODEL {
495     DWRITE_FONT_FAMILY_MODEL_TYPOGRAPHIC = 0,
496     DWRITE_FONT_FAMILY_MODEL_WEIGHT_STRETCH_STYLE = 1
497 } DWRITE_FONT_FAMILY_MODEL;
498 /*****************************************************************************
499  * IDWriteFontDownloadListener interface
500  */
501 #ifndef __IDWriteFontDownloadListener_INTERFACE_DEFINED__
502 #define __IDWriteFontDownloadListener_INTERFACE_DEFINED__
503 
504 DEFINE_GUID(IID_IDWriteFontDownloadListener, 0xb06fe5b9, 0x43ec, 0x4393, 0x88,0x1b, 0xdb,0xe4,0xdc,0x72,0xfd,0xa7);
505 #if defined(__cplusplus) && !defined(CINTERFACE)
506 MIDL_INTERFACE("b06fe5b9-43ec-4393-881b-dbe4dc72fda7")
507 IDWriteFontDownloadListener : public IUnknown
508 {
509     virtual void STDMETHODCALLTYPE DownloadCompleted(
510         IDWriteFontDownloadQueue *queue,
511         IUnknown *context,
512         HRESULT result) = 0;
513 
514 };
515 #ifdef __CRT_UUID_DECL
516 __CRT_UUID_DECL(IDWriteFontDownloadListener, 0xb06fe5b9, 0x43ec, 0x4393, 0x88,0x1b, 0xdb,0xe4,0xdc,0x72,0xfd,0xa7)
517 #endif
518 #else
519 typedef struct IDWriteFontDownloadListenerVtbl {
520     BEGIN_INTERFACE
521 
522     /*** IUnknown methods ***/
523     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
524         IDWriteFontDownloadListener *This,
525         REFIID riid,
526         void **ppvObject);
527 
528     ULONG (STDMETHODCALLTYPE *AddRef)(
529         IDWriteFontDownloadListener *This);
530 
531     ULONG (STDMETHODCALLTYPE *Release)(
532         IDWriteFontDownloadListener *This);
533 
534     /*** IDWriteFontDownloadListener methods ***/
535     void (STDMETHODCALLTYPE *DownloadCompleted)(
536         IDWriteFontDownloadListener *This,
537         IDWriteFontDownloadQueue *queue,
538         IUnknown *context,
539         HRESULT result);
540 
541     END_INTERFACE
542 } IDWriteFontDownloadListenerVtbl;
543 
544 interface IDWriteFontDownloadListener {
545     CONST_VTBL IDWriteFontDownloadListenerVtbl* lpVtbl;
546 };
547 
548 #ifdef COBJMACROS
549 #ifndef WIDL_C_INLINE_WRAPPERS
550 /*** IUnknown methods ***/
551 #define IDWriteFontDownloadListener_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
552 #define IDWriteFontDownloadListener_AddRef(This) (This)->lpVtbl->AddRef(This)
553 #define IDWriteFontDownloadListener_Release(This) (This)->lpVtbl->Release(This)
554 /*** IDWriteFontDownloadListener methods ***/
555 #define IDWriteFontDownloadListener_DownloadCompleted(This,queue,context,result) (This)->lpVtbl->DownloadCompleted(This,queue,context,result)
556 #else
557 /*** IUnknown methods ***/
558 static FORCEINLINE HRESULT IDWriteFontDownloadListener_QueryInterface(IDWriteFontDownloadListener* This,REFIID riid,void **ppvObject) {
559     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
560 }
561 static FORCEINLINE ULONG IDWriteFontDownloadListener_AddRef(IDWriteFontDownloadListener* This) {
562     return This->lpVtbl->AddRef(This);
563 }
564 static FORCEINLINE ULONG IDWriteFontDownloadListener_Release(IDWriteFontDownloadListener* This) {
565     return This->lpVtbl->Release(This);
566 }
567 /*** IDWriteFontDownloadListener methods ***/
568 static FORCEINLINE void IDWriteFontDownloadListener_DownloadCompleted(IDWriteFontDownloadListener* This,IDWriteFontDownloadQueue *queue,IUnknown *context,HRESULT result) {
569     This->lpVtbl->DownloadCompleted(This,queue,context,result);
570 }
571 #endif
572 #endif
573 
574 #endif
575 
576 
577 #endif  /* __IDWriteFontDownloadListener_INTERFACE_DEFINED__ */
578 
579 /*****************************************************************************
580  * IDWriteFontDownloadQueue interface
581  */
582 #ifndef __IDWriteFontDownloadQueue_INTERFACE_DEFINED__
583 #define __IDWriteFontDownloadQueue_INTERFACE_DEFINED__
584 
585 DEFINE_GUID(IID_IDWriteFontDownloadQueue, 0xb71e6052, 0x5aea, 0x4fa3, 0x83,0x2e, 0xf6,0x0d,0x43,0x1f,0x7e,0x91);
586 #if defined(__cplusplus) && !defined(CINTERFACE)
587 MIDL_INTERFACE("b71e6052-5aea-4fa3-832e-f60d431f7e91")
588 IDWriteFontDownloadQueue : public IUnknown
589 {
590     virtual HRESULT STDMETHODCALLTYPE AddListener(
591         IDWriteFontDownloadListener *listener,
592         UINT32 *token) = 0;
593 
594     virtual HRESULT STDMETHODCALLTYPE RemoveListener(
595         UINT32 token) = 0;
596 
597     virtual WINBOOL STDMETHODCALLTYPE IsEmpty(
598         ) = 0;
599 
600     virtual HRESULT STDMETHODCALLTYPE BeginDownload(
601         IUnknown *context) = 0;
602 
603     virtual HRESULT STDMETHODCALLTYPE CancelDownload(
604         ) = 0;
605 
606     virtual UINT64 STDMETHODCALLTYPE GetGenerationCount(
607         ) = 0;
608 
609 };
610 #ifdef __CRT_UUID_DECL
611 __CRT_UUID_DECL(IDWriteFontDownloadQueue, 0xb71e6052, 0x5aea, 0x4fa3, 0x83,0x2e, 0xf6,0x0d,0x43,0x1f,0x7e,0x91)
612 #endif
613 #else
614 typedef struct IDWriteFontDownloadQueueVtbl {
615     BEGIN_INTERFACE
616 
617     /*** IUnknown methods ***/
618     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
619         IDWriteFontDownloadQueue *This,
620         REFIID riid,
621         void **ppvObject);
622 
623     ULONG (STDMETHODCALLTYPE *AddRef)(
624         IDWriteFontDownloadQueue *This);
625 
626     ULONG (STDMETHODCALLTYPE *Release)(
627         IDWriteFontDownloadQueue *This);
628 
629     /*** IDWriteFontDownloadQueue methods ***/
630     HRESULT (STDMETHODCALLTYPE *AddListener)(
631         IDWriteFontDownloadQueue *This,
632         IDWriteFontDownloadListener *listener,
633         UINT32 *token);
634 
635     HRESULT (STDMETHODCALLTYPE *RemoveListener)(
636         IDWriteFontDownloadQueue *This,
637         UINT32 token);
638 
639     WINBOOL (STDMETHODCALLTYPE *IsEmpty)(
640         IDWriteFontDownloadQueue *This);
641 
642     HRESULT (STDMETHODCALLTYPE *BeginDownload)(
643         IDWriteFontDownloadQueue *This,
644         IUnknown *context);
645 
646     HRESULT (STDMETHODCALLTYPE *CancelDownload)(
647         IDWriteFontDownloadQueue *This);
648 
649     UINT64 (STDMETHODCALLTYPE *GetGenerationCount)(
650         IDWriteFontDownloadQueue *This);
651 
652     END_INTERFACE
653 } IDWriteFontDownloadQueueVtbl;
654 
655 interface IDWriteFontDownloadQueue {
656     CONST_VTBL IDWriteFontDownloadQueueVtbl* lpVtbl;
657 };
658 
659 #ifdef COBJMACROS
660 #ifndef WIDL_C_INLINE_WRAPPERS
661 /*** IUnknown methods ***/
662 #define IDWriteFontDownloadQueue_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
663 #define IDWriteFontDownloadQueue_AddRef(This) (This)->lpVtbl->AddRef(This)
664 #define IDWriteFontDownloadQueue_Release(This) (This)->lpVtbl->Release(This)
665 /*** IDWriteFontDownloadQueue methods ***/
666 #define IDWriteFontDownloadQueue_AddListener(This,listener,token) (This)->lpVtbl->AddListener(This,listener,token)
667 #define IDWriteFontDownloadQueue_RemoveListener(This,token) (This)->lpVtbl->RemoveListener(This,token)
668 #define IDWriteFontDownloadQueue_IsEmpty(This) (This)->lpVtbl->IsEmpty(This)
669 #define IDWriteFontDownloadQueue_BeginDownload(This,context) (This)->lpVtbl->BeginDownload(This,context)
670 #define IDWriteFontDownloadQueue_CancelDownload(This) (This)->lpVtbl->CancelDownload(This)
671 #define IDWriteFontDownloadQueue_GetGenerationCount(This) (This)->lpVtbl->GetGenerationCount(This)
672 #else
673 /*** IUnknown methods ***/
674 static FORCEINLINE HRESULT IDWriteFontDownloadQueue_QueryInterface(IDWriteFontDownloadQueue* This,REFIID riid,void **ppvObject) {
675     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
676 }
677 static FORCEINLINE ULONG IDWriteFontDownloadQueue_AddRef(IDWriteFontDownloadQueue* This) {
678     return This->lpVtbl->AddRef(This);
679 }
680 static FORCEINLINE ULONG IDWriteFontDownloadQueue_Release(IDWriteFontDownloadQueue* This) {
681     return This->lpVtbl->Release(This);
682 }
683 /*** IDWriteFontDownloadQueue methods ***/
684 static FORCEINLINE HRESULT IDWriteFontDownloadQueue_AddListener(IDWriteFontDownloadQueue* This,IDWriteFontDownloadListener *listener,UINT32 *token) {
685     return This->lpVtbl->AddListener(This,listener,token);
686 }
687 static FORCEINLINE HRESULT IDWriteFontDownloadQueue_RemoveListener(IDWriteFontDownloadQueue* This,UINT32 token) {
688     return This->lpVtbl->RemoveListener(This,token);
689 }
690 static FORCEINLINE WINBOOL IDWriteFontDownloadQueue_IsEmpty(IDWriteFontDownloadQueue* This) {
691     return This->lpVtbl->IsEmpty(This);
692 }
693 static FORCEINLINE HRESULT IDWriteFontDownloadQueue_BeginDownload(IDWriteFontDownloadQueue* This,IUnknown *context) {
694     return This->lpVtbl->BeginDownload(This,context);
695 }
696 static FORCEINLINE HRESULT IDWriteFontDownloadQueue_CancelDownload(IDWriteFontDownloadQueue* This) {
697     return This->lpVtbl->CancelDownload(This);
698 }
699 static FORCEINLINE UINT64 IDWriteFontDownloadQueue_GetGenerationCount(IDWriteFontDownloadQueue* This) {
700     return This->lpVtbl->GetGenerationCount(This);
701 }
702 #endif
703 #endif
704 
705 #endif
706 
707 
708 #endif  /* __IDWriteFontDownloadQueue_INTERFACE_DEFINED__ */
709 
710 /*****************************************************************************
711  * IDWriteRenderingParams3 interface
712  */
713 #ifndef __IDWriteRenderingParams3_INTERFACE_DEFINED__
714 #define __IDWriteRenderingParams3_INTERFACE_DEFINED__
715 
716 DEFINE_GUID(IID_IDWriteRenderingParams3, 0xb7924baa, 0x391b, 0x412a, 0x8c,0x5c, 0xe4,0x4c,0xc2,0xd8,0x67,0xdc);
717 #if defined(__cplusplus) && !defined(CINTERFACE)
718 MIDL_INTERFACE("b7924baa-391b-412a-8c5c-e44cc2d867dc")
719 IDWriteRenderingParams3 : public IDWriteRenderingParams2
720 {
721     virtual DWRITE_RENDERING_MODE1 STDMETHODCALLTYPE GetRenderingMode1(
722         ) = 0;
723 
724 };
725 #ifdef __CRT_UUID_DECL
726 __CRT_UUID_DECL(IDWriteRenderingParams3, 0xb7924baa, 0x391b, 0x412a, 0x8c,0x5c, 0xe4,0x4c,0xc2,0xd8,0x67,0xdc)
727 #endif
728 #else
729 typedef struct IDWriteRenderingParams3Vtbl {
730     BEGIN_INTERFACE
731 
732     /*** IUnknown methods ***/
733     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
734         IDWriteRenderingParams3 *This,
735         REFIID riid,
736         void **ppvObject);
737 
738     ULONG (STDMETHODCALLTYPE *AddRef)(
739         IDWriteRenderingParams3 *This);
740 
741     ULONG (STDMETHODCALLTYPE *Release)(
742         IDWriteRenderingParams3 *This);
743 
744     /*** IDWriteRenderingParams methods ***/
745     FLOAT (STDMETHODCALLTYPE *GetGamma)(
746         IDWriteRenderingParams3 *This);
747 
748     FLOAT (STDMETHODCALLTYPE *GetEnhancedContrast)(
749         IDWriteRenderingParams3 *This);
750 
751     FLOAT (STDMETHODCALLTYPE *GetClearTypeLevel)(
752         IDWriteRenderingParams3 *This);
753 
754     DWRITE_PIXEL_GEOMETRY (STDMETHODCALLTYPE *GetPixelGeometry)(
755         IDWriteRenderingParams3 *This);
756 
757     DWRITE_RENDERING_MODE (STDMETHODCALLTYPE *GetRenderingMode)(
758         IDWriteRenderingParams3 *This);
759 
760     /*** IDWriteRenderingParams1 methods ***/
761     FLOAT (STDMETHODCALLTYPE *GetGrayscaleEnhancedContrast)(
762         IDWriteRenderingParams3 *This);
763 
764     /*** IDWriteRenderingParams2 methods ***/
765     DWRITE_GRID_FIT_MODE (STDMETHODCALLTYPE *GetGridFitMode)(
766         IDWriteRenderingParams3 *This);
767 
768     /*** IDWriteRenderingParams3 methods ***/
769     DWRITE_RENDERING_MODE1 (STDMETHODCALLTYPE *GetRenderingMode1)(
770         IDWriteRenderingParams3 *This);
771 
772     END_INTERFACE
773 } IDWriteRenderingParams3Vtbl;
774 
775 interface IDWriteRenderingParams3 {
776     CONST_VTBL IDWriteRenderingParams3Vtbl* lpVtbl;
777 };
778 
779 #ifdef COBJMACROS
780 #ifndef WIDL_C_INLINE_WRAPPERS
781 /*** IUnknown methods ***/
782 #define IDWriteRenderingParams3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
783 #define IDWriteRenderingParams3_AddRef(This) (This)->lpVtbl->AddRef(This)
784 #define IDWriteRenderingParams3_Release(This) (This)->lpVtbl->Release(This)
785 /*** IDWriteRenderingParams methods ***/
786 #define IDWriteRenderingParams3_GetGamma(This) (This)->lpVtbl->GetGamma(This)
787 #define IDWriteRenderingParams3_GetEnhancedContrast(This) (This)->lpVtbl->GetEnhancedContrast(This)
788 #define IDWriteRenderingParams3_GetClearTypeLevel(This) (This)->lpVtbl->GetClearTypeLevel(This)
789 #define IDWriteRenderingParams3_GetPixelGeometry(This) (This)->lpVtbl->GetPixelGeometry(This)
790 #define IDWriteRenderingParams3_GetRenderingMode(This) (This)->lpVtbl->GetRenderingMode(This)
791 /*** IDWriteRenderingParams1 methods ***/
792 #define IDWriteRenderingParams3_GetGrayscaleEnhancedContrast(This) (This)->lpVtbl->GetGrayscaleEnhancedContrast(This)
793 /*** IDWriteRenderingParams2 methods ***/
794 #define IDWriteRenderingParams3_GetGridFitMode(This) (This)->lpVtbl->GetGridFitMode(This)
795 /*** IDWriteRenderingParams3 methods ***/
796 #define IDWriteRenderingParams3_GetRenderingMode1(This) (This)->lpVtbl->GetRenderingMode1(This)
797 #else
798 /*** IUnknown methods ***/
799 static FORCEINLINE HRESULT IDWriteRenderingParams3_QueryInterface(IDWriteRenderingParams3* This,REFIID riid,void **ppvObject) {
800     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
801 }
802 static FORCEINLINE ULONG IDWriteRenderingParams3_AddRef(IDWriteRenderingParams3* This) {
803     return This->lpVtbl->AddRef(This);
804 }
805 static FORCEINLINE ULONG IDWriteRenderingParams3_Release(IDWriteRenderingParams3* This) {
806     return This->lpVtbl->Release(This);
807 }
808 /*** IDWriteRenderingParams methods ***/
809 static FORCEINLINE FLOAT IDWriteRenderingParams3_GetGamma(IDWriteRenderingParams3* This) {
810     return This->lpVtbl->GetGamma(This);
811 }
812 static FORCEINLINE FLOAT IDWriteRenderingParams3_GetEnhancedContrast(IDWriteRenderingParams3* This) {
813     return This->lpVtbl->GetEnhancedContrast(This);
814 }
815 static FORCEINLINE FLOAT IDWriteRenderingParams3_GetClearTypeLevel(IDWriteRenderingParams3* This) {
816     return This->lpVtbl->GetClearTypeLevel(This);
817 }
818 static FORCEINLINE DWRITE_PIXEL_GEOMETRY IDWriteRenderingParams3_GetPixelGeometry(IDWriteRenderingParams3* This) {
819     return This->lpVtbl->GetPixelGeometry(This);
820 }
821 static FORCEINLINE DWRITE_RENDERING_MODE IDWriteRenderingParams3_GetRenderingMode(IDWriteRenderingParams3* This) {
822     return This->lpVtbl->GetRenderingMode(This);
823 }
824 /*** IDWriteRenderingParams1 methods ***/
825 static FORCEINLINE FLOAT IDWriteRenderingParams3_GetGrayscaleEnhancedContrast(IDWriteRenderingParams3* This) {
826     return This->lpVtbl->GetGrayscaleEnhancedContrast(This);
827 }
828 /*** IDWriteRenderingParams2 methods ***/
829 static FORCEINLINE DWRITE_GRID_FIT_MODE IDWriteRenderingParams3_GetGridFitMode(IDWriteRenderingParams3* This) {
830     return This->lpVtbl->GetGridFitMode(This);
831 }
832 /*** IDWriteRenderingParams3 methods ***/
833 static FORCEINLINE DWRITE_RENDERING_MODE1 IDWriteRenderingParams3_GetRenderingMode1(IDWriteRenderingParams3* This) {
834     return This->lpVtbl->GetRenderingMode1(This);
835 }
836 #endif
837 #endif
838 
839 #endif
840 
841 
842 #endif  /* __IDWriteRenderingParams3_INTERFACE_DEFINED__ */
843 
844 /*****************************************************************************
845  * IDWriteStringList interface
846  */
847 #ifndef __IDWriteStringList_INTERFACE_DEFINED__
848 #define __IDWriteStringList_INTERFACE_DEFINED__
849 
850 DEFINE_GUID(IID_IDWriteStringList, 0xcfee3140, 0x1257, 0x47ca, 0x8b,0x85, 0x31,0xbf,0xcf,0x3f,0x2d,0x0e);
851 #if defined(__cplusplus) && !defined(CINTERFACE)
852 MIDL_INTERFACE("cfee3140-1257-47ca-8b85-31bfcf3f2d0e")
853 IDWriteStringList : public IUnknown
854 {
855     virtual UINT32 STDMETHODCALLTYPE GetCount(
856         ) = 0;
857 
858     virtual HRESULT STDMETHODCALLTYPE GetLocaleNameLength(
859         UINT32 index,
860         UINT32 *length) = 0;
861 
862     virtual HRESULT STDMETHODCALLTYPE GetLocaleName(
863         UINT32 index,
864         WCHAR *name,
865         UINT32 size) = 0;
866 
867     virtual HRESULT STDMETHODCALLTYPE GetStringLength(
868         UINT32 index,
869         UINT32 *length) = 0;
870 
871     virtual HRESULT STDMETHODCALLTYPE GetString(
872         UINT32 index,
873         WCHAR *string,
874         UINT32 size) = 0;
875 
876 };
877 #ifdef __CRT_UUID_DECL
878 __CRT_UUID_DECL(IDWriteStringList, 0xcfee3140, 0x1257, 0x47ca, 0x8b,0x85, 0x31,0xbf,0xcf,0x3f,0x2d,0x0e)
879 #endif
880 #else
881 typedef struct IDWriteStringListVtbl {
882     BEGIN_INTERFACE
883 
884     /*** IUnknown methods ***/
885     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
886         IDWriteStringList *This,
887         REFIID riid,
888         void **ppvObject);
889 
890     ULONG (STDMETHODCALLTYPE *AddRef)(
891         IDWriteStringList *This);
892 
893     ULONG (STDMETHODCALLTYPE *Release)(
894         IDWriteStringList *This);
895 
896     /*** IDWriteStringList methods ***/
897     UINT32 (STDMETHODCALLTYPE *GetCount)(
898         IDWriteStringList *This);
899 
900     HRESULT (STDMETHODCALLTYPE *GetLocaleNameLength)(
901         IDWriteStringList *This,
902         UINT32 index,
903         UINT32 *length);
904 
905     HRESULT (STDMETHODCALLTYPE *GetLocaleName)(
906         IDWriteStringList *This,
907         UINT32 index,
908         WCHAR *name,
909         UINT32 size);
910 
911     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
912         IDWriteStringList *This,
913         UINT32 index,
914         UINT32 *length);
915 
916     HRESULT (STDMETHODCALLTYPE *GetString)(
917         IDWriteStringList *This,
918         UINT32 index,
919         WCHAR *string,
920         UINT32 size);
921 
922     END_INTERFACE
923 } IDWriteStringListVtbl;
924 
925 interface IDWriteStringList {
926     CONST_VTBL IDWriteStringListVtbl* lpVtbl;
927 };
928 
929 #ifdef COBJMACROS
930 #ifndef WIDL_C_INLINE_WRAPPERS
931 /*** IUnknown methods ***/
932 #define IDWriteStringList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
933 #define IDWriteStringList_AddRef(This) (This)->lpVtbl->AddRef(This)
934 #define IDWriteStringList_Release(This) (This)->lpVtbl->Release(This)
935 /*** IDWriteStringList methods ***/
936 #define IDWriteStringList_GetCount(This) (This)->lpVtbl->GetCount(This)
937 #define IDWriteStringList_GetLocaleNameLength(This,index,length) (This)->lpVtbl->GetLocaleNameLength(This,index,length)
938 #define IDWriteStringList_GetLocaleName(This,index,name,size) (This)->lpVtbl->GetLocaleName(This,index,name,size)
939 #define IDWriteStringList_GetStringLength(This,index,length) (This)->lpVtbl->GetStringLength(This,index,length)
940 #define IDWriteStringList_GetString(This,index,string,size) (This)->lpVtbl->GetString(This,index,string,size)
941 #else
942 /*** IUnknown methods ***/
943 static FORCEINLINE HRESULT IDWriteStringList_QueryInterface(IDWriteStringList* This,REFIID riid,void **ppvObject) {
944     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
945 }
946 static FORCEINLINE ULONG IDWriteStringList_AddRef(IDWriteStringList* This) {
947     return This->lpVtbl->AddRef(This);
948 }
949 static FORCEINLINE ULONG IDWriteStringList_Release(IDWriteStringList* This) {
950     return This->lpVtbl->Release(This);
951 }
952 /*** IDWriteStringList methods ***/
953 static FORCEINLINE UINT32 IDWriteStringList_GetCount(IDWriteStringList* This) {
954     return This->lpVtbl->GetCount(This);
955 }
956 static FORCEINLINE HRESULT IDWriteStringList_GetLocaleNameLength(IDWriteStringList* This,UINT32 index,UINT32 *length) {
957     return This->lpVtbl->GetLocaleNameLength(This,index,length);
958 }
959 static FORCEINLINE HRESULT IDWriteStringList_GetLocaleName(IDWriteStringList* This,UINT32 index,WCHAR *name,UINT32 size) {
960     return This->lpVtbl->GetLocaleName(This,index,name,size);
961 }
962 static FORCEINLINE HRESULT IDWriteStringList_GetStringLength(IDWriteStringList* This,UINT32 index,UINT32 *length) {
963     return This->lpVtbl->GetStringLength(This,index,length);
964 }
965 static FORCEINLINE HRESULT IDWriteStringList_GetString(IDWriteStringList* This,UINT32 index,WCHAR *string,UINT32 size) {
966     return This->lpVtbl->GetString(This,index,string,size);
967 }
968 #endif
969 #endif
970 
971 #endif
972 
973 
974 #endif  /* __IDWriteStringList_INTERFACE_DEFINED__ */
975 
976 /*****************************************************************************
977  * IDWriteFontSet interface
978  */
979 #ifndef __IDWriteFontSet_INTERFACE_DEFINED__
980 #define __IDWriteFontSet_INTERFACE_DEFINED__
981 
982 DEFINE_GUID(IID_IDWriteFontSet, 0x53585141, 0xd9f8, 0x4095, 0x83,0x21, 0xd7,0x3c,0xf6,0xbd,0x11,0x6b);
983 #if defined(__cplusplus) && !defined(CINTERFACE)
984 MIDL_INTERFACE("53585141-d9f8-4095-8321-d73cf6bd116b")
985 IDWriteFontSet : public IUnknown
986 {
987     virtual UINT32 STDMETHODCALLTYPE GetFontCount(
988         ) = 0;
989 
990     virtual HRESULT STDMETHODCALLTYPE GetFontFaceReference(
991         UINT32 index,
992         IDWriteFontFaceReference **reference) = 0;
993 
994     virtual HRESULT STDMETHODCALLTYPE FindFontFaceReference(
995         IDWriteFontFaceReference *reference,
996         UINT32 *index,
997         WINBOOL *exists) = 0;
998 
999     virtual HRESULT STDMETHODCALLTYPE FindFontFace(
1000         IDWriteFontFace *fontface,
1001         UINT32 *index,
1002         WINBOOL *exists) = 0;
1003 
1004     virtual HRESULT STDMETHODCALLTYPE GetPropertyValues__(
1005         DWRITE_FONT_PROPERTY_ID id,
1006         IDWriteStringList **values) = 0;
1007 
1008     virtual HRESULT STDMETHODCALLTYPE GetPropertyValues_(
1009         DWRITE_FONT_PROPERTY_ID id,
1010         const WCHAR *preferred_locales,
1011         IDWriteStringList **values) = 0;
1012 
1013     virtual HRESULT STDMETHODCALLTYPE GetPropertyValues(
1014         UINT32 index,
1015         DWRITE_FONT_PROPERTY_ID id,
1016         WINBOOL *exists,
1017         IDWriteLocalizedStrings **values) = 0;
1018 
1019     virtual HRESULT STDMETHODCALLTYPE GetPropertyOccurrenceCount(
1020         const DWRITE_FONT_PROPERTY *property,
1021         UINT32 *count) = 0;
1022 
1023     virtual HRESULT STDMETHODCALLTYPE GetMatchingFonts_(
1024         const WCHAR *family,
1025         DWRITE_FONT_WEIGHT weight,
1026         DWRITE_FONT_STRETCH stretch,
1027         DWRITE_FONT_STYLE style,
1028         IDWriteFontSet **fontset) = 0;
1029 
1030     virtual HRESULT STDMETHODCALLTYPE GetMatchingFonts(
1031         const DWRITE_FONT_PROPERTY *props,
1032         UINT32 count,
1033         IDWriteFontSet **fontset) = 0;
1034 
1035 };
1036 #ifdef __CRT_UUID_DECL
1037 __CRT_UUID_DECL(IDWriteFontSet, 0x53585141, 0xd9f8, 0x4095, 0x83,0x21, 0xd7,0x3c,0xf6,0xbd,0x11,0x6b)
1038 #endif
1039 #else
1040 typedef struct IDWriteFontSetVtbl {
1041     BEGIN_INTERFACE
1042 
1043     /*** IUnknown methods ***/
1044     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1045         IDWriteFontSet *This,
1046         REFIID riid,
1047         void **ppvObject);
1048 
1049     ULONG (STDMETHODCALLTYPE *AddRef)(
1050         IDWriteFontSet *This);
1051 
1052     ULONG (STDMETHODCALLTYPE *Release)(
1053         IDWriteFontSet *This);
1054 
1055     /*** IDWriteFontSet methods ***/
1056     UINT32 (STDMETHODCALLTYPE *GetFontCount)(
1057         IDWriteFontSet *This);
1058 
1059     HRESULT (STDMETHODCALLTYPE *GetFontFaceReference)(
1060         IDWriteFontSet *This,
1061         UINT32 index,
1062         IDWriteFontFaceReference **reference);
1063 
1064     HRESULT (STDMETHODCALLTYPE *FindFontFaceReference)(
1065         IDWriteFontSet *This,
1066         IDWriteFontFaceReference *reference,
1067         UINT32 *index,
1068         WINBOOL *exists);
1069 
1070     HRESULT (STDMETHODCALLTYPE *FindFontFace)(
1071         IDWriteFontSet *This,
1072         IDWriteFontFace *fontface,
1073         UINT32 *index,
1074         WINBOOL *exists);
1075 
1076     HRESULT (STDMETHODCALLTYPE *GetPropertyValues__)(
1077         IDWriteFontSet *This,
1078         DWRITE_FONT_PROPERTY_ID id,
1079         IDWriteStringList **values);
1080 
1081     HRESULT (STDMETHODCALLTYPE *GetPropertyValues_)(
1082         IDWriteFontSet *This,
1083         DWRITE_FONT_PROPERTY_ID id,
1084         const WCHAR *preferred_locales,
1085         IDWriteStringList **values);
1086 
1087     HRESULT (STDMETHODCALLTYPE *GetPropertyValues)(
1088         IDWriteFontSet *This,
1089         UINT32 index,
1090         DWRITE_FONT_PROPERTY_ID id,
1091         WINBOOL *exists,
1092         IDWriteLocalizedStrings **values);
1093 
1094     HRESULT (STDMETHODCALLTYPE *GetPropertyOccurrenceCount)(
1095         IDWriteFontSet *This,
1096         const DWRITE_FONT_PROPERTY *property,
1097         UINT32 *count);
1098 
1099     HRESULT (STDMETHODCALLTYPE *GetMatchingFonts_)(
1100         IDWriteFontSet *This,
1101         const WCHAR *family,
1102         DWRITE_FONT_WEIGHT weight,
1103         DWRITE_FONT_STRETCH stretch,
1104         DWRITE_FONT_STYLE style,
1105         IDWriteFontSet **fontset);
1106 
1107     HRESULT (STDMETHODCALLTYPE *GetMatchingFonts)(
1108         IDWriteFontSet *This,
1109         const DWRITE_FONT_PROPERTY *props,
1110         UINT32 count,
1111         IDWriteFontSet **fontset);
1112 
1113     END_INTERFACE
1114 } IDWriteFontSetVtbl;
1115 
1116 interface IDWriteFontSet {
1117     CONST_VTBL IDWriteFontSetVtbl* lpVtbl;
1118 };
1119 
1120 #ifdef COBJMACROS
1121 #ifndef WIDL_C_INLINE_WRAPPERS
1122 /*** IUnknown methods ***/
1123 #define IDWriteFontSet_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1124 #define IDWriteFontSet_AddRef(This) (This)->lpVtbl->AddRef(This)
1125 #define IDWriteFontSet_Release(This) (This)->lpVtbl->Release(This)
1126 /*** IDWriteFontSet methods ***/
1127 #define IDWriteFontSet_GetFontCount(This) (This)->lpVtbl->GetFontCount(This)
1128 #define IDWriteFontSet_GetFontFaceReference(This,index,reference) (This)->lpVtbl->GetFontFaceReference(This,index,reference)
1129 #define IDWriteFontSet_FindFontFaceReference(This,reference,index,exists) (This)->lpVtbl->FindFontFaceReference(This,reference,index,exists)
1130 #define IDWriteFontSet_FindFontFace(This,fontface,index,exists) (This)->lpVtbl->FindFontFace(This,fontface,index,exists)
1131 #define IDWriteFontSet_GetPropertyValues__(This,id,values) (This)->lpVtbl->GetPropertyValues__(This,id,values)
1132 #define IDWriteFontSet_GetPropertyValues_(This,id,preferred_locales,values) (This)->lpVtbl->GetPropertyValues_(This,id,preferred_locales,values)
1133 #define IDWriteFontSet_GetPropertyValues(This,index,id,exists,values) (This)->lpVtbl->GetPropertyValues(This,index,id,exists,values)
1134 #define IDWriteFontSet_GetPropertyOccurrenceCount(This,property,count) (This)->lpVtbl->GetPropertyOccurrenceCount(This,property,count)
1135 #define IDWriteFontSet_GetMatchingFonts_(This,family,weight,stretch,style,fontset) (This)->lpVtbl->GetMatchingFonts_(This,family,weight,stretch,style,fontset)
1136 #define IDWriteFontSet_GetMatchingFonts(This,props,count,fontset) (This)->lpVtbl->GetMatchingFonts(This,props,count,fontset)
1137 #else
1138 /*** IUnknown methods ***/
1139 static FORCEINLINE HRESULT IDWriteFontSet_QueryInterface(IDWriteFontSet* This,REFIID riid,void **ppvObject) {
1140     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1141 }
1142 static FORCEINLINE ULONG IDWriteFontSet_AddRef(IDWriteFontSet* This) {
1143     return This->lpVtbl->AddRef(This);
1144 }
1145 static FORCEINLINE ULONG IDWriteFontSet_Release(IDWriteFontSet* This) {
1146     return This->lpVtbl->Release(This);
1147 }
1148 /*** IDWriteFontSet methods ***/
1149 static FORCEINLINE UINT32 IDWriteFontSet_GetFontCount(IDWriteFontSet* This) {
1150     return This->lpVtbl->GetFontCount(This);
1151 }
1152 static FORCEINLINE HRESULT IDWriteFontSet_GetFontFaceReference(IDWriteFontSet* This,UINT32 index,IDWriteFontFaceReference **reference) {
1153     return This->lpVtbl->GetFontFaceReference(This,index,reference);
1154 }
1155 static FORCEINLINE HRESULT IDWriteFontSet_FindFontFaceReference(IDWriteFontSet* This,IDWriteFontFaceReference *reference,UINT32 *index,WINBOOL *exists) {
1156     return This->lpVtbl->FindFontFaceReference(This,reference,index,exists);
1157 }
1158 static FORCEINLINE HRESULT IDWriteFontSet_FindFontFace(IDWriteFontSet* This,IDWriteFontFace *fontface,UINT32 *index,WINBOOL *exists) {
1159     return This->lpVtbl->FindFontFace(This,fontface,index,exists);
1160 }
1161 static FORCEINLINE HRESULT IDWriteFontSet_GetPropertyValues__(IDWriteFontSet* This,DWRITE_FONT_PROPERTY_ID id,IDWriteStringList **values) {
1162     return This->lpVtbl->GetPropertyValues__(This,id,values);
1163 }
1164 static FORCEINLINE HRESULT IDWriteFontSet_GetPropertyValues_(IDWriteFontSet* This,DWRITE_FONT_PROPERTY_ID id,const WCHAR *preferred_locales,IDWriteStringList **values) {
1165     return This->lpVtbl->GetPropertyValues_(This,id,preferred_locales,values);
1166 }
1167 static FORCEINLINE HRESULT IDWriteFontSet_GetPropertyValues(IDWriteFontSet* This,UINT32 index,DWRITE_FONT_PROPERTY_ID id,WINBOOL *exists,IDWriteLocalizedStrings **values) {
1168     return This->lpVtbl->GetPropertyValues(This,index,id,exists,values);
1169 }
1170 static FORCEINLINE HRESULT IDWriteFontSet_GetPropertyOccurrenceCount(IDWriteFontSet* This,const DWRITE_FONT_PROPERTY *property,UINT32 *count) {
1171     return This->lpVtbl->GetPropertyOccurrenceCount(This,property,count);
1172 }
1173 static FORCEINLINE HRESULT IDWriteFontSet_GetMatchingFonts_(IDWriteFontSet* This,const WCHAR *family,DWRITE_FONT_WEIGHT weight,DWRITE_FONT_STRETCH stretch,DWRITE_FONT_STYLE style,IDWriteFontSet **fontset) {
1174     return This->lpVtbl->GetMatchingFonts_(This,family,weight,stretch,style,fontset);
1175 }
1176 static FORCEINLINE HRESULT IDWriteFontSet_GetMatchingFonts(IDWriteFontSet* This,const DWRITE_FONT_PROPERTY *props,UINT32 count,IDWriteFontSet **fontset) {
1177     return This->lpVtbl->GetMatchingFonts(This,props,count,fontset);
1178 }
1179 #endif
1180 #endif
1181 
1182 #endif
1183 
1184 
1185 #endif  /* __IDWriteFontSet_INTERFACE_DEFINED__ */
1186 
1187 /*****************************************************************************
1188  * IDWriteFontResource interface
1189  */
1190 #ifndef __IDWriteFontResource_INTERFACE_DEFINED__
1191 #define __IDWriteFontResource_INTERFACE_DEFINED__
1192 
1193 DEFINE_GUID(IID_IDWriteFontResource, 0x1f803a76, 0x6871, 0x48e8, 0x98,0x7f, 0xb9,0x75,0x55,0x1c,0x50,0xf2);
1194 #if defined(__cplusplus) && !defined(CINTERFACE)
1195 MIDL_INTERFACE("1f803a76-6871-48e8-987f-b975551c50f2")
1196 IDWriteFontResource : public IUnknown
1197 {
1198     virtual HRESULT STDMETHODCALLTYPE GetFontFile(
1199         IDWriteFontFile **fontfile) = 0;
1200 
1201     virtual UINT32 STDMETHODCALLTYPE GetFontFaceIndex(
1202         ) = 0;
1203 
1204     virtual UINT32 STDMETHODCALLTYPE GetFontAxisCount(
1205         ) = 0;
1206 
1207     virtual HRESULT STDMETHODCALLTYPE GetDefaultFontAxisValues(
1208         const DWRITE_FONT_AXIS_VALUE *values,
1209         UINT32 num_values) = 0;
1210 
1211     virtual HRESULT STDMETHODCALLTYPE GetFontAxisRanges(
1212         const DWRITE_FONT_AXIS_RANGE *ranges,
1213         UINT32 num_ranges) = 0;
1214 
1215     virtual DWRITE_FONT_AXIS_ATTRIBUTES STDMETHODCALLTYPE GetFontAxisAttributes(
1216         UINT32 axis) = 0;
1217 
1218     virtual HRESULT STDMETHODCALLTYPE GetAxisNames(
1219         UINT32 axis,
1220         IDWriteLocalizedStrings **names) = 0;
1221 
1222     virtual UINT32 STDMETHODCALLTYPE GetAxisValueNameCount(
1223         UINT32 axis) = 0;
1224 
1225     virtual HRESULT STDMETHODCALLTYPE GetAxisValueNames(
1226         UINT32 axis,
1227         UINT32 axis_value,
1228         DWRITE_FONT_AXIS_RANGE *axis_range,
1229         IDWriteLocalizedStrings **names) = 0;
1230 
1231     virtual WINBOOL STDMETHODCALLTYPE HasVariations(
1232         ) = 0;
1233 
1234     virtual HRESULT STDMETHODCALLTYPE CreateFontFace(
1235         DWRITE_FONT_SIMULATIONS simulations,
1236         const DWRITE_FONT_AXIS_VALUE *axis_values,
1237         UINT32 num_values,
1238         IDWriteFontFace5 **fontface) = 0;
1239 
1240     virtual HRESULT STDMETHODCALLTYPE CreateFontFaceReference(
1241         DWRITE_FONT_SIMULATIONS simulations,
1242         const DWRITE_FONT_AXIS_VALUE *axis_values,
1243         UINT32 num_values,
1244         IDWriteFontFaceReference1 **reference) = 0;
1245 
1246 };
1247 #ifdef __CRT_UUID_DECL
1248 __CRT_UUID_DECL(IDWriteFontResource, 0x1f803a76, 0x6871, 0x48e8, 0x98,0x7f, 0xb9,0x75,0x55,0x1c,0x50,0xf2)
1249 #endif
1250 #else
1251 typedef struct IDWriteFontResourceVtbl {
1252     BEGIN_INTERFACE
1253 
1254     /*** IUnknown methods ***/
1255     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1256         IDWriteFontResource *This,
1257         REFIID riid,
1258         void **ppvObject);
1259 
1260     ULONG (STDMETHODCALLTYPE *AddRef)(
1261         IDWriteFontResource *This);
1262 
1263     ULONG (STDMETHODCALLTYPE *Release)(
1264         IDWriteFontResource *This);
1265 
1266     /*** IDWriteFontResource methods ***/
1267     HRESULT (STDMETHODCALLTYPE *GetFontFile)(
1268         IDWriteFontResource *This,
1269         IDWriteFontFile **fontfile);
1270 
1271     UINT32 (STDMETHODCALLTYPE *GetFontFaceIndex)(
1272         IDWriteFontResource *This);
1273 
1274     UINT32 (STDMETHODCALLTYPE *GetFontAxisCount)(
1275         IDWriteFontResource *This);
1276 
1277     HRESULT (STDMETHODCALLTYPE *GetDefaultFontAxisValues)(
1278         IDWriteFontResource *This,
1279         const DWRITE_FONT_AXIS_VALUE *values,
1280         UINT32 num_values);
1281 
1282     HRESULT (STDMETHODCALLTYPE *GetFontAxisRanges)(
1283         IDWriteFontResource *This,
1284         const DWRITE_FONT_AXIS_RANGE *ranges,
1285         UINT32 num_ranges);
1286 
1287     DWRITE_FONT_AXIS_ATTRIBUTES (STDMETHODCALLTYPE *GetFontAxisAttributes)(
1288         IDWriteFontResource *This,
1289         UINT32 axis);
1290 
1291     HRESULT (STDMETHODCALLTYPE *GetAxisNames)(
1292         IDWriteFontResource *This,
1293         UINT32 axis,
1294         IDWriteLocalizedStrings **names);
1295 
1296     UINT32 (STDMETHODCALLTYPE *GetAxisValueNameCount)(
1297         IDWriteFontResource *This,
1298         UINT32 axis);
1299 
1300     HRESULT (STDMETHODCALLTYPE *GetAxisValueNames)(
1301         IDWriteFontResource *This,
1302         UINT32 axis,
1303         UINT32 axis_value,
1304         DWRITE_FONT_AXIS_RANGE *axis_range,
1305         IDWriteLocalizedStrings **names);
1306 
1307     WINBOOL (STDMETHODCALLTYPE *HasVariations)(
1308         IDWriteFontResource *This);
1309 
1310     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
1311         IDWriteFontResource *This,
1312         DWRITE_FONT_SIMULATIONS simulations,
1313         const DWRITE_FONT_AXIS_VALUE *axis_values,
1314         UINT32 num_values,
1315         IDWriteFontFace5 **fontface);
1316 
1317     HRESULT (STDMETHODCALLTYPE *CreateFontFaceReference)(
1318         IDWriteFontResource *This,
1319         DWRITE_FONT_SIMULATIONS simulations,
1320         const DWRITE_FONT_AXIS_VALUE *axis_values,
1321         UINT32 num_values,
1322         IDWriteFontFaceReference1 **reference);
1323 
1324     END_INTERFACE
1325 } IDWriteFontResourceVtbl;
1326 
1327 interface IDWriteFontResource {
1328     CONST_VTBL IDWriteFontResourceVtbl* lpVtbl;
1329 };
1330 
1331 #ifdef COBJMACROS
1332 #ifndef WIDL_C_INLINE_WRAPPERS
1333 /*** IUnknown methods ***/
1334 #define IDWriteFontResource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1335 #define IDWriteFontResource_AddRef(This) (This)->lpVtbl->AddRef(This)
1336 #define IDWriteFontResource_Release(This) (This)->lpVtbl->Release(This)
1337 /*** IDWriteFontResource methods ***/
1338 #define IDWriteFontResource_GetFontFile(This,fontfile) (This)->lpVtbl->GetFontFile(This,fontfile)
1339 #define IDWriteFontResource_GetFontFaceIndex(This) (This)->lpVtbl->GetFontFaceIndex(This)
1340 #define IDWriteFontResource_GetFontAxisCount(This) (This)->lpVtbl->GetFontAxisCount(This)
1341 #define IDWriteFontResource_GetDefaultFontAxisValues(This,values,num_values) (This)->lpVtbl->GetDefaultFontAxisValues(This,values,num_values)
1342 #define IDWriteFontResource_GetFontAxisRanges(This,ranges,num_ranges) (This)->lpVtbl->GetFontAxisRanges(This,ranges,num_ranges)
1343 #define IDWriteFontResource_GetFontAxisAttributes(This,axis) (This)->lpVtbl->GetFontAxisAttributes(This,axis)
1344 #define IDWriteFontResource_GetAxisNames(This,axis,names) (This)->lpVtbl->GetAxisNames(This,axis,names)
1345 #define IDWriteFontResource_GetAxisValueNameCount(This,axis) (This)->lpVtbl->GetAxisValueNameCount(This,axis)
1346 #define IDWriteFontResource_GetAxisValueNames(This,axis,axis_value,axis_range,names) (This)->lpVtbl->GetAxisValueNames(This,axis,axis_value,axis_range,names)
1347 #define IDWriteFontResource_HasVariations(This) (This)->lpVtbl->HasVariations(This)
1348 #define IDWriteFontResource_CreateFontFace(This,simulations,axis_values,num_values,fontface) (This)->lpVtbl->CreateFontFace(This,simulations,axis_values,num_values,fontface)
1349 #define IDWriteFontResource_CreateFontFaceReference(This,simulations,axis_values,num_values,reference) (This)->lpVtbl->CreateFontFaceReference(This,simulations,axis_values,num_values,reference)
1350 #else
1351 /*** IUnknown methods ***/
1352 static FORCEINLINE HRESULT IDWriteFontResource_QueryInterface(IDWriteFontResource* This,REFIID riid,void **ppvObject) {
1353     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1354 }
1355 static FORCEINLINE ULONG IDWriteFontResource_AddRef(IDWriteFontResource* This) {
1356     return This->lpVtbl->AddRef(This);
1357 }
1358 static FORCEINLINE ULONG IDWriteFontResource_Release(IDWriteFontResource* This) {
1359     return This->lpVtbl->Release(This);
1360 }
1361 /*** IDWriteFontResource methods ***/
1362 static FORCEINLINE HRESULT IDWriteFontResource_GetFontFile(IDWriteFontResource* This,IDWriteFontFile **fontfile) {
1363     return This->lpVtbl->GetFontFile(This,fontfile);
1364 }
1365 static FORCEINLINE UINT32 IDWriteFontResource_GetFontFaceIndex(IDWriteFontResource* This) {
1366     return This->lpVtbl->GetFontFaceIndex(This);
1367 }
1368 static FORCEINLINE UINT32 IDWriteFontResource_GetFontAxisCount(IDWriteFontResource* This) {
1369     return This->lpVtbl->GetFontAxisCount(This);
1370 }
1371 static FORCEINLINE HRESULT IDWriteFontResource_GetDefaultFontAxisValues(IDWriteFontResource* This,const DWRITE_FONT_AXIS_VALUE *values,UINT32 num_values) {
1372     return This->lpVtbl->GetDefaultFontAxisValues(This,values,num_values);
1373 }
1374 static FORCEINLINE HRESULT IDWriteFontResource_GetFontAxisRanges(IDWriteFontResource* This,const DWRITE_FONT_AXIS_RANGE *ranges,UINT32 num_ranges) {
1375     return This->lpVtbl->GetFontAxisRanges(This,ranges,num_ranges);
1376 }
1377 static FORCEINLINE DWRITE_FONT_AXIS_ATTRIBUTES IDWriteFontResource_GetFontAxisAttributes(IDWriteFontResource* This,UINT32 axis) {
1378     return This->lpVtbl->GetFontAxisAttributes(This,axis);
1379 }
1380 static FORCEINLINE HRESULT IDWriteFontResource_GetAxisNames(IDWriteFontResource* This,UINT32 axis,IDWriteLocalizedStrings **names) {
1381     return This->lpVtbl->GetAxisNames(This,axis,names);
1382 }
1383 static FORCEINLINE UINT32 IDWriteFontResource_GetAxisValueNameCount(IDWriteFontResource* This,UINT32 axis) {
1384     return This->lpVtbl->GetAxisValueNameCount(This,axis);
1385 }
1386 static FORCEINLINE HRESULT IDWriteFontResource_GetAxisValueNames(IDWriteFontResource* This,UINT32 axis,UINT32 axis_value,DWRITE_FONT_AXIS_RANGE *axis_range,IDWriteLocalizedStrings **names) {
1387     return This->lpVtbl->GetAxisValueNames(This,axis,axis_value,axis_range,names);
1388 }
1389 static FORCEINLINE WINBOOL IDWriteFontResource_HasVariations(IDWriteFontResource* This) {
1390     return This->lpVtbl->HasVariations(This);
1391 }
1392 static FORCEINLINE HRESULT IDWriteFontResource_CreateFontFace(IDWriteFontResource* This,DWRITE_FONT_SIMULATIONS simulations,const DWRITE_FONT_AXIS_VALUE *axis_values,UINT32 num_values,IDWriteFontFace5 **fontface) {
1393     return This->lpVtbl->CreateFontFace(This,simulations,axis_values,num_values,fontface);
1394 }
1395 static FORCEINLINE HRESULT IDWriteFontResource_CreateFontFaceReference(IDWriteFontResource* This,DWRITE_FONT_SIMULATIONS simulations,const DWRITE_FONT_AXIS_VALUE *axis_values,UINT32 num_values,IDWriteFontFaceReference1 **reference) {
1396     return This->lpVtbl->CreateFontFaceReference(This,simulations,axis_values,num_values,reference);
1397 }
1398 #endif
1399 #endif
1400 
1401 #endif
1402 
1403 
1404 #endif  /* __IDWriteFontResource_INTERFACE_DEFINED__ */
1405 
1406 /*****************************************************************************
1407  * IDWriteFontSet1 interface
1408  */
1409 #ifndef __IDWriteFontSet1_INTERFACE_DEFINED__
1410 #define __IDWriteFontSet1_INTERFACE_DEFINED__
1411 
1412 DEFINE_GUID(IID_IDWriteFontSet1, 0x7e9fda85, 0x6c92, 0x4053, 0xbc,0x47, 0x7a,0xe3,0x53,0x0d,0xb4,0xd3);
1413 #if defined(__cplusplus) && !defined(CINTERFACE)
1414 MIDL_INTERFACE("7e9fda85-6c92-4053-bc47-7ae3530db4d3")
1415 IDWriteFontSet1 : public IDWriteFontSet
1416 {
1417     virtual HRESULT STDMETHODCALLTYPE GetMatchingFonts(
1418         const DWRITE_FONT_PROPERTY *property,
1419         const DWRITE_FONT_AXIS_VALUE *axis_values,
1420         UINT32 num_values,
1421         IDWriteFontSet1 **fontset) = 0;
1422 
1423     virtual HRESULT STDMETHODCALLTYPE GetFirstFontResources(
1424         IDWriteFontSet1 **fontset) = 0;
1425 
1426     virtual HRESULT STDMETHODCALLTYPE GetFilteredFonts__(
1427         const UINT32 *indices,
1428         UINT32 num_indices,
1429         IDWriteFontSet1 **fontset) = 0;
1430 
1431     virtual HRESULT STDMETHODCALLTYPE GetFilteredFonts_(
1432         const DWRITE_FONT_AXIS_RANGE *axis_ranges,
1433         UINT32 num_ranges,
1434         WINBOOL select_any_range,
1435         IDWriteFontSet1 **fontset) = 0;
1436 
1437     virtual HRESULT STDMETHODCALLTYPE GetFilteredFonts(
1438         const DWRITE_FONT_PROPERTY *props,
1439         UINT32 num_properties,
1440         WINBOOL select_any_property,
1441         IDWriteFontSet1 **fontset) = 0;
1442 
1443     virtual HRESULT STDMETHODCALLTYPE GetFilteredFontIndices_(
1444         const DWRITE_FONT_AXIS_RANGE *ranges,
1445         UINT32 num_ranges,
1446         WINBOOL select_any_range,
1447         UINT32 *indices,
1448         UINT32 num_indices,
1449         UINT32 *actual_num_indices) = 0;
1450 
1451     virtual HRESULT STDMETHODCALLTYPE GetFilteredFontIndices(
1452         const DWRITE_FONT_PROPERTY *props,
1453         UINT32 num_properties,
1454         WINBOOL select_any_range,
1455         UINT32 *indices,
1456         UINT32 num_indices,
1457         UINT32 *actual_num_indices) = 0;
1458 
1459     virtual HRESULT STDMETHODCALLTYPE GetFontAxisRanges_(
1460         UINT32 font_index,
1461         DWRITE_FONT_AXIS_RANGE *axis_ranges,
1462         UINT32 num_ranges,
1463         UINT32 *actual_num_ranges) = 0;
1464 
1465     virtual HRESULT STDMETHODCALLTYPE GetFontAxisRanges(
1466         DWRITE_FONT_AXIS_RANGE *axis_ranges,
1467         UINT32 num_ranges,
1468         UINT32 *actual_num_ranges) = 0;
1469 
1470     virtual HRESULT STDMETHODCALLTYPE GetFontFaceReference(
1471         UINT32 index,
1472         IDWriteFontFaceReference1 **reference) = 0;
1473 
1474     virtual HRESULT STDMETHODCALLTYPE CreateFontResource(
1475         UINT32 index,
1476         IDWriteFontResource **resource) = 0;
1477 
1478     virtual HRESULT STDMETHODCALLTYPE CreateFontFace(
1479         UINT32 index,
1480         IDWriteFontFace5 **fontface) = 0;
1481 
1482     virtual DWRITE_LOCALITY STDMETHODCALLTYPE GetFontLocality(
1483         UINT32 index) = 0;
1484 
1485 };
1486 #ifdef __CRT_UUID_DECL
1487 __CRT_UUID_DECL(IDWriteFontSet1, 0x7e9fda85, 0x6c92, 0x4053, 0xbc,0x47, 0x7a,0xe3,0x53,0x0d,0xb4,0xd3)
1488 #endif
1489 #else
1490 typedef struct IDWriteFontSet1Vtbl {
1491     BEGIN_INTERFACE
1492 
1493     /*** IUnknown methods ***/
1494     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1495         IDWriteFontSet1 *This,
1496         REFIID riid,
1497         void **ppvObject);
1498 
1499     ULONG (STDMETHODCALLTYPE *AddRef)(
1500         IDWriteFontSet1 *This);
1501 
1502     ULONG (STDMETHODCALLTYPE *Release)(
1503         IDWriteFontSet1 *This);
1504 
1505     /*** IDWriteFontSet methods ***/
1506     UINT32 (STDMETHODCALLTYPE *GetFontCount)(
1507         IDWriteFontSet1 *This);
1508 
1509     HRESULT (STDMETHODCALLTYPE *GetFontFaceReference)(
1510         IDWriteFontSet1 *This,
1511         UINT32 index,
1512         IDWriteFontFaceReference **reference);
1513 
1514     HRESULT (STDMETHODCALLTYPE *FindFontFaceReference)(
1515         IDWriteFontSet1 *This,
1516         IDWriteFontFaceReference *reference,
1517         UINT32 *index,
1518         WINBOOL *exists);
1519 
1520     HRESULT (STDMETHODCALLTYPE *FindFontFace)(
1521         IDWriteFontSet1 *This,
1522         IDWriteFontFace *fontface,
1523         UINT32 *index,
1524         WINBOOL *exists);
1525 
1526     HRESULT (STDMETHODCALLTYPE *GetPropertyValues__)(
1527         IDWriteFontSet1 *This,
1528         DWRITE_FONT_PROPERTY_ID id,
1529         IDWriteStringList **values);
1530 
1531     HRESULT (STDMETHODCALLTYPE *GetPropertyValues_)(
1532         IDWriteFontSet1 *This,
1533         DWRITE_FONT_PROPERTY_ID id,
1534         const WCHAR *preferred_locales,
1535         IDWriteStringList **values);
1536 
1537     HRESULT (STDMETHODCALLTYPE *GetPropertyValues)(
1538         IDWriteFontSet1 *This,
1539         UINT32 index,
1540         DWRITE_FONT_PROPERTY_ID id,
1541         WINBOOL *exists,
1542         IDWriteLocalizedStrings **values);
1543 
1544     HRESULT (STDMETHODCALLTYPE *GetPropertyOccurrenceCount)(
1545         IDWriteFontSet1 *This,
1546         const DWRITE_FONT_PROPERTY *property,
1547         UINT32 *count);
1548 
1549     HRESULT (STDMETHODCALLTYPE *GetMatchingFonts_)(
1550         IDWriteFontSet1 *This,
1551         const WCHAR *family,
1552         DWRITE_FONT_WEIGHT weight,
1553         DWRITE_FONT_STRETCH stretch,
1554         DWRITE_FONT_STYLE style,
1555         IDWriteFontSet **fontset);
1556 
1557     HRESULT (STDMETHODCALLTYPE *GetMatchingFonts)(
1558         IDWriteFontSet1 *This,
1559         const DWRITE_FONT_PROPERTY *props,
1560         UINT32 count,
1561         IDWriteFontSet **fontset);
1562 
1563     /*** IDWriteFontSet1 methods ***/
1564     HRESULT (STDMETHODCALLTYPE *IDWriteFontSet1_GetMatchingFonts)(
1565         IDWriteFontSet1 *This,
1566         const DWRITE_FONT_PROPERTY *property,
1567         const DWRITE_FONT_AXIS_VALUE *axis_values,
1568         UINT32 num_values,
1569         IDWriteFontSet1 **fontset);
1570 
1571     HRESULT (STDMETHODCALLTYPE *GetFirstFontResources)(
1572         IDWriteFontSet1 *This,
1573         IDWriteFontSet1 **fontset);
1574 
1575     HRESULT (STDMETHODCALLTYPE *GetFilteredFonts__)(
1576         IDWriteFontSet1 *This,
1577         const UINT32 *indices,
1578         UINT32 num_indices,
1579         IDWriteFontSet1 **fontset);
1580 
1581     HRESULT (STDMETHODCALLTYPE *GetFilteredFonts_)(
1582         IDWriteFontSet1 *This,
1583         const DWRITE_FONT_AXIS_RANGE *axis_ranges,
1584         UINT32 num_ranges,
1585         WINBOOL select_any_range,
1586         IDWriteFontSet1 **fontset);
1587 
1588     HRESULT (STDMETHODCALLTYPE *GetFilteredFonts)(
1589         IDWriteFontSet1 *This,
1590         const DWRITE_FONT_PROPERTY *props,
1591         UINT32 num_properties,
1592         WINBOOL select_any_property,
1593         IDWriteFontSet1 **fontset);
1594 
1595     HRESULT (STDMETHODCALLTYPE *GetFilteredFontIndices_)(
1596         IDWriteFontSet1 *This,
1597         const DWRITE_FONT_AXIS_RANGE *ranges,
1598         UINT32 num_ranges,
1599         WINBOOL select_any_range,
1600         UINT32 *indices,
1601         UINT32 num_indices,
1602         UINT32 *actual_num_indices);
1603 
1604     HRESULT (STDMETHODCALLTYPE *GetFilteredFontIndices)(
1605         IDWriteFontSet1 *This,
1606         const DWRITE_FONT_PROPERTY *props,
1607         UINT32 num_properties,
1608         WINBOOL select_any_range,
1609         UINT32 *indices,
1610         UINT32 num_indices,
1611         UINT32 *actual_num_indices);
1612 
1613     HRESULT (STDMETHODCALLTYPE *GetFontAxisRanges_)(
1614         IDWriteFontSet1 *This,
1615         UINT32 font_index,
1616         DWRITE_FONT_AXIS_RANGE *axis_ranges,
1617         UINT32 num_ranges,
1618         UINT32 *actual_num_ranges);
1619 
1620     HRESULT (STDMETHODCALLTYPE *GetFontAxisRanges)(
1621         IDWriteFontSet1 *This,
1622         DWRITE_FONT_AXIS_RANGE *axis_ranges,
1623         UINT32 num_ranges,
1624         UINT32 *actual_num_ranges);
1625 
1626     HRESULT (STDMETHODCALLTYPE *IDWriteFontSet1_GetFontFaceReference)(
1627         IDWriteFontSet1 *This,
1628         UINT32 index,
1629         IDWriteFontFaceReference1 **reference);
1630 
1631     HRESULT (STDMETHODCALLTYPE *CreateFontResource)(
1632         IDWriteFontSet1 *This,
1633         UINT32 index,
1634         IDWriteFontResource **resource);
1635 
1636     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
1637         IDWriteFontSet1 *This,
1638         UINT32 index,
1639         IDWriteFontFace5 **fontface);
1640 
1641     DWRITE_LOCALITY (STDMETHODCALLTYPE *GetFontLocality)(
1642         IDWriteFontSet1 *This,
1643         UINT32 index);
1644 
1645     END_INTERFACE
1646 } IDWriteFontSet1Vtbl;
1647 
1648 interface IDWriteFontSet1 {
1649     CONST_VTBL IDWriteFontSet1Vtbl* lpVtbl;
1650 };
1651 
1652 #ifdef COBJMACROS
1653 #ifndef WIDL_C_INLINE_WRAPPERS
1654 /*** IUnknown methods ***/
1655 #define IDWriteFontSet1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1656 #define IDWriteFontSet1_AddRef(This) (This)->lpVtbl->AddRef(This)
1657 #define IDWriteFontSet1_Release(This) (This)->lpVtbl->Release(This)
1658 /*** IDWriteFontSet methods ***/
1659 #define IDWriteFontSet1_GetFontCount(This) (This)->lpVtbl->GetFontCount(This)
1660 #define IDWriteFontSet1_FindFontFaceReference(This,reference,index,exists) (This)->lpVtbl->FindFontFaceReference(This,reference,index,exists)
1661 #define IDWriteFontSet1_FindFontFace(This,fontface,index,exists) (This)->lpVtbl->FindFontFace(This,fontface,index,exists)
1662 #define IDWriteFontSet1_GetPropertyValues__(This,id,values) (This)->lpVtbl->GetPropertyValues__(This,id,values)
1663 #define IDWriteFontSet1_GetPropertyValues_(This,id,preferred_locales,values) (This)->lpVtbl->GetPropertyValues_(This,id,preferred_locales,values)
1664 #define IDWriteFontSet1_GetPropertyValues(This,index,id,exists,values) (This)->lpVtbl->GetPropertyValues(This,index,id,exists,values)
1665 #define IDWriteFontSet1_GetPropertyOccurrenceCount(This,property,count) (This)->lpVtbl->GetPropertyOccurrenceCount(This,property,count)
1666 #define IDWriteFontSet1_GetMatchingFonts_(This,family,weight,stretch,style,fontset) (This)->lpVtbl->GetMatchingFonts_(This,family,weight,stretch,style,fontset)
1667 /*** IDWriteFontSet1 methods ***/
1668 #define IDWriteFontSet1_GetMatchingFonts(This,property,axis_values,num_values,fontset) (This)->lpVtbl->IDWriteFontSet1_GetMatchingFonts(This,property,axis_values,num_values,fontset)
1669 #define IDWriteFontSet1_GetFirstFontResources(This,fontset) (This)->lpVtbl->GetFirstFontResources(This,fontset)
1670 #define IDWriteFontSet1_GetFilteredFonts__(This,indices,num_indices,fontset) (This)->lpVtbl->GetFilteredFonts__(This,indices,num_indices,fontset)
1671 #define IDWriteFontSet1_GetFilteredFonts_(This,axis_ranges,num_ranges,select_any_range,fontset) (This)->lpVtbl->GetFilteredFonts_(This,axis_ranges,num_ranges,select_any_range,fontset)
1672 #define IDWriteFontSet1_GetFilteredFonts(This,props,num_properties,select_any_property,fontset) (This)->lpVtbl->GetFilteredFonts(This,props,num_properties,select_any_property,fontset)
1673 #define IDWriteFontSet1_GetFilteredFontIndices_(This,ranges,num_ranges,select_any_range,indices,num_indices,actual_num_indices) (This)->lpVtbl->GetFilteredFontIndices_(This,ranges,num_ranges,select_any_range,indices,num_indices,actual_num_indices)
1674 #define IDWriteFontSet1_GetFilteredFontIndices(This,props,num_properties,select_any_range,indices,num_indices,actual_num_indices) (This)->lpVtbl->GetFilteredFontIndices(This,props,num_properties,select_any_range,indices,num_indices,actual_num_indices)
1675 #define IDWriteFontSet1_GetFontAxisRanges_(This,font_index,axis_ranges,num_ranges,actual_num_ranges) (This)->lpVtbl->GetFontAxisRanges_(This,font_index,axis_ranges,num_ranges,actual_num_ranges)
1676 #define IDWriteFontSet1_GetFontAxisRanges(This,axis_ranges,num_ranges,actual_num_ranges) (This)->lpVtbl->GetFontAxisRanges(This,axis_ranges,num_ranges,actual_num_ranges)
1677 #define IDWriteFontSet1_GetFontFaceReference(This,index,reference) (This)->lpVtbl->IDWriteFontSet1_GetFontFaceReference(This,index,reference)
1678 #define IDWriteFontSet1_CreateFontResource(This,index,resource) (This)->lpVtbl->CreateFontResource(This,index,resource)
1679 #define IDWriteFontSet1_CreateFontFace(This,index,fontface) (This)->lpVtbl->CreateFontFace(This,index,fontface)
1680 #define IDWriteFontSet1_GetFontLocality(This,index) (This)->lpVtbl->GetFontLocality(This,index)
1681 #else
1682 /*** IUnknown methods ***/
1683 static FORCEINLINE HRESULT IDWriteFontSet1_QueryInterface(IDWriteFontSet1* This,REFIID riid,void **ppvObject) {
1684     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1685 }
1686 static FORCEINLINE ULONG IDWriteFontSet1_AddRef(IDWriteFontSet1* This) {
1687     return This->lpVtbl->AddRef(This);
1688 }
1689 static FORCEINLINE ULONG IDWriteFontSet1_Release(IDWriteFontSet1* This) {
1690     return This->lpVtbl->Release(This);
1691 }
1692 /*** IDWriteFontSet methods ***/
1693 static FORCEINLINE UINT32 IDWriteFontSet1_GetFontCount(IDWriteFontSet1* This) {
1694     return This->lpVtbl->GetFontCount(This);
1695 }
1696 static FORCEINLINE HRESULT IDWriteFontSet1_FindFontFaceReference(IDWriteFontSet1* This,IDWriteFontFaceReference *reference,UINT32 *index,WINBOOL *exists) {
1697     return This->lpVtbl->FindFontFaceReference(This,reference,index,exists);
1698 }
1699 static FORCEINLINE HRESULT IDWriteFontSet1_FindFontFace(IDWriteFontSet1* This,IDWriteFontFace *fontface,UINT32 *index,WINBOOL *exists) {
1700     return This->lpVtbl->FindFontFace(This,fontface,index,exists);
1701 }
1702 static FORCEINLINE HRESULT IDWriteFontSet1_GetPropertyValues__(IDWriteFontSet1* This,DWRITE_FONT_PROPERTY_ID id,IDWriteStringList **values) {
1703     return This->lpVtbl->GetPropertyValues__(This,id,values);
1704 }
1705 static FORCEINLINE HRESULT IDWriteFontSet1_GetPropertyValues_(IDWriteFontSet1* This,DWRITE_FONT_PROPERTY_ID id,const WCHAR *preferred_locales,IDWriteStringList **values) {
1706     return This->lpVtbl->GetPropertyValues_(This,id,preferred_locales,values);
1707 }
1708 static FORCEINLINE HRESULT IDWriteFontSet1_GetPropertyValues(IDWriteFontSet1* This,UINT32 index,DWRITE_FONT_PROPERTY_ID id,WINBOOL *exists,IDWriteLocalizedStrings **values) {
1709     return This->lpVtbl->GetPropertyValues(This,index,id,exists,values);
1710 }
1711 static FORCEINLINE HRESULT IDWriteFontSet1_GetPropertyOccurrenceCount(IDWriteFontSet1* This,const DWRITE_FONT_PROPERTY *property,UINT32 *count) {
1712     return This->lpVtbl->GetPropertyOccurrenceCount(This,property,count);
1713 }
1714 static FORCEINLINE HRESULT IDWriteFontSet1_GetMatchingFonts_(IDWriteFontSet1* This,const WCHAR *family,DWRITE_FONT_WEIGHT weight,DWRITE_FONT_STRETCH stretch,DWRITE_FONT_STYLE style,IDWriteFontSet **fontset) {
1715     return This->lpVtbl->GetMatchingFonts_(This,family,weight,stretch,style,fontset);
1716 }
1717 /*** IDWriteFontSet1 methods ***/
1718 static FORCEINLINE HRESULT IDWriteFontSet1_GetMatchingFonts(IDWriteFontSet1* This,const DWRITE_FONT_PROPERTY *property,const DWRITE_FONT_AXIS_VALUE *axis_values,UINT32 num_values,IDWriteFontSet1 **fontset) {
1719     return This->lpVtbl->IDWriteFontSet1_GetMatchingFonts(This,property,axis_values,num_values,fontset);
1720 }
1721 static FORCEINLINE HRESULT IDWriteFontSet1_GetFirstFontResources(IDWriteFontSet1* This,IDWriteFontSet1 **fontset) {
1722     return This->lpVtbl->GetFirstFontResources(This,fontset);
1723 }
1724 static FORCEINLINE HRESULT IDWriteFontSet1_GetFilteredFonts__(IDWriteFontSet1* This,const UINT32 *indices,UINT32 num_indices,IDWriteFontSet1 **fontset) {
1725     return This->lpVtbl->GetFilteredFonts__(This,indices,num_indices,fontset);
1726 }
1727 static FORCEINLINE HRESULT IDWriteFontSet1_GetFilteredFonts_(IDWriteFontSet1* This,const DWRITE_FONT_AXIS_RANGE *axis_ranges,UINT32 num_ranges,WINBOOL select_any_range,IDWriteFontSet1 **fontset) {
1728     return This->lpVtbl->GetFilteredFonts_(This,axis_ranges,num_ranges,select_any_range,fontset);
1729 }
1730 static FORCEINLINE HRESULT IDWriteFontSet1_GetFilteredFonts(IDWriteFontSet1* This,const DWRITE_FONT_PROPERTY *props,UINT32 num_properties,WINBOOL select_any_property,IDWriteFontSet1 **fontset) {
1731     return This->lpVtbl->GetFilteredFonts(This,props,num_properties,select_any_property,fontset);
1732 }
1733 static FORCEINLINE HRESULT IDWriteFontSet1_GetFilteredFontIndices_(IDWriteFontSet1* This,const DWRITE_FONT_AXIS_RANGE *ranges,UINT32 num_ranges,WINBOOL select_any_range,UINT32 *indices,UINT32 num_indices,UINT32 *actual_num_indices) {
1734     return This->lpVtbl->GetFilteredFontIndices_(This,ranges,num_ranges,select_any_range,indices,num_indices,actual_num_indices);
1735 }
1736 static FORCEINLINE HRESULT IDWriteFontSet1_GetFilteredFontIndices(IDWriteFontSet1* This,const DWRITE_FONT_PROPERTY *props,UINT32 num_properties,WINBOOL select_any_range,UINT32 *indices,UINT32 num_indices,UINT32 *actual_num_indices) {
1737     return This->lpVtbl->GetFilteredFontIndices(This,props,num_properties,select_any_range,indices,num_indices,actual_num_indices);
1738 }
1739 static FORCEINLINE HRESULT IDWriteFontSet1_GetFontAxisRanges_(IDWriteFontSet1* This,UINT32 font_index,DWRITE_FONT_AXIS_RANGE *axis_ranges,UINT32 num_ranges,UINT32 *actual_num_ranges) {
1740     return This->lpVtbl->GetFontAxisRanges_(This,font_index,axis_ranges,num_ranges,actual_num_ranges);
1741 }
1742 static FORCEINLINE HRESULT IDWriteFontSet1_GetFontAxisRanges(IDWriteFontSet1* This,DWRITE_FONT_AXIS_RANGE *axis_ranges,UINT32 num_ranges,UINT32 *actual_num_ranges) {
1743     return This->lpVtbl->GetFontAxisRanges(This,axis_ranges,num_ranges,actual_num_ranges);
1744 }
1745 static FORCEINLINE HRESULT IDWriteFontSet1_GetFontFaceReference(IDWriteFontSet1* This,UINT32 index,IDWriteFontFaceReference1 **reference) {
1746     return This->lpVtbl->IDWriteFontSet1_GetFontFaceReference(This,index,reference);
1747 }
1748 static FORCEINLINE HRESULT IDWriteFontSet1_CreateFontResource(IDWriteFontSet1* This,UINT32 index,IDWriteFontResource **resource) {
1749     return This->lpVtbl->CreateFontResource(This,index,resource);
1750 }
1751 static FORCEINLINE HRESULT IDWriteFontSet1_CreateFontFace(IDWriteFontSet1* This,UINT32 index,IDWriteFontFace5 **fontface) {
1752     return This->lpVtbl->CreateFontFace(This,index,fontface);
1753 }
1754 static FORCEINLINE DWRITE_LOCALITY IDWriteFontSet1_GetFontLocality(IDWriteFontSet1* This,UINT32 index) {
1755     return This->lpVtbl->GetFontLocality(This,index);
1756 }
1757 #endif
1758 #endif
1759 
1760 #endif
1761 
1762 
1763 #endif  /* __IDWriteFontSet1_INTERFACE_DEFINED__ */
1764 
1765 /*****************************************************************************
1766  * IDWriteFont3 interface
1767  */
1768 #ifndef __IDWriteFont3_INTERFACE_DEFINED__
1769 #define __IDWriteFont3_INTERFACE_DEFINED__
1770 
1771 DEFINE_GUID(IID_IDWriteFont3, 0x29748ed6, 0x8c9c, 0x4a6a, 0xbe,0x0b, 0xd9,0x12,0xe8,0x53,0x89,0x44);
1772 #if defined(__cplusplus) && !defined(CINTERFACE)
1773 MIDL_INTERFACE("29748ed6-8c9c-4a6a-be0b-d912e8538944")
1774 IDWriteFont3 : public IDWriteFont2
1775 {
1776     virtual HRESULT STDMETHODCALLTYPE CreateFontFace(
1777         IDWriteFontFace3 **fontface) = 0;
1778 
1779     virtual WINBOOL STDMETHODCALLTYPE Equals(
1780         IDWriteFont *font) = 0;
1781 
1782     virtual HRESULT STDMETHODCALLTYPE GetFontFaceReference(
1783         IDWriteFontFaceReference **reference) = 0;
1784 
1785     virtual WINBOOL STDMETHODCALLTYPE HasCharacter(
1786         UINT32 character) = 0;
1787 
1788     virtual DWRITE_LOCALITY STDMETHODCALLTYPE GetLocality(
1789         ) = 0;
1790 
1791 };
1792 #ifdef __CRT_UUID_DECL
1793 __CRT_UUID_DECL(IDWriteFont3, 0x29748ed6, 0x8c9c, 0x4a6a, 0xbe,0x0b, 0xd9,0x12,0xe8,0x53,0x89,0x44)
1794 #endif
1795 #else
1796 typedef struct IDWriteFont3Vtbl {
1797     BEGIN_INTERFACE
1798 
1799     /*** IUnknown methods ***/
1800     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1801         IDWriteFont3 *This,
1802         REFIID riid,
1803         void **ppvObject);
1804 
1805     ULONG (STDMETHODCALLTYPE *AddRef)(
1806         IDWriteFont3 *This);
1807 
1808     ULONG (STDMETHODCALLTYPE *Release)(
1809         IDWriteFont3 *This);
1810 
1811     /*** IDWriteFont methods ***/
1812     HRESULT (STDMETHODCALLTYPE *GetFontFamily)(
1813         IDWriteFont3 *This,
1814         IDWriteFontFamily **family);
1815 
1816     DWRITE_FONT_WEIGHT (STDMETHODCALLTYPE *GetWeight)(
1817         IDWriteFont3 *This);
1818 
1819     DWRITE_FONT_STRETCH (STDMETHODCALLTYPE *GetStretch)(
1820         IDWriteFont3 *This);
1821 
1822     DWRITE_FONT_STYLE (STDMETHODCALLTYPE *GetStyle)(
1823         IDWriteFont3 *This);
1824 
1825     WINBOOL (STDMETHODCALLTYPE *IsSymbolFont)(
1826         IDWriteFont3 *This);
1827 
1828     HRESULT (STDMETHODCALLTYPE *GetFaceNames)(
1829         IDWriteFont3 *This,
1830         IDWriteLocalizedStrings **names);
1831 
1832     HRESULT (STDMETHODCALLTYPE *GetInformationalStrings)(
1833         IDWriteFont3 *This,
1834         DWRITE_INFORMATIONAL_STRING_ID stringid,
1835         IDWriteLocalizedStrings **strings,
1836         WINBOOL *exists);
1837 
1838     DWRITE_FONT_SIMULATIONS (STDMETHODCALLTYPE *GetSimulations)(
1839         IDWriteFont3 *This);
1840 
1841     void (STDMETHODCALLTYPE *GetMetrics)(
1842         IDWriteFont3 *This,
1843         DWRITE_FONT_METRICS *metrics);
1844 
1845     HRESULT (STDMETHODCALLTYPE *HasCharacter)(
1846         IDWriteFont3 *This,
1847         UINT32 value,
1848         WINBOOL *exists);
1849 
1850     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
1851         IDWriteFont3 *This,
1852         IDWriteFontFace **face);
1853 
1854     /*** IDWriteFont1 methods ***/
1855     void (STDMETHODCALLTYPE *IDWriteFont1_GetMetrics)(
1856         IDWriteFont3 *This,
1857         DWRITE_FONT_METRICS1 *metrics);
1858 
1859     void (STDMETHODCALLTYPE *GetPanose)(
1860         IDWriteFont3 *This,
1861         DWRITE_PANOSE *panose);
1862 
1863     HRESULT (STDMETHODCALLTYPE *GetUnicodeRanges)(
1864         IDWriteFont3 *This,
1865         UINT32 max_count,
1866         DWRITE_UNICODE_RANGE *ranges,
1867         UINT32 *count);
1868 
1869     WINBOOL (STDMETHODCALLTYPE *IsMonospacedFont)(
1870         IDWriteFont3 *This);
1871 
1872     /*** IDWriteFont2 methods ***/
1873     WINBOOL (STDMETHODCALLTYPE *IsColorFont)(
1874         IDWriteFont3 *This);
1875 
1876     /*** IDWriteFont3 methods ***/
1877     HRESULT (STDMETHODCALLTYPE *IDWriteFont3_CreateFontFace)(
1878         IDWriteFont3 *This,
1879         IDWriteFontFace3 **fontface);
1880 
1881     WINBOOL (STDMETHODCALLTYPE *Equals)(
1882         IDWriteFont3 *This,
1883         IDWriteFont *font);
1884 
1885     HRESULT (STDMETHODCALLTYPE *GetFontFaceReference)(
1886         IDWriteFont3 *This,
1887         IDWriteFontFaceReference **reference);
1888 
1889     WINBOOL (STDMETHODCALLTYPE *IDWriteFont3_HasCharacter)(
1890         IDWriteFont3 *This,
1891         UINT32 character);
1892 
1893     DWRITE_LOCALITY (STDMETHODCALLTYPE *GetLocality)(
1894         IDWriteFont3 *This);
1895 
1896     END_INTERFACE
1897 } IDWriteFont3Vtbl;
1898 
1899 interface IDWriteFont3 {
1900     CONST_VTBL IDWriteFont3Vtbl* lpVtbl;
1901 };
1902 
1903 #ifdef COBJMACROS
1904 #ifndef WIDL_C_INLINE_WRAPPERS
1905 /*** IUnknown methods ***/
1906 #define IDWriteFont3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1907 #define IDWriteFont3_AddRef(This) (This)->lpVtbl->AddRef(This)
1908 #define IDWriteFont3_Release(This) (This)->lpVtbl->Release(This)
1909 /*** IDWriteFont methods ***/
1910 #define IDWriteFont3_GetFontFamily(This,family) (This)->lpVtbl->GetFontFamily(This,family)
1911 #define IDWriteFont3_GetWeight(This) (This)->lpVtbl->GetWeight(This)
1912 #define IDWriteFont3_GetStretch(This) (This)->lpVtbl->GetStretch(This)
1913 #define IDWriteFont3_GetStyle(This) (This)->lpVtbl->GetStyle(This)
1914 #define IDWriteFont3_IsSymbolFont(This) (This)->lpVtbl->IsSymbolFont(This)
1915 #define IDWriteFont3_GetFaceNames(This,names) (This)->lpVtbl->GetFaceNames(This,names)
1916 #define IDWriteFont3_GetInformationalStrings(This,stringid,strings,exists) (This)->lpVtbl->GetInformationalStrings(This,stringid,strings,exists)
1917 #define IDWriteFont3_GetSimulations(This) (This)->lpVtbl->GetSimulations(This)
1918 /*** IDWriteFont1 methods ***/
1919 #define IDWriteFont3_GetMetrics(This,metrics) (This)->lpVtbl->IDWriteFont1_GetMetrics(This,metrics)
1920 #define IDWriteFont3_GetPanose(This,panose) (This)->lpVtbl->GetPanose(This,panose)
1921 #define IDWriteFont3_GetUnicodeRanges(This,max_count,ranges,count) (This)->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count)
1922 #define IDWriteFont3_IsMonospacedFont(This) (This)->lpVtbl->IsMonospacedFont(This)
1923 /*** IDWriteFont2 methods ***/
1924 #define IDWriteFont3_IsColorFont(This) (This)->lpVtbl->IsColorFont(This)
1925 /*** IDWriteFont3 methods ***/
1926 #define IDWriteFont3_CreateFontFace(This,fontface) (This)->lpVtbl->IDWriteFont3_CreateFontFace(This,fontface)
1927 #define IDWriteFont3_Equals(This,font) (This)->lpVtbl->Equals(This,font)
1928 #define IDWriteFont3_GetFontFaceReference(This,reference) (This)->lpVtbl->GetFontFaceReference(This,reference)
1929 #define IDWriteFont3_HasCharacter(This,character) (This)->lpVtbl->IDWriteFont3_HasCharacter(This,character)
1930 #define IDWriteFont3_GetLocality(This) (This)->lpVtbl->GetLocality(This)
1931 #else
1932 /*** IUnknown methods ***/
1933 static FORCEINLINE HRESULT IDWriteFont3_QueryInterface(IDWriteFont3* This,REFIID riid,void **ppvObject) {
1934     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1935 }
1936 static FORCEINLINE ULONG IDWriteFont3_AddRef(IDWriteFont3* This) {
1937     return This->lpVtbl->AddRef(This);
1938 }
1939 static FORCEINLINE ULONG IDWriteFont3_Release(IDWriteFont3* This) {
1940     return This->lpVtbl->Release(This);
1941 }
1942 /*** IDWriteFont methods ***/
1943 static FORCEINLINE HRESULT IDWriteFont3_GetFontFamily(IDWriteFont3* This,IDWriteFontFamily **family) {
1944     return This->lpVtbl->GetFontFamily(This,family);
1945 }
1946 static FORCEINLINE DWRITE_FONT_WEIGHT IDWriteFont3_GetWeight(IDWriteFont3* This) {
1947     return This->lpVtbl->GetWeight(This);
1948 }
1949 static FORCEINLINE DWRITE_FONT_STRETCH IDWriteFont3_GetStretch(IDWriteFont3* This) {
1950     return This->lpVtbl->GetStretch(This);
1951 }
1952 static FORCEINLINE DWRITE_FONT_STYLE IDWriteFont3_GetStyle(IDWriteFont3* This) {
1953     return This->lpVtbl->GetStyle(This);
1954 }
1955 static FORCEINLINE WINBOOL IDWriteFont3_IsSymbolFont(IDWriteFont3* This) {
1956     return This->lpVtbl->IsSymbolFont(This);
1957 }
1958 static FORCEINLINE HRESULT IDWriteFont3_GetFaceNames(IDWriteFont3* This,IDWriteLocalizedStrings **names) {
1959     return This->lpVtbl->GetFaceNames(This,names);
1960 }
1961 static FORCEINLINE HRESULT IDWriteFont3_GetInformationalStrings(IDWriteFont3* This,DWRITE_INFORMATIONAL_STRING_ID stringid,IDWriteLocalizedStrings **strings,WINBOOL *exists) {
1962     return This->lpVtbl->GetInformationalStrings(This,stringid,strings,exists);
1963 }
1964 static FORCEINLINE DWRITE_FONT_SIMULATIONS IDWriteFont3_GetSimulations(IDWriteFont3* This) {
1965     return This->lpVtbl->GetSimulations(This);
1966 }
1967 /*** IDWriteFont1 methods ***/
1968 static FORCEINLINE void IDWriteFont3_GetMetrics(IDWriteFont3* This,DWRITE_FONT_METRICS1 *metrics) {
1969     This->lpVtbl->IDWriteFont1_GetMetrics(This,metrics);
1970 }
1971 static FORCEINLINE void IDWriteFont3_GetPanose(IDWriteFont3* This,DWRITE_PANOSE *panose) {
1972     This->lpVtbl->GetPanose(This,panose);
1973 }
1974 static FORCEINLINE HRESULT IDWriteFont3_GetUnicodeRanges(IDWriteFont3* This,UINT32 max_count,DWRITE_UNICODE_RANGE *ranges,UINT32 *count) {
1975     return This->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count);
1976 }
1977 static FORCEINLINE WINBOOL IDWriteFont3_IsMonospacedFont(IDWriteFont3* This) {
1978     return This->lpVtbl->IsMonospacedFont(This);
1979 }
1980 /*** IDWriteFont2 methods ***/
1981 static FORCEINLINE WINBOOL IDWriteFont3_IsColorFont(IDWriteFont3* This) {
1982     return This->lpVtbl->IsColorFont(This);
1983 }
1984 /*** IDWriteFont3 methods ***/
1985 static FORCEINLINE HRESULT IDWriteFont3_CreateFontFace(IDWriteFont3* This,IDWriteFontFace3 **fontface) {
1986     return This->lpVtbl->IDWriteFont3_CreateFontFace(This,fontface);
1987 }
1988 static FORCEINLINE WINBOOL IDWriteFont3_Equals(IDWriteFont3* This,IDWriteFont *font) {
1989     return This->lpVtbl->Equals(This,font);
1990 }
1991 static FORCEINLINE HRESULT IDWriteFont3_GetFontFaceReference(IDWriteFont3* This,IDWriteFontFaceReference **reference) {
1992     return This->lpVtbl->GetFontFaceReference(This,reference);
1993 }
1994 static FORCEINLINE WINBOOL IDWriteFont3_HasCharacter(IDWriteFont3* This,UINT32 character) {
1995     return This->lpVtbl->IDWriteFont3_HasCharacter(This,character);
1996 }
1997 static FORCEINLINE DWRITE_LOCALITY IDWriteFont3_GetLocality(IDWriteFont3* This) {
1998     return This->lpVtbl->GetLocality(This);
1999 }
2000 #endif
2001 #endif
2002 
2003 #endif
2004 
2005 
2006 #endif  /* __IDWriteFont3_INTERFACE_DEFINED__ */
2007 
2008 /*****************************************************************************
2009  * IDWriteFontFamily1 interface
2010  */
2011 #ifndef __IDWriteFontFamily1_INTERFACE_DEFINED__
2012 #define __IDWriteFontFamily1_INTERFACE_DEFINED__
2013 
2014 DEFINE_GUID(IID_IDWriteFontFamily1, 0xda20d8ef, 0x812a, 0x4c43, 0x98,0x02, 0x62,0xec,0x4a,0xbd,0x7a,0xdf);
2015 #if defined(__cplusplus) && !defined(CINTERFACE)
2016 MIDL_INTERFACE("da20d8ef-812a-4c43-9802-62ec4abd7adf")
2017 IDWriteFontFamily1 : public IDWriteFontFamily
2018 {
2019     virtual DWRITE_LOCALITY STDMETHODCALLTYPE GetFontLocality(
2020         UINT32 index) = 0;
2021 
2022     virtual HRESULT STDMETHODCALLTYPE GetFont(
2023         UINT32 index,
2024         IDWriteFont3 **font) = 0;
2025 
2026     virtual HRESULT STDMETHODCALLTYPE GetFontFaceReference(
2027         UINT32 index,
2028         IDWriteFontFaceReference **reference) = 0;
2029 
2030 };
2031 #ifdef __CRT_UUID_DECL
2032 __CRT_UUID_DECL(IDWriteFontFamily1, 0xda20d8ef, 0x812a, 0x4c43, 0x98,0x02, 0x62,0xec,0x4a,0xbd,0x7a,0xdf)
2033 #endif
2034 #else
2035 typedef struct IDWriteFontFamily1Vtbl {
2036     BEGIN_INTERFACE
2037 
2038     /*** IUnknown methods ***/
2039     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2040         IDWriteFontFamily1 *This,
2041         REFIID riid,
2042         void **ppvObject);
2043 
2044     ULONG (STDMETHODCALLTYPE *AddRef)(
2045         IDWriteFontFamily1 *This);
2046 
2047     ULONG (STDMETHODCALLTYPE *Release)(
2048         IDWriteFontFamily1 *This);
2049 
2050     /*** IDWriteFontList methods ***/
2051     HRESULT (STDMETHODCALLTYPE *GetFontCollection)(
2052         IDWriteFontFamily1 *This,
2053         IDWriteFontCollection **collection);
2054 
2055     UINT32 (STDMETHODCALLTYPE *GetFontCount)(
2056         IDWriteFontFamily1 *This);
2057 
2058     HRESULT (STDMETHODCALLTYPE *GetFont)(
2059         IDWriteFontFamily1 *This,
2060         UINT32 index,
2061         IDWriteFont **font);
2062 
2063     /*** IDWriteFontFamily methods ***/
2064     HRESULT (STDMETHODCALLTYPE *GetFamilyNames)(
2065         IDWriteFontFamily1 *This,
2066         IDWriteLocalizedStrings **names);
2067 
2068     HRESULT (STDMETHODCALLTYPE *GetFirstMatchingFont)(
2069         IDWriteFontFamily1 *This,
2070         DWRITE_FONT_WEIGHT weight,
2071         DWRITE_FONT_STRETCH stretch,
2072         DWRITE_FONT_STYLE style,
2073         IDWriteFont **font);
2074 
2075     HRESULT (STDMETHODCALLTYPE *GetMatchingFonts)(
2076         IDWriteFontFamily1 *This,
2077         DWRITE_FONT_WEIGHT weight,
2078         DWRITE_FONT_STRETCH stretch,
2079         DWRITE_FONT_STYLE style,
2080         IDWriteFontList **fonts);
2081 
2082     /*** IDWriteFontFamily1 methods ***/
2083     DWRITE_LOCALITY (STDMETHODCALLTYPE *GetFontLocality)(
2084         IDWriteFontFamily1 *This,
2085         UINT32 index);
2086 
2087     HRESULT (STDMETHODCALLTYPE *IDWriteFontFamily1_GetFont)(
2088         IDWriteFontFamily1 *This,
2089         UINT32 index,
2090         IDWriteFont3 **font);
2091 
2092     HRESULT (STDMETHODCALLTYPE *GetFontFaceReference)(
2093         IDWriteFontFamily1 *This,
2094         UINT32 index,
2095         IDWriteFontFaceReference **reference);
2096 
2097     END_INTERFACE
2098 } IDWriteFontFamily1Vtbl;
2099 
2100 interface IDWriteFontFamily1 {
2101     CONST_VTBL IDWriteFontFamily1Vtbl* lpVtbl;
2102 };
2103 
2104 #ifdef COBJMACROS
2105 #ifndef WIDL_C_INLINE_WRAPPERS
2106 /*** IUnknown methods ***/
2107 #define IDWriteFontFamily1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2108 #define IDWriteFontFamily1_AddRef(This) (This)->lpVtbl->AddRef(This)
2109 #define IDWriteFontFamily1_Release(This) (This)->lpVtbl->Release(This)
2110 /*** IDWriteFontList methods ***/
2111 #define IDWriteFontFamily1_GetFontCollection(This,collection) (This)->lpVtbl->GetFontCollection(This,collection)
2112 #define IDWriteFontFamily1_GetFontCount(This) (This)->lpVtbl->GetFontCount(This)
2113 /*** IDWriteFontFamily methods ***/
2114 #define IDWriteFontFamily1_GetFamilyNames(This,names) (This)->lpVtbl->GetFamilyNames(This,names)
2115 #define IDWriteFontFamily1_GetFirstMatchingFont(This,weight,stretch,style,font) (This)->lpVtbl->GetFirstMatchingFont(This,weight,stretch,style,font)
2116 #define IDWriteFontFamily1_GetMatchingFonts(This,weight,stretch,style,fonts) (This)->lpVtbl->GetMatchingFonts(This,weight,stretch,style,fonts)
2117 /*** IDWriteFontFamily1 methods ***/
2118 #define IDWriteFontFamily1_GetFontLocality(This,index) (This)->lpVtbl->GetFontLocality(This,index)
2119 #define IDWriteFontFamily1_GetFont(This,index,font) (This)->lpVtbl->IDWriteFontFamily1_GetFont(This,index,font)
2120 #define IDWriteFontFamily1_GetFontFaceReference(This,index,reference) (This)->lpVtbl->GetFontFaceReference(This,index,reference)
2121 #else
2122 /*** IUnknown methods ***/
2123 static FORCEINLINE HRESULT IDWriteFontFamily1_QueryInterface(IDWriteFontFamily1* This,REFIID riid,void **ppvObject) {
2124     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2125 }
2126 static FORCEINLINE ULONG IDWriteFontFamily1_AddRef(IDWriteFontFamily1* This) {
2127     return This->lpVtbl->AddRef(This);
2128 }
2129 static FORCEINLINE ULONG IDWriteFontFamily1_Release(IDWriteFontFamily1* This) {
2130     return This->lpVtbl->Release(This);
2131 }
2132 /*** IDWriteFontList methods ***/
2133 static FORCEINLINE HRESULT IDWriteFontFamily1_GetFontCollection(IDWriteFontFamily1* This,IDWriteFontCollection **collection) {
2134     return This->lpVtbl->GetFontCollection(This,collection);
2135 }
2136 static FORCEINLINE UINT32 IDWriteFontFamily1_GetFontCount(IDWriteFontFamily1* This) {
2137     return This->lpVtbl->GetFontCount(This);
2138 }
2139 /*** IDWriteFontFamily methods ***/
2140 static FORCEINLINE HRESULT IDWriteFontFamily1_GetFamilyNames(IDWriteFontFamily1* This,IDWriteLocalizedStrings **names) {
2141     return This->lpVtbl->GetFamilyNames(This,names);
2142 }
2143 static FORCEINLINE HRESULT IDWriteFontFamily1_GetFirstMatchingFont(IDWriteFontFamily1* This,DWRITE_FONT_WEIGHT weight,DWRITE_FONT_STRETCH stretch,DWRITE_FONT_STYLE style,IDWriteFont **font) {
2144     return This->lpVtbl->GetFirstMatchingFont(This,weight,stretch,style,font);
2145 }
2146 static FORCEINLINE HRESULT IDWriteFontFamily1_GetMatchingFonts(IDWriteFontFamily1* This,DWRITE_FONT_WEIGHT weight,DWRITE_FONT_STRETCH stretch,DWRITE_FONT_STYLE style,IDWriteFontList **fonts) {
2147     return This->lpVtbl->GetMatchingFonts(This,weight,stretch,style,fonts);
2148 }
2149 /*** IDWriteFontFamily1 methods ***/
2150 static FORCEINLINE DWRITE_LOCALITY IDWriteFontFamily1_GetFontLocality(IDWriteFontFamily1* This,UINT32 index) {
2151     return This->lpVtbl->GetFontLocality(This,index);
2152 }
2153 static FORCEINLINE HRESULT IDWriteFontFamily1_GetFont(IDWriteFontFamily1* This,UINT32 index,IDWriteFont3 **font) {
2154     return This->lpVtbl->IDWriteFontFamily1_GetFont(This,index,font);
2155 }
2156 static FORCEINLINE HRESULT IDWriteFontFamily1_GetFontFaceReference(IDWriteFontFamily1* This,UINT32 index,IDWriteFontFaceReference **reference) {
2157     return This->lpVtbl->GetFontFaceReference(This,index,reference);
2158 }
2159 #endif
2160 #endif
2161 
2162 #endif
2163 
2164 
2165 #endif  /* __IDWriteFontFamily1_INTERFACE_DEFINED__ */
2166 
2167 /*****************************************************************************
2168  * IDWriteFontFamily2 interface
2169  */
2170 #ifndef __IDWriteFontFamily2_INTERFACE_DEFINED__
2171 #define __IDWriteFontFamily2_INTERFACE_DEFINED__
2172 
2173 DEFINE_GUID(IID_IDWriteFontFamily2, 0x3ed49e77, 0xa398, 0x4261, 0xb9,0xcf, 0xc1,0x26,0xc2,0x13,0x1e,0xf3);
2174 #if defined(__cplusplus) && !defined(CINTERFACE)
2175 MIDL_INTERFACE("3ed49e77-a398-4261-b9cf-c126c2131ef3")
2176 IDWriteFontFamily2 : public IDWriteFontFamily1
2177 {
2178     virtual HRESULT STDMETHODCALLTYPE GetMatchingFonts(
2179         const DWRITE_FONT_AXIS_VALUE *axis_values,
2180         UINT32 num_values,
2181         IDWriteFontList2 **fontlist) = 0;
2182 
2183     virtual HRESULT STDMETHODCALLTYPE GetFontSet(
2184         IDWriteFontSet1 **fontset) = 0;
2185 
2186 };
2187 #ifdef __CRT_UUID_DECL
2188 __CRT_UUID_DECL(IDWriteFontFamily2, 0x3ed49e77, 0xa398, 0x4261, 0xb9,0xcf, 0xc1,0x26,0xc2,0x13,0x1e,0xf3)
2189 #endif
2190 #else
2191 typedef struct IDWriteFontFamily2Vtbl {
2192     BEGIN_INTERFACE
2193 
2194     /*** IUnknown methods ***/
2195     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2196         IDWriteFontFamily2 *This,
2197         REFIID riid,
2198         void **ppvObject);
2199 
2200     ULONG (STDMETHODCALLTYPE *AddRef)(
2201         IDWriteFontFamily2 *This);
2202 
2203     ULONG (STDMETHODCALLTYPE *Release)(
2204         IDWriteFontFamily2 *This);
2205 
2206     /*** IDWriteFontList methods ***/
2207     HRESULT (STDMETHODCALLTYPE *GetFontCollection)(
2208         IDWriteFontFamily2 *This,
2209         IDWriteFontCollection **collection);
2210 
2211     UINT32 (STDMETHODCALLTYPE *GetFontCount)(
2212         IDWriteFontFamily2 *This);
2213 
2214     HRESULT (STDMETHODCALLTYPE *GetFont)(
2215         IDWriteFontFamily2 *This,
2216         UINT32 index,
2217         IDWriteFont **font);
2218 
2219     /*** IDWriteFontFamily methods ***/
2220     HRESULT (STDMETHODCALLTYPE *GetFamilyNames)(
2221         IDWriteFontFamily2 *This,
2222         IDWriteLocalizedStrings **names);
2223 
2224     HRESULT (STDMETHODCALLTYPE *GetFirstMatchingFont)(
2225         IDWriteFontFamily2 *This,
2226         DWRITE_FONT_WEIGHT weight,
2227         DWRITE_FONT_STRETCH stretch,
2228         DWRITE_FONT_STYLE style,
2229         IDWriteFont **font);
2230 
2231     HRESULT (STDMETHODCALLTYPE *GetMatchingFonts)(
2232         IDWriteFontFamily2 *This,
2233         DWRITE_FONT_WEIGHT weight,
2234         DWRITE_FONT_STRETCH stretch,
2235         DWRITE_FONT_STYLE style,
2236         IDWriteFontList **fonts);
2237 
2238     /*** IDWriteFontFamily1 methods ***/
2239     DWRITE_LOCALITY (STDMETHODCALLTYPE *GetFontLocality)(
2240         IDWriteFontFamily2 *This,
2241         UINT32 index);
2242 
2243     HRESULT (STDMETHODCALLTYPE *IDWriteFontFamily1_GetFont)(
2244         IDWriteFontFamily2 *This,
2245         UINT32 index,
2246         IDWriteFont3 **font);
2247 
2248     HRESULT (STDMETHODCALLTYPE *GetFontFaceReference)(
2249         IDWriteFontFamily2 *This,
2250         UINT32 index,
2251         IDWriteFontFaceReference **reference);
2252 
2253     /*** IDWriteFontFamily2 methods ***/
2254     HRESULT (STDMETHODCALLTYPE *IDWriteFontFamily2_GetMatchingFonts)(
2255         IDWriteFontFamily2 *This,
2256         const DWRITE_FONT_AXIS_VALUE *axis_values,
2257         UINT32 num_values,
2258         IDWriteFontList2 **fontlist);
2259 
2260     HRESULT (STDMETHODCALLTYPE *GetFontSet)(
2261         IDWriteFontFamily2 *This,
2262         IDWriteFontSet1 **fontset);
2263 
2264     END_INTERFACE
2265 } IDWriteFontFamily2Vtbl;
2266 
2267 interface IDWriteFontFamily2 {
2268     CONST_VTBL IDWriteFontFamily2Vtbl* lpVtbl;
2269 };
2270 
2271 #ifdef COBJMACROS
2272 #ifndef WIDL_C_INLINE_WRAPPERS
2273 /*** IUnknown methods ***/
2274 #define IDWriteFontFamily2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2275 #define IDWriteFontFamily2_AddRef(This) (This)->lpVtbl->AddRef(This)
2276 #define IDWriteFontFamily2_Release(This) (This)->lpVtbl->Release(This)
2277 /*** IDWriteFontList methods ***/
2278 #define IDWriteFontFamily2_GetFontCollection(This,collection) (This)->lpVtbl->GetFontCollection(This,collection)
2279 #define IDWriteFontFamily2_GetFontCount(This) (This)->lpVtbl->GetFontCount(This)
2280 /*** IDWriteFontFamily methods ***/
2281 #define IDWriteFontFamily2_GetFamilyNames(This,names) (This)->lpVtbl->GetFamilyNames(This,names)
2282 #define IDWriteFontFamily2_GetFirstMatchingFont(This,weight,stretch,style,font) (This)->lpVtbl->GetFirstMatchingFont(This,weight,stretch,style,font)
2283 /*** IDWriteFontFamily1 methods ***/
2284 #define IDWriteFontFamily2_GetFontLocality(This,index) (This)->lpVtbl->GetFontLocality(This,index)
2285 #define IDWriteFontFamily2_GetFont(This,index,font) (This)->lpVtbl->IDWriteFontFamily1_GetFont(This,index,font)
2286 #define IDWriteFontFamily2_GetFontFaceReference(This,index,reference) (This)->lpVtbl->GetFontFaceReference(This,index,reference)
2287 /*** IDWriteFontFamily2 methods ***/
2288 #define IDWriteFontFamily2_GetMatchingFonts(This,axis_values,num_values,fontlist) (This)->lpVtbl->IDWriteFontFamily2_GetMatchingFonts(This,axis_values,num_values,fontlist)
2289 #define IDWriteFontFamily2_GetFontSet(This,fontset) (This)->lpVtbl->GetFontSet(This,fontset)
2290 #else
2291 /*** IUnknown methods ***/
2292 static FORCEINLINE HRESULT IDWriteFontFamily2_QueryInterface(IDWriteFontFamily2* This,REFIID riid,void **ppvObject) {
2293     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2294 }
2295 static FORCEINLINE ULONG IDWriteFontFamily2_AddRef(IDWriteFontFamily2* This) {
2296     return This->lpVtbl->AddRef(This);
2297 }
2298 static FORCEINLINE ULONG IDWriteFontFamily2_Release(IDWriteFontFamily2* This) {
2299     return This->lpVtbl->Release(This);
2300 }
2301 /*** IDWriteFontList methods ***/
2302 static FORCEINLINE HRESULT IDWriteFontFamily2_GetFontCollection(IDWriteFontFamily2* This,IDWriteFontCollection **collection) {
2303     return This->lpVtbl->GetFontCollection(This,collection);
2304 }
2305 static FORCEINLINE UINT32 IDWriteFontFamily2_GetFontCount(IDWriteFontFamily2* This) {
2306     return This->lpVtbl->GetFontCount(This);
2307 }
2308 /*** IDWriteFontFamily methods ***/
2309 static FORCEINLINE HRESULT IDWriteFontFamily2_GetFamilyNames(IDWriteFontFamily2* This,IDWriteLocalizedStrings **names) {
2310     return This->lpVtbl->GetFamilyNames(This,names);
2311 }
2312 static FORCEINLINE HRESULT IDWriteFontFamily2_GetFirstMatchingFont(IDWriteFontFamily2* This,DWRITE_FONT_WEIGHT weight,DWRITE_FONT_STRETCH stretch,DWRITE_FONT_STYLE style,IDWriteFont **font) {
2313     return This->lpVtbl->GetFirstMatchingFont(This,weight,stretch,style,font);
2314 }
2315 /*** IDWriteFontFamily1 methods ***/
2316 static FORCEINLINE DWRITE_LOCALITY IDWriteFontFamily2_GetFontLocality(IDWriteFontFamily2* This,UINT32 index) {
2317     return This->lpVtbl->GetFontLocality(This,index);
2318 }
2319 static FORCEINLINE HRESULT IDWriteFontFamily2_GetFont(IDWriteFontFamily2* This,UINT32 index,IDWriteFont3 **font) {
2320     return This->lpVtbl->IDWriteFontFamily1_GetFont(This,index,font);
2321 }
2322 static FORCEINLINE HRESULT IDWriteFontFamily2_GetFontFaceReference(IDWriteFontFamily2* This,UINT32 index,IDWriteFontFaceReference **reference) {
2323     return This->lpVtbl->GetFontFaceReference(This,index,reference);
2324 }
2325 /*** IDWriteFontFamily2 methods ***/
2326 static FORCEINLINE HRESULT IDWriteFontFamily2_GetMatchingFonts(IDWriteFontFamily2* This,const DWRITE_FONT_AXIS_VALUE *axis_values,UINT32 num_values,IDWriteFontList2 **fontlist) {
2327     return This->lpVtbl->IDWriteFontFamily2_GetMatchingFonts(This,axis_values,num_values,fontlist);
2328 }
2329 static FORCEINLINE HRESULT IDWriteFontFamily2_GetFontSet(IDWriteFontFamily2* This,IDWriteFontSet1 **fontset) {
2330     return This->lpVtbl->GetFontSet(This,fontset);
2331 }
2332 #endif
2333 #endif
2334 
2335 #endif
2336 
2337 
2338 #endif  /* __IDWriteFontFamily2_INTERFACE_DEFINED__ */
2339 
2340 /*****************************************************************************
2341  * IDWriteFontCollection1 interface
2342  */
2343 #ifndef __IDWriteFontCollection1_INTERFACE_DEFINED__
2344 #define __IDWriteFontCollection1_INTERFACE_DEFINED__
2345 
2346 DEFINE_GUID(IID_IDWriteFontCollection1, 0x53585141, 0xd9f8, 0x4095, 0x83,0x21, 0xd7,0x3c,0xf6,0xbd,0x11,0x6c);
2347 #if defined(__cplusplus) && !defined(CINTERFACE)
2348 MIDL_INTERFACE("53585141-d9f8-4095-8321-d73cf6bd116c")
2349 IDWriteFontCollection1 : public IDWriteFontCollection
2350 {
2351     virtual HRESULT STDMETHODCALLTYPE GetFontSet(
2352         IDWriteFontSet **fontset) = 0;
2353 
2354     virtual HRESULT STDMETHODCALLTYPE GetFontFamily(
2355         UINT32 index,
2356         IDWriteFontFamily1 **family) = 0;
2357 
2358 };
2359 #ifdef __CRT_UUID_DECL
2360 __CRT_UUID_DECL(IDWriteFontCollection1, 0x53585141, 0xd9f8, 0x4095, 0x83,0x21, 0xd7,0x3c,0xf6,0xbd,0x11,0x6c)
2361 #endif
2362 #else
2363 typedef struct IDWriteFontCollection1Vtbl {
2364     BEGIN_INTERFACE
2365 
2366     /*** IUnknown methods ***/
2367     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2368         IDWriteFontCollection1 *This,
2369         REFIID riid,
2370         void **ppvObject);
2371 
2372     ULONG (STDMETHODCALLTYPE *AddRef)(
2373         IDWriteFontCollection1 *This);
2374 
2375     ULONG (STDMETHODCALLTYPE *Release)(
2376         IDWriteFontCollection1 *This);
2377 
2378     /*** IDWriteFontCollection methods ***/
2379     UINT32 (STDMETHODCALLTYPE *GetFontFamilyCount)(
2380         IDWriteFontCollection1 *This);
2381 
2382     HRESULT (STDMETHODCALLTYPE *GetFontFamily)(
2383         IDWriteFontCollection1 *This,
2384         UINT32 index,
2385         IDWriteFontFamily **family);
2386 
2387     HRESULT (STDMETHODCALLTYPE *FindFamilyName)(
2388         IDWriteFontCollection1 *This,
2389         const WCHAR *name,
2390         UINT32 *index,
2391         WINBOOL *exists);
2392 
2393     HRESULT (STDMETHODCALLTYPE *GetFontFromFontFace)(
2394         IDWriteFontCollection1 *This,
2395         IDWriteFontFace *face,
2396         IDWriteFont **font);
2397 
2398     /*** IDWriteFontCollection1 methods ***/
2399     HRESULT (STDMETHODCALLTYPE *GetFontSet)(
2400         IDWriteFontCollection1 *This,
2401         IDWriteFontSet **fontset);
2402 
2403     HRESULT (STDMETHODCALLTYPE *IDWriteFontCollection1_GetFontFamily)(
2404         IDWriteFontCollection1 *This,
2405         UINT32 index,
2406         IDWriteFontFamily1 **family);
2407 
2408     END_INTERFACE
2409 } IDWriteFontCollection1Vtbl;
2410 
2411 interface IDWriteFontCollection1 {
2412     CONST_VTBL IDWriteFontCollection1Vtbl* lpVtbl;
2413 };
2414 
2415 #ifdef COBJMACROS
2416 #ifndef WIDL_C_INLINE_WRAPPERS
2417 /*** IUnknown methods ***/
2418 #define IDWriteFontCollection1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2419 #define IDWriteFontCollection1_AddRef(This) (This)->lpVtbl->AddRef(This)
2420 #define IDWriteFontCollection1_Release(This) (This)->lpVtbl->Release(This)
2421 /*** IDWriteFontCollection methods ***/
2422 #define IDWriteFontCollection1_GetFontFamilyCount(This) (This)->lpVtbl->GetFontFamilyCount(This)
2423 #define IDWriteFontCollection1_FindFamilyName(This,name,index,exists) (This)->lpVtbl->FindFamilyName(This,name,index,exists)
2424 #define IDWriteFontCollection1_GetFontFromFontFace(This,face,font) (This)->lpVtbl->GetFontFromFontFace(This,face,font)
2425 /*** IDWriteFontCollection1 methods ***/
2426 #define IDWriteFontCollection1_GetFontSet(This,fontset) (This)->lpVtbl->GetFontSet(This,fontset)
2427 #define IDWriteFontCollection1_GetFontFamily(This,index,family) (This)->lpVtbl->IDWriteFontCollection1_GetFontFamily(This,index,family)
2428 #else
2429 /*** IUnknown methods ***/
2430 static FORCEINLINE HRESULT IDWriteFontCollection1_QueryInterface(IDWriteFontCollection1* This,REFIID riid,void **ppvObject) {
2431     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2432 }
2433 static FORCEINLINE ULONG IDWriteFontCollection1_AddRef(IDWriteFontCollection1* This) {
2434     return This->lpVtbl->AddRef(This);
2435 }
2436 static FORCEINLINE ULONG IDWriteFontCollection1_Release(IDWriteFontCollection1* This) {
2437     return This->lpVtbl->Release(This);
2438 }
2439 /*** IDWriteFontCollection methods ***/
2440 static FORCEINLINE UINT32 IDWriteFontCollection1_GetFontFamilyCount(IDWriteFontCollection1* This) {
2441     return This->lpVtbl->GetFontFamilyCount(This);
2442 }
2443 static FORCEINLINE HRESULT IDWriteFontCollection1_FindFamilyName(IDWriteFontCollection1* This,const WCHAR *name,UINT32 *index,WINBOOL *exists) {
2444     return This->lpVtbl->FindFamilyName(This,name,index,exists);
2445 }
2446 static FORCEINLINE HRESULT IDWriteFontCollection1_GetFontFromFontFace(IDWriteFontCollection1* This,IDWriteFontFace *face,IDWriteFont **font) {
2447     return This->lpVtbl->GetFontFromFontFace(This,face,font);
2448 }
2449 /*** IDWriteFontCollection1 methods ***/
2450 static FORCEINLINE HRESULT IDWriteFontCollection1_GetFontSet(IDWriteFontCollection1* This,IDWriteFontSet **fontset) {
2451     return This->lpVtbl->GetFontSet(This,fontset);
2452 }
2453 static FORCEINLINE HRESULT IDWriteFontCollection1_GetFontFamily(IDWriteFontCollection1* This,UINT32 index,IDWriteFontFamily1 **family) {
2454     return This->lpVtbl->IDWriteFontCollection1_GetFontFamily(This,index,family);
2455 }
2456 #endif
2457 #endif
2458 
2459 #endif
2460 
2461 
2462 #endif  /* __IDWriteFontCollection1_INTERFACE_DEFINED__ */
2463 
2464 /*****************************************************************************
2465  * IDWriteFontCollection2 interface
2466  */
2467 #ifndef __IDWriteFontCollection2_INTERFACE_DEFINED__
2468 #define __IDWriteFontCollection2_INTERFACE_DEFINED__
2469 
2470 DEFINE_GUID(IID_IDWriteFontCollection2, 0x514039c6, 0x4617, 0x4064, 0xbf,0x8b, 0x92,0xea,0x83,0xe5,0x06,0xe0);
2471 #if defined(__cplusplus) && !defined(CINTERFACE)
2472 MIDL_INTERFACE("514039c6-4617-4064-bf8b-92ea83e506e0")
2473 IDWriteFontCollection2 : public IDWriteFontCollection1
2474 {
2475     virtual HRESULT STDMETHODCALLTYPE GetFontFamily(
2476         UINT32 index,
2477         IDWriteFontFamily2 **family) = 0;
2478 
2479     virtual HRESULT STDMETHODCALLTYPE GetMatchingFonts(
2480         const WCHAR *familyname,
2481         const DWRITE_FONT_AXIS_VALUE *axis_values,
2482         UINT32 num_values,
2483         IDWriteFontList2 **fontlist) = 0;
2484 
2485     virtual DWRITE_FONT_FAMILY_MODEL STDMETHODCALLTYPE GetFontFamilyModel(
2486         ) = 0;
2487 
2488     virtual HRESULT STDMETHODCALLTYPE GetFontSet(
2489         IDWriteFontSet1 **fontset) = 0;
2490 
2491 };
2492 #ifdef __CRT_UUID_DECL
2493 __CRT_UUID_DECL(IDWriteFontCollection2, 0x514039c6, 0x4617, 0x4064, 0xbf,0x8b, 0x92,0xea,0x83,0xe5,0x06,0xe0)
2494 #endif
2495 #else
2496 typedef struct IDWriteFontCollection2Vtbl {
2497     BEGIN_INTERFACE
2498 
2499     /*** IUnknown methods ***/
2500     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2501         IDWriteFontCollection2 *This,
2502         REFIID riid,
2503         void **ppvObject);
2504 
2505     ULONG (STDMETHODCALLTYPE *AddRef)(
2506         IDWriteFontCollection2 *This);
2507 
2508     ULONG (STDMETHODCALLTYPE *Release)(
2509         IDWriteFontCollection2 *This);
2510 
2511     /*** IDWriteFontCollection methods ***/
2512     UINT32 (STDMETHODCALLTYPE *GetFontFamilyCount)(
2513         IDWriteFontCollection2 *This);
2514 
2515     HRESULT (STDMETHODCALLTYPE *GetFontFamily)(
2516         IDWriteFontCollection2 *This,
2517         UINT32 index,
2518         IDWriteFontFamily **family);
2519 
2520     HRESULT (STDMETHODCALLTYPE *FindFamilyName)(
2521         IDWriteFontCollection2 *This,
2522         const WCHAR *name,
2523         UINT32 *index,
2524         WINBOOL *exists);
2525 
2526     HRESULT (STDMETHODCALLTYPE *GetFontFromFontFace)(
2527         IDWriteFontCollection2 *This,
2528         IDWriteFontFace *face,
2529         IDWriteFont **font);
2530 
2531     /*** IDWriteFontCollection1 methods ***/
2532     HRESULT (STDMETHODCALLTYPE *GetFontSet)(
2533         IDWriteFontCollection2 *This,
2534         IDWriteFontSet **fontset);
2535 
2536     HRESULT (STDMETHODCALLTYPE *IDWriteFontCollection1_GetFontFamily)(
2537         IDWriteFontCollection2 *This,
2538         UINT32 index,
2539         IDWriteFontFamily1 **family);
2540 
2541     /*** IDWriteFontCollection2 methods ***/
2542     HRESULT (STDMETHODCALLTYPE *IDWriteFontCollection2_GetFontFamily)(
2543         IDWriteFontCollection2 *This,
2544         UINT32 index,
2545         IDWriteFontFamily2 **family);
2546 
2547     HRESULT (STDMETHODCALLTYPE *GetMatchingFonts)(
2548         IDWriteFontCollection2 *This,
2549         const WCHAR *familyname,
2550         const DWRITE_FONT_AXIS_VALUE *axis_values,
2551         UINT32 num_values,
2552         IDWriteFontList2 **fontlist);
2553 
2554     DWRITE_FONT_FAMILY_MODEL (STDMETHODCALLTYPE *GetFontFamilyModel)(
2555         IDWriteFontCollection2 *This);
2556 
2557     HRESULT (STDMETHODCALLTYPE *IDWriteFontCollection2_GetFontSet)(
2558         IDWriteFontCollection2 *This,
2559         IDWriteFontSet1 **fontset);
2560 
2561     END_INTERFACE
2562 } IDWriteFontCollection2Vtbl;
2563 
2564 interface IDWriteFontCollection2 {
2565     CONST_VTBL IDWriteFontCollection2Vtbl* lpVtbl;
2566 };
2567 
2568 #ifdef COBJMACROS
2569 #ifndef WIDL_C_INLINE_WRAPPERS
2570 /*** IUnknown methods ***/
2571 #define IDWriteFontCollection2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2572 #define IDWriteFontCollection2_AddRef(This) (This)->lpVtbl->AddRef(This)
2573 #define IDWriteFontCollection2_Release(This) (This)->lpVtbl->Release(This)
2574 /*** IDWriteFontCollection methods ***/
2575 #define IDWriteFontCollection2_GetFontFamilyCount(This) (This)->lpVtbl->GetFontFamilyCount(This)
2576 #define IDWriteFontCollection2_FindFamilyName(This,name,index,exists) (This)->lpVtbl->FindFamilyName(This,name,index,exists)
2577 #define IDWriteFontCollection2_GetFontFromFontFace(This,face,font) (This)->lpVtbl->GetFontFromFontFace(This,face,font)
2578 /*** IDWriteFontCollection1 methods ***/
2579 /*** IDWriteFontCollection2 methods ***/
2580 #define IDWriteFontCollection2_GetFontFamily(This,index,family) (This)->lpVtbl->IDWriteFontCollection2_GetFontFamily(This,index,family)
2581 #define IDWriteFontCollection2_GetMatchingFonts(This,familyname,axis_values,num_values,fontlist) (This)->lpVtbl->GetMatchingFonts(This,familyname,axis_values,num_values,fontlist)
2582 #define IDWriteFontCollection2_GetFontFamilyModel(This) (This)->lpVtbl->GetFontFamilyModel(This)
2583 #define IDWriteFontCollection2_GetFontSet(This,fontset) (This)->lpVtbl->IDWriteFontCollection2_GetFontSet(This,fontset)
2584 #else
2585 /*** IUnknown methods ***/
2586 static FORCEINLINE HRESULT IDWriteFontCollection2_QueryInterface(IDWriteFontCollection2* This,REFIID riid,void **ppvObject) {
2587     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2588 }
2589 static FORCEINLINE ULONG IDWriteFontCollection2_AddRef(IDWriteFontCollection2* This) {
2590     return This->lpVtbl->AddRef(This);
2591 }
2592 static FORCEINLINE ULONG IDWriteFontCollection2_Release(IDWriteFontCollection2* This) {
2593     return This->lpVtbl->Release(This);
2594 }
2595 /*** IDWriteFontCollection methods ***/
2596 static FORCEINLINE UINT32 IDWriteFontCollection2_GetFontFamilyCount(IDWriteFontCollection2* This) {
2597     return This->lpVtbl->GetFontFamilyCount(This);
2598 }
2599 static FORCEINLINE HRESULT IDWriteFontCollection2_FindFamilyName(IDWriteFontCollection2* This,const WCHAR *name,UINT32 *index,WINBOOL *exists) {
2600     return This->lpVtbl->FindFamilyName(This,name,index,exists);
2601 }
2602 static FORCEINLINE HRESULT IDWriteFontCollection2_GetFontFromFontFace(IDWriteFontCollection2* This,IDWriteFontFace *face,IDWriteFont **font) {
2603     return This->lpVtbl->GetFontFromFontFace(This,face,font);
2604 }
2605 /*** IDWriteFontCollection1 methods ***/
2606 /*** IDWriteFontCollection2 methods ***/
2607 static FORCEINLINE HRESULT IDWriteFontCollection2_GetFontFamily(IDWriteFontCollection2* This,UINT32 index,IDWriteFontFamily2 **family) {
2608     return This->lpVtbl->IDWriteFontCollection2_GetFontFamily(This,index,family);
2609 }
2610 static FORCEINLINE HRESULT IDWriteFontCollection2_GetMatchingFonts(IDWriteFontCollection2* This,const WCHAR *familyname,const DWRITE_FONT_AXIS_VALUE *axis_values,UINT32 num_values,IDWriteFontList2 **fontlist) {
2611     return This->lpVtbl->GetMatchingFonts(This,familyname,axis_values,num_values,fontlist);
2612 }
2613 static FORCEINLINE DWRITE_FONT_FAMILY_MODEL IDWriteFontCollection2_GetFontFamilyModel(IDWriteFontCollection2* This) {
2614     return This->lpVtbl->GetFontFamilyModel(This);
2615 }
2616 static FORCEINLINE HRESULT IDWriteFontCollection2_GetFontSet(IDWriteFontCollection2* This,IDWriteFontSet1 **fontset) {
2617     return This->lpVtbl->IDWriteFontCollection2_GetFontSet(This,fontset);
2618 }
2619 #endif
2620 #endif
2621 
2622 #endif
2623 
2624 
2625 #endif  /* __IDWriteFontCollection2_INTERFACE_DEFINED__ */
2626 
2627 /*****************************************************************************
2628  * IDWriteFontCollection3 interface
2629  */
2630 #ifndef __IDWriteFontCollection3_INTERFACE_DEFINED__
2631 #define __IDWriteFontCollection3_INTERFACE_DEFINED__
2632 
2633 DEFINE_GUID(IID_IDWriteFontCollection3, 0xa4d055a6, 0xf9e3, 0x4e25, 0x93,0xb7, 0x9e,0x30,0x9f,0x3a,0xf8,0xe9);
2634 #if defined(__cplusplus) && !defined(CINTERFACE)
2635 MIDL_INTERFACE("a4d055a6-f9e3-4e25-93b7-9e309f3af8e9")
2636 IDWriteFontCollection3 : public IDWriteFontCollection2
2637 {
2638     virtual HANDLE STDMETHODCALLTYPE GetExpirationEvent(
2639         ) = 0;
2640 
2641 };
2642 #ifdef __CRT_UUID_DECL
2643 __CRT_UUID_DECL(IDWriteFontCollection3, 0xa4d055a6, 0xf9e3, 0x4e25, 0x93,0xb7, 0x9e,0x30,0x9f,0x3a,0xf8,0xe9)
2644 #endif
2645 #else
2646 typedef struct IDWriteFontCollection3Vtbl {
2647     BEGIN_INTERFACE
2648 
2649     /*** IUnknown methods ***/
2650     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2651         IDWriteFontCollection3 *This,
2652         REFIID riid,
2653         void **ppvObject);
2654 
2655     ULONG (STDMETHODCALLTYPE *AddRef)(
2656         IDWriteFontCollection3 *This);
2657 
2658     ULONG (STDMETHODCALLTYPE *Release)(
2659         IDWriteFontCollection3 *This);
2660 
2661     /*** IDWriteFontCollection methods ***/
2662     UINT32 (STDMETHODCALLTYPE *GetFontFamilyCount)(
2663         IDWriteFontCollection3 *This);
2664 
2665     HRESULT (STDMETHODCALLTYPE *GetFontFamily)(
2666         IDWriteFontCollection3 *This,
2667         UINT32 index,
2668         IDWriteFontFamily **family);
2669 
2670     HRESULT (STDMETHODCALLTYPE *FindFamilyName)(
2671         IDWriteFontCollection3 *This,
2672         const WCHAR *name,
2673         UINT32 *index,
2674         WINBOOL *exists);
2675 
2676     HRESULT (STDMETHODCALLTYPE *GetFontFromFontFace)(
2677         IDWriteFontCollection3 *This,
2678         IDWriteFontFace *face,
2679         IDWriteFont **font);
2680 
2681     /*** IDWriteFontCollection1 methods ***/
2682     HRESULT (STDMETHODCALLTYPE *GetFontSet)(
2683         IDWriteFontCollection3 *This,
2684         IDWriteFontSet **fontset);
2685 
2686     HRESULT (STDMETHODCALLTYPE *IDWriteFontCollection1_GetFontFamily)(
2687         IDWriteFontCollection3 *This,
2688         UINT32 index,
2689         IDWriteFontFamily1 **family);
2690 
2691     /*** IDWriteFontCollection2 methods ***/
2692     HRESULT (STDMETHODCALLTYPE *IDWriteFontCollection2_GetFontFamily)(
2693         IDWriteFontCollection3 *This,
2694         UINT32 index,
2695         IDWriteFontFamily2 **family);
2696 
2697     HRESULT (STDMETHODCALLTYPE *GetMatchingFonts)(
2698         IDWriteFontCollection3 *This,
2699         const WCHAR *familyname,
2700         const DWRITE_FONT_AXIS_VALUE *axis_values,
2701         UINT32 num_values,
2702         IDWriteFontList2 **fontlist);
2703 
2704     DWRITE_FONT_FAMILY_MODEL (STDMETHODCALLTYPE *GetFontFamilyModel)(
2705         IDWriteFontCollection3 *This);
2706 
2707     HRESULT (STDMETHODCALLTYPE *IDWriteFontCollection2_GetFontSet)(
2708         IDWriteFontCollection3 *This,
2709         IDWriteFontSet1 **fontset);
2710 
2711     /*** IDWriteFontCollection3 methods ***/
2712     HANDLE (STDMETHODCALLTYPE *GetExpirationEvent)(
2713         IDWriteFontCollection3 *This);
2714 
2715     END_INTERFACE
2716 } IDWriteFontCollection3Vtbl;
2717 
2718 interface IDWriteFontCollection3 {
2719     CONST_VTBL IDWriteFontCollection3Vtbl* lpVtbl;
2720 };
2721 
2722 #ifdef COBJMACROS
2723 #ifndef WIDL_C_INLINE_WRAPPERS
2724 /*** IUnknown methods ***/
2725 #define IDWriteFontCollection3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2726 #define IDWriteFontCollection3_AddRef(This) (This)->lpVtbl->AddRef(This)
2727 #define IDWriteFontCollection3_Release(This) (This)->lpVtbl->Release(This)
2728 /*** IDWriteFontCollection methods ***/
2729 #define IDWriteFontCollection3_GetFontFamilyCount(This) (This)->lpVtbl->GetFontFamilyCount(This)
2730 #define IDWriteFontCollection3_FindFamilyName(This,name,index,exists) (This)->lpVtbl->FindFamilyName(This,name,index,exists)
2731 #define IDWriteFontCollection3_GetFontFromFontFace(This,face,font) (This)->lpVtbl->GetFontFromFontFace(This,face,font)
2732 /*** IDWriteFontCollection1 methods ***/
2733 /*** IDWriteFontCollection2 methods ***/
2734 #define IDWriteFontCollection3_GetFontFamily(This,index,family) (This)->lpVtbl->IDWriteFontCollection2_GetFontFamily(This,index,family)
2735 #define IDWriteFontCollection3_GetMatchingFonts(This,familyname,axis_values,num_values,fontlist) (This)->lpVtbl->GetMatchingFonts(This,familyname,axis_values,num_values,fontlist)
2736 #define IDWriteFontCollection3_GetFontFamilyModel(This) (This)->lpVtbl->GetFontFamilyModel(This)
2737 #define IDWriteFontCollection3_GetFontSet(This,fontset) (This)->lpVtbl->IDWriteFontCollection2_GetFontSet(This,fontset)
2738 /*** IDWriteFontCollection3 methods ***/
2739 #define IDWriteFontCollection3_GetExpirationEvent(This) (This)->lpVtbl->GetExpirationEvent(This)
2740 #else
2741 /*** IUnknown methods ***/
2742 static FORCEINLINE HRESULT IDWriteFontCollection3_QueryInterface(IDWriteFontCollection3* This,REFIID riid,void **ppvObject) {
2743     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2744 }
2745 static FORCEINLINE ULONG IDWriteFontCollection3_AddRef(IDWriteFontCollection3* This) {
2746     return This->lpVtbl->AddRef(This);
2747 }
2748 static FORCEINLINE ULONG IDWriteFontCollection3_Release(IDWriteFontCollection3* This) {
2749     return This->lpVtbl->Release(This);
2750 }
2751 /*** IDWriteFontCollection methods ***/
2752 static FORCEINLINE UINT32 IDWriteFontCollection3_GetFontFamilyCount(IDWriteFontCollection3* This) {
2753     return This->lpVtbl->GetFontFamilyCount(This);
2754 }
2755 static FORCEINLINE HRESULT IDWriteFontCollection3_FindFamilyName(IDWriteFontCollection3* This,const WCHAR *name,UINT32 *index,WINBOOL *exists) {
2756     return This->lpVtbl->FindFamilyName(This,name,index,exists);
2757 }
2758 static FORCEINLINE HRESULT IDWriteFontCollection3_GetFontFromFontFace(IDWriteFontCollection3* This,IDWriteFontFace *face,IDWriteFont **font) {
2759     return This->lpVtbl->GetFontFromFontFace(This,face,font);
2760 }
2761 /*** IDWriteFontCollection1 methods ***/
2762 /*** IDWriteFontCollection2 methods ***/
2763 static FORCEINLINE HRESULT IDWriteFontCollection3_GetFontFamily(IDWriteFontCollection3* This,UINT32 index,IDWriteFontFamily2 **family) {
2764     return This->lpVtbl->IDWriteFontCollection2_GetFontFamily(This,index,family);
2765 }
2766 static FORCEINLINE HRESULT IDWriteFontCollection3_GetMatchingFonts(IDWriteFontCollection3* This,const WCHAR *familyname,const DWRITE_FONT_AXIS_VALUE *axis_values,UINT32 num_values,IDWriteFontList2 **fontlist) {
2767     return This->lpVtbl->GetMatchingFonts(This,familyname,axis_values,num_values,fontlist);
2768 }
2769 static FORCEINLINE DWRITE_FONT_FAMILY_MODEL IDWriteFontCollection3_GetFontFamilyModel(IDWriteFontCollection3* This) {
2770     return This->lpVtbl->GetFontFamilyModel(This);
2771 }
2772 static FORCEINLINE HRESULT IDWriteFontCollection3_GetFontSet(IDWriteFontCollection3* This,IDWriteFontSet1 **fontset) {
2773     return This->lpVtbl->IDWriteFontCollection2_GetFontSet(This,fontset);
2774 }
2775 /*** IDWriteFontCollection3 methods ***/
2776 static FORCEINLINE HANDLE IDWriteFontCollection3_GetExpirationEvent(IDWriteFontCollection3* This) {
2777     return This->lpVtbl->GetExpirationEvent(This);
2778 }
2779 #endif
2780 #endif
2781 
2782 #endif
2783 
2784 
2785 #endif  /* __IDWriteFontCollection3_INTERFACE_DEFINED__ */
2786 
2787 /*****************************************************************************
2788  * IDWriteFontFaceReference interface
2789  */
2790 #ifndef __IDWriteFontFaceReference_INTERFACE_DEFINED__
2791 #define __IDWriteFontFaceReference_INTERFACE_DEFINED__
2792 
2793 DEFINE_GUID(IID_IDWriteFontFaceReference, 0x5e7fa7ca, 0xdde3, 0x424c, 0x89,0xf0, 0x9f,0xcd,0x6f,0xed,0x58,0xcd);
2794 #if defined(__cplusplus) && !defined(CINTERFACE)
2795 MIDL_INTERFACE("5e7fa7ca-dde3-424c-89f0-9fcd6fed58cd")
2796 IDWriteFontFaceReference : public IUnknown
2797 {
2798     virtual HRESULT STDMETHODCALLTYPE CreateFontFace(
2799         IDWriteFontFace3 **fontface) = 0;
2800 
2801     virtual HRESULT STDMETHODCALLTYPE CreateFontFaceWithSimulations(
2802         DWRITE_FONT_SIMULATIONS simulations,
2803         IDWriteFontFace3 **fontface) = 0;
2804 
2805     virtual WINBOOL STDMETHODCALLTYPE Equals(
2806         IDWriteFontFaceReference *reference) = 0;
2807 
2808     virtual UINT32 STDMETHODCALLTYPE GetFontFaceIndex(
2809         ) = 0;
2810 
2811     virtual DWRITE_FONT_SIMULATIONS STDMETHODCALLTYPE GetSimulations(
2812         ) = 0;
2813 
2814     virtual HRESULT STDMETHODCALLTYPE GetFontFile(
2815         IDWriteFontFile **fontfile) = 0;
2816 
2817     virtual UINT64 STDMETHODCALLTYPE GetLocalFileSize(
2818         ) = 0;
2819 
2820     virtual UINT64 STDMETHODCALLTYPE GetFileSize(
2821         ) = 0;
2822 
2823     virtual HRESULT STDMETHODCALLTYPE GetFileTime(
2824         FILETIME *writetime) = 0;
2825 
2826     virtual DWRITE_LOCALITY STDMETHODCALLTYPE GetLocality(
2827         ) = 0;
2828 
2829     virtual HRESULT STDMETHODCALLTYPE EnqueueFontDownloadRequest(
2830         ) = 0;
2831 
2832     virtual HRESULT STDMETHODCALLTYPE EnqueueCharacterDownloadRequest(
2833         const WCHAR *chars,
2834         UINT32 count) = 0;
2835 
2836     virtual HRESULT STDMETHODCALLTYPE EnqueueGlyphDownloadRequest(
2837         const UINT16 *glyphs,
2838         UINT32 count) = 0;
2839 
2840     virtual HRESULT STDMETHODCALLTYPE EnqueueFileFragmentDownloadRequest(
2841         UINT64 offset,
2842         UINT64 size) = 0;
2843 
2844 };
2845 #ifdef __CRT_UUID_DECL
2846 __CRT_UUID_DECL(IDWriteFontFaceReference, 0x5e7fa7ca, 0xdde3, 0x424c, 0x89,0xf0, 0x9f,0xcd,0x6f,0xed,0x58,0xcd)
2847 #endif
2848 #else
2849 typedef struct IDWriteFontFaceReferenceVtbl {
2850     BEGIN_INTERFACE
2851 
2852     /*** IUnknown methods ***/
2853     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2854         IDWriteFontFaceReference *This,
2855         REFIID riid,
2856         void **ppvObject);
2857 
2858     ULONG (STDMETHODCALLTYPE *AddRef)(
2859         IDWriteFontFaceReference *This);
2860 
2861     ULONG (STDMETHODCALLTYPE *Release)(
2862         IDWriteFontFaceReference *This);
2863 
2864     /*** IDWriteFontFaceReference methods ***/
2865     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
2866         IDWriteFontFaceReference *This,
2867         IDWriteFontFace3 **fontface);
2868 
2869     HRESULT (STDMETHODCALLTYPE *CreateFontFaceWithSimulations)(
2870         IDWriteFontFaceReference *This,
2871         DWRITE_FONT_SIMULATIONS simulations,
2872         IDWriteFontFace3 **fontface);
2873 
2874     WINBOOL (STDMETHODCALLTYPE *Equals)(
2875         IDWriteFontFaceReference *This,
2876         IDWriteFontFaceReference *reference);
2877 
2878     UINT32 (STDMETHODCALLTYPE *GetFontFaceIndex)(
2879         IDWriteFontFaceReference *This);
2880 
2881     DWRITE_FONT_SIMULATIONS (STDMETHODCALLTYPE *GetSimulations)(
2882         IDWriteFontFaceReference *This);
2883 
2884     HRESULT (STDMETHODCALLTYPE *GetFontFile)(
2885         IDWriteFontFaceReference *This,
2886         IDWriteFontFile **fontfile);
2887 
2888     UINT64 (STDMETHODCALLTYPE *GetLocalFileSize)(
2889         IDWriteFontFaceReference *This);
2890 
2891     UINT64 (STDMETHODCALLTYPE *GetFileSize)(
2892         IDWriteFontFaceReference *This);
2893 
2894     HRESULT (STDMETHODCALLTYPE *GetFileTime)(
2895         IDWriteFontFaceReference *This,
2896         FILETIME *writetime);
2897 
2898     DWRITE_LOCALITY (STDMETHODCALLTYPE *GetLocality)(
2899         IDWriteFontFaceReference *This);
2900 
2901     HRESULT (STDMETHODCALLTYPE *EnqueueFontDownloadRequest)(
2902         IDWriteFontFaceReference *This);
2903 
2904     HRESULT (STDMETHODCALLTYPE *EnqueueCharacterDownloadRequest)(
2905         IDWriteFontFaceReference *This,
2906         const WCHAR *chars,
2907         UINT32 count);
2908 
2909     HRESULT (STDMETHODCALLTYPE *EnqueueGlyphDownloadRequest)(
2910         IDWriteFontFaceReference *This,
2911         const UINT16 *glyphs,
2912         UINT32 count);
2913 
2914     HRESULT (STDMETHODCALLTYPE *EnqueueFileFragmentDownloadRequest)(
2915         IDWriteFontFaceReference *This,
2916         UINT64 offset,
2917         UINT64 size);
2918 
2919     END_INTERFACE
2920 } IDWriteFontFaceReferenceVtbl;
2921 
2922 interface IDWriteFontFaceReference {
2923     CONST_VTBL IDWriteFontFaceReferenceVtbl* lpVtbl;
2924 };
2925 
2926 #ifdef COBJMACROS
2927 #ifndef WIDL_C_INLINE_WRAPPERS
2928 /*** IUnknown methods ***/
2929 #define IDWriteFontFaceReference_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2930 #define IDWriteFontFaceReference_AddRef(This) (This)->lpVtbl->AddRef(This)
2931 #define IDWriteFontFaceReference_Release(This) (This)->lpVtbl->Release(This)
2932 /*** IDWriteFontFaceReference methods ***/
2933 #define IDWriteFontFaceReference_CreateFontFace(This,fontface) (This)->lpVtbl->CreateFontFace(This,fontface)
2934 #define IDWriteFontFaceReference_CreateFontFaceWithSimulations(This,simulations,fontface) (This)->lpVtbl->CreateFontFaceWithSimulations(This,simulations,fontface)
2935 #define IDWriteFontFaceReference_Equals(This,reference) (This)->lpVtbl->Equals(This,reference)
2936 #define IDWriteFontFaceReference_GetFontFaceIndex(This) (This)->lpVtbl->GetFontFaceIndex(This)
2937 #define IDWriteFontFaceReference_GetSimulations(This) (This)->lpVtbl->GetSimulations(This)
2938 #define IDWriteFontFaceReference_GetFontFile(This,fontfile) (This)->lpVtbl->GetFontFile(This,fontfile)
2939 #define IDWriteFontFaceReference_GetLocalFileSize(This) (This)->lpVtbl->GetLocalFileSize(This)
2940 #define IDWriteFontFaceReference_GetFileSize(This) (This)->lpVtbl->GetFileSize(This)
2941 #define IDWriteFontFaceReference_GetFileTime(This,writetime) (This)->lpVtbl->GetFileTime(This,writetime)
2942 #define IDWriteFontFaceReference_GetLocality(This) (This)->lpVtbl->GetLocality(This)
2943 #define IDWriteFontFaceReference_EnqueueFontDownloadRequest(This) (This)->lpVtbl->EnqueueFontDownloadRequest(This)
2944 #define IDWriteFontFaceReference_EnqueueCharacterDownloadRequest(This,chars,count) (This)->lpVtbl->EnqueueCharacterDownloadRequest(This,chars,count)
2945 #define IDWriteFontFaceReference_EnqueueGlyphDownloadRequest(This,glyphs,count) (This)->lpVtbl->EnqueueGlyphDownloadRequest(This,glyphs,count)
2946 #define IDWriteFontFaceReference_EnqueueFileFragmentDownloadRequest(This,offset,size) (This)->lpVtbl->EnqueueFileFragmentDownloadRequest(This,offset,size)
2947 #else
2948 /*** IUnknown methods ***/
2949 static FORCEINLINE HRESULT IDWriteFontFaceReference_QueryInterface(IDWriteFontFaceReference* This,REFIID riid,void **ppvObject) {
2950     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2951 }
2952 static FORCEINLINE ULONG IDWriteFontFaceReference_AddRef(IDWriteFontFaceReference* This) {
2953     return This->lpVtbl->AddRef(This);
2954 }
2955 static FORCEINLINE ULONG IDWriteFontFaceReference_Release(IDWriteFontFaceReference* This) {
2956     return This->lpVtbl->Release(This);
2957 }
2958 /*** IDWriteFontFaceReference methods ***/
2959 static FORCEINLINE HRESULT IDWriteFontFaceReference_CreateFontFace(IDWriteFontFaceReference* This,IDWriteFontFace3 **fontface) {
2960     return This->lpVtbl->CreateFontFace(This,fontface);
2961 }
2962 static FORCEINLINE HRESULT IDWriteFontFaceReference_CreateFontFaceWithSimulations(IDWriteFontFaceReference* This,DWRITE_FONT_SIMULATIONS simulations,IDWriteFontFace3 **fontface) {
2963     return This->lpVtbl->CreateFontFaceWithSimulations(This,simulations,fontface);
2964 }
2965 static FORCEINLINE WINBOOL IDWriteFontFaceReference_Equals(IDWriteFontFaceReference* This,IDWriteFontFaceReference *reference) {
2966     return This->lpVtbl->Equals(This,reference);
2967 }
2968 static FORCEINLINE UINT32 IDWriteFontFaceReference_GetFontFaceIndex(IDWriteFontFaceReference* This) {
2969     return This->lpVtbl->GetFontFaceIndex(This);
2970 }
2971 static FORCEINLINE DWRITE_FONT_SIMULATIONS IDWriteFontFaceReference_GetSimulations(IDWriteFontFaceReference* This) {
2972     return This->lpVtbl->GetSimulations(This);
2973 }
2974 static FORCEINLINE HRESULT IDWriteFontFaceReference_GetFontFile(IDWriteFontFaceReference* This,IDWriteFontFile **fontfile) {
2975     return This->lpVtbl->GetFontFile(This,fontfile);
2976 }
2977 static FORCEINLINE UINT64 IDWriteFontFaceReference_GetLocalFileSize(IDWriteFontFaceReference* This) {
2978     return This->lpVtbl->GetLocalFileSize(This);
2979 }
2980 static FORCEINLINE UINT64 IDWriteFontFaceReference_GetFileSize(IDWriteFontFaceReference* This) {
2981     return This->lpVtbl->GetFileSize(This);
2982 }
2983 static FORCEINLINE HRESULT IDWriteFontFaceReference_GetFileTime(IDWriteFontFaceReference* This,FILETIME *writetime) {
2984     return This->lpVtbl->GetFileTime(This,writetime);
2985 }
2986 static FORCEINLINE DWRITE_LOCALITY IDWriteFontFaceReference_GetLocality(IDWriteFontFaceReference* This) {
2987     return This->lpVtbl->GetLocality(This);
2988 }
2989 static FORCEINLINE HRESULT IDWriteFontFaceReference_EnqueueFontDownloadRequest(IDWriteFontFaceReference* This) {
2990     return This->lpVtbl->EnqueueFontDownloadRequest(This);
2991 }
2992 static FORCEINLINE HRESULT IDWriteFontFaceReference_EnqueueCharacterDownloadRequest(IDWriteFontFaceReference* This,const WCHAR *chars,UINT32 count) {
2993     return This->lpVtbl->EnqueueCharacterDownloadRequest(This,chars,count);
2994 }
2995 static FORCEINLINE HRESULT IDWriteFontFaceReference_EnqueueGlyphDownloadRequest(IDWriteFontFaceReference* This,const UINT16 *glyphs,UINT32 count) {
2996     return This->lpVtbl->EnqueueGlyphDownloadRequest(This,glyphs,count);
2997 }
2998 static FORCEINLINE HRESULT IDWriteFontFaceReference_EnqueueFileFragmentDownloadRequest(IDWriteFontFaceReference* This,UINT64 offset,UINT64 size) {
2999     return This->lpVtbl->EnqueueFileFragmentDownloadRequest(This,offset,size);
3000 }
3001 #endif
3002 #endif
3003 
3004 #endif
3005 
3006 
3007 #endif  /* __IDWriteFontFaceReference_INTERFACE_DEFINED__ */
3008 
3009 /*****************************************************************************
3010  * IDWriteFontFaceReference1 interface
3011  */
3012 #ifndef __IDWriteFontFaceReference1_INTERFACE_DEFINED__
3013 #define __IDWriteFontFaceReference1_INTERFACE_DEFINED__
3014 
3015 DEFINE_GUID(IID_IDWriteFontFaceReference1, 0xc081fe77, 0x2fd1, 0x41ac, 0xa5,0xa3, 0x34,0x98,0x3c,0x4b,0xa6,0x1a);
3016 #if defined(__cplusplus) && !defined(CINTERFACE)
3017 MIDL_INTERFACE("c081fe77-2fd1-41ac-a5a3-34983c4ba61a")
3018 IDWriteFontFaceReference1 : public IDWriteFontFaceReference
3019 {
3020     virtual HRESULT STDMETHODCALLTYPE CreateFontFace(
3021         IDWriteFontFace5 **fontface) = 0;
3022 
3023     virtual UINT32 STDMETHODCALLTYPE GetFontAxisValueCount(
3024         ) = 0;
3025 
3026     virtual HRESULT STDMETHODCALLTYPE GetFontAxisValues(
3027         DWRITE_FONT_AXIS_VALUE *values,
3028         UINT32 num_values) = 0;
3029 
3030 };
3031 #ifdef __CRT_UUID_DECL
3032 __CRT_UUID_DECL(IDWriteFontFaceReference1, 0xc081fe77, 0x2fd1, 0x41ac, 0xa5,0xa3, 0x34,0x98,0x3c,0x4b,0xa6,0x1a)
3033 #endif
3034 #else
3035 typedef struct IDWriteFontFaceReference1Vtbl {
3036     BEGIN_INTERFACE
3037 
3038     /*** IUnknown methods ***/
3039     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3040         IDWriteFontFaceReference1 *This,
3041         REFIID riid,
3042         void **ppvObject);
3043 
3044     ULONG (STDMETHODCALLTYPE *AddRef)(
3045         IDWriteFontFaceReference1 *This);
3046 
3047     ULONG (STDMETHODCALLTYPE *Release)(
3048         IDWriteFontFaceReference1 *This);
3049 
3050     /*** IDWriteFontFaceReference methods ***/
3051     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
3052         IDWriteFontFaceReference1 *This,
3053         IDWriteFontFace3 **fontface);
3054 
3055     HRESULT (STDMETHODCALLTYPE *CreateFontFaceWithSimulations)(
3056         IDWriteFontFaceReference1 *This,
3057         DWRITE_FONT_SIMULATIONS simulations,
3058         IDWriteFontFace3 **fontface);
3059 
3060     WINBOOL (STDMETHODCALLTYPE *Equals)(
3061         IDWriteFontFaceReference1 *This,
3062         IDWriteFontFaceReference *reference);
3063 
3064     UINT32 (STDMETHODCALLTYPE *GetFontFaceIndex)(
3065         IDWriteFontFaceReference1 *This);
3066 
3067     DWRITE_FONT_SIMULATIONS (STDMETHODCALLTYPE *GetSimulations)(
3068         IDWriteFontFaceReference1 *This);
3069 
3070     HRESULT (STDMETHODCALLTYPE *GetFontFile)(
3071         IDWriteFontFaceReference1 *This,
3072         IDWriteFontFile **fontfile);
3073 
3074     UINT64 (STDMETHODCALLTYPE *GetLocalFileSize)(
3075         IDWriteFontFaceReference1 *This);
3076 
3077     UINT64 (STDMETHODCALLTYPE *GetFileSize)(
3078         IDWriteFontFaceReference1 *This);
3079 
3080     HRESULT (STDMETHODCALLTYPE *GetFileTime)(
3081         IDWriteFontFaceReference1 *This,
3082         FILETIME *writetime);
3083 
3084     DWRITE_LOCALITY (STDMETHODCALLTYPE *GetLocality)(
3085         IDWriteFontFaceReference1 *This);
3086 
3087     HRESULT (STDMETHODCALLTYPE *EnqueueFontDownloadRequest)(
3088         IDWriteFontFaceReference1 *This);
3089 
3090     HRESULT (STDMETHODCALLTYPE *EnqueueCharacterDownloadRequest)(
3091         IDWriteFontFaceReference1 *This,
3092         const WCHAR *chars,
3093         UINT32 count);
3094 
3095     HRESULT (STDMETHODCALLTYPE *EnqueueGlyphDownloadRequest)(
3096         IDWriteFontFaceReference1 *This,
3097         const UINT16 *glyphs,
3098         UINT32 count);
3099 
3100     HRESULT (STDMETHODCALLTYPE *EnqueueFileFragmentDownloadRequest)(
3101         IDWriteFontFaceReference1 *This,
3102         UINT64 offset,
3103         UINT64 size);
3104 
3105     /*** IDWriteFontFaceReference1 methods ***/
3106     HRESULT (STDMETHODCALLTYPE *IDWriteFontFaceReference1_CreateFontFace)(
3107         IDWriteFontFaceReference1 *This,
3108         IDWriteFontFace5 **fontface);
3109 
3110     UINT32 (STDMETHODCALLTYPE *GetFontAxisValueCount)(
3111         IDWriteFontFaceReference1 *This);
3112 
3113     HRESULT (STDMETHODCALLTYPE *GetFontAxisValues)(
3114         IDWriteFontFaceReference1 *This,
3115         DWRITE_FONT_AXIS_VALUE *values,
3116         UINT32 num_values);
3117 
3118     END_INTERFACE
3119 } IDWriteFontFaceReference1Vtbl;
3120 
3121 interface IDWriteFontFaceReference1 {
3122     CONST_VTBL IDWriteFontFaceReference1Vtbl* lpVtbl;
3123 };
3124 
3125 #ifdef COBJMACROS
3126 #ifndef WIDL_C_INLINE_WRAPPERS
3127 /*** IUnknown methods ***/
3128 #define IDWriteFontFaceReference1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3129 #define IDWriteFontFaceReference1_AddRef(This) (This)->lpVtbl->AddRef(This)
3130 #define IDWriteFontFaceReference1_Release(This) (This)->lpVtbl->Release(This)
3131 /*** IDWriteFontFaceReference methods ***/
3132 #define IDWriteFontFaceReference1_CreateFontFaceWithSimulations(This,simulations,fontface) (This)->lpVtbl->CreateFontFaceWithSimulations(This,simulations,fontface)
3133 #define IDWriteFontFaceReference1_Equals(This,reference) (This)->lpVtbl->Equals(This,reference)
3134 #define IDWriteFontFaceReference1_GetFontFaceIndex(This) (This)->lpVtbl->GetFontFaceIndex(This)
3135 #define IDWriteFontFaceReference1_GetSimulations(This) (This)->lpVtbl->GetSimulations(This)
3136 #define IDWriteFontFaceReference1_GetFontFile(This,fontfile) (This)->lpVtbl->GetFontFile(This,fontfile)
3137 #define IDWriteFontFaceReference1_GetLocalFileSize(This) (This)->lpVtbl->GetLocalFileSize(This)
3138 #define IDWriteFontFaceReference1_GetFileSize(This) (This)->lpVtbl->GetFileSize(This)
3139 #define IDWriteFontFaceReference1_GetFileTime(This,writetime) (This)->lpVtbl->GetFileTime(This,writetime)
3140 #define IDWriteFontFaceReference1_GetLocality(This) (This)->lpVtbl->GetLocality(This)
3141 #define IDWriteFontFaceReference1_EnqueueFontDownloadRequest(This) (This)->lpVtbl->EnqueueFontDownloadRequest(This)
3142 #define IDWriteFontFaceReference1_EnqueueCharacterDownloadRequest(This,chars,count) (This)->lpVtbl->EnqueueCharacterDownloadRequest(This,chars,count)
3143 #define IDWriteFontFaceReference1_EnqueueGlyphDownloadRequest(This,glyphs,count) (This)->lpVtbl->EnqueueGlyphDownloadRequest(This,glyphs,count)
3144 #define IDWriteFontFaceReference1_EnqueueFileFragmentDownloadRequest(This,offset,size) (This)->lpVtbl->EnqueueFileFragmentDownloadRequest(This,offset,size)
3145 /*** IDWriteFontFaceReference1 methods ***/
3146 #define IDWriteFontFaceReference1_CreateFontFace(This,fontface) (This)->lpVtbl->IDWriteFontFaceReference1_CreateFontFace(This,fontface)
3147 #define IDWriteFontFaceReference1_GetFontAxisValueCount(This) (This)->lpVtbl->GetFontAxisValueCount(This)
3148 #define IDWriteFontFaceReference1_GetFontAxisValues(This,values,num_values) (This)->lpVtbl->GetFontAxisValues(This,values,num_values)
3149 #else
3150 /*** IUnknown methods ***/
3151 static FORCEINLINE HRESULT IDWriteFontFaceReference1_QueryInterface(IDWriteFontFaceReference1* This,REFIID riid,void **ppvObject) {
3152     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3153 }
3154 static FORCEINLINE ULONG IDWriteFontFaceReference1_AddRef(IDWriteFontFaceReference1* This) {
3155     return This->lpVtbl->AddRef(This);
3156 }
3157 static FORCEINLINE ULONG IDWriteFontFaceReference1_Release(IDWriteFontFaceReference1* This) {
3158     return This->lpVtbl->Release(This);
3159 }
3160 /*** IDWriteFontFaceReference methods ***/
3161 static FORCEINLINE HRESULT IDWriteFontFaceReference1_CreateFontFaceWithSimulations(IDWriteFontFaceReference1* This,DWRITE_FONT_SIMULATIONS simulations,IDWriteFontFace3 **fontface) {
3162     return This->lpVtbl->CreateFontFaceWithSimulations(This,simulations,fontface);
3163 }
3164 static FORCEINLINE WINBOOL IDWriteFontFaceReference1_Equals(IDWriteFontFaceReference1* This,IDWriteFontFaceReference *reference) {
3165     return This->lpVtbl->Equals(This,reference);
3166 }
3167 static FORCEINLINE UINT32 IDWriteFontFaceReference1_GetFontFaceIndex(IDWriteFontFaceReference1* This) {
3168     return This->lpVtbl->GetFontFaceIndex(This);
3169 }
3170 static FORCEINLINE DWRITE_FONT_SIMULATIONS IDWriteFontFaceReference1_GetSimulations(IDWriteFontFaceReference1* This) {
3171     return This->lpVtbl->GetSimulations(This);
3172 }
3173 static FORCEINLINE HRESULT IDWriteFontFaceReference1_GetFontFile(IDWriteFontFaceReference1* This,IDWriteFontFile **fontfile) {
3174     return This->lpVtbl->GetFontFile(This,fontfile);
3175 }
3176 static FORCEINLINE UINT64 IDWriteFontFaceReference1_GetLocalFileSize(IDWriteFontFaceReference1* This) {
3177     return This->lpVtbl->GetLocalFileSize(This);
3178 }
3179 static FORCEINLINE UINT64 IDWriteFontFaceReference1_GetFileSize(IDWriteFontFaceReference1* This) {
3180     return This->lpVtbl->GetFileSize(This);
3181 }
3182 static FORCEINLINE HRESULT IDWriteFontFaceReference1_GetFileTime(IDWriteFontFaceReference1* This,FILETIME *writetime) {
3183     return This->lpVtbl->GetFileTime(This,writetime);
3184 }
3185 static FORCEINLINE DWRITE_LOCALITY IDWriteFontFaceReference1_GetLocality(IDWriteFontFaceReference1* This) {
3186     return This->lpVtbl->GetLocality(This);
3187 }
3188 static FORCEINLINE HRESULT IDWriteFontFaceReference1_EnqueueFontDownloadRequest(IDWriteFontFaceReference1* This) {
3189     return This->lpVtbl->EnqueueFontDownloadRequest(This);
3190 }
3191 static FORCEINLINE HRESULT IDWriteFontFaceReference1_EnqueueCharacterDownloadRequest(IDWriteFontFaceReference1* This,const WCHAR *chars,UINT32 count) {
3192     return This->lpVtbl->EnqueueCharacterDownloadRequest(This,chars,count);
3193 }
3194 static FORCEINLINE HRESULT IDWriteFontFaceReference1_EnqueueGlyphDownloadRequest(IDWriteFontFaceReference1* This,const UINT16 *glyphs,UINT32 count) {
3195     return This->lpVtbl->EnqueueGlyphDownloadRequest(This,glyphs,count);
3196 }
3197 static FORCEINLINE HRESULT IDWriteFontFaceReference1_EnqueueFileFragmentDownloadRequest(IDWriteFontFaceReference1* This,UINT64 offset,UINT64 size) {
3198     return This->lpVtbl->EnqueueFileFragmentDownloadRequest(This,offset,size);
3199 }
3200 /*** IDWriteFontFaceReference1 methods ***/
3201 static FORCEINLINE HRESULT IDWriteFontFaceReference1_CreateFontFace(IDWriteFontFaceReference1* This,IDWriteFontFace5 **fontface) {
3202     return This->lpVtbl->IDWriteFontFaceReference1_CreateFontFace(This,fontface);
3203 }
3204 static FORCEINLINE UINT32 IDWriteFontFaceReference1_GetFontAxisValueCount(IDWriteFontFaceReference1* This) {
3205     return This->lpVtbl->GetFontAxisValueCount(This);
3206 }
3207 static FORCEINLINE HRESULT IDWriteFontFaceReference1_GetFontAxisValues(IDWriteFontFaceReference1* This,DWRITE_FONT_AXIS_VALUE *values,UINT32 num_values) {
3208     return This->lpVtbl->GetFontAxisValues(This,values,num_values);
3209 }
3210 #endif
3211 #endif
3212 
3213 #endif
3214 
3215 
3216 #endif  /* __IDWriteFontFaceReference1_INTERFACE_DEFINED__ */
3217 
3218 /*****************************************************************************
3219  * IDWriteFontList1 interface
3220  */
3221 #ifndef __IDWriteFontList1_INTERFACE_DEFINED__
3222 #define __IDWriteFontList1_INTERFACE_DEFINED__
3223 
3224 DEFINE_GUID(IID_IDWriteFontList1, 0xda20d8ef, 0x812a, 0x4c43, 0x98,0x02, 0x62,0xec,0x4a,0xbd,0x7a,0xde);
3225 #if defined(__cplusplus) && !defined(CINTERFACE)
3226 MIDL_INTERFACE("da20d8ef-812a-4c43-9802-62ec4abd7ade")
3227 IDWriteFontList1 : public IDWriteFontList
3228 {
3229     virtual DWRITE_LOCALITY STDMETHODCALLTYPE GetFontLocality(
3230         UINT32 index) = 0;
3231 
3232     virtual HRESULT STDMETHODCALLTYPE GetFont(
3233         UINT32 index,
3234         IDWriteFont3 **font) = 0;
3235 
3236     virtual HRESULT STDMETHODCALLTYPE GetFontFaceReference(
3237         UINT32 index,
3238         IDWriteFontFaceReference **reference) = 0;
3239 
3240 };
3241 #ifdef __CRT_UUID_DECL
3242 __CRT_UUID_DECL(IDWriteFontList1, 0xda20d8ef, 0x812a, 0x4c43, 0x98,0x02, 0x62,0xec,0x4a,0xbd,0x7a,0xde)
3243 #endif
3244 #else
3245 typedef struct IDWriteFontList1Vtbl {
3246     BEGIN_INTERFACE
3247 
3248     /*** IUnknown methods ***/
3249     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3250         IDWriteFontList1 *This,
3251         REFIID riid,
3252         void **ppvObject);
3253 
3254     ULONG (STDMETHODCALLTYPE *AddRef)(
3255         IDWriteFontList1 *This);
3256 
3257     ULONG (STDMETHODCALLTYPE *Release)(
3258         IDWriteFontList1 *This);
3259 
3260     /*** IDWriteFontList methods ***/
3261     HRESULT (STDMETHODCALLTYPE *GetFontCollection)(
3262         IDWriteFontList1 *This,
3263         IDWriteFontCollection **collection);
3264 
3265     UINT32 (STDMETHODCALLTYPE *GetFontCount)(
3266         IDWriteFontList1 *This);
3267 
3268     HRESULT (STDMETHODCALLTYPE *GetFont)(
3269         IDWriteFontList1 *This,
3270         UINT32 index,
3271         IDWriteFont **font);
3272 
3273     /*** IDWriteFontList1 methods ***/
3274     DWRITE_LOCALITY (STDMETHODCALLTYPE *GetFontLocality)(
3275         IDWriteFontList1 *This,
3276         UINT32 index);
3277 
3278     HRESULT (STDMETHODCALLTYPE *IDWriteFontList1_GetFont)(
3279         IDWriteFontList1 *This,
3280         UINT32 index,
3281         IDWriteFont3 **font);
3282 
3283     HRESULT (STDMETHODCALLTYPE *GetFontFaceReference)(
3284         IDWriteFontList1 *This,
3285         UINT32 index,
3286         IDWriteFontFaceReference **reference);
3287 
3288     END_INTERFACE
3289 } IDWriteFontList1Vtbl;
3290 
3291 interface IDWriteFontList1 {
3292     CONST_VTBL IDWriteFontList1Vtbl* lpVtbl;
3293 };
3294 
3295 #ifdef COBJMACROS
3296 #ifndef WIDL_C_INLINE_WRAPPERS
3297 /*** IUnknown methods ***/
3298 #define IDWriteFontList1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3299 #define IDWriteFontList1_AddRef(This) (This)->lpVtbl->AddRef(This)
3300 #define IDWriteFontList1_Release(This) (This)->lpVtbl->Release(This)
3301 /*** IDWriteFontList methods ***/
3302 #define IDWriteFontList1_GetFontCollection(This,collection) (This)->lpVtbl->GetFontCollection(This,collection)
3303 #define IDWriteFontList1_GetFontCount(This) (This)->lpVtbl->GetFontCount(This)
3304 /*** IDWriteFontList1 methods ***/
3305 #define IDWriteFontList1_GetFontLocality(This,index) (This)->lpVtbl->GetFontLocality(This,index)
3306 #define IDWriteFontList1_GetFont(This,index,font) (This)->lpVtbl->IDWriteFontList1_GetFont(This,index,font)
3307 #define IDWriteFontList1_GetFontFaceReference(This,index,reference) (This)->lpVtbl->GetFontFaceReference(This,index,reference)
3308 #else
3309 /*** IUnknown methods ***/
3310 static FORCEINLINE HRESULT IDWriteFontList1_QueryInterface(IDWriteFontList1* This,REFIID riid,void **ppvObject) {
3311     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3312 }
3313 static FORCEINLINE ULONG IDWriteFontList1_AddRef(IDWriteFontList1* This) {
3314     return This->lpVtbl->AddRef(This);
3315 }
3316 static FORCEINLINE ULONG IDWriteFontList1_Release(IDWriteFontList1* This) {
3317     return This->lpVtbl->Release(This);
3318 }
3319 /*** IDWriteFontList methods ***/
3320 static FORCEINLINE HRESULT IDWriteFontList1_GetFontCollection(IDWriteFontList1* This,IDWriteFontCollection **collection) {
3321     return This->lpVtbl->GetFontCollection(This,collection);
3322 }
3323 static FORCEINLINE UINT32 IDWriteFontList1_GetFontCount(IDWriteFontList1* This) {
3324     return This->lpVtbl->GetFontCount(This);
3325 }
3326 /*** IDWriteFontList1 methods ***/
3327 static FORCEINLINE DWRITE_LOCALITY IDWriteFontList1_GetFontLocality(IDWriteFontList1* This,UINT32 index) {
3328     return This->lpVtbl->GetFontLocality(This,index);
3329 }
3330 static FORCEINLINE HRESULT IDWriteFontList1_GetFont(IDWriteFontList1* This,UINT32 index,IDWriteFont3 **font) {
3331     return This->lpVtbl->IDWriteFontList1_GetFont(This,index,font);
3332 }
3333 static FORCEINLINE HRESULT IDWriteFontList1_GetFontFaceReference(IDWriteFontList1* This,UINT32 index,IDWriteFontFaceReference **reference) {
3334     return This->lpVtbl->GetFontFaceReference(This,index,reference);
3335 }
3336 #endif
3337 #endif
3338 
3339 #endif
3340 
3341 
3342 #endif  /* __IDWriteFontList1_INTERFACE_DEFINED__ */
3343 
3344 /*****************************************************************************
3345  * IDWriteFontList2 interface
3346  */
3347 #ifndef __IDWriteFontList2_INTERFACE_DEFINED__
3348 #define __IDWriteFontList2_INTERFACE_DEFINED__
3349 
3350 DEFINE_GUID(IID_IDWriteFontList2, 0xc0763a34, 0x77af, 0x445a, 0xb7,0x35, 0x08,0xc3,0x7b,0x0a,0x5b,0xf5);
3351 #if defined(__cplusplus) && !defined(CINTERFACE)
3352 MIDL_INTERFACE("c0763a34-77af-445a-b735-08c37b0a5bf5")
3353 IDWriteFontList2 : public IDWriteFontList1
3354 {
3355     virtual HRESULT STDMETHODCALLTYPE GetFontSet(
3356         IDWriteFontSet1 **fontset) = 0;
3357 
3358 };
3359 #ifdef __CRT_UUID_DECL
3360 __CRT_UUID_DECL(IDWriteFontList2, 0xc0763a34, 0x77af, 0x445a, 0xb7,0x35, 0x08,0xc3,0x7b,0x0a,0x5b,0xf5)
3361 #endif
3362 #else
3363 typedef struct IDWriteFontList2Vtbl {
3364     BEGIN_INTERFACE
3365 
3366     /*** IUnknown methods ***/
3367     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3368         IDWriteFontList2 *This,
3369         REFIID riid,
3370         void **ppvObject);
3371 
3372     ULONG (STDMETHODCALLTYPE *AddRef)(
3373         IDWriteFontList2 *This);
3374 
3375     ULONG (STDMETHODCALLTYPE *Release)(
3376         IDWriteFontList2 *This);
3377 
3378     /*** IDWriteFontList methods ***/
3379     HRESULT (STDMETHODCALLTYPE *GetFontCollection)(
3380         IDWriteFontList2 *This,
3381         IDWriteFontCollection **collection);
3382 
3383     UINT32 (STDMETHODCALLTYPE *GetFontCount)(
3384         IDWriteFontList2 *This);
3385 
3386     HRESULT (STDMETHODCALLTYPE *GetFont)(
3387         IDWriteFontList2 *This,
3388         UINT32 index,
3389         IDWriteFont **font);
3390 
3391     /*** IDWriteFontList1 methods ***/
3392     DWRITE_LOCALITY (STDMETHODCALLTYPE *GetFontLocality)(
3393         IDWriteFontList2 *This,
3394         UINT32 index);
3395 
3396     HRESULT (STDMETHODCALLTYPE *IDWriteFontList1_GetFont)(
3397         IDWriteFontList2 *This,
3398         UINT32 index,
3399         IDWriteFont3 **font);
3400 
3401     HRESULT (STDMETHODCALLTYPE *GetFontFaceReference)(
3402         IDWriteFontList2 *This,
3403         UINT32 index,
3404         IDWriteFontFaceReference **reference);
3405 
3406     /*** IDWriteFontList2 methods ***/
3407     HRESULT (STDMETHODCALLTYPE *GetFontSet)(
3408         IDWriteFontList2 *This,
3409         IDWriteFontSet1 **fontset);
3410 
3411     END_INTERFACE
3412 } IDWriteFontList2Vtbl;
3413 
3414 interface IDWriteFontList2 {
3415     CONST_VTBL IDWriteFontList2Vtbl* lpVtbl;
3416 };
3417 
3418 #ifdef COBJMACROS
3419 #ifndef WIDL_C_INLINE_WRAPPERS
3420 /*** IUnknown methods ***/
3421 #define IDWriteFontList2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3422 #define IDWriteFontList2_AddRef(This) (This)->lpVtbl->AddRef(This)
3423 #define IDWriteFontList2_Release(This) (This)->lpVtbl->Release(This)
3424 /*** IDWriteFontList methods ***/
3425 #define IDWriteFontList2_GetFontCollection(This,collection) (This)->lpVtbl->GetFontCollection(This,collection)
3426 #define IDWriteFontList2_GetFontCount(This) (This)->lpVtbl->GetFontCount(This)
3427 /*** IDWriteFontList1 methods ***/
3428 #define IDWriteFontList2_GetFontLocality(This,index) (This)->lpVtbl->GetFontLocality(This,index)
3429 #define IDWriteFontList2_GetFont(This,index,font) (This)->lpVtbl->IDWriteFontList1_GetFont(This,index,font)
3430 #define IDWriteFontList2_GetFontFaceReference(This,index,reference) (This)->lpVtbl->GetFontFaceReference(This,index,reference)
3431 /*** IDWriteFontList2 methods ***/
3432 #define IDWriteFontList2_GetFontSet(This,fontset) (This)->lpVtbl->GetFontSet(This,fontset)
3433 #else
3434 /*** IUnknown methods ***/
3435 static FORCEINLINE HRESULT IDWriteFontList2_QueryInterface(IDWriteFontList2* This,REFIID riid,void **ppvObject) {
3436     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3437 }
3438 static FORCEINLINE ULONG IDWriteFontList2_AddRef(IDWriteFontList2* This) {
3439     return This->lpVtbl->AddRef(This);
3440 }
3441 static FORCEINLINE ULONG IDWriteFontList2_Release(IDWriteFontList2* This) {
3442     return This->lpVtbl->Release(This);
3443 }
3444 /*** IDWriteFontList methods ***/
3445 static FORCEINLINE HRESULT IDWriteFontList2_GetFontCollection(IDWriteFontList2* This,IDWriteFontCollection **collection) {
3446     return This->lpVtbl->GetFontCollection(This,collection);
3447 }
3448 static FORCEINLINE UINT32 IDWriteFontList2_GetFontCount(IDWriteFontList2* This) {
3449     return This->lpVtbl->GetFontCount(This);
3450 }
3451 /*** IDWriteFontList1 methods ***/
3452 static FORCEINLINE DWRITE_LOCALITY IDWriteFontList2_GetFontLocality(IDWriteFontList2* This,UINT32 index) {
3453     return This->lpVtbl->GetFontLocality(This,index);
3454 }
3455 static FORCEINLINE HRESULT IDWriteFontList2_GetFont(IDWriteFontList2* This,UINT32 index,IDWriteFont3 **font) {
3456     return This->lpVtbl->IDWriteFontList1_GetFont(This,index,font);
3457 }
3458 static FORCEINLINE HRESULT IDWriteFontList2_GetFontFaceReference(IDWriteFontList2* This,UINT32 index,IDWriteFontFaceReference **reference) {
3459     return This->lpVtbl->GetFontFaceReference(This,index,reference);
3460 }
3461 /*** IDWriteFontList2 methods ***/
3462 static FORCEINLINE HRESULT IDWriteFontList2_GetFontSet(IDWriteFontList2* This,IDWriteFontSet1 **fontset) {
3463     return This->lpVtbl->GetFontSet(This,fontset);
3464 }
3465 #endif
3466 #endif
3467 
3468 #endif
3469 
3470 
3471 #endif  /* __IDWriteFontList2_INTERFACE_DEFINED__ */
3472 
3473 /*****************************************************************************
3474  * IDWriteFontSet2 interface
3475  */
3476 #ifndef __IDWriteFontSet2_INTERFACE_DEFINED__
3477 #define __IDWriteFontSet2_INTERFACE_DEFINED__
3478 
3479 DEFINE_GUID(IID_IDWriteFontSet2, 0xdc7ead19, 0xe54c, 0x43af, 0xb2,0xda, 0x4e,0x2b,0x79,0xba,0x3f,0x7f);
3480 #if defined(__cplusplus) && !defined(CINTERFACE)
3481 MIDL_INTERFACE("dc7ead19-e54c-43af-b2da-4e2b79ba3f7f")
3482 IDWriteFontSet2 : public IDWriteFontSet1
3483 {
3484     virtual HANDLE STDMETHODCALLTYPE GetExpirationEvent(
3485         ) = 0;
3486 
3487 };
3488 #ifdef __CRT_UUID_DECL
3489 __CRT_UUID_DECL(IDWriteFontSet2, 0xdc7ead19, 0xe54c, 0x43af, 0xb2,0xda, 0x4e,0x2b,0x79,0xba,0x3f,0x7f)
3490 #endif
3491 #else
3492 typedef struct IDWriteFontSet2Vtbl {
3493     BEGIN_INTERFACE
3494 
3495     /*** IUnknown methods ***/
3496     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3497         IDWriteFontSet2 *This,
3498         REFIID riid,
3499         void **ppvObject);
3500 
3501     ULONG (STDMETHODCALLTYPE *AddRef)(
3502         IDWriteFontSet2 *This);
3503 
3504     ULONG (STDMETHODCALLTYPE *Release)(
3505         IDWriteFontSet2 *This);
3506 
3507     /*** IDWriteFontSet methods ***/
3508     UINT32 (STDMETHODCALLTYPE *GetFontCount)(
3509         IDWriteFontSet2 *This);
3510 
3511     HRESULT (STDMETHODCALLTYPE *GetFontFaceReference)(
3512         IDWriteFontSet2 *This,
3513         UINT32 index,
3514         IDWriteFontFaceReference **reference);
3515 
3516     HRESULT (STDMETHODCALLTYPE *FindFontFaceReference)(
3517         IDWriteFontSet2 *This,
3518         IDWriteFontFaceReference *reference,
3519         UINT32 *index,
3520         WINBOOL *exists);
3521 
3522     HRESULT (STDMETHODCALLTYPE *FindFontFace)(
3523         IDWriteFontSet2 *This,
3524         IDWriteFontFace *fontface,
3525         UINT32 *index,
3526         WINBOOL *exists);
3527 
3528     HRESULT (STDMETHODCALLTYPE *GetPropertyValues__)(
3529         IDWriteFontSet2 *This,
3530         DWRITE_FONT_PROPERTY_ID id,
3531         IDWriteStringList **values);
3532 
3533     HRESULT (STDMETHODCALLTYPE *GetPropertyValues_)(
3534         IDWriteFontSet2 *This,
3535         DWRITE_FONT_PROPERTY_ID id,
3536         const WCHAR *preferred_locales,
3537         IDWriteStringList **values);
3538 
3539     HRESULT (STDMETHODCALLTYPE *GetPropertyValues)(
3540         IDWriteFontSet2 *This,
3541         UINT32 index,
3542         DWRITE_FONT_PROPERTY_ID id,
3543         WINBOOL *exists,
3544         IDWriteLocalizedStrings **values);
3545 
3546     HRESULT (STDMETHODCALLTYPE *GetPropertyOccurrenceCount)(
3547         IDWriteFontSet2 *This,
3548         const DWRITE_FONT_PROPERTY *property,
3549         UINT32 *count);
3550 
3551     HRESULT (STDMETHODCALLTYPE *GetMatchingFonts_)(
3552         IDWriteFontSet2 *This,
3553         const WCHAR *family,
3554         DWRITE_FONT_WEIGHT weight,
3555         DWRITE_FONT_STRETCH stretch,
3556         DWRITE_FONT_STYLE style,
3557         IDWriteFontSet **fontset);
3558 
3559     HRESULT (STDMETHODCALLTYPE *GetMatchingFonts)(
3560         IDWriteFontSet2 *This,
3561         const DWRITE_FONT_PROPERTY *props,
3562         UINT32 count,
3563         IDWriteFontSet **fontset);
3564 
3565     /*** IDWriteFontSet1 methods ***/
3566     HRESULT (STDMETHODCALLTYPE *IDWriteFontSet1_GetMatchingFonts)(
3567         IDWriteFontSet2 *This,
3568         const DWRITE_FONT_PROPERTY *property,
3569         const DWRITE_FONT_AXIS_VALUE *axis_values,
3570         UINT32 num_values,
3571         IDWriteFontSet1 **fontset);
3572 
3573     HRESULT (STDMETHODCALLTYPE *GetFirstFontResources)(
3574         IDWriteFontSet2 *This,
3575         IDWriteFontSet1 **fontset);
3576 
3577     HRESULT (STDMETHODCALLTYPE *GetFilteredFonts__)(
3578         IDWriteFontSet2 *This,
3579         const UINT32 *indices,
3580         UINT32 num_indices,
3581         IDWriteFontSet1 **fontset);
3582 
3583     HRESULT (STDMETHODCALLTYPE *GetFilteredFonts_)(
3584         IDWriteFontSet2 *This,
3585         const DWRITE_FONT_AXIS_RANGE *axis_ranges,
3586         UINT32 num_ranges,
3587         WINBOOL select_any_range,
3588         IDWriteFontSet1 **fontset);
3589 
3590     HRESULT (STDMETHODCALLTYPE *GetFilteredFonts)(
3591         IDWriteFontSet2 *This,
3592         const DWRITE_FONT_PROPERTY *props,
3593         UINT32 num_properties,
3594         WINBOOL select_any_property,
3595         IDWriteFontSet1 **fontset);
3596 
3597     HRESULT (STDMETHODCALLTYPE *GetFilteredFontIndices_)(
3598         IDWriteFontSet2 *This,
3599         const DWRITE_FONT_AXIS_RANGE *ranges,
3600         UINT32 num_ranges,
3601         WINBOOL select_any_range,
3602         UINT32 *indices,
3603         UINT32 num_indices,
3604         UINT32 *actual_num_indices);
3605 
3606     HRESULT (STDMETHODCALLTYPE *GetFilteredFontIndices)(
3607         IDWriteFontSet2 *This,
3608         const DWRITE_FONT_PROPERTY *props,
3609         UINT32 num_properties,
3610         WINBOOL select_any_range,
3611         UINT32 *indices,
3612         UINT32 num_indices,
3613         UINT32 *actual_num_indices);
3614 
3615     HRESULT (STDMETHODCALLTYPE *GetFontAxisRanges_)(
3616         IDWriteFontSet2 *This,
3617         UINT32 font_index,
3618         DWRITE_FONT_AXIS_RANGE *axis_ranges,
3619         UINT32 num_ranges,
3620         UINT32 *actual_num_ranges);
3621 
3622     HRESULT (STDMETHODCALLTYPE *GetFontAxisRanges)(
3623         IDWriteFontSet2 *This,
3624         DWRITE_FONT_AXIS_RANGE *axis_ranges,
3625         UINT32 num_ranges,
3626         UINT32 *actual_num_ranges);
3627 
3628     HRESULT (STDMETHODCALLTYPE *IDWriteFontSet1_GetFontFaceReference)(
3629         IDWriteFontSet2 *This,
3630         UINT32 index,
3631         IDWriteFontFaceReference1 **reference);
3632 
3633     HRESULT (STDMETHODCALLTYPE *CreateFontResource)(
3634         IDWriteFontSet2 *This,
3635         UINT32 index,
3636         IDWriteFontResource **resource);
3637 
3638     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
3639         IDWriteFontSet2 *This,
3640         UINT32 index,
3641         IDWriteFontFace5 **fontface);
3642 
3643     DWRITE_LOCALITY (STDMETHODCALLTYPE *GetFontLocality)(
3644         IDWriteFontSet2 *This,
3645         UINT32 index);
3646 
3647     /*** IDWriteFontSet2 methods ***/
3648     HANDLE (STDMETHODCALLTYPE *GetExpirationEvent)(
3649         IDWriteFontSet2 *This);
3650 
3651     END_INTERFACE
3652 } IDWriteFontSet2Vtbl;
3653 
3654 interface IDWriteFontSet2 {
3655     CONST_VTBL IDWriteFontSet2Vtbl* lpVtbl;
3656 };
3657 
3658 #ifdef COBJMACROS
3659 #ifndef WIDL_C_INLINE_WRAPPERS
3660 /*** IUnknown methods ***/
3661 #define IDWriteFontSet2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3662 #define IDWriteFontSet2_AddRef(This) (This)->lpVtbl->AddRef(This)
3663 #define IDWriteFontSet2_Release(This) (This)->lpVtbl->Release(This)
3664 /*** IDWriteFontSet methods ***/
3665 #define IDWriteFontSet2_GetFontCount(This) (This)->lpVtbl->GetFontCount(This)
3666 #define IDWriteFontSet2_FindFontFaceReference(This,reference,index,exists) (This)->lpVtbl->FindFontFaceReference(This,reference,index,exists)
3667 #define IDWriteFontSet2_FindFontFace(This,fontface,index,exists) (This)->lpVtbl->FindFontFace(This,fontface,index,exists)
3668 #define IDWriteFontSet2_GetPropertyValues__(This,id,values) (This)->lpVtbl->GetPropertyValues__(This,id,values)
3669 #define IDWriteFontSet2_GetPropertyValues_(This,id,preferred_locales,values) (This)->lpVtbl->GetPropertyValues_(This,id,preferred_locales,values)
3670 #define IDWriteFontSet2_GetPropertyValues(This,index,id,exists,values) (This)->lpVtbl->GetPropertyValues(This,index,id,exists,values)
3671 #define IDWriteFontSet2_GetPropertyOccurrenceCount(This,property,count) (This)->lpVtbl->GetPropertyOccurrenceCount(This,property,count)
3672 #define IDWriteFontSet2_GetMatchingFonts_(This,family,weight,stretch,style,fontset) (This)->lpVtbl->GetMatchingFonts_(This,family,weight,stretch,style,fontset)
3673 /*** IDWriteFontSet1 methods ***/
3674 #define IDWriteFontSet2_GetMatchingFonts(This,property,axis_values,num_values,fontset) (This)->lpVtbl->IDWriteFontSet1_GetMatchingFonts(This,property,axis_values,num_values,fontset)
3675 #define IDWriteFontSet2_GetFirstFontResources(This,fontset) (This)->lpVtbl->GetFirstFontResources(This,fontset)
3676 #define IDWriteFontSet2_GetFilteredFonts__(This,indices,num_indices,fontset) (This)->lpVtbl->GetFilteredFonts__(This,indices,num_indices,fontset)
3677 #define IDWriteFontSet2_GetFilteredFonts_(This,axis_ranges,num_ranges,select_any_range,fontset) (This)->lpVtbl->GetFilteredFonts_(This,axis_ranges,num_ranges,select_any_range,fontset)
3678 #define IDWriteFontSet2_GetFilteredFonts(This,props,num_properties,select_any_property,fontset) (This)->lpVtbl->GetFilteredFonts(This,props,num_properties,select_any_property,fontset)
3679 #define IDWriteFontSet2_GetFilteredFontIndices_(This,ranges,num_ranges,select_any_range,indices,num_indices,actual_num_indices) (This)->lpVtbl->GetFilteredFontIndices_(This,ranges,num_ranges,select_any_range,indices,num_indices,actual_num_indices)
3680 #define IDWriteFontSet2_GetFilteredFontIndices(This,props,num_properties,select_any_range,indices,num_indices,actual_num_indices) (This)->lpVtbl->GetFilteredFontIndices(This,props,num_properties,select_any_range,indices,num_indices,actual_num_indices)
3681 #define IDWriteFontSet2_GetFontAxisRanges_(This,font_index,axis_ranges,num_ranges,actual_num_ranges) (This)->lpVtbl->GetFontAxisRanges_(This,font_index,axis_ranges,num_ranges,actual_num_ranges)
3682 #define IDWriteFontSet2_GetFontAxisRanges(This,axis_ranges,num_ranges,actual_num_ranges) (This)->lpVtbl->GetFontAxisRanges(This,axis_ranges,num_ranges,actual_num_ranges)
3683 #define IDWriteFontSet2_GetFontFaceReference(This,index,reference) (This)->lpVtbl->IDWriteFontSet1_GetFontFaceReference(This,index,reference)
3684 #define IDWriteFontSet2_CreateFontResource(This,index,resource) (This)->lpVtbl->CreateFontResource(This,index,resource)
3685 #define IDWriteFontSet2_CreateFontFace(This,index,fontface) (This)->lpVtbl->CreateFontFace(This,index,fontface)
3686 #define IDWriteFontSet2_GetFontLocality(This,index) (This)->lpVtbl->GetFontLocality(This,index)
3687 /*** IDWriteFontSet2 methods ***/
3688 #define IDWriteFontSet2_GetExpirationEvent(This) (This)->lpVtbl->GetExpirationEvent(This)
3689 #else
3690 /*** IUnknown methods ***/
3691 static FORCEINLINE HRESULT IDWriteFontSet2_QueryInterface(IDWriteFontSet2* This,REFIID riid,void **ppvObject) {
3692     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3693 }
3694 static FORCEINLINE ULONG IDWriteFontSet2_AddRef(IDWriteFontSet2* This) {
3695     return This->lpVtbl->AddRef(This);
3696 }
3697 static FORCEINLINE ULONG IDWriteFontSet2_Release(IDWriteFontSet2* This) {
3698     return This->lpVtbl->Release(This);
3699 }
3700 /*** IDWriteFontSet methods ***/
3701 static FORCEINLINE UINT32 IDWriteFontSet2_GetFontCount(IDWriteFontSet2* This) {
3702     return This->lpVtbl->GetFontCount(This);
3703 }
3704 static FORCEINLINE HRESULT IDWriteFontSet2_FindFontFaceReference(IDWriteFontSet2* This,IDWriteFontFaceReference *reference,UINT32 *index,WINBOOL *exists) {
3705     return This->lpVtbl->FindFontFaceReference(This,reference,index,exists);
3706 }
3707 static FORCEINLINE HRESULT IDWriteFontSet2_FindFontFace(IDWriteFontSet2* This,IDWriteFontFace *fontface,UINT32 *index,WINBOOL *exists) {
3708     return This->lpVtbl->FindFontFace(This,fontface,index,exists);
3709 }
3710 static FORCEINLINE HRESULT IDWriteFontSet2_GetPropertyValues__(IDWriteFontSet2* This,DWRITE_FONT_PROPERTY_ID id,IDWriteStringList **values) {
3711     return This->lpVtbl->GetPropertyValues__(This,id,values);
3712 }
3713 static FORCEINLINE HRESULT IDWriteFontSet2_GetPropertyValues_(IDWriteFontSet2* This,DWRITE_FONT_PROPERTY_ID id,const WCHAR *preferred_locales,IDWriteStringList **values) {
3714     return This->lpVtbl->GetPropertyValues_(This,id,preferred_locales,values);
3715 }
3716 static FORCEINLINE HRESULT IDWriteFontSet2_GetPropertyValues(IDWriteFontSet2* This,UINT32 index,DWRITE_FONT_PROPERTY_ID id,WINBOOL *exists,IDWriteLocalizedStrings **values) {
3717     return This->lpVtbl->GetPropertyValues(This,index,id,exists,values);
3718 }
3719 static FORCEINLINE HRESULT IDWriteFontSet2_GetPropertyOccurrenceCount(IDWriteFontSet2* This,const DWRITE_FONT_PROPERTY *property,UINT32 *count) {
3720     return This->lpVtbl->GetPropertyOccurrenceCount(This,property,count);
3721 }
3722 static FORCEINLINE HRESULT IDWriteFontSet2_GetMatchingFonts_(IDWriteFontSet2* This,const WCHAR *family,DWRITE_FONT_WEIGHT weight,DWRITE_FONT_STRETCH stretch,DWRITE_FONT_STYLE style,IDWriteFontSet **fontset) {
3723     return This->lpVtbl->GetMatchingFonts_(This,family,weight,stretch,style,fontset);
3724 }
3725 /*** IDWriteFontSet1 methods ***/
3726 static FORCEINLINE HRESULT IDWriteFontSet2_GetMatchingFonts(IDWriteFontSet2* This,const DWRITE_FONT_PROPERTY *property,const DWRITE_FONT_AXIS_VALUE *axis_values,UINT32 num_values,IDWriteFontSet1 **fontset) {
3727     return This->lpVtbl->IDWriteFontSet1_GetMatchingFonts(This,property,axis_values,num_values,fontset);
3728 }
3729 static FORCEINLINE HRESULT IDWriteFontSet2_GetFirstFontResources(IDWriteFontSet2* This,IDWriteFontSet1 **fontset) {
3730     return This->lpVtbl->GetFirstFontResources(This,fontset);
3731 }
3732 static FORCEINLINE HRESULT IDWriteFontSet2_GetFilteredFonts__(IDWriteFontSet2* This,const UINT32 *indices,UINT32 num_indices,IDWriteFontSet1 **fontset) {
3733     return This->lpVtbl->GetFilteredFonts__(This,indices,num_indices,fontset);
3734 }
3735 static FORCEINLINE HRESULT IDWriteFontSet2_GetFilteredFonts_(IDWriteFontSet2* This,const DWRITE_FONT_AXIS_RANGE *axis_ranges,UINT32 num_ranges,WINBOOL select_any_range,IDWriteFontSet1 **fontset) {
3736     return This->lpVtbl->GetFilteredFonts_(This,axis_ranges,num_ranges,select_any_range,fontset);
3737 }
3738 static FORCEINLINE HRESULT IDWriteFontSet2_GetFilteredFonts(IDWriteFontSet2* This,const DWRITE_FONT_PROPERTY *props,UINT32 num_properties,WINBOOL select_any_property,IDWriteFontSet1 **fontset) {
3739     return This->lpVtbl->GetFilteredFonts(This,props,num_properties,select_any_property,fontset);
3740 }
3741 static FORCEINLINE HRESULT IDWriteFontSet2_GetFilteredFontIndices_(IDWriteFontSet2* This,const DWRITE_FONT_AXIS_RANGE *ranges,UINT32 num_ranges,WINBOOL select_any_range,UINT32 *indices,UINT32 num_indices,UINT32 *actual_num_indices) {
3742     return This->lpVtbl->GetFilteredFontIndices_(This,ranges,num_ranges,select_any_range,indices,num_indices,actual_num_indices);
3743 }
3744 static FORCEINLINE HRESULT IDWriteFontSet2_GetFilteredFontIndices(IDWriteFontSet2* This,const DWRITE_FONT_PROPERTY *props,UINT32 num_properties,WINBOOL select_any_range,UINT32 *indices,UINT32 num_indices,UINT32 *actual_num_indices) {
3745     return This->lpVtbl->GetFilteredFontIndices(This,props,num_properties,select_any_range,indices,num_indices,actual_num_indices);
3746 }
3747 static FORCEINLINE HRESULT IDWriteFontSet2_GetFontAxisRanges_(IDWriteFontSet2* This,UINT32 font_index,DWRITE_FONT_AXIS_RANGE *axis_ranges,UINT32 num_ranges,UINT32 *actual_num_ranges) {
3748     return This->lpVtbl->GetFontAxisRanges_(This,font_index,axis_ranges,num_ranges,actual_num_ranges);
3749 }
3750 static FORCEINLINE HRESULT IDWriteFontSet2_GetFontAxisRanges(IDWriteFontSet2* This,DWRITE_FONT_AXIS_RANGE *axis_ranges,UINT32 num_ranges,UINT32 *actual_num_ranges) {
3751     return This->lpVtbl->GetFontAxisRanges(This,axis_ranges,num_ranges,actual_num_ranges);
3752 }
3753 static FORCEINLINE HRESULT IDWriteFontSet2_GetFontFaceReference(IDWriteFontSet2* This,UINT32 index,IDWriteFontFaceReference1 **reference) {
3754     return This->lpVtbl->IDWriteFontSet1_GetFontFaceReference(This,index,reference);
3755 }
3756 static FORCEINLINE HRESULT IDWriteFontSet2_CreateFontResource(IDWriteFontSet2* This,UINT32 index,IDWriteFontResource **resource) {
3757     return This->lpVtbl->CreateFontResource(This,index,resource);
3758 }
3759 static FORCEINLINE HRESULT IDWriteFontSet2_CreateFontFace(IDWriteFontSet2* This,UINT32 index,IDWriteFontFace5 **fontface) {
3760     return This->lpVtbl->CreateFontFace(This,index,fontface);
3761 }
3762 static FORCEINLINE DWRITE_LOCALITY IDWriteFontSet2_GetFontLocality(IDWriteFontSet2* This,UINT32 index) {
3763     return This->lpVtbl->GetFontLocality(This,index);
3764 }
3765 /*** IDWriteFontSet2 methods ***/
3766 static FORCEINLINE HANDLE IDWriteFontSet2_GetExpirationEvent(IDWriteFontSet2* This) {
3767     return This->lpVtbl->GetExpirationEvent(This);
3768 }
3769 #endif
3770 #endif
3771 
3772 #endif
3773 
3774 
3775 #endif  /* __IDWriteFontSet2_INTERFACE_DEFINED__ */
3776 
3777 /*****************************************************************************
3778  * IDWriteFontSet3 interface
3779  */
3780 #ifndef __IDWriteFontSet3_INTERFACE_DEFINED__
3781 #define __IDWriteFontSet3_INTERFACE_DEFINED__
3782 
3783 DEFINE_GUID(IID_IDWriteFontSet3, 0x7c073ef2, 0xa7f4, 0x4045, 0x8c,0x32, 0x8a,0xb8,0xae,0x64,0x0f,0x90);
3784 #if defined(__cplusplus) && !defined(CINTERFACE)
3785 MIDL_INTERFACE("7c073ef2-a7f4-4045-8c32-8ab8ae640f90")
3786 IDWriteFontSet3 : public IDWriteFontSet2
3787 {
3788     virtual DWRITE_FONT_SOURCE_TYPE STDMETHODCALLTYPE GetFontSourceType(
3789         UINT32 index) = 0;
3790 
3791     virtual UINT32 STDMETHODCALLTYPE GetFontSourceNameLength(
3792         UINT32 index) = 0;
3793 
3794     virtual HRESULT STDMETHODCALLTYPE GetFontSourceName(
3795         UINT32 index,
3796         WCHAR *buffer,
3797         UINT32 buffer_size) = 0;
3798 
3799 };
3800 #ifdef __CRT_UUID_DECL
3801 __CRT_UUID_DECL(IDWriteFontSet3, 0x7c073ef2, 0xa7f4, 0x4045, 0x8c,0x32, 0x8a,0xb8,0xae,0x64,0x0f,0x90)
3802 #endif
3803 #else
3804 typedef struct IDWriteFontSet3Vtbl {
3805     BEGIN_INTERFACE
3806 
3807     /*** IUnknown methods ***/
3808     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3809         IDWriteFontSet3 *This,
3810         REFIID riid,
3811         void **ppvObject);
3812 
3813     ULONG (STDMETHODCALLTYPE *AddRef)(
3814         IDWriteFontSet3 *This);
3815 
3816     ULONG (STDMETHODCALLTYPE *Release)(
3817         IDWriteFontSet3 *This);
3818 
3819     /*** IDWriteFontSet methods ***/
3820     UINT32 (STDMETHODCALLTYPE *GetFontCount)(
3821         IDWriteFontSet3 *This);
3822 
3823     HRESULT (STDMETHODCALLTYPE *GetFontFaceReference)(
3824         IDWriteFontSet3 *This,
3825         UINT32 index,
3826         IDWriteFontFaceReference **reference);
3827 
3828     HRESULT (STDMETHODCALLTYPE *FindFontFaceReference)(
3829         IDWriteFontSet3 *This,
3830         IDWriteFontFaceReference *reference,
3831         UINT32 *index,
3832         WINBOOL *exists);
3833 
3834     HRESULT (STDMETHODCALLTYPE *FindFontFace)(
3835         IDWriteFontSet3 *This,
3836         IDWriteFontFace *fontface,
3837         UINT32 *index,
3838         WINBOOL *exists);
3839 
3840     HRESULT (STDMETHODCALLTYPE *GetPropertyValues__)(
3841         IDWriteFontSet3 *This,
3842         DWRITE_FONT_PROPERTY_ID id,
3843         IDWriteStringList **values);
3844 
3845     HRESULT (STDMETHODCALLTYPE *GetPropertyValues_)(
3846         IDWriteFontSet3 *This,
3847         DWRITE_FONT_PROPERTY_ID id,
3848         const WCHAR *preferred_locales,
3849         IDWriteStringList **values);
3850 
3851     HRESULT (STDMETHODCALLTYPE *GetPropertyValues)(
3852         IDWriteFontSet3 *This,
3853         UINT32 index,
3854         DWRITE_FONT_PROPERTY_ID id,
3855         WINBOOL *exists,
3856         IDWriteLocalizedStrings **values);
3857 
3858     HRESULT (STDMETHODCALLTYPE *GetPropertyOccurrenceCount)(
3859         IDWriteFontSet3 *This,
3860         const DWRITE_FONT_PROPERTY *property,
3861         UINT32 *count);
3862 
3863     HRESULT (STDMETHODCALLTYPE *GetMatchingFonts_)(
3864         IDWriteFontSet3 *This,
3865         const WCHAR *family,
3866         DWRITE_FONT_WEIGHT weight,
3867         DWRITE_FONT_STRETCH stretch,
3868         DWRITE_FONT_STYLE style,
3869         IDWriteFontSet **fontset);
3870 
3871     HRESULT (STDMETHODCALLTYPE *GetMatchingFonts)(
3872         IDWriteFontSet3 *This,
3873         const DWRITE_FONT_PROPERTY *props,
3874         UINT32 count,
3875         IDWriteFontSet **fontset);
3876 
3877     /*** IDWriteFontSet1 methods ***/
3878     HRESULT (STDMETHODCALLTYPE *IDWriteFontSet1_GetMatchingFonts)(
3879         IDWriteFontSet3 *This,
3880         const DWRITE_FONT_PROPERTY *property,
3881         const DWRITE_FONT_AXIS_VALUE *axis_values,
3882         UINT32 num_values,
3883         IDWriteFontSet1 **fontset);
3884 
3885     HRESULT (STDMETHODCALLTYPE *GetFirstFontResources)(
3886         IDWriteFontSet3 *This,
3887         IDWriteFontSet1 **fontset);
3888 
3889     HRESULT (STDMETHODCALLTYPE *GetFilteredFonts__)(
3890         IDWriteFontSet3 *This,
3891         const UINT32 *indices,
3892         UINT32 num_indices,
3893         IDWriteFontSet1 **fontset);
3894 
3895     HRESULT (STDMETHODCALLTYPE *GetFilteredFonts_)(
3896         IDWriteFontSet3 *This,
3897         const DWRITE_FONT_AXIS_RANGE *axis_ranges,
3898         UINT32 num_ranges,
3899         WINBOOL select_any_range,
3900         IDWriteFontSet1 **fontset);
3901 
3902     HRESULT (STDMETHODCALLTYPE *GetFilteredFonts)(
3903         IDWriteFontSet3 *This,
3904         const DWRITE_FONT_PROPERTY *props,
3905         UINT32 num_properties,
3906         WINBOOL select_any_property,
3907         IDWriteFontSet1 **fontset);
3908 
3909     HRESULT (STDMETHODCALLTYPE *GetFilteredFontIndices_)(
3910         IDWriteFontSet3 *This,
3911         const DWRITE_FONT_AXIS_RANGE *ranges,
3912         UINT32 num_ranges,
3913         WINBOOL select_any_range,
3914         UINT32 *indices,
3915         UINT32 num_indices,
3916         UINT32 *actual_num_indices);
3917 
3918     HRESULT (STDMETHODCALLTYPE *GetFilteredFontIndices)(
3919         IDWriteFontSet3 *This,
3920         const DWRITE_FONT_PROPERTY *props,
3921         UINT32 num_properties,
3922         WINBOOL select_any_range,
3923         UINT32 *indices,
3924         UINT32 num_indices,
3925         UINT32 *actual_num_indices);
3926 
3927     HRESULT (STDMETHODCALLTYPE *GetFontAxisRanges_)(
3928         IDWriteFontSet3 *This,
3929         UINT32 font_index,
3930         DWRITE_FONT_AXIS_RANGE *axis_ranges,
3931         UINT32 num_ranges,
3932         UINT32 *actual_num_ranges);
3933 
3934     HRESULT (STDMETHODCALLTYPE *GetFontAxisRanges)(
3935         IDWriteFontSet3 *This,
3936         DWRITE_FONT_AXIS_RANGE *axis_ranges,
3937         UINT32 num_ranges,
3938         UINT32 *actual_num_ranges);
3939 
3940     HRESULT (STDMETHODCALLTYPE *IDWriteFontSet1_GetFontFaceReference)(
3941         IDWriteFontSet3 *This,
3942         UINT32 index,
3943         IDWriteFontFaceReference1 **reference);
3944 
3945     HRESULT (STDMETHODCALLTYPE *CreateFontResource)(
3946         IDWriteFontSet3 *This,
3947         UINT32 index,
3948         IDWriteFontResource **resource);
3949 
3950     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
3951         IDWriteFontSet3 *This,
3952         UINT32 index,
3953         IDWriteFontFace5 **fontface);
3954 
3955     DWRITE_LOCALITY (STDMETHODCALLTYPE *GetFontLocality)(
3956         IDWriteFontSet3 *This,
3957         UINT32 index);
3958 
3959     /*** IDWriteFontSet2 methods ***/
3960     HANDLE (STDMETHODCALLTYPE *GetExpirationEvent)(
3961         IDWriteFontSet3 *This);
3962 
3963     /*** IDWriteFontSet3 methods ***/
3964     DWRITE_FONT_SOURCE_TYPE (STDMETHODCALLTYPE *GetFontSourceType)(
3965         IDWriteFontSet3 *This,
3966         UINT32 index);
3967 
3968     UINT32 (STDMETHODCALLTYPE *GetFontSourceNameLength)(
3969         IDWriteFontSet3 *This,
3970         UINT32 index);
3971 
3972     HRESULT (STDMETHODCALLTYPE *GetFontSourceName)(
3973         IDWriteFontSet3 *This,
3974         UINT32 index,
3975         WCHAR *buffer,
3976         UINT32 buffer_size);
3977 
3978     END_INTERFACE
3979 } IDWriteFontSet3Vtbl;
3980 
3981 interface IDWriteFontSet3 {
3982     CONST_VTBL IDWriteFontSet3Vtbl* lpVtbl;
3983 };
3984 
3985 #ifdef COBJMACROS
3986 #ifndef WIDL_C_INLINE_WRAPPERS
3987 /*** IUnknown methods ***/
3988 #define IDWriteFontSet3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3989 #define IDWriteFontSet3_AddRef(This) (This)->lpVtbl->AddRef(This)
3990 #define IDWriteFontSet3_Release(This) (This)->lpVtbl->Release(This)
3991 /*** IDWriteFontSet methods ***/
3992 #define IDWriteFontSet3_GetFontCount(This) (This)->lpVtbl->GetFontCount(This)
3993 #define IDWriteFontSet3_FindFontFaceReference(This,reference,index,exists) (This)->lpVtbl->FindFontFaceReference(This,reference,index,exists)
3994 #define IDWriteFontSet3_FindFontFace(This,fontface,index,exists) (This)->lpVtbl->FindFontFace(This,fontface,index,exists)
3995 #define IDWriteFontSet3_GetPropertyValues__(This,id,values) (This)->lpVtbl->GetPropertyValues__(This,id,values)
3996 #define IDWriteFontSet3_GetPropertyValues_(This,id,preferred_locales,values) (This)->lpVtbl->GetPropertyValues_(This,id,preferred_locales,values)
3997 #define IDWriteFontSet3_GetPropertyValues(This,index,id,exists,values) (This)->lpVtbl->GetPropertyValues(This,index,id,exists,values)
3998 #define IDWriteFontSet3_GetPropertyOccurrenceCount(This,property,count) (This)->lpVtbl->GetPropertyOccurrenceCount(This,property,count)
3999 #define IDWriteFontSet3_GetMatchingFonts_(This,family,weight,stretch,style,fontset) (This)->lpVtbl->GetMatchingFonts_(This,family,weight,stretch,style,fontset)
4000 /*** IDWriteFontSet1 methods ***/
4001 #define IDWriteFontSet3_GetMatchingFonts(This,property,axis_values,num_values,fontset) (This)->lpVtbl->IDWriteFontSet1_GetMatchingFonts(This,property,axis_values,num_values,fontset)
4002 #define IDWriteFontSet3_GetFirstFontResources(This,fontset) (This)->lpVtbl->GetFirstFontResources(This,fontset)
4003 #define IDWriteFontSet3_GetFilteredFonts__(This,indices,num_indices,fontset) (This)->lpVtbl->GetFilteredFonts__(This,indices,num_indices,fontset)
4004 #define IDWriteFontSet3_GetFilteredFonts_(This,axis_ranges,num_ranges,select_any_range,fontset) (This)->lpVtbl->GetFilteredFonts_(This,axis_ranges,num_ranges,select_any_range,fontset)
4005 #define IDWriteFontSet3_GetFilteredFonts(This,props,num_properties,select_any_property,fontset) (This)->lpVtbl->GetFilteredFonts(This,props,num_properties,select_any_property,fontset)
4006 #define IDWriteFontSet3_GetFilteredFontIndices_(This,ranges,num_ranges,select_any_range,indices,num_indices,actual_num_indices) (This)->lpVtbl->GetFilteredFontIndices_(This,ranges,num_ranges,select_any_range,indices,num_indices,actual_num_indices)
4007 #define IDWriteFontSet3_GetFilteredFontIndices(This,props,num_properties,select_any_range,indices,num_indices,actual_num_indices) (This)->lpVtbl->GetFilteredFontIndices(This,props,num_properties,select_any_range,indices,num_indices,actual_num_indices)
4008 #define IDWriteFontSet3_GetFontAxisRanges_(This,font_index,axis_ranges,num_ranges,actual_num_ranges) (This)->lpVtbl->GetFontAxisRanges_(This,font_index,axis_ranges,num_ranges,actual_num_ranges)
4009 #define IDWriteFontSet3_GetFontAxisRanges(This,axis_ranges,num_ranges,actual_num_ranges) (This)->lpVtbl->GetFontAxisRanges(This,axis_ranges,num_ranges,actual_num_ranges)
4010 #define IDWriteFontSet3_GetFontFaceReference(This,index,reference) (This)->lpVtbl->IDWriteFontSet1_GetFontFaceReference(This,index,reference)
4011 #define IDWriteFontSet3_CreateFontResource(This,index,resource) (This)->lpVtbl->CreateFontResource(This,index,resource)
4012 #define IDWriteFontSet3_CreateFontFace(This,index,fontface) (This)->lpVtbl->CreateFontFace(This,index,fontface)
4013 #define IDWriteFontSet3_GetFontLocality(This,index) (This)->lpVtbl->GetFontLocality(This,index)
4014 /*** IDWriteFontSet2 methods ***/
4015 #define IDWriteFontSet3_GetExpirationEvent(This) (This)->lpVtbl->GetExpirationEvent(This)
4016 /*** IDWriteFontSet3 methods ***/
4017 #define IDWriteFontSet3_GetFontSourceType(This,index) (This)->lpVtbl->GetFontSourceType(This,index)
4018 #define IDWriteFontSet3_GetFontSourceNameLength(This,index) (This)->lpVtbl->GetFontSourceNameLength(This,index)
4019 #define IDWriteFontSet3_GetFontSourceName(This,index,buffer,buffer_size) (This)->lpVtbl->GetFontSourceName(This,index,buffer,buffer_size)
4020 #else
4021 /*** IUnknown methods ***/
4022 static FORCEINLINE HRESULT IDWriteFontSet3_QueryInterface(IDWriteFontSet3* This,REFIID riid,void **ppvObject) {
4023     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4024 }
4025 static FORCEINLINE ULONG IDWriteFontSet3_AddRef(IDWriteFontSet3* This) {
4026     return This->lpVtbl->AddRef(This);
4027 }
4028 static FORCEINLINE ULONG IDWriteFontSet3_Release(IDWriteFontSet3* This) {
4029     return This->lpVtbl->Release(This);
4030 }
4031 /*** IDWriteFontSet methods ***/
4032 static FORCEINLINE UINT32 IDWriteFontSet3_GetFontCount(IDWriteFontSet3* This) {
4033     return This->lpVtbl->GetFontCount(This);
4034 }
4035 static FORCEINLINE HRESULT IDWriteFontSet3_FindFontFaceReference(IDWriteFontSet3* This,IDWriteFontFaceReference *reference,UINT32 *index,WINBOOL *exists) {
4036     return This->lpVtbl->FindFontFaceReference(This,reference,index,exists);
4037 }
4038 static FORCEINLINE HRESULT IDWriteFontSet3_FindFontFace(IDWriteFontSet3* This,IDWriteFontFace *fontface,UINT32 *index,WINBOOL *exists) {
4039     return This->lpVtbl->FindFontFace(This,fontface,index,exists);
4040 }
4041 static FORCEINLINE HRESULT IDWriteFontSet3_GetPropertyValues__(IDWriteFontSet3* This,DWRITE_FONT_PROPERTY_ID id,IDWriteStringList **values) {
4042     return This->lpVtbl->GetPropertyValues__(This,id,values);
4043 }
4044 static FORCEINLINE HRESULT IDWriteFontSet3_GetPropertyValues_(IDWriteFontSet3* This,DWRITE_FONT_PROPERTY_ID id,const WCHAR *preferred_locales,IDWriteStringList **values) {
4045     return This->lpVtbl->GetPropertyValues_(This,id,preferred_locales,values);
4046 }
4047 static FORCEINLINE HRESULT IDWriteFontSet3_GetPropertyValues(IDWriteFontSet3* This,UINT32 index,DWRITE_FONT_PROPERTY_ID id,WINBOOL *exists,IDWriteLocalizedStrings **values) {
4048     return This->lpVtbl->GetPropertyValues(This,index,id,exists,values);
4049 }
4050 static FORCEINLINE HRESULT IDWriteFontSet3_GetPropertyOccurrenceCount(IDWriteFontSet3* This,const DWRITE_FONT_PROPERTY *property,UINT32 *count) {
4051     return This->lpVtbl->GetPropertyOccurrenceCount(This,property,count);
4052 }
4053 static FORCEINLINE HRESULT IDWriteFontSet3_GetMatchingFonts_(IDWriteFontSet3* This,const WCHAR *family,DWRITE_FONT_WEIGHT weight,DWRITE_FONT_STRETCH stretch,DWRITE_FONT_STYLE style,IDWriteFontSet **fontset) {
4054     return This->lpVtbl->GetMatchingFonts_(This,family,weight,stretch,style,fontset);
4055 }
4056 /*** IDWriteFontSet1 methods ***/
4057 static FORCEINLINE HRESULT IDWriteFontSet3_GetMatchingFonts(IDWriteFontSet3* This,const DWRITE_FONT_PROPERTY *property,const DWRITE_FONT_AXIS_VALUE *axis_values,UINT32 num_values,IDWriteFontSet1 **fontset) {
4058     return This->lpVtbl->IDWriteFontSet1_GetMatchingFonts(This,property,axis_values,num_values,fontset);
4059 }
4060 static FORCEINLINE HRESULT IDWriteFontSet3_GetFirstFontResources(IDWriteFontSet3* This,IDWriteFontSet1 **fontset) {
4061     return This->lpVtbl->GetFirstFontResources(This,fontset);
4062 }
4063 static FORCEINLINE HRESULT IDWriteFontSet3_GetFilteredFonts__(IDWriteFontSet3* This,const UINT32 *indices,UINT32 num_indices,IDWriteFontSet1 **fontset) {
4064     return This->lpVtbl->GetFilteredFonts__(This,indices,num_indices,fontset);
4065 }
4066 static FORCEINLINE HRESULT IDWriteFontSet3_GetFilteredFonts_(IDWriteFontSet3* This,const DWRITE_FONT_AXIS_RANGE *axis_ranges,UINT32 num_ranges,WINBOOL select_any_range,IDWriteFontSet1 **fontset) {
4067     return This->lpVtbl->GetFilteredFonts_(This,axis_ranges,num_ranges,select_any_range,fontset);
4068 }
4069 static FORCEINLINE HRESULT IDWriteFontSet3_GetFilteredFonts(IDWriteFontSet3* This,const DWRITE_FONT_PROPERTY *props,UINT32 num_properties,WINBOOL select_any_property,IDWriteFontSet1 **fontset) {
4070     return This->lpVtbl->GetFilteredFonts(This,props,num_properties,select_any_property,fontset);
4071 }
4072 static FORCEINLINE HRESULT IDWriteFontSet3_GetFilteredFontIndices_(IDWriteFontSet3* This,const DWRITE_FONT_AXIS_RANGE *ranges,UINT32 num_ranges,WINBOOL select_any_range,UINT32 *indices,UINT32 num_indices,UINT32 *actual_num_indices) {
4073     return This->lpVtbl->GetFilteredFontIndices_(This,ranges,num_ranges,select_any_range,indices,num_indices,actual_num_indices);
4074 }
4075 static FORCEINLINE HRESULT IDWriteFontSet3_GetFilteredFontIndices(IDWriteFontSet3* This,const DWRITE_FONT_PROPERTY *props,UINT32 num_properties,WINBOOL select_any_range,UINT32 *indices,UINT32 num_indices,UINT32 *actual_num_indices) {
4076     return This->lpVtbl->GetFilteredFontIndices(This,props,num_properties,select_any_range,indices,num_indices,actual_num_indices);
4077 }
4078 static FORCEINLINE HRESULT IDWriteFontSet3_GetFontAxisRanges_(IDWriteFontSet3* This,UINT32 font_index,DWRITE_FONT_AXIS_RANGE *axis_ranges,UINT32 num_ranges,UINT32 *actual_num_ranges) {
4079     return This->lpVtbl->GetFontAxisRanges_(This,font_index,axis_ranges,num_ranges,actual_num_ranges);
4080 }
4081 static FORCEINLINE HRESULT IDWriteFontSet3_GetFontAxisRanges(IDWriteFontSet3* This,DWRITE_FONT_AXIS_RANGE *axis_ranges,UINT32 num_ranges,UINT32 *actual_num_ranges) {
4082     return This->lpVtbl->GetFontAxisRanges(This,axis_ranges,num_ranges,actual_num_ranges);
4083 }
4084 static FORCEINLINE HRESULT IDWriteFontSet3_GetFontFaceReference(IDWriteFontSet3* This,UINT32 index,IDWriteFontFaceReference1 **reference) {
4085     return This->lpVtbl->IDWriteFontSet1_GetFontFaceReference(This,index,reference);
4086 }
4087 static FORCEINLINE HRESULT IDWriteFontSet3_CreateFontResource(IDWriteFontSet3* This,UINT32 index,IDWriteFontResource **resource) {
4088     return This->lpVtbl->CreateFontResource(This,index,resource);
4089 }
4090 static FORCEINLINE HRESULT IDWriteFontSet3_CreateFontFace(IDWriteFontSet3* This,UINT32 index,IDWriteFontFace5 **fontface) {
4091     return This->lpVtbl->CreateFontFace(This,index,fontface);
4092 }
4093 static FORCEINLINE DWRITE_LOCALITY IDWriteFontSet3_GetFontLocality(IDWriteFontSet3* This,UINT32 index) {
4094     return This->lpVtbl->GetFontLocality(This,index);
4095 }
4096 /*** IDWriteFontSet2 methods ***/
4097 static FORCEINLINE HANDLE IDWriteFontSet3_GetExpirationEvent(IDWriteFontSet3* This) {
4098     return This->lpVtbl->GetExpirationEvent(This);
4099 }
4100 /*** IDWriteFontSet3 methods ***/
4101 static FORCEINLINE DWRITE_FONT_SOURCE_TYPE IDWriteFontSet3_GetFontSourceType(IDWriteFontSet3* This,UINT32 index) {
4102     return This->lpVtbl->GetFontSourceType(This,index);
4103 }
4104 static FORCEINLINE UINT32 IDWriteFontSet3_GetFontSourceNameLength(IDWriteFontSet3* This,UINT32 index) {
4105     return This->lpVtbl->GetFontSourceNameLength(This,index);
4106 }
4107 static FORCEINLINE HRESULT IDWriteFontSet3_GetFontSourceName(IDWriteFontSet3* This,UINT32 index,WCHAR *buffer,UINT32 buffer_size) {
4108     return This->lpVtbl->GetFontSourceName(This,index,buffer,buffer_size);
4109 }
4110 #endif
4111 #endif
4112 
4113 #endif
4114 
4115 
4116 #endif  /* __IDWriteFontSet3_INTERFACE_DEFINED__ */
4117 
4118 /*****************************************************************************
4119  * IDWriteFontFace3 interface
4120  */
4121 #ifndef __IDWriteFontFace3_INTERFACE_DEFINED__
4122 #define __IDWriteFontFace3_INTERFACE_DEFINED__
4123 
4124 DEFINE_GUID(IID_IDWriteFontFace3, 0xd37d7598, 0x09be, 0x4222, 0xa2,0x36, 0x20,0x81,0x34,0x1c,0xc1,0xf2);
4125 #if defined(__cplusplus) && !defined(CINTERFACE)
4126 MIDL_INTERFACE("d37d7598-09be-4222-a236-2081341cc1f2")
4127 IDWriteFontFace3 : public IDWriteFontFace2
4128 {
4129     virtual HRESULT STDMETHODCALLTYPE GetFontFaceReference(
4130         IDWriteFontFaceReference **reference) = 0;
4131 
4132     virtual void STDMETHODCALLTYPE GetPanose(
4133         DWRITE_PANOSE *panose) = 0;
4134 
4135     virtual DWRITE_FONT_WEIGHT STDMETHODCALLTYPE GetWeight(
4136         ) = 0;
4137 
4138     virtual DWRITE_FONT_STRETCH STDMETHODCALLTYPE GetStretch(
4139         ) = 0;
4140 
4141     virtual DWRITE_FONT_STYLE STDMETHODCALLTYPE GetStyle(
4142         ) = 0;
4143 
4144     virtual HRESULT STDMETHODCALLTYPE GetFamilyNames(
4145         IDWriteLocalizedStrings **names) = 0;
4146 
4147     virtual HRESULT STDMETHODCALLTYPE GetFaceNames(
4148         IDWriteLocalizedStrings **names) = 0;
4149 
4150     virtual HRESULT STDMETHODCALLTYPE GetInformationalStrings(
4151         DWRITE_INFORMATIONAL_STRING_ID stringid,
4152         IDWriteLocalizedStrings **strings,
4153         WINBOOL *exists) = 0;
4154 
4155     virtual WINBOOL STDMETHODCALLTYPE HasCharacter(
4156         UINT32 character) = 0;
4157 
4158     virtual HRESULT STDMETHODCALLTYPE GetRecommendedRenderingMode(
4159         FLOAT emsize,
4160         FLOAT dpi_x,
4161         FLOAT dpi_y,
4162         const DWRITE_MATRIX *transform,
4163         WINBOOL is_sideways,
4164         DWRITE_OUTLINE_THRESHOLD threshold,
4165         DWRITE_MEASURING_MODE measuring_mode,
4166         IDWriteRenderingParams *params,
4167         DWRITE_RENDERING_MODE1 *rendering_mode,
4168         DWRITE_GRID_FIT_MODE *gridfit_mode) = 0;
4169 
4170     virtual WINBOOL STDMETHODCALLTYPE IsCharacterLocal(
4171         UINT32 character) = 0;
4172 
4173     virtual WINBOOL STDMETHODCALLTYPE IsGlyphLocal(
4174         UINT16 glyph) = 0;
4175 
4176     virtual HRESULT STDMETHODCALLTYPE AreCharactersLocal(
4177         const WCHAR *characters,
4178         UINT32 count,
4179         WINBOOL enqueue_if_not,
4180         WINBOOL *are_local) = 0;
4181 
4182     virtual HRESULT STDMETHODCALLTYPE AreGlyphsLocal(
4183         const UINT16 *glyphs,
4184         UINT32 count,
4185         WINBOOL enqueue_if_not,
4186         WINBOOL *are_local) = 0;
4187 
4188 };
4189 #ifdef __CRT_UUID_DECL
4190 __CRT_UUID_DECL(IDWriteFontFace3, 0xd37d7598, 0x09be, 0x4222, 0xa2,0x36, 0x20,0x81,0x34,0x1c,0xc1,0xf2)
4191 #endif
4192 #else
4193 typedef struct IDWriteFontFace3Vtbl {
4194     BEGIN_INTERFACE
4195 
4196     /*** IUnknown methods ***/
4197     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4198         IDWriteFontFace3 *This,
4199         REFIID riid,
4200         void **ppvObject);
4201 
4202     ULONG (STDMETHODCALLTYPE *AddRef)(
4203         IDWriteFontFace3 *This);
4204 
4205     ULONG (STDMETHODCALLTYPE *Release)(
4206         IDWriteFontFace3 *This);
4207 
4208     /*** IDWriteFontFace methods ***/
4209     DWRITE_FONT_FACE_TYPE (STDMETHODCALLTYPE *GetType)(
4210         IDWriteFontFace3 *This);
4211 
4212     HRESULT (STDMETHODCALLTYPE *GetFiles)(
4213         IDWriteFontFace3 *This,
4214         UINT32 *number_of_files,
4215         IDWriteFontFile **fontfiles);
4216 
4217     UINT32 (STDMETHODCALLTYPE *GetIndex)(
4218         IDWriteFontFace3 *This);
4219 
4220     DWRITE_FONT_SIMULATIONS (STDMETHODCALLTYPE *GetSimulations)(
4221         IDWriteFontFace3 *This);
4222 
4223     WINBOOL (STDMETHODCALLTYPE *IsSymbolFont)(
4224         IDWriteFontFace3 *This);
4225 
4226     void (STDMETHODCALLTYPE *GetMetrics)(
4227         IDWriteFontFace3 *This,
4228         DWRITE_FONT_METRICS *metrics);
4229 
4230     UINT16 (STDMETHODCALLTYPE *GetGlyphCount)(
4231         IDWriteFontFace3 *This);
4232 
4233     HRESULT (STDMETHODCALLTYPE *GetDesignGlyphMetrics)(
4234         IDWriteFontFace3 *This,
4235         const UINT16 *glyph_indices,
4236         UINT32 glyph_count,
4237         DWRITE_GLYPH_METRICS *metrics,
4238         WINBOOL is_sideways);
4239 
4240     HRESULT (STDMETHODCALLTYPE *GetGlyphIndices)(
4241         IDWriteFontFace3 *This,
4242         const UINT32 *codepoints,
4243         UINT32 count,
4244         UINT16 *glyph_indices);
4245 
4246     HRESULT (STDMETHODCALLTYPE *TryGetFontTable)(
4247         IDWriteFontFace3 *This,
4248         UINT32 table_tag,
4249         const void **table_data,
4250         UINT32 *table_size,
4251         void **context,
4252         WINBOOL *exists);
4253 
4254     void (STDMETHODCALLTYPE *ReleaseFontTable)(
4255         IDWriteFontFace3 *This,
4256         void *table_context);
4257 
4258     HRESULT (STDMETHODCALLTYPE *GetGlyphRunOutline)(
4259         IDWriteFontFace3 *This,
4260         FLOAT emSize,
4261         const UINT16 *glyph_indices,
4262         const FLOAT *glyph_advances,
4263         const DWRITE_GLYPH_OFFSET *glyph_offsets,
4264         UINT32 glyph_count,
4265         WINBOOL is_sideways,
4266         WINBOOL is_rtl,
4267         IDWriteGeometrySink *geometrysink);
4268 
4269     HRESULT (STDMETHODCALLTYPE *GetRecommendedRenderingMode)(
4270         IDWriteFontFace3 *This,
4271         FLOAT emSize,
4272         FLOAT pixels_per_dip,
4273         DWRITE_MEASURING_MODE mode,
4274         IDWriteRenderingParams *params,
4275         DWRITE_RENDERING_MODE *rendering_mode);
4276 
4277     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleMetrics)(
4278         IDWriteFontFace3 *This,
4279         FLOAT emSize,
4280         FLOAT pixels_per_dip,
4281         const DWRITE_MATRIX *transform,
4282         DWRITE_FONT_METRICS *metrics);
4283 
4284     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleGlyphMetrics)(
4285         IDWriteFontFace3 *This,
4286         FLOAT emSize,
4287         FLOAT pixels_per_dip,
4288         const DWRITE_MATRIX *transform,
4289         WINBOOL use_gdi_natural,
4290         const UINT16 *glyph_indices,
4291         UINT32 glyph_count,
4292         DWRITE_GLYPH_METRICS *metrics,
4293         WINBOOL is_sideways);
4294 
4295     /*** IDWriteFontFace1 methods ***/
4296     void (STDMETHODCALLTYPE *IDWriteFontFace1_GetMetrics)(
4297         IDWriteFontFace3 *This,
4298         DWRITE_FONT_METRICS1 *metrics);
4299 
4300     HRESULT (STDMETHODCALLTYPE *IDWriteFontFace1_GetGdiCompatibleMetrics)(
4301         IDWriteFontFace3 *This,
4302         FLOAT em_size,
4303         FLOAT pixels_per_dip,
4304         const DWRITE_MATRIX *transform,
4305         DWRITE_FONT_METRICS1 *metrics);
4306 
4307     void (STDMETHODCALLTYPE *GetCaretMetrics)(
4308         IDWriteFontFace3 *This,
4309         DWRITE_CARET_METRICS *metrics);
4310 
4311     HRESULT (STDMETHODCALLTYPE *GetUnicodeRanges)(
4312         IDWriteFontFace3 *This,
4313         UINT32 max_count,
4314         DWRITE_UNICODE_RANGE *ranges,
4315         UINT32 *count);
4316 
4317     WINBOOL (STDMETHODCALLTYPE *IsMonospacedFont)(
4318         IDWriteFontFace3 *This);
4319 
4320     HRESULT (STDMETHODCALLTYPE *GetDesignGlyphAdvances)(
4321         IDWriteFontFace3 *This,
4322         UINT32 glyph_count,
4323         const UINT16 *indices,
4324         INT32 *advances,
4325         WINBOOL is_sideways);
4326 
4327     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleGlyphAdvances)(
4328         IDWriteFontFace3 *This,
4329         FLOAT em_size,
4330         FLOAT pixels_per_dip,
4331         const DWRITE_MATRIX *transform,
4332         WINBOOL use_gdi_natural,
4333         WINBOOL is_sideways,
4334         UINT32 glyph_count,
4335         const UINT16 *indices,
4336         INT32 *advances);
4337 
4338     HRESULT (STDMETHODCALLTYPE *GetKerningPairAdjustments)(
4339         IDWriteFontFace3 *This,
4340         UINT32 glyph_count,
4341         const UINT16 *indices,
4342         INT32 *adjustments);
4343 
4344     WINBOOL (STDMETHODCALLTYPE *HasKerningPairs)(
4345         IDWriteFontFace3 *This);
4346 
4347     HRESULT (STDMETHODCALLTYPE *IDWriteFontFace1_GetRecommendedRenderingMode)(
4348         IDWriteFontFace3 *This,
4349         FLOAT font_emsize,
4350         FLOAT dpiX,
4351         FLOAT dpiY,
4352         const DWRITE_MATRIX *transform,
4353         WINBOOL is_sideways,
4354         DWRITE_OUTLINE_THRESHOLD threshold,
4355         DWRITE_MEASURING_MODE measuring_mode,
4356         DWRITE_RENDERING_MODE *rendering_mode);
4357 
4358     HRESULT (STDMETHODCALLTYPE *GetVerticalGlyphVariants)(
4359         IDWriteFontFace3 *This,
4360         UINT32 glyph_count,
4361         const UINT16 *nominal_indices,
4362         UINT16 *vertical_indices);
4363 
4364     WINBOOL (STDMETHODCALLTYPE *HasVerticalGlyphVariants)(
4365         IDWriteFontFace3 *This);
4366 
4367     /*** IDWriteFontFace2 methods ***/
4368     WINBOOL (STDMETHODCALLTYPE *IsColorFont)(
4369         IDWriteFontFace3 *This);
4370 
4371     UINT32 (STDMETHODCALLTYPE *GetColorPaletteCount)(
4372         IDWriteFontFace3 *This);
4373 
4374     UINT32 (STDMETHODCALLTYPE *GetPaletteEntryCount)(
4375         IDWriteFontFace3 *This);
4376 
4377     HRESULT (STDMETHODCALLTYPE *GetPaletteEntries)(
4378         IDWriteFontFace3 *This,
4379         UINT32 palette_index,
4380         UINT32 first_entry_index,
4381         UINT32 entry_count,
4382         DWRITE_COLOR_F *entries);
4383 
4384     HRESULT (STDMETHODCALLTYPE *IDWriteFontFace2_GetRecommendedRenderingMode)(
4385         IDWriteFontFace3 *This,
4386         FLOAT fontEmSize,
4387         FLOAT dpiX,
4388         FLOAT dpiY,
4389         const DWRITE_MATRIX *transform,
4390         WINBOOL is_sideways,
4391         DWRITE_OUTLINE_THRESHOLD threshold,
4392         DWRITE_MEASURING_MODE measuringmode,
4393         IDWriteRenderingParams *params,
4394         DWRITE_RENDERING_MODE *renderingmode,
4395         DWRITE_GRID_FIT_MODE *gridfitmode);
4396 
4397     /*** IDWriteFontFace3 methods ***/
4398     HRESULT (STDMETHODCALLTYPE *GetFontFaceReference)(
4399         IDWriteFontFace3 *This,
4400         IDWriteFontFaceReference **reference);
4401 
4402     void (STDMETHODCALLTYPE *GetPanose)(
4403         IDWriteFontFace3 *This,
4404         DWRITE_PANOSE *panose);
4405 
4406     DWRITE_FONT_WEIGHT (STDMETHODCALLTYPE *GetWeight)(
4407         IDWriteFontFace3 *This);
4408 
4409     DWRITE_FONT_STRETCH (STDMETHODCALLTYPE *GetStretch)(
4410         IDWriteFontFace3 *This);
4411 
4412     DWRITE_FONT_STYLE (STDMETHODCALLTYPE *GetStyle)(
4413         IDWriteFontFace3 *This);
4414 
4415     HRESULT (STDMETHODCALLTYPE *GetFamilyNames)(
4416         IDWriteFontFace3 *This,
4417         IDWriteLocalizedStrings **names);
4418 
4419     HRESULT (STDMETHODCALLTYPE *GetFaceNames)(
4420         IDWriteFontFace3 *This,
4421         IDWriteLocalizedStrings **names);
4422 
4423     HRESULT (STDMETHODCALLTYPE *GetInformationalStrings)(
4424         IDWriteFontFace3 *This,
4425         DWRITE_INFORMATIONAL_STRING_ID stringid,
4426         IDWriteLocalizedStrings **strings,
4427         WINBOOL *exists);
4428 
4429     WINBOOL (STDMETHODCALLTYPE *HasCharacter)(
4430         IDWriteFontFace3 *This,
4431         UINT32 character);
4432 
4433     HRESULT (STDMETHODCALLTYPE *IDWriteFontFace3_GetRecommendedRenderingMode)(
4434         IDWriteFontFace3 *This,
4435         FLOAT emsize,
4436         FLOAT dpi_x,
4437         FLOAT dpi_y,
4438         const DWRITE_MATRIX *transform,
4439         WINBOOL is_sideways,
4440         DWRITE_OUTLINE_THRESHOLD threshold,
4441         DWRITE_MEASURING_MODE measuring_mode,
4442         IDWriteRenderingParams *params,
4443         DWRITE_RENDERING_MODE1 *rendering_mode,
4444         DWRITE_GRID_FIT_MODE *gridfit_mode);
4445 
4446     WINBOOL (STDMETHODCALLTYPE *IsCharacterLocal)(
4447         IDWriteFontFace3 *This,
4448         UINT32 character);
4449 
4450     WINBOOL (STDMETHODCALLTYPE *IsGlyphLocal)(
4451         IDWriteFontFace3 *This,
4452         UINT16 glyph);
4453 
4454     HRESULT (STDMETHODCALLTYPE *AreCharactersLocal)(
4455         IDWriteFontFace3 *This,
4456         const WCHAR *characters,
4457         UINT32 count,
4458         WINBOOL enqueue_if_not,
4459         WINBOOL *are_local);
4460 
4461     HRESULT (STDMETHODCALLTYPE *AreGlyphsLocal)(
4462         IDWriteFontFace3 *This,
4463         const UINT16 *glyphs,
4464         UINT32 count,
4465         WINBOOL enqueue_if_not,
4466         WINBOOL *are_local);
4467 
4468     END_INTERFACE
4469 } IDWriteFontFace3Vtbl;
4470 
4471 interface IDWriteFontFace3 {
4472     CONST_VTBL IDWriteFontFace3Vtbl* lpVtbl;
4473 };
4474 
4475 #ifdef COBJMACROS
4476 #ifndef WIDL_C_INLINE_WRAPPERS
4477 /*** IUnknown methods ***/
4478 #define IDWriteFontFace3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4479 #define IDWriteFontFace3_AddRef(This) (This)->lpVtbl->AddRef(This)
4480 #define IDWriteFontFace3_Release(This) (This)->lpVtbl->Release(This)
4481 /*** IDWriteFontFace methods ***/
4482 #define IDWriteFontFace3_GetType(This) (This)->lpVtbl->GetType(This)
4483 #define IDWriteFontFace3_GetFiles(This,number_of_files,fontfiles) (This)->lpVtbl->GetFiles(This,number_of_files,fontfiles)
4484 #define IDWriteFontFace3_GetIndex(This) (This)->lpVtbl->GetIndex(This)
4485 #define IDWriteFontFace3_GetSimulations(This) (This)->lpVtbl->GetSimulations(This)
4486 #define IDWriteFontFace3_IsSymbolFont(This) (This)->lpVtbl->IsSymbolFont(This)
4487 #define IDWriteFontFace3_GetGlyphCount(This) (This)->lpVtbl->GetGlyphCount(This)
4488 #define IDWriteFontFace3_GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways) (This)->lpVtbl->GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways)
4489 #define IDWriteFontFace3_GetGlyphIndices(This,codepoints,count,glyph_indices) (This)->lpVtbl->GetGlyphIndices(This,codepoints,count,glyph_indices)
4490 #define IDWriteFontFace3_TryGetFontTable(This,table_tag,table_data,table_size,context,exists) (This)->lpVtbl->TryGetFontTable(This,table_tag,table_data,table_size,context,exists)
4491 #define IDWriteFontFace3_ReleaseFontTable(This,table_context) (This)->lpVtbl->ReleaseFontTable(This,table_context)
4492 #define IDWriteFontFace3_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)
4493 #define IDWriteFontFace3_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)
4494 /*** IDWriteFontFace1 methods ***/
4495 #define IDWriteFontFace3_GetMetrics(This,metrics) (This)->lpVtbl->IDWriteFontFace1_GetMetrics(This,metrics)
4496 #define IDWriteFontFace3_GetGdiCompatibleMetrics(This,em_size,pixels_per_dip,transform,metrics) (This)->lpVtbl->IDWriteFontFace1_GetGdiCompatibleMetrics(This,em_size,pixels_per_dip,transform,metrics)
4497 #define IDWriteFontFace3_GetCaretMetrics(This,metrics) (This)->lpVtbl->GetCaretMetrics(This,metrics)
4498 #define IDWriteFontFace3_GetUnicodeRanges(This,max_count,ranges,count) (This)->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count)
4499 #define IDWriteFontFace3_IsMonospacedFont(This) (This)->lpVtbl->IsMonospacedFont(This)
4500 #define IDWriteFontFace3_GetDesignGlyphAdvances(This,glyph_count,indices,advances,is_sideways) (This)->lpVtbl->GetDesignGlyphAdvances(This,glyph_count,indices,advances,is_sideways)
4501 #define IDWriteFontFace3_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)
4502 #define IDWriteFontFace3_GetKerningPairAdjustments(This,glyph_count,indices,adjustments) (This)->lpVtbl->GetKerningPairAdjustments(This,glyph_count,indices,adjustments)
4503 #define IDWriteFontFace3_HasKerningPairs(This) (This)->lpVtbl->HasKerningPairs(This)
4504 #define IDWriteFontFace3_GetVerticalGlyphVariants(This,glyph_count,nominal_indices,vertical_indices) (This)->lpVtbl->GetVerticalGlyphVariants(This,glyph_count,nominal_indices,vertical_indices)
4505 #define IDWriteFontFace3_HasVerticalGlyphVariants(This) (This)->lpVtbl->HasVerticalGlyphVariants(This)
4506 /*** IDWriteFontFace2 methods ***/
4507 #define IDWriteFontFace3_IsColorFont(This) (This)->lpVtbl->IsColorFont(This)
4508 #define IDWriteFontFace3_GetColorPaletteCount(This) (This)->lpVtbl->GetColorPaletteCount(This)
4509 #define IDWriteFontFace3_GetPaletteEntryCount(This) (This)->lpVtbl->GetPaletteEntryCount(This)
4510 #define IDWriteFontFace3_GetPaletteEntries(This,palette_index,first_entry_index,entry_count,entries) (This)->lpVtbl->GetPaletteEntries(This,palette_index,first_entry_index,entry_count,entries)
4511 /*** IDWriteFontFace3 methods ***/
4512 #define IDWriteFontFace3_GetFontFaceReference(This,reference) (This)->lpVtbl->GetFontFaceReference(This,reference)
4513 #define IDWriteFontFace3_GetPanose(This,panose) (This)->lpVtbl->GetPanose(This,panose)
4514 #define IDWriteFontFace3_GetWeight(This) (This)->lpVtbl->GetWeight(This)
4515 #define IDWriteFontFace3_GetStretch(This) (This)->lpVtbl->GetStretch(This)
4516 #define IDWriteFontFace3_GetStyle(This) (This)->lpVtbl->GetStyle(This)
4517 #define IDWriteFontFace3_GetFamilyNames(This,names) (This)->lpVtbl->GetFamilyNames(This,names)
4518 #define IDWriteFontFace3_GetFaceNames(This,names) (This)->lpVtbl->GetFaceNames(This,names)
4519 #define IDWriteFontFace3_GetInformationalStrings(This,stringid,strings,exists) (This)->lpVtbl->GetInformationalStrings(This,stringid,strings,exists)
4520 #define IDWriteFontFace3_HasCharacter(This,character) (This)->lpVtbl->HasCharacter(This,character)
4521 #define IDWriteFontFace3_GetRecommendedRenderingMode(This,emsize,dpi_x,dpi_y,transform,is_sideways,threshold,measuring_mode,params,rendering_mode,gridfit_mode) (This)->lpVtbl->IDWriteFontFace3_GetRecommendedRenderingMode(This,emsize,dpi_x,dpi_y,transform,is_sideways,threshold,measuring_mode,params,rendering_mode,gridfit_mode)
4522 #define IDWriteFontFace3_IsCharacterLocal(This,character) (This)->lpVtbl->IsCharacterLocal(This,character)
4523 #define IDWriteFontFace3_IsGlyphLocal(This,glyph) (This)->lpVtbl->IsGlyphLocal(This,glyph)
4524 #define IDWriteFontFace3_AreCharactersLocal(This,characters,count,enqueue_if_not,are_local) (This)->lpVtbl->AreCharactersLocal(This,characters,count,enqueue_if_not,are_local)
4525 #define IDWriteFontFace3_AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local) (This)->lpVtbl->AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local)
4526 #else
4527 /*** IUnknown methods ***/
4528 static FORCEINLINE HRESULT IDWriteFontFace3_QueryInterface(IDWriteFontFace3* This,REFIID riid,void **ppvObject) {
4529     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4530 }
4531 static FORCEINLINE ULONG IDWriteFontFace3_AddRef(IDWriteFontFace3* This) {
4532     return This->lpVtbl->AddRef(This);
4533 }
4534 static FORCEINLINE ULONG IDWriteFontFace3_Release(IDWriteFontFace3* This) {
4535     return This->lpVtbl->Release(This);
4536 }
4537 /*** IDWriteFontFace methods ***/
4538 static FORCEINLINE DWRITE_FONT_FACE_TYPE IDWriteFontFace3_GetType(IDWriteFontFace3* This) {
4539     return This->lpVtbl->GetType(This);
4540 }
4541 static FORCEINLINE HRESULT IDWriteFontFace3_GetFiles(IDWriteFontFace3* This,UINT32 *number_of_files,IDWriteFontFile **fontfiles) {
4542     return This->lpVtbl->GetFiles(This,number_of_files,fontfiles);
4543 }
4544 static FORCEINLINE UINT32 IDWriteFontFace3_GetIndex(IDWriteFontFace3* This) {
4545     return This->lpVtbl->GetIndex(This);
4546 }
4547 static FORCEINLINE DWRITE_FONT_SIMULATIONS IDWriteFontFace3_GetSimulations(IDWriteFontFace3* This) {
4548     return This->lpVtbl->GetSimulations(This);
4549 }
4550 static FORCEINLINE WINBOOL IDWriteFontFace3_IsSymbolFont(IDWriteFontFace3* This) {
4551     return This->lpVtbl->IsSymbolFont(This);
4552 }
4553 static FORCEINLINE UINT16 IDWriteFontFace3_GetGlyphCount(IDWriteFontFace3* This) {
4554     return This->lpVtbl->GetGlyphCount(This);
4555 }
4556 static FORCEINLINE HRESULT IDWriteFontFace3_GetDesignGlyphMetrics(IDWriteFontFace3* This,const UINT16 *glyph_indices,UINT32 glyph_count,DWRITE_GLYPH_METRICS *metrics,WINBOOL is_sideways) {
4557     return This->lpVtbl->GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways);
4558 }
4559 static FORCEINLINE HRESULT IDWriteFontFace3_GetGlyphIndices(IDWriteFontFace3* This,const UINT32 *codepoints,UINT32 count,UINT16 *glyph_indices) {
4560     return This->lpVtbl->GetGlyphIndices(This,codepoints,count,glyph_indices);
4561 }
4562 static FORCEINLINE HRESULT IDWriteFontFace3_TryGetFontTable(IDWriteFontFace3* This,UINT32 table_tag,const void **table_data,UINT32 *table_size,void **context,WINBOOL *exists) {
4563     return This->lpVtbl->TryGetFontTable(This,table_tag,table_data,table_size,context,exists);
4564 }
4565 static FORCEINLINE void IDWriteFontFace3_ReleaseFontTable(IDWriteFontFace3* This,void *table_context) {
4566     This->lpVtbl->ReleaseFontTable(This,table_context);
4567 }
4568 static FORCEINLINE HRESULT IDWriteFontFace3_GetGlyphRunOutline(IDWriteFontFace3* 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) {
4569     return This->lpVtbl->GetGlyphRunOutline(This,emSize,glyph_indices,glyph_advances,glyph_offsets,glyph_count,is_sideways,is_rtl,geometrysink);
4570 }
4571 static FORCEINLINE HRESULT IDWriteFontFace3_GetGdiCompatibleGlyphMetrics(IDWriteFontFace3* 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) {
4572     return This->lpVtbl->GetGdiCompatibleGlyphMetrics(This,emSize,pixels_per_dip,transform,use_gdi_natural,glyph_indices,glyph_count,metrics,is_sideways);
4573 }
4574 /*** IDWriteFontFace1 methods ***/
4575 static FORCEINLINE void IDWriteFontFace3_GetMetrics(IDWriteFontFace3* This,DWRITE_FONT_METRICS1 *metrics) {
4576     This->lpVtbl->IDWriteFontFace1_GetMetrics(This,metrics);
4577 }
4578 static FORCEINLINE HRESULT IDWriteFontFace3_GetGdiCompatibleMetrics(IDWriteFontFace3* This,FLOAT em_size,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,DWRITE_FONT_METRICS1 *metrics) {
4579     return This->lpVtbl->IDWriteFontFace1_GetGdiCompatibleMetrics(This,em_size,pixels_per_dip,transform,metrics);
4580 }
4581 static FORCEINLINE void IDWriteFontFace3_GetCaretMetrics(IDWriteFontFace3* This,DWRITE_CARET_METRICS *metrics) {
4582     This->lpVtbl->GetCaretMetrics(This,metrics);
4583 }
4584 static FORCEINLINE HRESULT IDWriteFontFace3_GetUnicodeRanges(IDWriteFontFace3* This,UINT32 max_count,DWRITE_UNICODE_RANGE *ranges,UINT32 *count) {
4585     return This->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count);
4586 }
4587 static FORCEINLINE WINBOOL IDWriteFontFace3_IsMonospacedFont(IDWriteFontFace3* This) {
4588     return This->lpVtbl->IsMonospacedFont(This);
4589 }
4590 static FORCEINLINE HRESULT IDWriteFontFace3_GetDesignGlyphAdvances(IDWriteFontFace3* This,UINT32 glyph_count,const UINT16 *indices,INT32 *advances,WINBOOL is_sideways) {
4591     return This->lpVtbl->GetDesignGlyphAdvances(This,glyph_count,indices,advances,is_sideways);
4592 }
4593 static FORCEINLINE HRESULT IDWriteFontFace3_GetGdiCompatibleGlyphAdvances(IDWriteFontFace3* 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) {
4594     return This->lpVtbl->GetGdiCompatibleGlyphAdvances(This,em_size,pixels_per_dip,transform,use_gdi_natural,is_sideways,glyph_count,indices,advances);
4595 }
4596 static FORCEINLINE HRESULT IDWriteFontFace3_GetKerningPairAdjustments(IDWriteFontFace3* This,UINT32 glyph_count,const UINT16 *indices,INT32 *adjustments) {
4597     return This->lpVtbl->GetKerningPairAdjustments(This,glyph_count,indices,adjustments);
4598 }
4599 static FORCEINLINE WINBOOL IDWriteFontFace3_HasKerningPairs(IDWriteFontFace3* This) {
4600     return This->lpVtbl->HasKerningPairs(This);
4601 }
4602 static FORCEINLINE HRESULT IDWriteFontFace3_GetVerticalGlyphVariants(IDWriteFontFace3* This,UINT32 glyph_count,const UINT16 *nominal_indices,UINT16 *vertical_indices) {
4603     return This->lpVtbl->GetVerticalGlyphVariants(This,glyph_count,nominal_indices,vertical_indices);
4604 }
4605 static FORCEINLINE WINBOOL IDWriteFontFace3_HasVerticalGlyphVariants(IDWriteFontFace3* This) {
4606     return This->lpVtbl->HasVerticalGlyphVariants(This);
4607 }
4608 /*** IDWriteFontFace2 methods ***/
4609 static FORCEINLINE WINBOOL IDWriteFontFace3_IsColorFont(IDWriteFontFace3* This) {
4610     return This->lpVtbl->IsColorFont(This);
4611 }
4612 static FORCEINLINE UINT32 IDWriteFontFace3_GetColorPaletteCount(IDWriteFontFace3* This) {
4613     return This->lpVtbl->GetColorPaletteCount(This);
4614 }
4615 static FORCEINLINE UINT32 IDWriteFontFace3_GetPaletteEntryCount(IDWriteFontFace3* This) {
4616     return This->lpVtbl->GetPaletteEntryCount(This);
4617 }
4618 static FORCEINLINE HRESULT IDWriteFontFace3_GetPaletteEntries(IDWriteFontFace3* This,UINT32 palette_index,UINT32 first_entry_index,UINT32 entry_count,DWRITE_COLOR_F *entries) {
4619     return This->lpVtbl->GetPaletteEntries(This,palette_index,first_entry_index,entry_count,entries);
4620 }
4621 /*** IDWriteFontFace3 methods ***/
4622 static FORCEINLINE HRESULT IDWriteFontFace3_GetFontFaceReference(IDWriteFontFace3* This,IDWriteFontFaceReference **reference) {
4623     return This->lpVtbl->GetFontFaceReference(This,reference);
4624 }
4625 static FORCEINLINE void IDWriteFontFace3_GetPanose(IDWriteFontFace3* This,DWRITE_PANOSE *panose) {
4626     This->lpVtbl->GetPanose(This,panose);
4627 }
4628 static FORCEINLINE DWRITE_FONT_WEIGHT IDWriteFontFace3_GetWeight(IDWriteFontFace3* This) {
4629     return This->lpVtbl->GetWeight(This);
4630 }
4631 static FORCEINLINE DWRITE_FONT_STRETCH IDWriteFontFace3_GetStretch(IDWriteFontFace3* This) {
4632     return This->lpVtbl->GetStretch(This);
4633 }
4634 static FORCEINLINE DWRITE_FONT_STYLE IDWriteFontFace3_GetStyle(IDWriteFontFace3* This) {
4635     return This->lpVtbl->GetStyle(This);
4636 }
4637 static FORCEINLINE HRESULT IDWriteFontFace3_GetFamilyNames(IDWriteFontFace3* This,IDWriteLocalizedStrings **names) {
4638     return This->lpVtbl->GetFamilyNames(This,names);
4639 }
4640 static FORCEINLINE HRESULT IDWriteFontFace3_GetFaceNames(IDWriteFontFace3* This,IDWriteLocalizedStrings **names) {
4641     return This->lpVtbl->GetFaceNames(This,names);
4642 }
4643 static FORCEINLINE HRESULT IDWriteFontFace3_GetInformationalStrings(IDWriteFontFace3* This,DWRITE_INFORMATIONAL_STRING_ID stringid,IDWriteLocalizedStrings **strings,WINBOOL *exists) {
4644     return This->lpVtbl->GetInformationalStrings(This,stringid,strings,exists);
4645 }
4646 static FORCEINLINE WINBOOL IDWriteFontFace3_HasCharacter(IDWriteFontFace3* This,UINT32 character) {
4647     return This->lpVtbl->HasCharacter(This,character);
4648 }
4649 static FORCEINLINE HRESULT IDWriteFontFace3_GetRecommendedRenderingMode(IDWriteFontFace3* This,FLOAT emsize,FLOAT dpi_x,FLOAT dpi_y,const DWRITE_MATRIX *transform,WINBOOL is_sideways,DWRITE_OUTLINE_THRESHOLD threshold,DWRITE_MEASURING_MODE measuring_mode,IDWriteRenderingParams *params,DWRITE_RENDERING_MODE1 *rendering_mode,DWRITE_GRID_FIT_MODE *gridfit_mode) {
4650     return This->lpVtbl->IDWriteFontFace3_GetRecommendedRenderingMode(This,emsize,dpi_x,dpi_y,transform,is_sideways,threshold,measuring_mode,params,rendering_mode,gridfit_mode);
4651 }
4652 static FORCEINLINE WINBOOL IDWriteFontFace3_IsCharacterLocal(IDWriteFontFace3* This,UINT32 character) {
4653     return This->lpVtbl->IsCharacterLocal(This,character);
4654 }
4655 static FORCEINLINE WINBOOL IDWriteFontFace3_IsGlyphLocal(IDWriteFontFace3* This,UINT16 glyph) {
4656     return This->lpVtbl->IsGlyphLocal(This,glyph);
4657 }
4658 static FORCEINLINE HRESULT IDWriteFontFace3_AreCharactersLocal(IDWriteFontFace3* This,const WCHAR *characters,UINT32 count,WINBOOL enqueue_if_not,WINBOOL *are_local) {
4659     return This->lpVtbl->AreCharactersLocal(This,characters,count,enqueue_if_not,are_local);
4660 }
4661 static FORCEINLINE HRESULT IDWriteFontFace3_AreGlyphsLocal(IDWriteFontFace3* This,const UINT16 *glyphs,UINT32 count,WINBOOL enqueue_if_not,WINBOOL *are_local) {
4662     return This->lpVtbl->AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local);
4663 }
4664 #endif
4665 #endif
4666 
4667 #endif
4668 
4669 
4670 #endif  /* __IDWriteFontFace3_INTERFACE_DEFINED__ */
4671 
4672 typedef struct DWRITE_LINE_METRICS1 {
4673     UINT32 length;
4674     UINT32 trailingWhitespaceLength;
4675     UINT32 newlineLength;
4676     FLOAT height;
4677     FLOAT baseline;
4678     WINBOOL isTrimmed;
4679     FLOAT leadingBefore;
4680     FLOAT leadingAfter;
4681 } DWRITE_LINE_METRICS1;
4682 typedef enum DWRITE_FONT_LINE_GAP_USAGE {
4683     DWRITE_FONT_LINE_GAP_USAGE_DEFAULT = 0,
4684     DWRITE_FONT_LINE_GAP_USAGE_DISABLED = 1,
4685     DWRITE_FONT_LINE_GAP_USAGE_ENABLED = 2
4686 } DWRITE_FONT_LINE_GAP_USAGE;
4687 typedef struct DWRITE_LINE_SPACING {
4688     DWRITE_LINE_SPACING_METHOD method;
4689     FLOAT height;
4690     FLOAT baseline;
4691     FLOAT leadingBefore;
4692     DWRITE_FONT_LINE_GAP_USAGE fontLineGapUsage;
4693 } DWRITE_LINE_SPACING;
4694 /*****************************************************************************
4695  * IDWriteTextFormat2 interface
4696  */
4697 #ifndef __IDWriteTextFormat2_INTERFACE_DEFINED__
4698 #define __IDWriteTextFormat2_INTERFACE_DEFINED__
4699 
4700 DEFINE_GUID(IID_IDWriteTextFormat2, 0xf67e0edd, 0x9e3d, 0x4ecc, 0x8c,0x32, 0x41,0x83,0x25,0x3d,0xfe,0x70);
4701 #if defined(__cplusplus) && !defined(CINTERFACE)
4702 MIDL_INTERFACE("f67e0edd-9e3d-4ecc-8c32-4183253dfe70")
4703 IDWriteTextFormat2 : public IDWriteTextFormat1
4704 {
4705     virtual HRESULT STDMETHODCALLTYPE SetLineSpacing(
4706         const DWRITE_LINE_SPACING *spacing) = 0;
4707 
4708     virtual HRESULT STDMETHODCALLTYPE GetLineSpacing(
4709         DWRITE_LINE_SPACING *spacing) = 0;
4710 
4711 };
4712 #ifdef __CRT_UUID_DECL
4713 __CRT_UUID_DECL(IDWriteTextFormat2, 0xf67e0edd, 0x9e3d, 0x4ecc, 0x8c,0x32, 0x41,0x83,0x25,0x3d,0xfe,0x70)
4714 #endif
4715 #else
4716 typedef struct IDWriteTextFormat2Vtbl {
4717     BEGIN_INTERFACE
4718 
4719     /*** IUnknown methods ***/
4720     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4721         IDWriteTextFormat2 *This,
4722         REFIID riid,
4723         void **ppvObject);
4724 
4725     ULONG (STDMETHODCALLTYPE *AddRef)(
4726         IDWriteTextFormat2 *This);
4727 
4728     ULONG (STDMETHODCALLTYPE *Release)(
4729         IDWriteTextFormat2 *This);
4730 
4731     /*** IDWriteTextFormat methods ***/
4732     HRESULT (STDMETHODCALLTYPE *SetTextAlignment)(
4733         IDWriteTextFormat2 *This,
4734         DWRITE_TEXT_ALIGNMENT alignment);
4735 
4736     HRESULT (STDMETHODCALLTYPE *SetParagraphAlignment)(
4737         IDWriteTextFormat2 *This,
4738         DWRITE_PARAGRAPH_ALIGNMENT alignment);
4739 
4740     HRESULT (STDMETHODCALLTYPE *SetWordWrapping)(
4741         IDWriteTextFormat2 *This,
4742         DWRITE_WORD_WRAPPING wrapping);
4743 
4744     HRESULT (STDMETHODCALLTYPE *SetReadingDirection)(
4745         IDWriteTextFormat2 *This,
4746         DWRITE_READING_DIRECTION direction);
4747 
4748     HRESULT (STDMETHODCALLTYPE *SetFlowDirection)(
4749         IDWriteTextFormat2 *This,
4750         DWRITE_FLOW_DIRECTION direction);
4751 
4752     HRESULT (STDMETHODCALLTYPE *SetIncrementalTabStop)(
4753         IDWriteTextFormat2 *This,
4754         FLOAT tabstop);
4755 
4756     HRESULT (STDMETHODCALLTYPE *SetTrimming)(
4757         IDWriteTextFormat2 *This,
4758         const DWRITE_TRIMMING *trimming,
4759         IDWriteInlineObject *trimming_sign);
4760 
4761     HRESULT (STDMETHODCALLTYPE *SetLineSpacing)(
4762         IDWriteTextFormat2 *This,
4763         DWRITE_LINE_SPACING_METHOD spacing,
4764         FLOAT line_spacing,
4765         FLOAT baseline);
4766 
4767     DWRITE_TEXT_ALIGNMENT (STDMETHODCALLTYPE *GetTextAlignment)(
4768         IDWriteTextFormat2 *This);
4769 
4770     DWRITE_PARAGRAPH_ALIGNMENT (STDMETHODCALLTYPE *GetParagraphAlignment)(
4771         IDWriteTextFormat2 *This);
4772 
4773     DWRITE_WORD_WRAPPING (STDMETHODCALLTYPE *GetWordWrapping)(
4774         IDWriteTextFormat2 *This);
4775 
4776     DWRITE_READING_DIRECTION (STDMETHODCALLTYPE *GetReadingDirection)(
4777         IDWriteTextFormat2 *This);
4778 
4779     DWRITE_FLOW_DIRECTION (STDMETHODCALLTYPE *GetFlowDirection)(
4780         IDWriteTextFormat2 *This);
4781 
4782     FLOAT (STDMETHODCALLTYPE *GetIncrementalTabStop)(
4783         IDWriteTextFormat2 *This);
4784 
4785     HRESULT (STDMETHODCALLTYPE *GetTrimming)(
4786         IDWriteTextFormat2 *This,
4787         DWRITE_TRIMMING *options,
4788         IDWriteInlineObject **trimming_sign);
4789 
4790     HRESULT (STDMETHODCALLTYPE *GetLineSpacing)(
4791         IDWriteTextFormat2 *This,
4792         DWRITE_LINE_SPACING_METHOD *method,
4793         FLOAT *spacing,
4794         FLOAT *baseline);
4795 
4796     HRESULT (STDMETHODCALLTYPE *GetFontCollection)(
4797         IDWriteTextFormat2 *This,
4798         IDWriteFontCollection **collection);
4799 
4800     UINT32 (STDMETHODCALLTYPE *GetFontFamilyNameLength)(
4801         IDWriteTextFormat2 *This);
4802 
4803     HRESULT (STDMETHODCALLTYPE *GetFontFamilyName)(
4804         IDWriteTextFormat2 *This,
4805         WCHAR *name,
4806         UINT32 size);
4807 
4808     DWRITE_FONT_WEIGHT (STDMETHODCALLTYPE *GetFontWeight)(
4809         IDWriteTextFormat2 *This);
4810 
4811     DWRITE_FONT_STYLE (STDMETHODCALLTYPE *GetFontStyle)(
4812         IDWriteTextFormat2 *This);
4813 
4814     DWRITE_FONT_STRETCH (STDMETHODCALLTYPE *GetFontStretch)(
4815         IDWriteTextFormat2 *This);
4816 
4817     FLOAT (STDMETHODCALLTYPE *GetFontSize)(
4818         IDWriteTextFormat2 *This);
4819 
4820     UINT32 (STDMETHODCALLTYPE *GetLocaleNameLength)(
4821         IDWriteTextFormat2 *This);
4822 
4823     HRESULT (STDMETHODCALLTYPE *GetLocaleName)(
4824         IDWriteTextFormat2 *This,
4825         WCHAR *name,
4826         UINT32 size);
4827 
4828     /*** IDWriteTextFormat1 methods ***/
4829     HRESULT (STDMETHODCALLTYPE *SetVerticalGlyphOrientation)(
4830         IDWriteTextFormat2 *This,
4831         DWRITE_VERTICAL_GLYPH_ORIENTATION orientation);
4832 
4833     DWRITE_VERTICAL_GLYPH_ORIENTATION (STDMETHODCALLTYPE *GetVerticalGlyphOrientation)(
4834         IDWriteTextFormat2 *This);
4835 
4836     HRESULT (STDMETHODCALLTYPE *SetLastLineWrapping)(
4837         IDWriteTextFormat2 *This,
4838         WINBOOL lastline_wrapping_enabled);
4839 
4840     WINBOOL (STDMETHODCALLTYPE *GetLastLineWrapping)(
4841         IDWriteTextFormat2 *This);
4842 
4843     HRESULT (STDMETHODCALLTYPE *SetOpticalAlignment)(
4844         IDWriteTextFormat2 *This,
4845         DWRITE_OPTICAL_ALIGNMENT alignment);
4846 
4847     DWRITE_OPTICAL_ALIGNMENT (STDMETHODCALLTYPE *GetOpticalAlignment)(
4848         IDWriteTextFormat2 *This);
4849 
4850     HRESULT (STDMETHODCALLTYPE *SetFontFallback)(
4851         IDWriteTextFormat2 *This,
4852         IDWriteFontFallback *fallback);
4853 
4854     HRESULT (STDMETHODCALLTYPE *GetFontFallback)(
4855         IDWriteTextFormat2 *This,
4856         IDWriteFontFallback **fallback);
4857 
4858     /*** IDWriteTextFormat2 methods ***/
4859     HRESULT (STDMETHODCALLTYPE *IDWriteTextFormat2_SetLineSpacing)(
4860         IDWriteTextFormat2 *This,
4861         const DWRITE_LINE_SPACING *spacing);
4862 
4863     HRESULT (STDMETHODCALLTYPE *IDWriteTextFormat2_GetLineSpacing)(
4864         IDWriteTextFormat2 *This,
4865         DWRITE_LINE_SPACING *spacing);
4866 
4867     END_INTERFACE
4868 } IDWriteTextFormat2Vtbl;
4869 
4870 interface IDWriteTextFormat2 {
4871     CONST_VTBL IDWriteTextFormat2Vtbl* lpVtbl;
4872 };
4873 
4874 #ifdef COBJMACROS
4875 #ifndef WIDL_C_INLINE_WRAPPERS
4876 /*** IUnknown methods ***/
4877 #define IDWriteTextFormat2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4878 #define IDWriteTextFormat2_AddRef(This) (This)->lpVtbl->AddRef(This)
4879 #define IDWriteTextFormat2_Release(This) (This)->lpVtbl->Release(This)
4880 /*** IDWriteTextFormat methods ***/
4881 #define IDWriteTextFormat2_SetTextAlignment(This,alignment) (This)->lpVtbl->SetTextAlignment(This,alignment)
4882 #define IDWriteTextFormat2_SetParagraphAlignment(This,alignment) (This)->lpVtbl->SetParagraphAlignment(This,alignment)
4883 #define IDWriteTextFormat2_SetWordWrapping(This,wrapping) (This)->lpVtbl->SetWordWrapping(This,wrapping)
4884 #define IDWriteTextFormat2_SetReadingDirection(This,direction) (This)->lpVtbl->SetReadingDirection(This,direction)
4885 #define IDWriteTextFormat2_SetFlowDirection(This,direction) (This)->lpVtbl->SetFlowDirection(This,direction)
4886 #define IDWriteTextFormat2_SetIncrementalTabStop(This,tabstop) (This)->lpVtbl->SetIncrementalTabStop(This,tabstop)
4887 #define IDWriteTextFormat2_SetTrimming(This,trimming,trimming_sign) (This)->lpVtbl->SetTrimming(This,trimming,trimming_sign)
4888 #define IDWriteTextFormat2_GetTextAlignment(This) (This)->lpVtbl->GetTextAlignment(This)
4889 #define IDWriteTextFormat2_GetParagraphAlignment(This) (This)->lpVtbl->GetParagraphAlignment(This)
4890 #define IDWriteTextFormat2_GetWordWrapping(This) (This)->lpVtbl->GetWordWrapping(This)
4891 #define IDWriteTextFormat2_GetReadingDirection(This) (This)->lpVtbl->GetReadingDirection(This)
4892 #define IDWriteTextFormat2_GetFlowDirection(This) (This)->lpVtbl->GetFlowDirection(This)
4893 #define IDWriteTextFormat2_GetIncrementalTabStop(This) (This)->lpVtbl->GetIncrementalTabStop(This)
4894 #define IDWriteTextFormat2_GetTrimming(This,options,trimming_sign) (This)->lpVtbl->GetTrimming(This,options,trimming_sign)
4895 #define IDWriteTextFormat2_GetFontCollection(This,collection) (This)->lpVtbl->GetFontCollection(This,collection)
4896 #define IDWriteTextFormat2_GetFontFamilyNameLength(This) (This)->lpVtbl->GetFontFamilyNameLength(This)
4897 #define IDWriteTextFormat2_GetFontFamilyName(This,name,size) (This)->lpVtbl->GetFontFamilyName(This,name,size)
4898 #define IDWriteTextFormat2_GetFontWeight(This) (This)->lpVtbl->GetFontWeight(This)
4899 #define IDWriteTextFormat2_GetFontStyle(This) (This)->lpVtbl->GetFontStyle(This)
4900 #define IDWriteTextFormat2_GetFontStretch(This) (This)->lpVtbl->GetFontStretch(This)
4901 #define IDWriteTextFormat2_GetFontSize(This) (This)->lpVtbl->GetFontSize(This)
4902 #define IDWriteTextFormat2_GetLocaleNameLength(This) (This)->lpVtbl->GetLocaleNameLength(This)
4903 #define IDWriteTextFormat2_GetLocaleName(This,name,size) (This)->lpVtbl->GetLocaleName(This,name,size)
4904 /*** IDWriteTextFormat1 methods ***/
4905 #define IDWriteTextFormat2_SetVerticalGlyphOrientation(This,orientation) (This)->lpVtbl->SetVerticalGlyphOrientation(This,orientation)
4906 #define IDWriteTextFormat2_GetVerticalGlyphOrientation(This) (This)->lpVtbl->GetVerticalGlyphOrientation(This)
4907 #define IDWriteTextFormat2_SetLastLineWrapping(This,lastline_wrapping_enabled) (This)->lpVtbl->SetLastLineWrapping(This,lastline_wrapping_enabled)
4908 #define IDWriteTextFormat2_GetLastLineWrapping(This) (This)->lpVtbl->GetLastLineWrapping(This)
4909 #define IDWriteTextFormat2_SetOpticalAlignment(This,alignment) (This)->lpVtbl->SetOpticalAlignment(This,alignment)
4910 #define IDWriteTextFormat2_GetOpticalAlignment(This) (This)->lpVtbl->GetOpticalAlignment(This)
4911 #define IDWriteTextFormat2_SetFontFallback(This,fallback) (This)->lpVtbl->SetFontFallback(This,fallback)
4912 #define IDWriteTextFormat2_GetFontFallback(This,fallback) (This)->lpVtbl->GetFontFallback(This,fallback)
4913 /*** IDWriteTextFormat2 methods ***/
4914 #define IDWriteTextFormat2_SetLineSpacing(This,spacing) (This)->lpVtbl->IDWriteTextFormat2_SetLineSpacing(This,spacing)
4915 #define IDWriteTextFormat2_GetLineSpacing(This,spacing) (This)->lpVtbl->IDWriteTextFormat2_GetLineSpacing(This,spacing)
4916 #else
4917 /*** IUnknown methods ***/
4918 static FORCEINLINE HRESULT IDWriteTextFormat2_QueryInterface(IDWriteTextFormat2* This,REFIID riid,void **ppvObject) {
4919     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4920 }
4921 static FORCEINLINE ULONG IDWriteTextFormat2_AddRef(IDWriteTextFormat2* This) {
4922     return This->lpVtbl->AddRef(This);
4923 }
4924 static FORCEINLINE ULONG IDWriteTextFormat2_Release(IDWriteTextFormat2* This) {
4925     return This->lpVtbl->Release(This);
4926 }
4927 /*** IDWriteTextFormat methods ***/
4928 static FORCEINLINE HRESULT IDWriteTextFormat2_SetTextAlignment(IDWriteTextFormat2* This,DWRITE_TEXT_ALIGNMENT alignment) {
4929     return This->lpVtbl->SetTextAlignment(This,alignment);
4930 }
4931 static FORCEINLINE HRESULT IDWriteTextFormat2_SetParagraphAlignment(IDWriteTextFormat2* This,DWRITE_PARAGRAPH_ALIGNMENT alignment) {
4932     return This->lpVtbl->SetParagraphAlignment(This,alignment);
4933 }
4934 static FORCEINLINE HRESULT IDWriteTextFormat2_SetWordWrapping(IDWriteTextFormat2* This,DWRITE_WORD_WRAPPING wrapping) {
4935     return This->lpVtbl->SetWordWrapping(This,wrapping);
4936 }
4937 static FORCEINLINE HRESULT IDWriteTextFormat2_SetReadingDirection(IDWriteTextFormat2* This,DWRITE_READING_DIRECTION direction) {
4938     return This->lpVtbl->SetReadingDirection(This,direction);
4939 }
4940 static FORCEINLINE HRESULT IDWriteTextFormat2_SetFlowDirection(IDWriteTextFormat2* This,DWRITE_FLOW_DIRECTION direction) {
4941     return This->lpVtbl->SetFlowDirection(This,direction);
4942 }
4943 static FORCEINLINE HRESULT IDWriteTextFormat2_SetIncrementalTabStop(IDWriteTextFormat2* This,FLOAT tabstop) {
4944     return This->lpVtbl->SetIncrementalTabStop(This,tabstop);
4945 }
4946 static FORCEINLINE HRESULT IDWriteTextFormat2_SetTrimming(IDWriteTextFormat2* This,const DWRITE_TRIMMING *trimming,IDWriteInlineObject *trimming_sign) {
4947     return This->lpVtbl->SetTrimming(This,trimming,trimming_sign);
4948 }
4949 static FORCEINLINE DWRITE_TEXT_ALIGNMENT IDWriteTextFormat2_GetTextAlignment(IDWriteTextFormat2* This) {
4950     return This->lpVtbl->GetTextAlignment(This);
4951 }
4952 static FORCEINLINE DWRITE_PARAGRAPH_ALIGNMENT IDWriteTextFormat2_GetParagraphAlignment(IDWriteTextFormat2* This) {
4953     return This->lpVtbl->GetParagraphAlignment(This);
4954 }
4955 static FORCEINLINE DWRITE_WORD_WRAPPING IDWriteTextFormat2_GetWordWrapping(IDWriteTextFormat2* This) {
4956     return This->lpVtbl->GetWordWrapping(This);
4957 }
4958 static FORCEINLINE DWRITE_READING_DIRECTION IDWriteTextFormat2_GetReadingDirection(IDWriteTextFormat2* This) {
4959     return This->lpVtbl->GetReadingDirection(This);
4960 }
4961 static FORCEINLINE DWRITE_FLOW_DIRECTION IDWriteTextFormat2_GetFlowDirection(IDWriteTextFormat2* This) {
4962     return This->lpVtbl->GetFlowDirection(This);
4963 }
4964 static FORCEINLINE FLOAT IDWriteTextFormat2_GetIncrementalTabStop(IDWriteTextFormat2* This) {
4965     return This->lpVtbl->GetIncrementalTabStop(This);
4966 }
4967 static FORCEINLINE HRESULT IDWriteTextFormat2_GetTrimming(IDWriteTextFormat2* This,DWRITE_TRIMMING *options,IDWriteInlineObject **trimming_sign) {
4968     return This->lpVtbl->GetTrimming(This,options,trimming_sign);
4969 }
4970 static FORCEINLINE HRESULT IDWriteTextFormat2_GetFontCollection(IDWriteTextFormat2* This,IDWriteFontCollection **collection) {
4971     return This->lpVtbl->GetFontCollection(This,collection);
4972 }
4973 static FORCEINLINE UINT32 IDWriteTextFormat2_GetFontFamilyNameLength(IDWriteTextFormat2* This) {
4974     return This->lpVtbl->GetFontFamilyNameLength(This);
4975 }
4976 static FORCEINLINE HRESULT IDWriteTextFormat2_GetFontFamilyName(IDWriteTextFormat2* This,WCHAR *name,UINT32 size) {
4977     return This->lpVtbl->GetFontFamilyName(This,name,size);
4978 }
4979 static FORCEINLINE DWRITE_FONT_WEIGHT IDWriteTextFormat2_GetFontWeight(IDWriteTextFormat2* This) {
4980     return This->lpVtbl->GetFontWeight(This);
4981 }
4982 static FORCEINLINE DWRITE_FONT_STYLE IDWriteTextFormat2_GetFontStyle(IDWriteTextFormat2* This) {
4983     return This->lpVtbl->GetFontStyle(This);
4984 }
4985 static FORCEINLINE DWRITE_FONT_STRETCH IDWriteTextFormat2_GetFontStretch(IDWriteTextFormat2* This) {
4986     return This->lpVtbl->GetFontStretch(This);
4987 }
4988 static FORCEINLINE FLOAT IDWriteTextFormat2_GetFontSize(IDWriteTextFormat2* This) {
4989     return This->lpVtbl->GetFontSize(This);
4990 }
4991 static FORCEINLINE UINT32 IDWriteTextFormat2_GetLocaleNameLength(IDWriteTextFormat2* This) {
4992     return This->lpVtbl->GetLocaleNameLength(This);
4993 }
4994 static FORCEINLINE HRESULT IDWriteTextFormat2_GetLocaleName(IDWriteTextFormat2* This,WCHAR *name,UINT32 size) {
4995     return This->lpVtbl->GetLocaleName(This,name,size);
4996 }
4997 /*** IDWriteTextFormat1 methods ***/
4998 static FORCEINLINE HRESULT IDWriteTextFormat2_SetVerticalGlyphOrientation(IDWriteTextFormat2* This,DWRITE_VERTICAL_GLYPH_ORIENTATION orientation) {
4999     return This->lpVtbl->SetVerticalGlyphOrientation(This,orientation);
5000 }
5001 static FORCEINLINE DWRITE_VERTICAL_GLYPH_ORIENTATION IDWriteTextFormat2_GetVerticalGlyphOrientation(IDWriteTextFormat2* This) {
5002     return This->lpVtbl->GetVerticalGlyphOrientation(This);
5003 }
5004 static FORCEINLINE HRESULT IDWriteTextFormat2_SetLastLineWrapping(IDWriteTextFormat2* This,WINBOOL lastline_wrapping_enabled) {
5005     return This->lpVtbl->SetLastLineWrapping(This,lastline_wrapping_enabled);
5006 }
5007 static FORCEINLINE WINBOOL IDWriteTextFormat2_GetLastLineWrapping(IDWriteTextFormat2* This) {
5008     return This->lpVtbl->GetLastLineWrapping(This);
5009 }
5010 static FORCEINLINE HRESULT IDWriteTextFormat2_SetOpticalAlignment(IDWriteTextFormat2* This,DWRITE_OPTICAL_ALIGNMENT alignment) {
5011     return This->lpVtbl->SetOpticalAlignment(This,alignment);
5012 }
5013 static FORCEINLINE DWRITE_OPTICAL_ALIGNMENT IDWriteTextFormat2_GetOpticalAlignment(IDWriteTextFormat2* This) {
5014     return This->lpVtbl->GetOpticalAlignment(This);
5015 }
5016 static FORCEINLINE HRESULT IDWriteTextFormat2_SetFontFallback(IDWriteTextFormat2* This,IDWriteFontFallback *fallback) {
5017     return This->lpVtbl->SetFontFallback(This,fallback);
5018 }
5019 static FORCEINLINE HRESULT IDWriteTextFormat2_GetFontFallback(IDWriteTextFormat2* This,IDWriteFontFallback **fallback) {
5020     return This->lpVtbl->GetFontFallback(This,fallback);
5021 }
5022 /*** IDWriteTextFormat2 methods ***/
5023 static FORCEINLINE HRESULT IDWriteTextFormat2_SetLineSpacing(IDWriteTextFormat2* This,const DWRITE_LINE_SPACING *spacing) {
5024     return This->lpVtbl->IDWriteTextFormat2_SetLineSpacing(This,spacing);
5025 }
5026 static FORCEINLINE HRESULT IDWriteTextFormat2_GetLineSpacing(IDWriteTextFormat2* This,DWRITE_LINE_SPACING *spacing) {
5027     return This->lpVtbl->IDWriteTextFormat2_GetLineSpacing(This,spacing);
5028 }
5029 #endif
5030 #endif
5031 
5032 #endif
5033 
5034 
5035 #endif  /* __IDWriteTextFormat2_INTERFACE_DEFINED__ */
5036 
5037 /*****************************************************************************
5038  * IDWriteTextFormat3 interface
5039  */
5040 #ifndef __IDWriteTextFormat3_INTERFACE_DEFINED__
5041 #define __IDWriteTextFormat3_INTERFACE_DEFINED__
5042 
5043 DEFINE_GUID(IID_IDWriteTextFormat3, 0x6d3b5641, 0xe550, 0x430d, 0xa8,0x5b, 0xb7,0xbf,0x48,0xa9,0x34,0x27);
5044 #if defined(__cplusplus) && !defined(CINTERFACE)
5045 MIDL_INTERFACE("6d3b5641-e550-430d-a85b-b7bf48a93427")
5046 IDWriteTextFormat3 : public IDWriteTextFormat2
5047 {
5048     virtual HRESULT STDMETHODCALLTYPE SetFontAxisValues(
5049         const DWRITE_FONT_AXIS_VALUE *axis_values,
5050         UINT32 num_values) = 0;
5051 
5052     virtual UINT32 STDMETHODCALLTYPE GetFontAxisValueCount(
5053         ) = 0;
5054 
5055     virtual HRESULT STDMETHODCALLTYPE GetFontAxisValues(
5056         DWRITE_FONT_AXIS_VALUE *axis_values,
5057         UINT32 num_values) = 0;
5058 
5059     virtual DWRITE_AUTOMATIC_FONT_AXES STDMETHODCALLTYPE GetAutomaticFontAxes(
5060         ) = 0;
5061 
5062     virtual HRESULT STDMETHODCALLTYPE SetAutomaticFontAxes(
5063         DWRITE_AUTOMATIC_FONT_AXES axes) = 0;
5064 
5065 };
5066 #ifdef __CRT_UUID_DECL
5067 __CRT_UUID_DECL(IDWriteTextFormat3, 0x6d3b5641, 0xe550, 0x430d, 0xa8,0x5b, 0xb7,0xbf,0x48,0xa9,0x34,0x27)
5068 #endif
5069 #else
5070 typedef struct IDWriteTextFormat3Vtbl {
5071     BEGIN_INTERFACE
5072 
5073     /*** IUnknown methods ***/
5074     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5075         IDWriteTextFormat3 *This,
5076         REFIID riid,
5077         void **ppvObject);
5078 
5079     ULONG (STDMETHODCALLTYPE *AddRef)(
5080         IDWriteTextFormat3 *This);
5081 
5082     ULONG (STDMETHODCALLTYPE *Release)(
5083         IDWriteTextFormat3 *This);
5084 
5085     /*** IDWriteTextFormat methods ***/
5086     HRESULT (STDMETHODCALLTYPE *SetTextAlignment)(
5087         IDWriteTextFormat3 *This,
5088         DWRITE_TEXT_ALIGNMENT alignment);
5089 
5090     HRESULT (STDMETHODCALLTYPE *SetParagraphAlignment)(
5091         IDWriteTextFormat3 *This,
5092         DWRITE_PARAGRAPH_ALIGNMENT alignment);
5093 
5094     HRESULT (STDMETHODCALLTYPE *SetWordWrapping)(
5095         IDWriteTextFormat3 *This,
5096         DWRITE_WORD_WRAPPING wrapping);
5097 
5098     HRESULT (STDMETHODCALLTYPE *SetReadingDirection)(
5099         IDWriteTextFormat3 *This,
5100         DWRITE_READING_DIRECTION direction);
5101 
5102     HRESULT (STDMETHODCALLTYPE *SetFlowDirection)(
5103         IDWriteTextFormat3 *This,
5104         DWRITE_FLOW_DIRECTION direction);
5105 
5106     HRESULT (STDMETHODCALLTYPE *SetIncrementalTabStop)(
5107         IDWriteTextFormat3 *This,
5108         FLOAT tabstop);
5109 
5110     HRESULT (STDMETHODCALLTYPE *SetTrimming)(
5111         IDWriteTextFormat3 *This,
5112         const DWRITE_TRIMMING *trimming,
5113         IDWriteInlineObject *trimming_sign);
5114 
5115     HRESULT (STDMETHODCALLTYPE *SetLineSpacing)(
5116         IDWriteTextFormat3 *This,
5117         DWRITE_LINE_SPACING_METHOD spacing,
5118         FLOAT line_spacing,
5119         FLOAT baseline);
5120 
5121     DWRITE_TEXT_ALIGNMENT (STDMETHODCALLTYPE *GetTextAlignment)(
5122         IDWriteTextFormat3 *This);
5123 
5124     DWRITE_PARAGRAPH_ALIGNMENT (STDMETHODCALLTYPE *GetParagraphAlignment)(
5125         IDWriteTextFormat3 *This);
5126 
5127     DWRITE_WORD_WRAPPING (STDMETHODCALLTYPE *GetWordWrapping)(
5128         IDWriteTextFormat3 *This);
5129 
5130     DWRITE_READING_DIRECTION (STDMETHODCALLTYPE *GetReadingDirection)(
5131         IDWriteTextFormat3 *This);
5132 
5133     DWRITE_FLOW_DIRECTION (STDMETHODCALLTYPE *GetFlowDirection)(
5134         IDWriteTextFormat3 *This);
5135 
5136     FLOAT (STDMETHODCALLTYPE *GetIncrementalTabStop)(
5137         IDWriteTextFormat3 *This);
5138 
5139     HRESULT (STDMETHODCALLTYPE *GetTrimming)(
5140         IDWriteTextFormat3 *This,
5141         DWRITE_TRIMMING *options,
5142         IDWriteInlineObject **trimming_sign);
5143 
5144     HRESULT (STDMETHODCALLTYPE *GetLineSpacing)(
5145         IDWriteTextFormat3 *This,
5146         DWRITE_LINE_SPACING_METHOD *method,
5147         FLOAT *spacing,
5148         FLOAT *baseline);
5149 
5150     HRESULT (STDMETHODCALLTYPE *GetFontCollection)(
5151         IDWriteTextFormat3 *This,
5152         IDWriteFontCollection **collection);
5153 
5154     UINT32 (STDMETHODCALLTYPE *GetFontFamilyNameLength)(
5155         IDWriteTextFormat3 *This);
5156 
5157     HRESULT (STDMETHODCALLTYPE *GetFontFamilyName)(
5158         IDWriteTextFormat3 *This,
5159         WCHAR *name,
5160         UINT32 size);
5161 
5162     DWRITE_FONT_WEIGHT (STDMETHODCALLTYPE *GetFontWeight)(
5163         IDWriteTextFormat3 *This);
5164 
5165     DWRITE_FONT_STYLE (STDMETHODCALLTYPE *GetFontStyle)(
5166         IDWriteTextFormat3 *This);
5167 
5168     DWRITE_FONT_STRETCH (STDMETHODCALLTYPE *GetFontStretch)(
5169         IDWriteTextFormat3 *This);
5170 
5171     FLOAT (STDMETHODCALLTYPE *GetFontSize)(
5172         IDWriteTextFormat3 *This);
5173 
5174     UINT32 (STDMETHODCALLTYPE *GetLocaleNameLength)(
5175         IDWriteTextFormat3 *This);
5176 
5177     HRESULT (STDMETHODCALLTYPE *GetLocaleName)(
5178         IDWriteTextFormat3 *This,
5179         WCHAR *name,
5180         UINT32 size);
5181 
5182     /*** IDWriteTextFormat1 methods ***/
5183     HRESULT (STDMETHODCALLTYPE *SetVerticalGlyphOrientation)(
5184         IDWriteTextFormat3 *This,
5185         DWRITE_VERTICAL_GLYPH_ORIENTATION orientation);
5186 
5187     DWRITE_VERTICAL_GLYPH_ORIENTATION (STDMETHODCALLTYPE *GetVerticalGlyphOrientation)(
5188         IDWriteTextFormat3 *This);
5189 
5190     HRESULT (STDMETHODCALLTYPE *SetLastLineWrapping)(
5191         IDWriteTextFormat3 *This,
5192         WINBOOL lastline_wrapping_enabled);
5193 
5194     WINBOOL (STDMETHODCALLTYPE *GetLastLineWrapping)(
5195         IDWriteTextFormat3 *This);
5196 
5197     HRESULT (STDMETHODCALLTYPE *SetOpticalAlignment)(
5198         IDWriteTextFormat3 *This,
5199         DWRITE_OPTICAL_ALIGNMENT alignment);
5200 
5201     DWRITE_OPTICAL_ALIGNMENT (STDMETHODCALLTYPE *GetOpticalAlignment)(
5202         IDWriteTextFormat3 *This);
5203 
5204     HRESULT (STDMETHODCALLTYPE *SetFontFallback)(
5205         IDWriteTextFormat3 *This,
5206         IDWriteFontFallback *fallback);
5207 
5208     HRESULT (STDMETHODCALLTYPE *GetFontFallback)(
5209         IDWriteTextFormat3 *This,
5210         IDWriteFontFallback **fallback);
5211 
5212     /*** IDWriteTextFormat2 methods ***/
5213     HRESULT (STDMETHODCALLTYPE *IDWriteTextFormat2_SetLineSpacing)(
5214         IDWriteTextFormat3 *This,
5215         const DWRITE_LINE_SPACING *spacing);
5216 
5217     HRESULT (STDMETHODCALLTYPE *IDWriteTextFormat2_GetLineSpacing)(
5218         IDWriteTextFormat3 *This,
5219         DWRITE_LINE_SPACING *spacing);
5220 
5221     /*** IDWriteTextFormat3 methods ***/
5222     HRESULT (STDMETHODCALLTYPE *SetFontAxisValues)(
5223         IDWriteTextFormat3 *This,
5224         const DWRITE_FONT_AXIS_VALUE *axis_values,
5225         UINT32 num_values);
5226 
5227     UINT32 (STDMETHODCALLTYPE *GetFontAxisValueCount)(
5228         IDWriteTextFormat3 *This);
5229 
5230     HRESULT (STDMETHODCALLTYPE *GetFontAxisValues)(
5231         IDWriteTextFormat3 *This,
5232         DWRITE_FONT_AXIS_VALUE *axis_values,
5233         UINT32 num_values);
5234 
5235     DWRITE_AUTOMATIC_FONT_AXES (STDMETHODCALLTYPE *GetAutomaticFontAxes)(
5236         IDWriteTextFormat3 *This);
5237 
5238     HRESULT (STDMETHODCALLTYPE *SetAutomaticFontAxes)(
5239         IDWriteTextFormat3 *This,
5240         DWRITE_AUTOMATIC_FONT_AXES axes);
5241 
5242     END_INTERFACE
5243 } IDWriteTextFormat3Vtbl;
5244 
5245 interface IDWriteTextFormat3 {
5246     CONST_VTBL IDWriteTextFormat3Vtbl* lpVtbl;
5247 };
5248 
5249 #ifdef COBJMACROS
5250 #ifndef WIDL_C_INLINE_WRAPPERS
5251 /*** IUnknown methods ***/
5252 #define IDWriteTextFormat3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5253 #define IDWriteTextFormat3_AddRef(This) (This)->lpVtbl->AddRef(This)
5254 #define IDWriteTextFormat3_Release(This) (This)->lpVtbl->Release(This)
5255 /*** IDWriteTextFormat methods ***/
5256 #define IDWriteTextFormat3_SetTextAlignment(This,alignment) (This)->lpVtbl->SetTextAlignment(This,alignment)
5257 #define IDWriteTextFormat3_SetParagraphAlignment(This,alignment) (This)->lpVtbl->SetParagraphAlignment(This,alignment)
5258 #define IDWriteTextFormat3_SetWordWrapping(This,wrapping) (This)->lpVtbl->SetWordWrapping(This,wrapping)
5259 #define IDWriteTextFormat3_SetReadingDirection(This,direction) (This)->lpVtbl->SetReadingDirection(This,direction)
5260 #define IDWriteTextFormat3_SetFlowDirection(This,direction) (This)->lpVtbl->SetFlowDirection(This,direction)
5261 #define IDWriteTextFormat3_SetIncrementalTabStop(This,tabstop) (This)->lpVtbl->SetIncrementalTabStop(This,tabstop)
5262 #define IDWriteTextFormat3_SetTrimming(This,trimming,trimming_sign) (This)->lpVtbl->SetTrimming(This,trimming,trimming_sign)
5263 #define IDWriteTextFormat3_GetTextAlignment(This) (This)->lpVtbl->GetTextAlignment(This)
5264 #define IDWriteTextFormat3_GetParagraphAlignment(This) (This)->lpVtbl->GetParagraphAlignment(This)
5265 #define IDWriteTextFormat3_GetWordWrapping(This) (This)->lpVtbl->GetWordWrapping(This)
5266 #define IDWriteTextFormat3_GetReadingDirection(This) (This)->lpVtbl->GetReadingDirection(This)
5267 #define IDWriteTextFormat3_GetFlowDirection(This) (This)->lpVtbl->GetFlowDirection(This)
5268 #define IDWriteTextFormat3_GetIncrementalTabStop(This) (This)->lpVtbl->GetIncrementalTabStop(This)
5269 #define IDWriteTextFormat3_GetTrimming(This,options,trimming_sign) (This)->lpVtbl->GetTrimming(This,options,trimming_sign)
5270 #define IDWriteTextFormat3_GetFontCollection(This,collection) (This)->lpVtbl->GetFontCollection(This,collection)
5271 #define IDWriteTextFormat3_GetFontFamilyNameLength(This) (This)->lpVtbl->GetFontFamilyNameLength(This)
5272 #define IDWriteTextFormat3_GetFontFamilyName(This,name,size) (This)->lpVtbl->GetFontFamilyName(This,name,size)
5273 #define IDWriteTextFormat3_GetFontWeight(This) (This)->lpVtbl->GetFontWeight(This)
5274 #define IDWriteTextFormat3_GetFontStyle(This) (This)->lpVtbl->GetFontStyle(This)
5275 #define IDWriteTextFormat3_GetFontStretch(This) (This)->lpVtbl->GetFontStretch(This)
5276 #define IDWriteTextFormat3_GetFontSize(This) (This)->lpVtbl->GetFontSize(This)
5277 #define IDWriteTextFormat3_GetLocaleNameLength(This) (This)->lpVtbl->GetLocaleNameLength(This)
5278 #define IDWriteTextFormat3_GetLocaleName(This,name,size) (This)->lpVtbl->GetLocaleName(This,name,size)
5279 /*** IDWriteTextFormat1 methods ***/
5280 #define IDWriteTextFormat3_SetVerticalGlyphOrientation(This,orientation) (This)->lpVtbl->SetVerticalGlyphOrientation(This,orientation)
5281 #define IDWriteTextFormat3_GetVerticalGlyphOrientation(This) (This)->lpVtbl->GetVerticalGlyphOrientation(This)
5282 #define IDWriteTextFormat3_SetLastLineWrapping(This,lastline_wrapping_enabled) (This)->lpVtbl->SetLastLineWrapping(This,lastline_wrapping_enabled)
5283 #define IDWriteTextFormat3_GetLastLineWrapping(This) (This)->lpVtbl->GetLastLineWrapping(This)
5284 #define IDWriteTextFormat3_SetOpticalAlignment(This,alignment) (This)->lpVtbl->SetOpticalAlignment(This,alignment)
5285 #define IDWriteTextFormat3_GetOpticalAlignment(This) (This)->lpVtbl->GetOpticalAlignment(This)
5286 #define IDWriteTextFormat3_SetFontFallback(This,fallback) (This)->lpVtbl->SetFontFallback(This,fallback)
5287 #define IDWriteTextFormat3_GetFontFallback(This,fallback) (This)->lpVtbl->GetFontFallback(This,fallback)
5288 /*** IDWriteTextFormat2 methods ***/
5289 #define IDWriteTextFormat3_SetLineSpacing(This,spacing) (This)->lpVtbl->IDWriteTextFormat2_SetLineSpacing(This,spacing)
5290 #define IDWriteTextFormat3_GetLineSpacing(This,spacing) (This)->lpVtbl->IDWriteTextFormat2_GetLineSpacing(This,spacing)
5291 /*** IDWriteTextFormat3 methods ***/
5292 #define IDWriteTextFormat3_SetFontAxisValues(This,axis_values,num_values) (This)->lpVtbl->SetFontAxisValues(This,axis_values,num_values)
5293 #define IDWriteTextFormat3_GetFontAxisValueCount(This) (This)->lpVtbl->GetFontAxisValueCount(This)
5294 #define IDWriteTextFormat3_GetFontAxisValues(This,axis_values,num_values) (This)->lpVtbl->GetFontAxisValues(This,axis_values,num_values)
5295 #define IDWriteTextFormat3_GetAutomaticFontAxes(This) (This)->lpVtbl->GetAutomaticFontAxes(This)
5296 #define IDWriteTextFormat3_SetAutomaticFontAxes(This,axes) (This)->lpVtbl->SetAutomaticFontAxes(This,axes)
5297 #else
5298 /*** IUnknown methods ***/
5299 static FORCEINLINE HRESULT IDWriteTextFormat3_QueryInterface(IDWriteTextFormat3* This,REFIID riid,void **ppvObject) {
5300     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5301 }
5302 static FORCEINLINE ULONG IDWriteTextFormat3_AddRef(IDWriteTextFormat3* This) {
5303     return This->lpVtbl->AddRef(This);
5304 }
5305 static FORCEINLINE ULONG IDWriteTextFormat3_Release(IDWriteTextFormat3* This) {
5306     return This->lpVtbl->Release(This);
5307 }
5308 /*** IDWriteTextFormat methods ***/
5309 static FORCEINLINE HRESULT IDWriteTextFormat3_SetTextAlignment(IDWriteTextFormat3* This,DWRITE_TEXT_ALIGNMENT alignment) {
5310     return This->lpVtbl->SetTextAlignment(This,alignment);
5311 }
5312 static FORCEINLINE HRESULT IDWriteTextFormat3_SetParagraphAlignment(IDWriteTextFormat3* This,DWRITE_PARAGRAPH_ALIGNMENT alignment) {
5313     return This->lpVtbl->SetParagraphAlignment(This,alignment);
5314 }
5315 static FORCEINLINE HRESULT IDWriteTextFormat3_SetWordWrapping(IDWriteTextFormat3* This,DWRITE_WORD_WRAPPING wrapping) {
5316     return This->lpVtbl->SetWordWrapping(This,wrapping);
5317 }
5318 static FORCEINLINE HRESULT IDWriteTextFormat3_SetReadingDirection(IDWriteTextFormat3* This,DWRITE_READING_DIRECTION direction) {
5319     return This->lpVtbl->SetReadingDirection(This,direction);
5320 }
5321 static FORCEINLINE HRESULT IDWriteTextFormat3_SetFlowDirection(IDWriteTextFormat3* This,DWRITE_FLOW_DIRECTION direction) {
5322     return This->lpVtbl->SetFlowDirection(This,direction);
5323 }
5324 static FORCEINLINE HRESULT IDWriteTextFormat3_SetIncrementalTabStop(IDWriteTextFormat3* This,FLOAT tabstop) {
5325     return This->lpVtbl->SetIncrementalTabStop(This,tabstop);
5326 }
5327 static FORCEINLINE HRESULT IDWriteTextFormat3_SetTrimming(IDWriteTextFormat3* This,const DWRITE_TRIMMING *trimming,IDWriteInlineObject *trimming_sign) {
5328     return This->lpVtbl->SetTrimming(This,trimming,trimming_sign);
5329 }
5330 static FORCEINLINE DWRITE_TEXT_ALIGNMENT IDWriteTextFormat3_GetTextAlignment(IDWriteTextFormat3* This) {
5331     return This->lpVtbl->GetTextAlignment(This);
5332 }
5333 static FORCEINLINE DWRITE_PARAGRAPH_ALIGNMENT IDWriteTextFormat3_GetParagraphAlignment(IDWriteTextFormat3* This) {
5334     return This->lpVtbl->GetParagraphAlignment(This);
5335 }
5336 static FORCEINLINE DWRITE_WORD_WRAPPING IDWriteTextFormat3_GetWordWrapping(IDWriteTextFormat3* This) {
5337     return This->lpVtbl->GetWordWrapping(This);
5338 }
5339 static FORCEINLINE DWRITE_READING_DIRECTION IDWriteTextFormat3_GetReadingDirection(IDWriteTextFormat3* This) {
5340     return This->lpVtbl->GetReadingDirection(This);
5341 }
5342 static FORCEINLINE DWRITE_FLOW_DIRECTION IDWriteTextFormat3_GetFlowDirection(IDWriteTextFormat3* This) {
5343     return This->lpVtbl->GetFlowDirection(This);
5344 }
5345 static FORCEINLINE FLOAT IDWriteTextFormat3_GetIncrementalTabStop(IDWriteTextFormat3* This) {
5346     return This->lpVtbl->GetIncrementalTabStop(This);
5347 }
5348 static FORCEINLINE HRESULT IDWriteTextFormat3_GetTrimming(IDWriteTextFormat3* This,DWRITE_TRIMMING *options,IDWriteInlineObject **trimming_sign) {
5349     return This->lpVtbl->GetTrimming(This,options,trimming_sign);
5350 }
5351 static FORCEINLINE HRESULT IDWriteTextFormat3_GetFontCollection(IDWriteTextFormat3* This,IDWriteFontCollection **collection) {
5352     return This->lpVtbl->GetFontCollection(This,collection);
5353 }
5354 static FORCEINLINE UINT32 IDWriteTextFormat3_GetFontFamilyNameLength(IDWriteTextFormat3* This) {
5355     return This->lpVtbl->GetFontFamilyNameLength(This);
5356 }
5357 static FORCEINLINE HRESULT IDWriteTextFormat3_GetFontFamilyName(IDWriteTextFormat3* This,WCHAR *name,UINT32 size) {
5358     return This->lpVtbl->GetFontFamilyName(This,name,size);
5359 }
5360 static FORCEINLINE DWRITE_FONT_WEIGHT IDWriteTextFormat3_GetFontWeight(IDWriteTextFormat3* This) {
5361     return This->lpVtbl->GetFontWeight(This);
5362 }
5363 static FORCEINLINE DWRITE_FONT_STYLE IDWriteTextFormat3_GetFontStyle(IDWriteTextFormat3* This) {
5364     return This->lpVtbl->GetFontStyle(This);
5365 }
5366 static FORCEINLINE DWRITE_FONT_STRETCH IDWriteTextFormat3_GetFontStretch(IDWriteTextFormat3* This) {
5367     return This->lpVtbl->GetFontStretch(This);
5368 }
5369 static FORCEINLINE FLOAT IDWriteTextFormat3_GetFontSize(IDWriteTextFormat3* This) {
5370     return This->lpVtbl->GetFontSize(This);
5371 }
5372 static FORCEINLINE UINT32 IDWriteTextFormat3_GetLocaleNameLength(IDWriteTextFormat3* This) {
5373     return This->lpVtbl->GetLocaleNameLength(This);
5374 }
5375 static FORCEINLINE HRESULT IDWriteTextFormat3_GetLocaleName(IDWriteTextFormat3* This,WCHAR *name,UINT32 size) {
5376     return This->lpVtbl->GetLocaleName(This,name,size);
5377 }
5378 /*** IDWriteTextFormat1 methods ***/
5379 static FORCEINLINE HRESULT IDWriteTextFormat3_SetVerticalGlyphOrientation(IDWriteTextFormat3* This,DWRITE_VERTICAL_GLYPH_ORIENTATION orientation) {
5380     return This->lpVtbl->SetVerticalGlyphOrientation(This,orientation);
5381 }
5382 static FORCEINLINE DWRITE_VERTICAL_GLYPH_ORIENTATION IDWriteTextFormat3_GetVerticalGlyphOrientation(IDWriteTextFormat3* This) {
5383     return This->lpVtbl->GetVerticalGlyphOrientation(This);
5384 }
5385 static FORCEINLINE HRESULT IDWriteTextFormat3_SetLastLineWrapping(IDWriteTextFormat3* This,WINBOOL lastline_wrapping_enabled) {
5386     return This->lpVtbl->SetLastLineWrapping(This,lastline_wrapping_enabled);
5387 }
5388 static FORCEINLINE WINBOOL IDWriteTextFormat3_GetLastLineWrapping(IDWriteTextFormat3* This) {
5389     return This->lpVtbl->GetLastLineWrapping(This);
5390 }
5391 static FORCEINLINE HRESULT IDWriteTextFormat3_SetOpticalAlignment(IDWriteTextFormat3* This,DWRITE_OPTICAL_ALIGNMENT alignment) {
5392     return This->lpVtbl->SetOpticalAlignment(This,alignment);
5393 }
5394 static FORCEINLINE DWRITE_OPTICAL_ALIGNMENT IDWriteTextFormat3_GetOpticalAlignment(IDWriteTextFormat3* This) {
5395     return This->lpVtbl->GetOpticalAlignment(This);
5396 }
5397 static FORCEINLINE HRESULT IDWriteTextFormat3_SetFontFallback(IDWriteTextFormat3* This,IDWriteFontFallback *fallback) {
5398     return This->lpVtbl->SetFontFallback(This,fallback);
5399 }
5400 static FORCEINLINE HRESULT IDWriteTextFormat3_GetFontFallback(IDWriteTextFormat3* This,IDWriteFontFallback **fallback) {
5401     return This->lpVtbl->GetFontFallback(This,fallback);
5402 }
5403 /*** IDWriteTextFormat2 methods ***/
5404 static FORCEINLINE HRESULT IDWriteTextFormat3_SetLineSpacing(IDWriteTextFormat3* This,const DWRITE_LINE_SPACING *spacing) {
5405     return This->lpVtbl->IDWriteTextFormat2_SetLineSpacing(This,spacing);
5406 }
5407 static FORCEINLINE HRESULT IDWriteTextFormat3_GetLineSpacing(IDWriteTextFormat3* This,DWRITE_LINE_SPACING *spacing) {
5408     return This->lpVtbl->IDWriteTextFormat2_GetLineSpacing(This,spacing);
5409 }
5410 /*** IDWriteTextFormat3 methods ***/
5411 static FORCEINLINE HRESULT IDWriteTextFormat3_SetFontAxisValues(IDWriteTextFormat3* This,const DWRITE_FONT_AXIS_VALUE *axis_values,UINT32 num_values) {
5412     return This->lpVtbl->SetFontAxisValues(This,axis_values,num_values);
5413 }
5414 static FORCEINLINE UINT32 IDWriteTextFormat3_GetFontAxisValueCount(IDWriteTextFormat3* This) {
5415     return This->lpVtbl->GetFontAxisValueCount(This);
5416 }
5417 static FORCEINLINE HRESULT IDWriteTextFormat3_GetFontAxisValues(IDWriteTextFormat3* This,DWRITE_FONT_AXIS_VALUE *axis_values,UINT32 num_values) {
5418     return This->lpVtbl->GetFontAxisValues(This,axis_values,num_values);
5419 }
5420 static FORCEINLINE DWRITE_AUTOMATIC_FONT_AXES IDWriteTextFormat3_GetAutomaticFontAxes(IDWriteTextFormat3* This) {
5421     return This->lpVtbl->GetAutomaticFontAxes(This);
5422 }
5423 static FORCEINLINE HRESULT IDWriteTextFormat3_SetAutomaticFontAxes(IDWriteTextFormat3* This,DWRITE_AUTOMATIC_FONT_AXES axes) {
5424     return This->lpVtbl->SetAutomaticFontAxes(This,axes);
5425 }
5426 #endif
5427 #endif
5428 
5429 #endif
5430 
5431 
5432 #endif  /* __IDWriteTextFormat3_INTERFACE_DEFINED__ */
5433 
5434 /*****************************************************************************
5435  * IDWriteTextLayout3 interface
5436  */
5437 #ifndef __IDWriteTextLayout3_INTERFACE_DEFINED__
5438 #define __IDWriteTextLayout3_INTERFACE_DEFINED__
5439 
5440 DEFINE_GUID(IID_IDWriteTextLayout3, 0x07ddcd52, 0x020e, 0x4de8, 0xac,0x33, 0x6c,0x95,0x3d,0x83,0xf9,0x2d);
5441 #if defined(__cplusplus) && !defined(CINTERFACE)
5442 MIDL_INTERFACE("07ddcd52-020e-4de8-ac33-6c953d83f92d")
5443 IDWriteTextLayout3 : public IDWriteTextLayout2
5444 {
5445     virtual HRESULT STDMETHODCALLTYPE InvalidateLayout(
5446         ) = 0;
5447 
5448     virtual HRESULT STDMETHODCALLTYPE SetLineSpacing(
5449         const DWRITE_LINE_SPACING *spacing) = 0;
5450 
5451     virtual HRESULT STDMETHODCALLTYPE GetLineSpacing(
5452         DWRITE_LINE_SPACING *spacing) = 0;
5453 
5454     virtual HRESULT STDMETHODCALLTYPE GetLineMetrics(
5455         DWRITE_LINE_METRICS1 *metrics,
5456         UINT32 max_count,
5457         UINT32 *count) = 0;
5458 
5459 };
5460 #ifdef __CRT_UUID_DECL
5461 __CRT_UUID_DECL(IDWriteTextLayout3, 0x07ddcd52, 0x020e, 0x4de8, 0xac,0x33, 0x6c,0x95,0x3d,0x83,0xf9,0x2d)
5462 #endif
5463 #else
5464 typedef struct IDWriteTextLayout3Vtbl {
5465     BEGIN_INTERFACE
5466 
5467     /*** IUnknown methods ***/
5468     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5469         IDWriteTextLayout3 *This,
5470         REFIID riid,
5471         void **ppvObject);
5472 
5473     ULONG (STDMETHODCALLTYPE *AddRef)(
5474         IDWriteTextLayout3 *This);
5475 
5476     ULONG (STDMETHODCALLTYPE *Release)(
5477         IDWriteTextLayout3 *This);
5478 
5479     /*** IDWriteTextFormat methods ***/
5480     HRESULT (STDMETHODCALLTYPE *SetTextAlignment)(
5481         IDWriteTextLayout3 *This,
5482         DWRITE_TEXT_ALIGNMENT alignment);
5483 
5484     HRESULT (STDMETHODCALLTYPE *SetParagraphAlignment)(
5485         IDWriteTextLayout3 *This,
5486         DWRITE_PARAGRAPH_ALIGNMENT alignment);
5487 
5488     HRESULT (STDMETHODCALLTYPE *SetWordWrapping)(
5489         IDWriteTextLayout3 *This,
5490         DWRITE_WORD_WRAPPING wrapping);
5491 
5492     HRESULT (STDMETHODCALLTYPE *SetReadingDirection)(
5493         IDWriteTextLayout3 *This,
5494         DWRITE_READING_DIRECTION direction);
5495 
5496     HRESULT (STDMETHODCALLTYPE *SetFlowDirection)(
5497         IDWriteTextLayout3 *This,
5498         DWRITE_FLOW_DIRECTION direction);
5499 
5500     HRESULT (STDMETHODCALLTYPE *SetIncrementalTabStop)(
5501         IDWriteTextLayout3 *This,
5502         FLOAT tabstop);
5503 
5504     HRESULT (STDMETHODCALLTYPE *SetTrimming)(
5505         IDWriteTextLayout3 *This,
5506         const DWRITE_TRIMMING *trimming,
5507         IDWriteInlineObject *trimming_sign);
5508 
5509     HRESULT (STDMETHODCALLTYPE *SetLineSpacing)(
5510         IDWriteTextLayout3 *This,
5511         DWRITE_LINE_SPACING_METHOD spacing,
5512         FLOAT line_spacing,
5513         FLOAT baseline);
5514 
5515     DWRITE_TEXT_ALIGNMENT (STDMETHODCALLTYPE *GetTextAlignment)(
5516         IDWriteTextLayout3 *This);
5517 
5518     DWRITE_PARAGRAPH_ALIGNMENT (STDMETHODCALLTYPE *GetParagraphAlignment)(
5519         IDWriteTextLayout3 *This);
5520 
5521     DWRITE_WORD_WRAPPING (STDMETHODCALLTYPE *GetWordWrapping)(
5522         IDWriteTextLayout3 *This);
5523 
5524     DWRITE_READING_DIRECTION (STDMETHODCALLTYPE *GetReadingDirection)(
5525         IDWriteTextLayout3 *This);
5526 
5527     DWRITE_FLOW_DIRECTION (STDMETHODCALLTYPE *GetFlowDirection)(
5528         IDWriteTextLayout3 *This);
5529 
5530     FLOAT (STDMETHODCALLTYPE *GetIncrementalTabStop)(
5531         IDWriteTextLayout3 *This);
5532 
5533     HRESULT (STDMETHODCALLTYPE *GetTrimming)(
5534         IDWriteTextLayout3 *This,
5535         DWRITE_TRIMMING *options,
5536         IDWriteInlineObject **trimming_sign);
5537 
5538     HRESULT (STDMETHODCALLTYPE *GetLineSpacing)(
5539         IDWriteTextLayout3 *This,
5540         DWRITE_LINE_SPACING_METHOD *method,
5541         FLOAT *spacing,
5542         FLOAT *baseline);
5543 
5544     HRESULT (STDMETHODCALLTYPE *GetFontCollection)(
5545         IDWriteTextLayout3 *This,
5546         IDWriteFontCollection **collection);
5547 
5548     UINT32 (STDMETHODCALLTYPE *GetFontFamilyNameLength)(
5549         IDWriteTextLayout3 *This);
5550 
5551     HRESULT (STDMETHODCALLTYPE *GetFontFamilyName)(
5552         IDWriteTextLayout3 *This,
5553         WCHAR *name,
5554         UINT32 size);
5555 
5556     DWRITE_FONT_WEIGHT (STDMETHODCALLTYPE *GetFontWeight)(
5557         IDWriteTextLayout3 *This);
5558 
5559     DWRITE_FONT_STYLE (STDMETHODCALLTYPE *GetFontStyle)(
5560         IDWriteTextLayout3 *This);
5561 
5562     DWRITE_FONT_STRETCH (STDMETHODCALLTYPE *GetFontStretch)(
5563         IDWriteTextLayout3 *This);
5564 
5565     FLOAT (STDMETHODCALLTYPE *GetFontSize)(
5566         IDWriteTextLayout3 *This);
5567 
5568     UINT32 (STDMETHODCALLTYPE *GetLocaleNameLength)(
5569         IDWriteTextLayout3 *This);
5570 
5571     HRESULT (STDMETHODCALLTYPE *GetLocaleName)(
5572         IDWriteTextLayout3 *This,
5573         WCHAR *name,
5574         UINT32 size);
5575 
5576     /*** IDWriteTextLayout methods ***/
5577     HRESULT (STDMETHODCALLTYPE *SetMaxWidth)(
5578         IDWriteTextLayout3 *This,
5579         FLOAT maxWidth);
5580 
5581     HRESULT (STDMETHODCALLTYPE *SetMaxHeight)(
5582         IDWriteTextLayout3 *This,
5583         FLOAT maxHeight);
5584 
5585     HRESULT (STDMETHODCALLTYPE *SetFontCollection)(
5586         IDWriteTextLayout3 *This,
5587         IDWriteFontCollection *collection,
5588         DWRITE_TEXT_RANGE range);
5589 
5590     HRESULT (STDMETHODCALLTYPE *SetFontFamilyName)(
5591         IDWriteTextLayout3 *This,
5592         const WCHAR *name,
5593         DWRITE_TEXT_RANGE range);
5594 
5595     HRESULT (STDMETHODCALLTYPE *SetFontWeight)(
5596         IDWriteTextLayout3 *This,
5597         DWRITE_FONT_WEIGHT weight,
5598         DWRITE_TEXT_RANGE range);
5599 
5600     HRESULT (STDMETHODCALLTYPE *SetFontStyle)(
5601         IDWriteTextLayout3 *This,
5602         DWRITE_FONT_STYLE style,
5603         DWRITE_TEXT_RANGE range);
5604 
5605     HRESULT (STDMETHODCALLTYPE *SetFontStretch)(
5606         IDWriteTextLayout3 *This,
5607         DWRITE_FONT_STRETCH stretch,
5608         DWRITE_TEXT_RANGE range);
5609 
5610     HRESULT (STDMETHODCALLTYPE *SetFontSize)(
5611         IDWriteTextLayout3 *This,
5612         FLOAT size,
5613         DWRITE_TEXT_RANGE range);
5614 
5615     HRESULT (STDMETHODCALLTYPE *SetUnderline)(
5616         IDWriteTextLayout3 *This,
5617         WINBOOL underline,
5618         DWRITE_TEXT_RANGE range);
5619 
5620     HRESULT (STDMETHODCALLTYPE *SetStrikethrough)(
5621         IDWriteTextLayout3 *This,
5622         WINBOOL strikethrough,
5623         DWRITE_TEXT_RANGE range);
5624 
5625     HRESULT (STDMETHODCALLTYPE *SetDrawingEffect)(
5626         IDWriteTextLayout3 *This,
5627         IUnknown *effect,
5628         DWRITE_TEXT_RANGE range);
5629 
5630     HRESULT (STDMETHODCALLTYPE *SetInlineObject)(
5631         IDWriteTextLayout3 *This,
5632         IDWriteInlineObject *object,
5633         DWRITE_TEXT_RANGE range);
5634 
5635     HRESULT (STDMETHODCALLTYPE *SetTypography)(
5636         IDWriteTextLayout3 *This,
5637         IDWriteTypography *typography,
5638         DWRITE_TEXT_RANGE range);
5639 
5640     HRESULT (STDMETHODCALLTYPE *SetLocaleName)(
5641         IDWriteTextLayout3 *This,
5642         const WCHAR *locale,
5643         DWRITE_TEXT_RANGE range);
5644 
5645     FLOAT (STDMETHODCALLTYPE *GetMaxWidth)(
5646         IDWriteTextLayout3 *This);
5647 
5648     FLOAT (STDMETHODCALLTYPE *GetMaxHeight)(
5649         IDWriteTextLayout3 *This);
5650 
5651     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontCollection)(
5652         IDWriteTextLayout3 *This,
5653         UINT32 pos,
5654         IDWriteFontCollection **collection,
5655         DWRITE_TEXT_RANGE *range);
5656 
5657     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontFamilyNameLength)(
5658         IDWriteTextLayout3 *This,
5659         UINT32 pos,
5660         UINT32 *len,
5661         DWRITE_TEXT_RANGE *range);
5662 
5663     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontFamilyName)(
5664         IDWriteTextLayout3 *This,
5665         UINT32 position,
5666         WCHAR *name,
5667         UINT32 name_size,
5668         DWRITE_TEXT_RANGE *range);
5669 
5670     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontWeight)(
5671         IDWriteTextLayout3 *This,
5672         UINT32 position,
5673         DWRITE_FONT_WEIGHT *weight,
5674         DWRITE_TEXT_RANGE *range);
5675 
5676     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontStyle)(
5677         IDWriteTextLayout3 *This,
5678         UINT32 currentPosition,
5679         DWRITE_FONT_STYLE *style,
5680         DWRITE_TEXT_RANGE *range);
5681 
5682     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontStretch)(
5683         IDWriteTextLayout3 *This,
5684         UINT32 position,
5685         DWRITE_FONT_STRETCH *stretch,
5686         DWRITE_TEXT_RANGE *range);
5687 
5688     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontSize)(
5689         IDWriteTextLayout3 *This,
5690         UINT32 position,
5691         FLOAT *size,
5692         DWRITE_TEXT_RANGE *range);
5693 
5694     HRESULT (STDMETHODCALLTYPE *GetUnderline)(
5695         IDWriteTextLayout3 *This,
5696         UINT32 position,
5697         WINBOOL *has_underline,
5698         DWRITE_TEXT_RANGE *range);
5699 
5700     HRESULT (STDMETHODCALLTYPE *GetStrikethrough)(
5701         IDWriteTextLayout3 *This,
5702         UINT32 position,
5703         WINBOOL *has_strikethrough,
5704         DWRITE_TEXT_RANGE *range);
5705 
5706     HRESULT (STDMETHODCALLTYPE *GetDrawingEffect)(
5707         IDWriteTextLayout3 *This,
5708         UINT32 position,
5709         IUnknown **effect,
5710         DWRITE_TEXT_RANGE *range);
5711 
5712     HRESULT (STDMETHODCALLTYPE *GetInlineObject)(
5713         IDWriteTextLayout3 *This,
5714         UINT32 position,
5715         IDWriteInlineObject **object,
5716         DWRITE_TEXT_RANGE *range);
5717 
5718     HRESULT (STDMETHODCALLTYPE *GetTypography)(
5719         IDWriteTextLayout3 *This,
5720         UINT32 position,
5721         IDWriteTypography **typography,
5722         DWRITE_TEXT_RANGE *range);
5723 
5724     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetLocaleNameLength)(
5725         IDWriteTextLayout3 *This,
5726         UINT32 position,
5727         UINT32 *length,
5728         DWRITE_TEXT_RANGE *range);
5729 
5730     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetLocaleName)(
5731         IDWriteTextLayout3 *This,
5732         UINT32 position,
5733         WCHAR *name,
5734         UINT32 name_size,
5735         DWRITE_TEXT_RANGE *range);
5736 
5737     HRESULT (STDMETHODCALLTYPE *Draw)(
5738         IDWriteTextLayout3 *This,
5739         void *context,
5740         IDWriteTextRenderer *renderer,
5741         FLOAT originX,
5742         FLOAT originY);
5743 
5744     HRESULT (STDMETHODCALLTYPE *GetLineMetrics)(
5745         IDWriteTextLayout3 *This,
5746         DWRITE_LINE_METRICS *metrics,
5747         UINT32 max_count,
5748         UINT32 *actual_count);
5749 
5750     HRESULT (STDMETHODCALLTYPE *GetMetrics)(
5751         IDWriteTextLayout3 *This,
5752         DWRITE_TEXT_METRICS *metrics);
5753 
5754     HRESULT (STDMETHODCALLTYPE *GetOverhangMetrics)(
5755         IDWriteTextLayout3 *This,
5756         DWRITE_OVERHANG_METRICS *overhangs);
5757 
5758     HRESULT (STDMETHODCALLTYPE *GetClusterMetrics)(
5759         IDWriteTextLayout3 *This,
5760         DWRITE_CLUSTER_METRICS *metrics,
5761         UINT32 max_count,
5762         UINT32 *act_count);
5763 
5764     HRESULT (STDMETHODCALLTYPE *DetermineMinWidth)(
5765         IDWriteTextLayout3 *This,
5766         FLOAT *min_width);
5767 
5768     HRESULT (STDMETHODCALLTYPE *HitTestPoint)(
5769         IDWriteTextLayout3 *This,
5770         FLOAT pointX,
5771         FLOAT pointY,
5772         WINBOOL *is_trailinghit,
5773         WINBOOL *is_inside,
5774         DWRITE_HIT_TEST_METRICS *metrics);
5775 
5776     HRESULT (STDMETHODCALLTYPE *HitTestTextPosition)(
5777         IDWriteTextLayout3 *This,
5778         UINT32 textPosition,
5779         WINBOOL is_trailinghit,
5780         FLOAT *pointX,
5781         FLOAT *pointY,
5782         DWRITE_HIT_TEST_METRICS *metrics);
5783 
5784     HRESULT (STDMETHODCALLTYPE *HitTestTextRange)(
5785         IDWriteTextLayout3 *This,
5786         UINT32 textPosition,
5787         UINT32 textLength,
5788         FLOAT originX,
5789         FLOAT originY,
5790         DWRITE_HIT_TEST_METRICS *metrics,
5791         UINT32 max_metricscount,
5792         UINT32 *actual_metricscount);
5793 
5794     /*** IDWriteTextLayout1 methods ***/
5795     HRESULT (STDMETHODCALLTYPE *SetPairKerning)(
5796         IDWriteTextLayout3 *This,
5797         WINBOOL is_pairkerning_enabled,
5798         DWRITE_TEXT_RANGE range);
5799 
5800     HRESULT (STDMETHODCALLTYPE *GetPairKerning)(
5801         IDWriteTextLayout3 *This,
5802         UINT32 position,
5803         WINBOOL *is_pairkerning_enabled,
5804         DWRITE_TEXT_RANGE *range);
5805 
5806     HRESULT (STDMETHODCALLTYPE *SetCharacterSpacing)(
5807         IDWriteTextLayout3 *This,
5808         FLOAT leading_spacing,
5809         FLOAT trailing_spacing,
5810         FLOAT minimum_advance_width,
5811         DWRITE_TEXT_RANGE range);
5812 
5813     HRESULT (STDMETHODCALLTYPE *GetCharacterSpacing)(
5814         IDWriteTextLayout3 *This,
5815         UINT32 position,
5816         FLOAT *leading_spacing,
5817         FLOAT *trailing_spacing,
5818         FLOAT *minimum_advance_width,
5819         DWRITE_TEXT_RANGE *range);
5820 
5821     /*** IDWriteTextLayout2 methods ***/
5822     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout2_GetMetrics)(
5823         IDWriteTextLayout3 *This,
5824         DWRITE_TEXT_METRICS1 *metrics);
5825 
5826     HRESULT (STDMETHODCALLTYPE *SetVerticalGlyphOrientation)(
5827         IDWriteTextLayout3 *This,
5828         DWRITE_VERTICAL_GLYPH_ORIENTATION orientation);
5829 
5830     DWRITE_VERTICAL_GLYPH_ORIENTATION (STDMETHODCALLTYPE *GetVerticalGlyphOrientation)(
5831         IDWriteTextLayout3 *This);
5832 
5833     HRESULT (STDMETHODCALLTYPE *SetLastLineWrapping)(
5834         IDWriteTextLayout3 *This,
5835         WINBOOL lastline_wrapping_enabled);
5836 
5837     WINBOOL (STDMETHODCALLTYPE *GetLastLineWrapping)(
5838         IDWriteTextLayout3 *This);
5839 
5840     HRESULT (STDMETHODCALLTYPE *SetOpticalAlignment)(
5841         IDWriteTextLayout3 *This,
5842         DWRITE_OPTICAL_ALIGNMENT alignment);
5843 
5844     DWRITE_OPTICAL_ALIGNMENT (STDMETHODCALLTYPE *GetOpticalAlignment)(
5845         IDWriteTextLayout3 *This);
5846 
5847     HRESULT (STDMETHODCALLTYPE *SetFontFallback)(
5848         IDWriteTextLayout3 *This,
5849         IDWriteFontFallback *fallback);
5850 
5851     HRESULT (STDMETHODCALLTYPE *GetFontFallback)(
5852         IDWriteTextLayout3 *This,
5853         IDWriteFontFallback **fallback);
5854 
5855     /*** IDWriteTextLayout3 methods ***/
5856     HRESULT (STDMETHODCALLTYPE *InvalidateLayout)(
5857         IDWriteTextLayout3 *This);
5858 
5859     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout3_SetLineSpacing)(
5860         IDWriteTextLayout3 *This,
5861         const DWRITE_LINE_SPACING *spacing);
5862 
5863     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout3_GetLineSpacing)(
5864         IDWriteTextLayout3 *This,
5865         DWRITE_LINE_SPACING *spacing);
5866 
5867     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout3_GetLineMetrics)(
5868         IDWriteTextLayout3 *This,
5869         DWRITE_LINE_METRICS1 *metrics,
5870         UINT32 max_count,
5871         UINT32 *count);
5872 
5873     END_INTERFACE
5874 } IDWriteTextLayout3Vtbl;
5875 
5876 interface IDWriteTextLayout3 {
5877     CONST_VTBL IDWriteTextLayout3Vtbl* lpVtbl;
5878 };
5879 
5880 #ifdef COBJMACROS
5881 #ifndef WIDL_C_INLINE_WRAPPERS
5882 /*** IUnknown methods ***/
5883 #define IDWriteTextLayout3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5884 #define IDWriteTextLayout3_AddRef(This) (This)->lpVtbl->AddRef(This)
5885 #define IDWriteTextLayout3_Release(This) (This)->lpVtbl->Release(This)
5886 /*** IDWriteTextFormat methods ***/
5887 #define IDWriteTextLayout3_SetTextAlignment(This,alignment) (This)->lpVtbl->SetTextAlignment(This,alignment)
5888 #define IDWriteTextLayout3_SetParagraphAlignment(This,alignment) (This)->lpVtbl->SetParagraphAlignment(This,alignment)
5889 #define IDWriteTextLayout3_SetWordWrapping(This,wrapping) (This)->lpVtbl->SetWordWrapping(This,wrapping)
5890 #define IDWriteTextLayout3_SetReadingDirection(This,direction) (This)->lpVtbl->SetReadingDirection(This,direction)
5891 #define IDWriteTextLayout3_SetFlowDirection(This,direction) (This)->lpVtbl->SetFlowDirection(This,direction)
5892 #define IDWriteTextLayout3_SetIncrementalTabStop(This,tabstop) (This)->lpVtbl->SetIncrementalTabStop(This,tabstop)
5893 #define IDWriteTextLayout3_SetTrimming(This,trimming,trimming_sign) (This)->lpVtbl->SetTrimming(This,trimming,trimming_sign)
5894 #define IDWriteTextLayout3_GetTextAlignment(This) (This)->lpVtbl->GetTextAlignment(This)
5895 #define IDWriteTextLayout3_GetParagraphAlignment(This) (This)->lpVtbl->GetParagraphAlignment(This)
5896 #define IDWriteTextLayout3_GetWordWrapping(This) (This)->lpVtbl->GetWordWrapping(This)
5897 #define IDWriteTextLayout3_GetReadingDirection(This) (This)->lpVtbl->GetReadingDirection(This)
5898 #define IDWriteTextLayout3_GetFlowDirection(This) (This)->lpVtbl->GetFlowDirection(This)
5899 #define IDWriteTextLayout3_GetIncrementalTabStop(This) (This)->lpVtbl->GetIncrementalTabStop(This)
5900 #define IDWriteTextLayout3_GetTrimming(This,options,trimming_sign) (This)->lpVtbl->GetTrimming(This,options,trimming_sign)
5901 /*** IDWriteTextLayout methods ***/
5902 #define IDWriteTextLayout3_SetMaxWidth(This,maxWidth) (This)->lpVtbl->SetMaxWidth(This,maxWidth)
5903 #define IDWriteTextLayout3_SetMaxHeight(This,maxHeight) (This)->lpVtbl->SetMaxHeight(This,maxHeight)
5904 #define IDWriteTextLayout3_SetFontCollection(This,collection,range) (This)->lpVtbl->SetFontCollection(This,collection,range)
5905 #define IDWriteTextLayout3_SetFontFamilyName(This,name,range) (This)->lpVtbl->SetFontFamilyName(This,name,range)
5906 #define IDWriteTextLayout3_SetFontWeight(This,weight,range) (This)->lpVtbl->SetFontWeight(This,weight,range)
5907 #define IDWriteTextLayout3_SetFontStyle(This,style,range) (This)->lpVtbl->SetFontStyle(This,style,range)
5908 #define IDWriteTextLayout3_SetFontStretch(This,stretch,range) (This)->lpVtbl->SetFontStretch(This,stretch,range)
5909 #define IDWriteTextLayout3_SetFontSize(This,size,range) (This)->lpVtbl->SetFontSize(This,size,range)
5910 #define IDWriteTextLayout3_SetUnderline(This,underline,range) (This)->lpVtbl->SetUnderline(This,underline,range)
5911 #define IDWriteTextLayout3_SetStrikethrough(This,strikethrough,range) (This)->lpVtbl->SetStrikethrough(This,strikethrough,range)
5912 #define IDWriteTextLayout3_SetDrawingEffect(This,effect,range) (This)->lpVtbl->SetDrawingEffect(This,effect,range)
5913 #define IDWriteTextLayout3_SetInlineObject(This,object,range) (This)->lpVtbl->SetInlineObject(This,object,range)
5914 #define IDWriteTextLayout3_SetTypography(This,typography,range) (This)->lpVtbl->SetTypography(This,typography,range)
5915 #define IDWriteTextLayout3_SetLocaleName(This,locale,range) (This)->lpVtbl->SetLocaleName(This,locale,range)
5916 #define IDWriteTextLayout3_GetMaxWidth(This) (This)->lpVtbl->GetMaxWidth(This)
5917 #define IDWriteTextLayout3_GetMaxHeight(This) (This)->lpVtbl->GetMaxHeight(This)
5918 #define IDWriteTextLayout3_GetFontCollection(This,pos,collection,range) (This)->lpVtbl->IDWriteTextLayout_GetFontCollection(This,pos,collection,range)
5919 #define IDWriteTextLayout3_GetFontFamilyNameLength(This,pos,len,range) (This)->lpVtbl->IDWriteTextLayout_GetFontFamilyNameLength(This,pos,len,range)
5920 #define IDWriteTextLayout3_GetFontFamilyName(This,position,name,name_size,range) (This)->lpVtbl->IDWriteTextLayout_GetFontFamilyName(This,position,name,name_size,range)
5921 #define IDWriteTextLayout3_GetFontWeight(This,position,weight,range) (This)->lpVtbl->IDWriteTextLayout_GetFontWeight(This,position,weight,range)
5922 #define IDWriteTextLayout3_GetFontStyle(This,currentPosition,style,range) (This)->lpVtbl->IDWriteTextLayout_GetFontStyle(This,currentPosition,style,range)
5923 #define IDWriteTextLayout3_GetFontStretch(This,position,stretch,range) (This)->lpVtbl->IDWriteTextLayout_GetFontStretch(This,position,stretch,range)
5924 #define IDWriteTextLayout3_GetFontSize(This,position,size,range) (This)->lpVtbl->IDWriteTextLayout_GetFontSize(This,position,size,range)
5925 #define IDWriteTextLayout3_GetUnderline(This,position,has_underline,range) (This)->lpVtbl->GetUnderline(This,position,has_underline,range)
5926 #define IDWriteTextLayout3_GetStrikethrough(This,position,has_strikethrough,range) (This)->lpVtbl->GetStrikethrough(This,position,has_strikethrough,range)
5927 #define IDWriteTextLayout3_GetDrawingEffect(This,position,effect,range) (This)->lpVtbl->GetDrawingEffect(This,position,effect,range)
5928 #define IDWriteTextLayout3_GetInlineObject(This,position,object,range) (This)->lpVtbl->GetInlineObject(This,position,object,range)
5929 #define IDWriteTextLayout3_GetTypography(This,position,typography,range) (This)->lpVtbl->GetTypography(This,position,typography,range)
5930 #define IDWriteTextLayout3_GetLocaleNameLength(This,position,length,range) (This)->lpVtbl->IDWriteTextLayout_GetLocaleNameLength(This,position,length,range)
5931 #define IDWriteTextLayout3_GetLocaleName(This,position,name,name_size,range) (This)->lpVtbl->IDWriteTextLayout_GetLocaleName(This,position,name,name_size,range)
5932 #define IDWriteTextLayout3_Draw(This,context,renderer,originX,originY) (This)->lpVtbl->Draw(This,context,renderer,originX,originY)
5933 #define IDWriteTextLayout3_GetOverhangMetrics(This,overhangs) (This)->lpVtbl->GetOverhangMetrics(This,overhangs)
5934 #define IDWriteTextLayout3_GetClusterMetrics(This,metrics,max_count,act_count) (This)->lpVtbl->GetClusterMetrics(This,metrics,max_count,act_count)
5935 #define IDWriteTextLayout3_DetermineMinWidth(This,min_width) (This)->lpVtbl->DetermineMinWidth(This,min_width)
5936 #define IDWriteTextLayout3_HitTestPoint(This,pointX,pointY,is_trailinghit,is_inside,metrics) (This)->lpVtbl->HitTestPoint(This,pointX,pointY,is_trailinghit,is_inside,metrics)
5937 #define IDWriteTextLayout3_HitTestTextPosition(This,textPosition,is_trailinghit,pointX,pointY,metrics) (This)->lpVtbl->HitTestTextPosition(This,textPosition,is_trailinghit,pointX,pointY,metrics)
5938 #define IDWriteTextLayout3_HitTestTextRange(This,textPosition,textLength,originX,originY,metrics,max_metricscount,actual_metricscount) (This)->lpVtbl->HitTestTextRange(This,textPosition,textLength,originX,originY,metrics,max_metricscount,actual_metricscount)
5939 /*** IDWriteTextLayout1 methods ***/
5940 #define IDWriteTextLayout3_SetPairKerning(This,is_pairkerning_enabled,range) (This)->lpVtbl->SetPairKerning(This,is_pairkerning_enabled,range)
5941 #define IDWriteTextLayout3_GetPairKerning(This,position,is_pairkerning_enabled,range) (This)->lpVtbl->GetPairKerning(This,position,is_pairkerning_enabled,range)
5942 #define IDWriteTextLayout3_SetCharacterSpacing(This,leading_spacing,trailing_spacing,minimum_advance_width,range) (This)->lpVtbl->SetCharacterSpacing(This,leading_spacing,trailing_spacing,minimum_advance_width,range)
5943 #define IDWriteTextLayout3_GetCharacterSpacing(This,position,leading_spacing,trailing_spacing,minimum_advance_width,range) (This)->lpVtbl->GetCharacterSpacing(This,position,leading_spacing,trailing_spacing,minimum_advance_width,range)
5944 /*** IDWriteTextLayout2 methods ***/
5945 #define IDWriteTextLayout3_GetMetrics(This,metrics) (This)->lpVtbl->IDWriteTextLayout2_GetMetrics(This,metrics)
5946 #define IDWriteTextLayout3_SetVerticalGlyphOrientation(This,orientation) (This)->lpVtbl->SetVerticalGlyphOrientation(This,orientation)
5947 #define IDWriteTextLayout3_GetVerticalGlyphOrientation(This) (This)->lpVtbl->GetVerticalGlyphOrientation(This)
5948 #define IDWriteTextLayout3_SetLastLineWrapping(This,lastline_wrapping_enabled) (This)->lpVtbl->SetLastLineWrapping(This,lastline_wrapping_enabled)
5949 #define IDWriteTextLayout3_GetLastLineWrapping(This) (This)->lpVtbl->GetLastLineWrapping(This)
5950 #define IDWriteTextLayout3_SetOpticalAlignment(This,alignment) (This)->lpVtbl->SetOpticalAlignment(This,alignment)
5951 #define IDWriteTextLayout3_GetOpticalAlignment(This) (This)->lpVtbl->GetOpticalAlignment(This)
5952 #define IDWriteTextLayout3_SetFontFallback(This,fallback) (This)->lpVtbl->SetFontFallback(This,fallback)
5953 #define IDWriteTextLayout3_GetFontFallback(This,fallback) (This)->lpVtbl->GetFontFallback(This,fallback)
5954 /*** IDWriteTextLayout3 methods ***/
5955 #define IDWriteTextLayout3_InvalidateLayout(This) (This)->lpVtbl->InvalidateLayout(This)
5956 #define IDWriteTextLayout3_SetLineSpacing(This,spacing) (This)->lpVtbl->IDWriteTextLayout3_SetLineSpacing(This,spacing)
5957 #define IDWriteTextLayout3_GetLineSpacing(This,spacing) (This)->lpVtbl->IDWriteTextLayout3_GetLineSpacing(This,spacing)
5958 #define IDWriteTextLayout3_GetLineMetrics(This,metrics,max_count,count) (This)->lpVtbl->IDWriteTextLayout3_GetLineMetrics(This,metrics,max_count,count)
5959 #else
5960 /*** IUnknown methods ***/
5961 static FORCEINLINE HRESULT IDWriteTextLayout3_QueryInterface(IDWriteTextLayout3* This,REFIID riid,void **ppvObject) {
5962     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5963 }
5964 static FORCEINLINE ULONG IDWriteTextLayout3_AddRef(IDWriteTextLayout3* This) {
5965     return This->lpVtbl->AddRef(This);
5966 }
5967 static FORCEINLINE ULONG IDWriteTextLayout3_Release(IDWriteTextLayout3* This) {
5968     return This->lpVtbl->Release(This);
5969 }
5970 /*** IDWriteTextFormat methods ***/
5971 static FORCEINLINE HRESULT IDWriteTextLayout3_SetTextAlignment(IDWriteTextLayout3* This,DWRITE_TEXT_ALIGNMENT alignment) {
5972     return This->lpVtbl->SetTextAlignment(This,alignment);
5973 }
5974 static FORCEINLINE HRESULT IDWriteTextLayout3_SetParagraphAlignment(IDWriteTextLayout3* This,DWRITE_PARAGRAPH_ALIGNMENT alignment) {
5975     return This->lpVtbl->SetParagraphAlignment(This,alignment);
5976 }
5977 static FORCEINLINE HRESULT IDWriteTextLayout3_SetWordWrapping(IDWriteTextLayout3* This,DWRITE_WORD_WRAPPING wrapping) {
5978     return This->lpVtbl->SetWordWrapping(This,wrapping);
5979 }
5980 static FORCEINLINE HRESULT IDWriteTextLayout3_SetReadingDirection(IDWriteTextLayout3* This,DWRITE_READING_DIRECTION direction) {
5981     return This->lpVtbl->SetReadingDirection(This,direction);
5982 }
5983 static FORCEINLINE HRESULT IDWriteTextLayout3_SetFlowDirection(IDWriteTextLayout3* This,DWRITE_FLOW_DIRECTION direction) {
5984     return This->lpVtbl->SetFlowDirection(This,direction);
5985 }
5986 static FORCEINLINE HRESULT IDWriteTextLayout3_SetIncrementalTabStop(IDWriteTextLayout3* This,FLOAT tabstop) {
5987     return This->lpVtbl->SetIncrementalTabStop(This,tabstop);
5988 }
5989 static FORCEINLINE HRESULT IDWriteTextLayout3_SetTrimming(IDWriteTextLayout3* This,const DWRITE_TRIMMING *trimming,IDWriteInlineObject *trimming_sign) {
5990     return This->lpVtbl->SetTrimming(This,trimming,trimming_sign);
5991 }
5992 static FORCEINLINE DWRITE_TEXT_ALIGNMENT IDWriteTextLayout3_GetTextAlignment(IDWriteTextLayout3* This) {
5993     return This->lpVtbl->GetTextAlignment(This);
5994 }
5995 static FORCEINLINE DWRITE_PARAGRAPH_ALIGNMENT IDWriteTextLayout3_GetParagraphAlignment(IDWriteTextLayout3* This) {
5996     return This->lpVtbl->GetParagraphAlignment(This);
5997 }
5998 static FORCEINLINE DWRITE_WORD_WRAPPING IDWriteTextLayout3_GetWordWrapping(IDWriteTextLayout3* This) {
5999     return This->lpVtbl->GetWordWrapping(This);
6000 }
6001 static FORCEINLINE DWRITE_READING_DIRECTION IDWriteTextLayout3_GetReadingDirection(IDWriteTextLayout3* This) {
6002     return This->lpVtbl->GetReadingDirection(This);
6003 }
6004 static FORCEINLINE DWRITE_FLOW_DIRECTION IDWriteTextLayout3_GetFlowDirection(IDWriteTextLayout3* This) {
6005     return This->lpVtbl->GetFlowDirection(This);
6006 }
6007 static FORCEINLINE FLOAT IDWriteTextLayout3_GetIncrementalTabStop(IDWriteTextLayout3* This) {
6008     return This->lpVtbl->GetIncrementalTabStop(This);
6009 }
6010 static FORCEINLINE HRESULT IDWriteTextLayout3_GetTrimming(IDWriteTextLayout3* This,DWRITE_TRIMMING *options,IDWriteInlineObject **trimming_sign) {
6011     return This->lpVtbl->GetTrimming(This,options,trimming_sign);
6012 }
6013 /*** IDWriteTextLayout methods ***/
6014 static FORCEINLINE HRESULT IDWriteTextLayout3_SetMaxWidth(IDWriteTextLayout3* This,FLOAT maxWidth) {
6015     return This->lpVtbl->SetMaxWidth(This,maxWidth);
6016 }
6017 static FORCEINLINE HRESULT IDWriteTextLayout3_SetMaxHeight(IDWriteTextLayout3* This,FLOAT maxHeight) {
6018     return This->lpVtbl->SetMaxHeight(This,maxHeight);
6019 }
6020 static FORCEINLINE HRESULT IDWriteTextLayout3_SetFontCollection(IDWriteTextLayout3* This,IDWriteFontCollection *collection,DWRITE_TEXT_RANGE range) {
6021     return This->lpVtbl->SetFontCollection(This,collection,range);
6022 }
6023 static FORCEINLINE HRESULT IDWriteTextLayout3_SetFontFamilyName(IDWriteTextLayout3* This,const WCHAR *name,DWRITE_TEXT_RANGE range) {
6024     return This->lpVtbl->SetFontFamilyName(This,name,range);
6025 }
6026 static FORCEINLINE HRESULT IDWriteTextLayout3_SetFontWeight(IDWriteTextLayout3* This,DWRITE_FONT_WEIGHT weight,DWRITE_TEXT_RANGE range) {
6027     return This->lpVtbl->SetFontWeight(This,weight,range);
6028 }
6029 static FORCEINLINE HRESULT IDWriteTextLayout3_SetFontStyle(IDWriteTextLayout3* This,DWRITE_FONT_STYLE style,DWRITE_TEXT_RANGE range) {
6030     return This->lpVtbl->SetFontStyle(This,style,range);
6031 }
6032 static FORCEINLINE HRESULT IDWriteTextLayout3_SetFontStretch(IDWriteTextLayout3* This,DWRITE_FONT_STRETCH stretch,DWRITE_TEXT_RANGE range) {
6033     return This->lpVtbl->SetFontStretch(This,stretch,range);
6034 }
6035 static FORCEINLINE HRESULT IDWriteTextLayout3_SetFontSize(IDWriteTextLayout3* This,FLOAT size,DWRITE_TEXT_RANGE range) {
6036     return This->lpVtbl->SetFontSize(This,size,range);
6037 }
6038 static FORCEINLINE HRESULT IDWriteTextLayout3_SetUnderline(IDWriteTextLayout3* This,WINBOOL underline,DWRITE_TEXT_RANGE range) {
6039     return This->lpVtbl->SetUnderline(This,underline,range);
6040 }
6041 static FORCEINLINE HRESULT IDWriteTextLayout3_SetStrikethrough(IDWriteTextLayout3* This,WINBOOL strikethrough,DWRITE_TEXT_RANGE range) {
6042     return This->lpVtbl->SetStrikethrough(This,strikethrough,range);
6043 }
6044 static FORCEINLINE HRESULT IDWriteTextLayout3_SetDrawingEffect(IDWriteTextLayout3* This,IUnknown *effect,DWRITE_TEXT_RANGE range) {
6045     return This->lpVtbl->SetDrawingEffect(This,effect,range);
6046 }
6047 static FORCEINLINE HRESULT IDWriteTextLayout3_SetInlineObject(IDWriteTextLayout3* This,IDWriteInlineObject *object,DWRITE_TEXT_RANGE range) {
6048     return This->lpVtbl->SetInlineObject(This,object,range);
6049 }
6050 static FORCEINLINE HRESULT IDWriteTextLayout3_SetTypography(IDWriteTextLayout3* This,IDWriteTypography *typography,DWRITE_TEXT_RANGE range) {
6051     return This->lpVtbl->SetTypography(This,typography,range);
6052 }
6053 static FORCEINLINE HRESULT IDWriteTextLayout3_SetLocaleName(IDWriteTextLayout3* This,const WCHAR *locale,DWRITE_TEXT_RANGE range) {
6054     return This->lpVtbl->SetLocaleName(This,locale,range);
6055 }
6056 static FORCEINLINE FLOAT IDWriteTextLayout3_GetMaxWidth(IDWriteTextLayout3* This) {
6057     return This->lpVtbl->GetMaxWidth(This);
6058 }
6059 static FORCEINLINE FLOAT IDWriteTextLayout3_GetMaxHeight(IDWriteTextLayout3* This) {
6060     return This->lpVtbl->GetMaxHeight(This);
6061 }
6062 static FORCEINLINE HRESULT IDWriteTextLayout3_GetFontCollection(IDWriteTextLayout3* This,UINT32 pos,IDWriteFontCollection **collection,DWRITE_TEXT_RANGE *range) {
6063     return This->lpVtbl->IDWriteTextLayout_GetFontCollection(This,pos,collection,range);
6064 }
6065 static FORCEINLINE HRESULT IDWriteTextLayout3_GetFontFamilyNameLength(IDWriteTextLayout3* This,UINT32 pos,UINT32 *len,DWRITE_TEXT_RANGE *range) {
6066     return This->lpVtbl->IDWriteTextLayout_GetFontFamilyNameLength(This,pos,len,range);
6067 }
6068 static FORCEINLINE HRESULT IDWriteTextLayout3_GetFontFamilyName(IDWriteTextLayout3* This,UINT32 position,WCHAR *name,UINT32 name_size,DWRITE_TEXT_RANGE *range) {
6069     return This->lpVtbl->IDWriteTextLayout_GetFontFamilyName(This,position,name,name_size,range);
6070 }
6071 static FORCEINLINE HRESULT IDWriteTextLayout3_GetFontWeight(IDWriteTextLayout3* This,UINT32 position,DWRITE_FONT_WEIGHT *weight,DWRITE_TEXT_RANGE *range) {
6072     return This->lpVtbl->IDWriteTextLayout_GetFontWeight(This,position,weight,range);
6073 }
6074 static FORCEINLINE HRESULT IDWriteTextLayout3_GetFontStyle(IDWriteTextLayout3* This,UINT32 currentPosition,DWRITE_FONT_STYLE *style,DWRITE_TEXT_RANGE *range) {
6075     return This->lpVtbl->IDWriteTextLayout_GetFontStyle(This,currentPosition,style,range);
6076 }
6077 static FORCEINLINE HRESULT IDWriteTextLayout3_GetFontStretch(IDWriteTextLayout3* This,UINT32 position,DWRITE_FONT_STRETCH *stretch,DWRITE_TEXT_RANGE *range) {
6078     return This->lpVtbl->IDWriteTextLayout_GetFontStretch(This,position,stretch,range);
6079 }
6080 static FORCEINLINE HRESULT IDWriteTextLayout3_GetFontSize(IDWriteTextLayout3* This,UINT32 position,FLOAT *size,DWRITE_TEXT_RANGE *range) {
6081     return This->lpVtbl->IDWriteTextLayout_GetFontSize(This,position,size,range);
6082 }
6083 static FORCEINLINE HRESULT IDWriteTextLayout3_GetUnderline(IDWriteTextLayout3* This,UINT32 position,WINBOOL *has_underline,DWRITE_TEXT_RANGE *range) {
6084     return This->lpVtbl->GetUnderline(This,position,has_underline,range);
6085 }
6086 static FORCEINLINE HRESULT IDWriteTextLayout3_GetStrikethrough(IDWriteTextLayout3* This,UINT32 position,WINBOOL *has_strikethrough,DWRITE_TEXT_RANGE *range) {
6087     return This->lpVtbl->GetStrikethrough(This,position,has_strikethrough,range);
6088 }
6089 static FORCEINLINE HRESULT IDWriteTextLayout3_GetDrawingEffect(IDWriteTextLayout3* This,UINT32 position,IUnknown **effect,DWRITE_TEXT_RANGE *range) {
6090     return This->lpVtbl->GetDrawingEffect(This,position,effect,range);
6091 }
6092 static FORCEINLINE HRESULT IDWriteTextLayout3_GetInlineObject(IDWriteTextLayout3* This,UINT32 position,IDWriteInlineObject **object,DWRITE_TEXT_RANGE *range) {
6093     return This->lpVtbl->GetInlineObject(This,position,object,range);
6094 }
6095 static FORCEINLINE HRESULT IDWriteTextLayout3_GetTypography(IDWriteTextLayout3* This,UINT32 position,IDWriteTypography **typography,DWRITE_TEXT_RANGE *range) {
6096     return This->lpVtbl->GetTypography(This,position,typography,range);
6097 }
6098 static FORCEINLINE HRESULT IDWriteTextLayout3_GetLocaleNameLength(IDWriteTextLayout3* This,UINT32 position,UINT32 *length,DWRITE_TEXT_RANGE *range) {
6099     return This->lpVtbl->IDWriteTextLayout_GetLocaleNameLength(This,position,length,range);
6100 }
6101 static FORCEINLINE HRESULT IDWriteTextLayout3_GetLocaleName(IDWriteTextLayout3* This,UINT32 position,WCHAR *name,UINT32 name_size,DWRITE_TEXT_RANGE *range) {
6102     return This->lpVtbl->IDWriteTextLayout_GetLocaleName(This,position,name,name_size,range);
6103 }
6104 static FORCEINLINE HRESULT IDWriteTextLayout3_Draw(IDWriteTextLayout3* This,void *context,IDWriteTextRenderer *renderer,FLOAT originX,FLOAT originY) {
6105     return This->lpVtbl->Draw(This,context,renderer,originX,originY);
6106 }
6107 static FORCEINLINE HRESULT IDWriteTextLayout3_GetOverhangMetrics(IDWriteTextLayout3* This,DWRITE_OVERHANG_METRICS *overhangs) {
6108     return This->lpVtbl->GetOverhangMetrics(This,overhangs);
6109 }
6110 static FORCEINLINE HRESULT IDWriteTextLayout3_GetClusterMetrics(IDWriteTextLayout3* This,DWRITE_CLUSTER_METRICS *metrics,UINT32 max_count,UINT32 *act_count) {
6111     return This->lpVtbl->GetClusterMetrics(This,metrics,max_count,act_count);
6112 }
6113 static FORCEINLINE HRESULT IDWriteTextLayout3_DetermineMinWidth(IDWriteTextLayout3* This,FLOAT *min_width) {
6114     return This->lpVtbl->DetermineMinWidth(This,min_width);
6115 }
6116 static FORCEINLINE HRESULT IDWriteTextLayout3_HitTestPoint(IDWriteTextLayout3* This,FLOAT pointX,FLOAT pointY,WINBOOL *is_trailinghit,WINBOOL *is_inside,DWRITE_HIT_TEST_METRICS *metrics) {
6117     return This->lpVtbl->HitTestPoint(This,pointX,pointY,is_trailinghit,is_inside,metrics);
6118 }
6119 static FORCEINLINE HRESULT IDWriteTextLayout3_HitTestTextPosition(IDWriteTextLayout3* This,UINT32 textPosition,WINBOOL is_trailinghit,FLOAT *pointX,FLOAT *pointY,DWRITE_HIT_TEST_METRICS *metrics) {
6120     return This->lpVtbl->HitTestTextPosition(This,textPosition,is_trailinghit,pointX,pointY,metrics);
6121 }
6122 static FORCEINLINE HRESULT IDWriteTextLayout3_HitTestTextRange(IDWriteTextLayout3* This,UINT32 textPosition,UINT32 textLength,FLOAT originX,FLOAT originY,DWRITE_HIT_TEST_METRICS *metrics,UINT32 max_metricscount,UINT32 *actual_metricscount) {
6123     return This->lpVtbl->HitTestTextRange(This,textPosition,textLength,originX,originY,metrics,max_metricscount,actual_metricscount);
6124 }
6125 /*** IDWriteTextLayout1 methods ***/
6126 static FORCEINLINE HRESULT IDWriteTextLayout3_SetPairKerning(IDWriteTextLayout3* This,WINBOOL is_pairkerning_enabled,DWRITE_TEXT_RANGE range) {
6127     return This->lpVtbl->SetPairKerning(This,is_pairkerning_enabled,range);
6128 }
6129 static FORCEINLINE HRESULT IDWriteTextLayout3_GetPairKerning(IDWriteTextLayout3* This,UINT32 position,WINBOOL *is_pairkerning_enabled,DWRITE_TEXT_RANGE *range) {
6130     return This->lpVtbl->GetPairKerning(This,position,is_pairkerning_enabled,range);
6131 }
6132 static FORCEINLINE HRESULT IDWriteTextLayout3_SetCharacterSpacing(IDWriteTextLayout3* This,FLOAT leading_spacing,FLOAT trailing_spacing,FLOAT minimum_advance_width,DWRITE_TEXT_RANGE range) {
6133     return This->lpVtbl->SetCharacterSpacing(This,leading_spacing,trailing_spacing,minimum_advance_width,range);
6134 }
6135 static FORCEINLINE HRESULT IDWriteTextLayout3_GetCharacterSpacing(IDWriteTextLayout3* This,UINT32 position,FLOAT *leading_spacing,FLOAT *trailing_spacing,FLOAT *minimum_advance_width,DWRITE_TEXT_RANGE *range) {
6136     return This->lpVtbl->GetCharacterSpacing(This,position,leading_spacing,trailing_spacing,minimum_advance_width,range);
6137 }
6138 /*** IDWriteTextLayout2 methods ***/
6139 static FORCEINLINE HRESULT IDWriteTextLayout3_GetMetrics(IDWriteTextLayout3* This,DWRITE_TEXT_METRICS1 *metrics) {
6140     return This->lpVtbl->IDWriteTextLayout2_GetMetrics(This,metrics);
6141 }
6142 static FORCEINLINE HRESULT IDWriteTextLayout3_SetVerticalGlyphOrientation(IDWriteTextLayout3* This,DWRITE_VERTICAL_GLYPH_ORIENTATION orientation) {
6143     return This->lpVtbl->SetVerticalGlyphOrientation(This,orientation);
6144 }
6145 static FORCEINLINE DWRITE_VERTICAL_GLYPH_ORIENTATION IDWriteTextLayout3_GetVerticalGlyphOrientation(IDWriteTextLayout3* This) {
6146     return This->lpVtbl->GetVerticalGlyphOrientation(This);
6147 }
6148 static FORCEINLINE HRESULT IDWriteTextLayout3_SetLastLineWrapping(IDWriteTextLayout3* This,WINBOOL lastline_wrapping_enabled) {
6149     return This->lpVtbl->SetLastLineWrapping(This,lastline_wrapping_enabled);
6150 }
6151 static FORCEINLINE WINBOOL IDWriteTextLayout3_GetLastLineWrapping(IDWriteTextLayout3* This) {
6152     return This->lpVtbl->GetLastLineWrapping(This);
6153 }
6154 static FORCEINLINE HRESULT IDWriteTextLayout3_SetOpticalAlignment(IDWriteTextLayout3* This,DWRITE_OPTICAL_ALIGNMENT alignment) {
6155     return This->lpVtbl->SetOpticalAlignment(This,alignment);
6156 }
6157 static FORCEINLINE DWRITE_OPTICAL_ALIGNMENT IDWriteTextLayout3_GetOpticalAlignment(IDWriteTextLayout3* This) {
6158     return This->lpVtbl->GetOpticalAlignment(This);
6159 }
6160 static FORCEINLINE HRESULT IDWriteTextLayout3_SetFontFallback(IDWriteTextLayout3* This,IDWriteFontFallback *fallback) {
6161     return This->lpVtbl->SetFontFallback(This,fallback);
6162 }
6163 static FORCEINLINE HRESULT IDWriteTextLayout3_GetFontFallback(IDWriteTextLayout3* This,IDWriteFontFallback **fallback) {
6164     return This->lpVtbl->GetFontFallback(This,fallback);
6165 }
6166 /*** IDWriteTextLayout3 methods ***/
6167 static FORCEINLINE HRESULT IDWriteTextLayout3_InvalidateLayout(IDWriteTextLayout3* This) {
6168     return This->lpVtbl->InvalidateLayout(This);
6169 }
6170 static FORCEINLINE HRESULT IDWriteTextLayout3_SetLineSpacing(IDWriteTextLayout3* This,const DWRITE_LINE_SPACING *spacing) {
6171     return This->lpVtbl->IDWriteTextLayout3_SetLineSpacing(This,spacing);
6172 }
6173 static FORCEINLINE HRESULT IDWriteTextLayout3_GetLineSpacing(IDWriteTextLayout3* This,DWRITE_LINE_SPACING *spacing) {
6174     return This->lpVtbl->IDWriteTextLayout3_GetLineSpacing(This,spacing);
6175 }
6176 static FORCEINLINE HRESULT IDWriteTextLayout3_GetLineMetrics(IDWriteTextLayout3* This,DWRITE_LINE_METRICS1 *metrics,UINT32 max_count,UINT32 *count) {
6177     return This->lpVtbl->IDWriteTextLayout3_GetLineMetrics(This,metrics,max_count,count);
6178 }
6179 #endif
6180 #endif
6181 
6182 #endif
6183 
6184 
6185 #endif  /* __IDWriteTextLayout3_INTERFACE_DEFINED__ */
6186 
6187 /*****************************************************************************
6188  * IDWriteTextLayout4 interface
6189  */
6190 #ifndef __IDWriteTextLayout4_INTERFACE_DEFINED__
6191 #define __IDWriteTextLayout4_INTERFACE_DEFINED__
6192 
6193 DEFINE_GUID(IID_IDWriteTextLayout4, 0x05a9bf42, 0x223f, 0x4441, 0xb5,0xfb, 0x82,0x63,0x68,0x5f,0x55,0xe9);
6194 #if defined(__cplusplus) && !defined(CINTERFACE)
6195 MIDL_INTERFACE("05a9bf42-223f-4441-b5fb-8263685f55e9")
6196 IDWriteTextLayout4 : public IDWriteTextLayout3
6197 {
6198     virtual HRESULT STDMETHODCALLTYPE SetFontAxisValues(
6199         const DWRITE_FONT_AXIS_VALUE *axis_values,
6200         UINT32 num_values,
6201         DWRITE_TEXT_RANGE range) = 0;
6202 
6203     virtual UINT32 STDMETHODCALLTYPE GetFontAxisValueCount(
6204         UINT32 pos) = 0;
6205 
6206     virtual HRESULT STDMETHODCALLTYPE GetFontAxisValues(
6207         UINT32 pos,
6208         DWRITE_FONT_AXIS_VALUE *values,
6209         UINT32 num_values,
6210         DWRITE_TEXT_RANGE *range) = 0;
6211 
6212     virtual DWRITE_AUTOMATIC_FONT_AXES STDMETHODCALLTYPE GetAutomaticFontAxes(
6213         ) = 0;
6214 
6215     virtual HRESULT STDMETHODCALLTYPE SetAutomaticFontAxes(
6216         DWRITE_AUTOMATIC_FONT_AXES axes) = 0;
6217 
6218 };
6219 #ifdef __CRT_UUID_DECL
6220 __CRT_UUID_DECL(IDWriteTextLayout4, 0x05a9bf42, 0x223f, 0x4441, 0xb5,0xfb, 0x82,0x63,0x68,0x5f,0x55,0xe9)
6221 #endif
6222 #else
6223 typedef struct IDWriteTextLayout4Vtbl {
6224     BEGIN_INTERFACE
6225 
6226     /*** IUnknown methods ***/
6227     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6228         IDWriteTextLayout4 *This,
6229         REFIID riid,
6230         void **ppvObject);
6231 
6232     ULONG (STDMETHODCALLTYPE *AddRef)(
6233         IDWriteTextLayout4 *This);
6234 
6235     ULONG (STDMETHODCALLTYPE *Release)(
6236         IDWriteTextLayout4 *This);
6237 
6238     /*** IDWriteTextFormat methods ***/
6239     HRESULT (STDMETHODCALLTYPE *SetTextAlignment)(
6240         IDWriteTextLayout4 *This,
6241         DWRITE_TEXT_ALIGNMENT alignment);
6242 
6243     HRESULT (STDMETHODCALLTYPE *SetParagraphAlignment)(
6244         IDWriteTextLayout4 *This,
6245         DWRITE_PARAGRAPH_ALIGNMENT alignment);
6246 
6247     HRESULT (STDMETHODCALLTYPE *SetWordWrapping)(
6248         IDWriteTextLayout4 *This,
6249         DWRITE_WORD_WRAPPING wrapping);
6250 
6251     HRESULT (STDMETHODCALLTYPE *SetReadingDirection)(
6252         IDWriteTextLayout4 *This,
6253         DWRITE_READING_DIRECTION direction);
6254 
6255     HRESULT (STDMETHODCALLTYPE *SetFlowDirection)(
6256         IDWriteTextLayout4 *This,
6257         DWRITE_FLOW_DIRECTION direction);
6258 
6259     HRESULT (STDMETHODCALLTYPE *SetIncrementalTabStop)(
6260         IDWriteTextLayout4 *This,
6261         FLOAT tabstop);
6262 
6263     HRESULT (STDMETHODCALLTYPE *SetTrimming)(
6264         IDWriteTextLayout4 *This,
6265         const DWRITE_TRIMMING *trimming,
6266         IDWriteInlineObject *trimming_sign);
6267 
6268     HRESULT (STDMETHODCALLTYPE *SetLineSpacing)(
6269         IDWriteTextLayout4 *This,
6270         DWRITE_LINE_SPACING_METHOD spacing,
6271         FLOAT line_spacing,
6272         FLOAT baseline);
6273 
6274     DWRITE_TEXT_ALIGNMENT (STDMETHODCALLTYPE *GetTextAlignment)(
6275         IDWriteTextLayout4 *This);
6276 
6277     DWRITE_PARAGRAPH_ALIGNMENT (STDMETHODCALLTYPE *GetParagraphAlignment)(
6278         IDWriteTextLayout4 *This);
6279 
6280     DWRITE_WORD_WRAPPING (STDMETHODCALLTYPE *GetWordWrapping)(
6281         IDWriteTextLayout4 *This);
6282 
6283     DWRITE_READING_DIRECTION (STDMETHODCALLTYPE *GetReadingDirection)(
6284         IDWriteTextLayout4 *This);
6285 
6286     DWRITE_FLOW_DIRECTION (STDMETHODCALLTYPE *GetFlowDirection)(
6287         IDWriteTextLayout4 *This);
6288 
6289     FLOAT (STDMETHODCALLTYPE *GetIncrementalTabStop)(
6290         IDWriteTextLayout4 *This);
6291 
6292     HRESULT (STDMETHODCALLTYPE *GetTrimming)(
6293         IDWriteTextLayout4 *This,
6294         DWRITE_TRIMMING *options,
6295         IDWriteInlineObject **trimming_sign);
6296 
6297     HRESULT (STDMETHODCALLTYPE *GetLineSpacing)(
6298         IDWriteTextLayout4 *This,
6299         DWRITE_LINE_SPACING_METHOD *method,
6300         FLOAT *spacing,
6301         FLOAT *baseline);
6302 
6303     HRESULT (STDMETHODCALLTYPE *GetFontCollection)(
6304         IDWriteTextLayout4 *This,
6305         IDWriteFontCollection **collection);
6306 
6307     UINT32 (STDMETHODCALLTYPE *GetFontFamilyNameLength)(
6308         IDWriteTextLayout4 *This);
6309 
6310     HRESULT (STDMETHODCALLTYPE *GetFontFamilyName)(
6311         IDWriteTextLayout4 *This,
6312         WCHAR *name,
6313         UINT32 size);
6314 
6315     DWRITE_FONT_WEIGHT (STDMETHODCALLTYPE *GetFontWeight)(
6316         IDWriteTextLayout4 *This);
6317 
6318     DWRITE_FONT_STYLE (STDMETHODCALLTYPE *GetFontStyle)(
6319         IDWriteTextLayout4 *This);
6320 
6321     DWRITE_FONT_STRETCH (STDMETHODCALLTYPE *GetFontStretch)(
6322         IDWriteTextLayout4 *This);
6323 
6324     FLOAT (STDMETHODCALLTYPE *GetFontSize)(
6325         IDWriteTextLayout4 *This);
6326 
6327     UINT32 (STDMETHODCALLTYPE *GetLocaleNameLength)(
6328         IDWriteTextLayout4 *This);
6329 
6330     HRESULT (STDMETHODCALLTYPE *GetLocaleName)(
6331         IDWriteTextLayout4 *This,
6332         WCHAR *name,
6333         UINT32 size);
6334 
6335     /*** IDWriteTextLayout methods ***/
6336     HRESULT (STDMETHODCALLTYPE *SetMaxWidth)(
6337         IDWriteTextLayout4 *This,
6338         FLOAT maxWidth);
6339 
6340     HRESULT (STDMETHODCALLTYPE *SetMaxHeight)(
6341         IDWriteTextLayout4 *This,
6342         FLOAT maxHeight);
6343 
6344     HRESULT (STDMETHODCALLTYPE *SetFontCollection)(
6345         IDWriteTextLayout4 *This,
6346         IDWriteFontCollection *collection,
6347         DWRITE_TEXT_RANGE range);
6348 
6349     HRESULT (STDMETHODCALLTYPE *SetFontFamilyName)(
6350         IDWriteTextLayout4 *This,
6351         const WCHAR *name,
6352         DWRITE_TEXT_RANGE range);
6353 
6354     HRESULT (STDMETHODCALLTYPE *SetFontWeight)(
6355         IDWriteTextLayout4 *This,
6356         DWRITE_FONT_WEIGHT weight,
6357         DWRITE_TEXT_RANGE range);
6358 
6359     HRESULT (STDMETHODCALLTYPE *SetFontStyle)(
6360         IDWriteTextLayout4 *This,
6361         DWRITE_FONT_STYLE style,
6362         DWRITE_TEXT_RANGE range);
6363 
6364     HRESULT (STDMETHODCALLTYPE *SetFontStretch)(
6365         IDWriteTextLayout4 *This,
6366         DWRITE_FONT_STRETCH stretch,
6367         DWRITE_TEXT_RANGE range);
6368 
6369     HRESULT (STDMETHODCALLTYPE *SetFontSize)(
6370         IDWriteTextLayout4 *This,
6371         FLOAT size,
6372         DWRITE_TEXT_RANGE range);
6373 
6374     HRESULT (STDMETHODCALLTYPE *SetUnderline)(
6375         IDWriteTextLayout4 *This,
6376         WINBOOL underline,
6377         DWRITE_TEXT_RANGE range);
6378 
6379     HRESULT (STDMETHODCALLTYPE *SetStrikethrough)(
6380         IDWriteTextLayout4 *This,
6381         WINBOOL strikethrough,
6382         DWRITE_TEXT_RANGE range);
6383 
6384     HRESULT (STDMETHODCALLTYPE *SetDrawingEffect)(
6385         IDWriteTextLayout4 *This,
6386         IUnknown *effect,
6387         DWRITE_TEXT_RANGE range);
6388 
6389     HRESULT (STDMETHODCALLTYPE *SetInlineObject)(
6390         IDWriteTextLayout4 *This,
6391         IDWriteInlineObject *object,
6392         DWRITE_TEXT_RANGE range);
6393 
6394     HRESULT (STDMETHODCALLTYPE *SetTypography)(
6395         IDWriteTextLayout4 *This,
6396         IDWriteTypography *typography,
6397         DWRITE_TEXT_RANGE range);
6398 
6399     HRESULT (STDMETHODCALLTYPE *SetLocaleName)(
6400         IDWriteTextLayout4 *This,
6401         const WCHAR *locale,
6402         DWRITE_TEXT_RANGE range);
6403 
6404     FLOAT (STDMETHODCALLTYPE *GetMaxWidth)(
6405         IDWriteTextLayout4 *This);
6406 
6407     FLOAT (STDMETHODCALLTYPE *GetMaxHeight)(
6408         IDWriteTextLayout4 *This);
6409 
6410     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontCollection)(
6411         IDWriteTextLayout4 *This,
6412         UINT32 pos,
6413         IDWriteFontCollection **collection,
6414         DWRITE_TEXT_RANGE *range);
6415 
6416     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontFamilyNameLength)(
6417         IDWriteTextLayout4 *This,
6418         UINT32 pos,
6419         UINT32 *len,
6420         DWRITE_TEXT_RANGE *range);
6421 
6422     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontFamilyName)(
6423         IDWriteTextLayout4 *This,
6424         UINT32 position,
6425         WCHAR *name,
6426         UINT32 name_size,
6427         DWRITE_TEXT_RANGE *range);
6428 
6429     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontWeight)(
6430         IDWriteTextLayout4 *This,
6431         UINT32 position,
6432         DWRITE_FONT_WEIGHT *weight,
6433         DWRITE_TEXT_RANGE *range);
6434 
6435     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontStyle)(
6436         IDWriteTextLayout4 *This,
6437         UINT32 currentPosition,
6438         DWRITE_FONT_STYLE *style,
6439         DWRITE_TEXT_RANGE *range);
6440 
6441     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontStretch)(
6442         IDWriteTextLayout4 *This,
6443         UINT32 position,
6444         DWRITE_FONT_STRETCH *stretch,
6445         DWRITE_TEXT_RANGE *range);
6446 
6447     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontSize)(
6448         IDWriteTextLayout4 *This,
6449         UINT32 position,
6450         FLOAT *size,
6451         DWRITE_TEXT_RANGE *range);
6452 
6453     HRESULT (STDMETHODCALLTYPE *GetUnderline)(
6454         IDWriteTextLayout4 *This,
6455         UINT32 position,
6456         WINBOOL *has_underline,
6457         DWRITE_TEXT_RANGE *range);
6458 
6459     HRESULT (STDMETHODCALLTYPE *GetStrikethrough)(
6460         IDWriteTextLayout4 *This,
6461         UINT32 position,
6462         WINBOOL *has_strikethrough,
6463         DWRITE_TEXT_RANGE *range);
6464 
6465     HRESULT (STDMETHODCALLTYPE *GetDrawingEffect)(
6466         IDWriteTextLayout4 *This,
6467         UINT32 position,
6468         IUnknown **effect,
6469         DWRITE_TEXT_RANGE *range);
6470 
6471     HRESULT (STDMETHODCALLTYPE *GetInlineObject)(
6472         IDWriteTextLayout4 *This,
6473         UINT32 position,
6474         IDWriteInlineObject **object,
6475         DWRITE_TEXT_RANGE *range);
6476 
6477     HRESULT (STDMETHODCALLTYPE *GetTypography)(
6478         IDWriteTextLayout4 *This,
6479         UINT32 position,
6480         IDWriteTypography **typography,
6481         DWRITE_TEXT_RANGE *range);
6482 
6483     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetLocaleNameLength)(
6484         IDWriteTextLayout4 *This,
6485         UINT32 position,
6486         UINT32 *length,
6487         DWRITE_TEXT_RANGE *range);
6488 
6489     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetLocaleName)(
6490         IDWriteTextLayout4 *This,
6491         UINT32 position,
6492         WCHAR *name,
6493         UINT32 name_size,
6494         DWRITE_TEXT_RANGE *range);
6495 
6496     HRESULT (STDMETHODCALLTYPE *Draw)(
6497         IDWriteTextLayout4 *This,
6498         void *context,
6499         IDWriteTextRenderer *renderer,
6500         FLOAT originX,
6501         FLOAT originY);
6502 
6503     HRESULT (STDMETHODCALLTYPE *GetLineMetrics)(
6504         IDWriteTextLayout4 *This,
6505         DWRITE_LINE_METRICS *metrics,
6506         UINT32 max_count,
6507         UINT32 *actual_count);
6508 
6509     HRESULT (STDMETHODCALLTYPE *GetMetrics)(
6510         IDWriteTextLayout4 *This,
6511         DWRITE_TEXT_METRICS *metrics);
6512 
6513     HRESULT (STDMETHODCALLTYPE *GetOverhangMetrics)(
6514         IDWriteTextLayout4 *This,
6515         DWRITE_OVERHANG_METRICS *overhangs);
6516 
6517     HRESULT (STDMETHODCALLTYPE *GetClusterMetrics)(
6518         IDWriteTextLayout4 *This,
6519         DWRITE_CLUSTER_METRICS *metrics,
6520         UINT32 max_count,
6521         UINT32 *act_count);
6522 
6523     HRESULT (STDMETHODCALLTYPE *DetermineMinWidth)(
6524         IDWriteTextLayout4 *This,
6525         FLOAT *min_width);
6526 
6527     HRESULT (STDMETHODCALLTYPE *HitTestPoint)(
6528         IDWriteTextLayout4 *This,
6529         FLOAT pointX,
6530         FLOAT pointY,
6531         WINBOOL *is_trailinghit,
6532         WINBOOL *is_inside,
6533         DWRITE_HIT_TEST_METRICS *metrics);
6534 
6535     HRESULT (STDMETHODCALLTYPE *HitTestTextPosition)(
6536         IDWriteTextLayout4 *This,
6537         UINT32 textPosition,
6538         WINBOOL is_trailinghit,
6539         FLOAT *pointX,
6540         FLOAT *pointY,
6541         DWRITE_HIT_TEST_METRICS *metrics);
6542 
6543     HRESULT (STDMETHODCALLTYPE *HitTestTextRange)(
6544         IDWriteTextLayout4 *This,
6545         UINT32 textPosition,
6546         UINT32 textLength,
6547         FLOAT originX,
6548         FLOAT originY,
6549         DWRITE_HIT_TEST_METRICS *metrics,
6550         UINT32 max_metricscount,
6551         UINT32 *actual_metricscount);
6552 
6553     /*** IDWriteTextLayout1 methods ***/
6554     HRESULT (STDMETHODCALLTYPE *SetPairKerning)(
6555         IDWriteTextLayout4 *This,
6556         WINBOOL is_pairkerning_enabled,
6557         DWRITE_TEXT_RANGE range);
6558 
6559     HRESULT (STDMETHODCALLTYPE *GetPairKerning)(
6560         IDWriteTextLayout4 *This,
6561         UINT32 position,
6562         WINBOOL *is_pairkerning_enabled,
6563         DWRITE_TEXT_RANGE *range);
6564 
6565     HRESULT (STDMETHODCALLTYPE *SetCharacterSpacing)(
6566         IDWriteTextLayout4 *This,
6567         FLOAT leading_spacing,
6568         FLOAT trailing_spacing,
6569         FLOAT minimum_advance_width,
6570         DWRITE_TEXT_RANGE range);
6571 
6572     HRESULT (STDMETHODCALLTYPE *GetCharacterSpacing)(
6573         IDWriteTextLayout4 *This,
6574         UINT32 position,
6575         FLOAT *leading_spacing,
6576         FLOAT *trailing_spacing,
6577         FLOAT *minimum_advance_width,
6578         DWRITE_TEXT_RANGE *range);
6579 
6580     /*** IDWriteTextLayout2 methods ***/
6581     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout2_GetMetrics)(
6582         IDWriteTextLayout4 *This,
6583         DWRITE_TEXT_METRICS1 *metrics);
6584 
6585     HRESULT (STDMETHODCALLTYPE *SetVerticalGlyphOrientation)(
6586         IDWriteTextLayout4 *This,
6587         DWRITE_VERTICAL_GLYPH_ORIENTATION orientation);
6588 
6589     DWRITE_VERTICAL_GLYPH_ORIENTATION (STDMETHODCALLTYPE *GetVerticalGlyphOrientation)(
6590         IDWriteTextLayout4 *This);
6591 
6592     HRESULT (STDMETHODCALLTYPE *SetLastLineWrapping)(
6593         IDWriteTextLayout4 *This,
6594         WINBOOL lastline_wrapping_enabled);
6595 
6596     WINBOOL (STDMETHODCALLTYPE *GetLastLineWrapping)(
6597         IDWriteTextLayout4 *This);
6598 
6599     HRESULT (STDMETHODCALLTYPE *SetOpticalAlignment)(
6600         IDWriteTextLayout4 *This,
6601         DWRITE_OPTICAL_ALIGNMENT alignment);
6602 
6603     DWRITE_OPTICAL_ALIGNMENT (STDMETHODCALLTYPE *GetOpticalAlignment)(
6604         IDWriteTextLayout4 *This);
6605 
6606     HRESULT (STDMETHODCALLTYPE *SetFontFallback)(
6607         IDWriteTextLayout4 *This,
6608         IDWriteFontFallback *fallback);
6609 
6610     HRESULT (STDMETHODCALLTYPE *GetFontFallback)(
6611         IDWriteTextLayout4 *This,
6612         IDWriteFontFallback **fallback);
6613 
6614     /*** IDWriteTextLayout3 methods ***/
6615     HRESULT (STDMETHODCALLTYPE *InvalidateLayout)(
6616         IDWriteTextLayout4 *This);
6617 
6618     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout3_SetLineSpacing)(
6619         IDWriteTextLayout4 *This,
6620         const DWRITE_LINE_SPACING *spacing);
6621 
6622     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout3_GetLineSpacing)(
6623         IDWriteTextLayout4 *This,
6624         DWRITE_LINE_SPACING *spacing);
6625 
6626     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout3_GetLineMetrics)(
6627         IDWriteTextLayout4 *This,
6628         DWRITE_LINE_METRICS1 *metrics,
6629         UINT32 max_count,
6630         UINT32 *count);
6631 
6632     /*** IDWriteTextLayout4 methods ***/
6633     HRESULT (STDMETHODCALLTYPE *SetFontAxisValues)(
6634         IDWriteTextLayout4 *This,
6635         const DWRITE_FONT_AXIS_VALUE *axis_values,
6636         UINT32 num_values,
6637         DWRITE_TEXT_RANGE range);
6638 
6639     UINT32 (STDMETHODCALLTYPE *GetFontAxisValueCount)(
6640         IDWriteTextLayout4 *This,
6641         UINT32 pos);
6642 
6643     HRESULT (STDMETHODCALLTYPE *GetFontAxisValues)(
6644         IDWriteTextLayout4 *This,
6645         UINT32 pos,
6646         DWRITE_FONT_AXIS_VALUE *values,
6647         UINT32 num_values,
6648         DWRITE_TEXT_RANGE *range);
6649 
6650     DWRITE_AUTOMATIC_FONT_AXES (STDMETHODCALLTYPE *GetAutomaticFontAxes)(
6651         IDWriteTextLayout4 *This);
6652 
6653     HRESULT (STDMETHODCALLTYPE *SetAutomaticFontAxes)(
6654         IDWriteTextLayout4 *This,
6655         DWRITE_AUTOMATIC_FONT_AXES axes);
6656 
6657     END_INTERFACE
6658 } IDWriteTextLayout4Vtbl;
6659 
6660 interface IDWriteTextLayout4 {
6661     CONST_VTBL IDWriteTextLayout4Vtbl* lpVtbl;
6662 };
6663 
6664 #ifdef COBJMACROS
6665 #ifndef WIDL_C_INLINE_WRAPPERS
6666 /*** IUnknown methods ***/
6667 #define IDWriteTextLayout4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6668 #define IDWriteTextLayout4_AddRef(This) (This)->lpVtbl->AddRef(This)
6669 #define IDWriteTextLayout4_Release(This) (This)->lpVtbl->Release(This)
6670 /*** IDWriteTextFormat methods ***/
6671 #define IDWriteTextLayout4_SetTextAlignment(This,alignment) (This)->lpVtbl->SetTextAlignment(This,alignment)
6672 #define IDWriteTextLayout4_SetParagraphAlignment(This,alignment) (This)->lpVtbl->SetParagraphAlignment(This,alignment)
6673 #define IDWriteTextLayout4_SetWordWrapping(This,wrapping) (This)->lpVtbl->SetWordWrapping(This,wrapping)
6674 #define IDWriteTextLayout4_SetReadingDirection(This,direction) (This)->lpVtbl->SetReadingDirection(This,direction)
6675 #define IDWriteTextLayout4_SetFlowDirection(This,direction) (This)->lpVtbl->SetFlowDirection(This,direction)
6676 #define IDWriteTextLayout4_SetIncrementalTabStop(This,tabstop) (This)->lpVtbl->SetIncrementalTabStop(This,tabstop)
6677 #define IDWriteTextLayout4_SetTrimming(This,trimming,trimming_sign) (This)->lpVtbl->SetTrimming(This,trimming,trimming_sign)
6678 #define IDWriteTextLayout4_GetTextAlignment(This) (This)->lpVtbl->GetTextAlignment(This)
6679 #define IDWriteTextLayout4_GetParagraphAlignment(This) (This)->lpVtbl->GetParagraphAlignment(This)
6680 #define IDWriteTextLayout4_GetWordWrapping(This) (This)->lpVtbl->GetWordWrapping(This)
6681 #define IDWriteTextLayout4_GetReadingDirection(This) (This)->lpVtbl->GetReadingDirection(This)
6682 #define IDWriteTextLayout4_GetFlowDirection(This) (This)->lpVtbl->GetFlowDirection(This)
6683 #define IDWriteTextLayout4_GetIncrementalTabStop(This) (This)->lpVtbl->GetIncrementalTabStop(This)
6684 #define IDWriteTextLayout4_GetTrimming(This,options,trimming_sign) (This)->lpVtbl->GetTrimming(This,options,trimming_sign)
6685 /*** IDWriteTextLayout methods ***/
6686 #define IDWriteTextLayout4_SetMaxWidth(This,maxWidth) (This)->lpVtbl->SetMaxWidth(This,maxWidth)
6687 #define IDWriteTextLayout4_SetMaxHeight(This,maxHeight) (This)->lpVtbl->SetMaxHeight(This,maxHeight)
6688 #define IDWriteTextLayout4_SetFontCollection(This,collection,range) (This)->lpVtbl->SetFontCollection(This,collection,range)
6689 #define IDWriteTextLayout4_SetFontFamilyName(This,name,range) (This)->lpVtbl->SetFontFamilyName(This,name,range)
6690 #define IDWriteTextLayout4_SetFontWeight(This,weight,range) (This)->lpVtbl->SetFontWeight(This,weight,range)
6691 #define IDWriteTextLayout4_SetFontStyle(This,style,range) (This)->lpVtbl->SetFontStyle(This,style,range)
6692 #define IDWriteTextLayout4_SetFontStretch(This,stretch,range) (This)->lpVtbl->SetFontStretch(This,stretch,range)
6693 #define IDWriteTextLayout4_SetFontSize(This,size,range) (This)->lpVtbl->SetFontSize(This,size,range)
6694 #define IDWriteTextLayout4_SetUnderline(This,underline,range) (This)->lpVtbl->SetUnderline(This,underline,range)
6695 #define IDWriteTextLayout4_SetStrikethrough(This,strikethrough,range) (This)->lpVtbl->SetStrikethrough(This,strikethrough,range)
6696 #define IDWriteTextLayout4_SetDrawingEffect(This,effect,range) (This)->lpVtbl->SetDrawingEffect(This,effect,range)
6697 #define IDWriteTextLayout4_SetInlineObject(This,object,range) (This)->lpVtbl->SetInlineObject(This,object,range)
6698 #define IDWriteTextLayout4_SetTypography(This,typography,range) (This)->lpVtbl->SetTypography(This,typography,range)
6699 #define IDWriteTextLayout4_SetLocaleName(This,locale,range) (This)->lpVtbl->SetLocaleName(This,locale,range)
6700 #define IDWriteTextLayout4_GetMaxWidth(This) (This)->lpVtbl->GetMaxWidth(This)
6701 #define IDWriteTextLayout4_GetMaxHeight(This) (This)->lpVtbl->GetMaxHeight(This)
6702 #define IDWriteTextLayout4_GetFontCollection(This,pos,collection,range) (This)->lpVtbl->IDWriteTextLayout_GetFontCollection(This,pos,collection,range)
6703 #define IDWriteTextLayout4_GetFontFamilyNameLength(This,pos,len,range) (This)->lpVtbl->IDWriteTextLayout_GetFontFamilyNameLength(This,pos,len,range)
6704 #define IDWriteTextLayout4_GetFontFamilyName(This,position,name,name_size,range) (This)->lpVtbl->IDWriteTextLayout_GetFontFamilyName(This,position,name,name_size,range)
6705 #define IDWriteTextLayout4_GetFontWeight(This,position,weight,range) (This)->lpVtbl->IDWriteTextLayout_GetFontWeight(This,position,weight,range)
6706 #define IDWriteTextLayout4_GetFontStyle(This,currentPosition,style,range) (This)->lpVtbl->IDWriteTextLayout_GetFontStyle(This,currentPosition,style,range)
6707 #define IDWriteTextLayout4_GetFontStretch(This,position,stretch,range) (This)->lpVtbl->IDWriteTextLayout_GetFontStretch(This,position,stretch,range)
6708 #define IDWriteTextLayout4_GetFontSize(This,position,size,range) (This)->lpVtbl->IDWriteTextLayout_GetFontSize(This,position,size,range)
6709 #define IDWriteTextLayout4_GetUnderline(This,position,has_underline,range) (This)->lpVtbl->GetUnderline(This,position,has_underline,range)
6710 #define IDWriteTextLayout4_GetStrikethrough(This,position,has_strikethrough,range) (This)->lpVtbl->GetStrikethrough(This,position,has_strikethrough,range)
6711 #define IDWriteTextLayout4_GetDrawingEffect(This,position,effect,range) (This)->lpVtbl->GetDrawingEffect(This,position,effect,range)
6712 #define IDWriteTextLayout4_GetInlineObject(This,position,object,range) (This)->lpVtbl->GetInlineObject(This,position,object,range)
6713 #define IDWriteTextLayout4_GetTypography(This,position,typography,range) (This)->lpVtbl->GetTypography(This,position,typography,range)
6714 #define IDWriteTextLayout4_GetLocaleNameLength(This,position,length,range) (This)->lpVtbl->IDWriteTextLayout_GetLocaleNameLength(This,position,length,range)
6715 #define IDWriteTextLayout4_GetLocaleName(This,position,name,name_size,range) (This)->lpVtbl->IDWriteTextLayout_GetLocaleName(This,position,name,name_size,range)
6716 #define IDWriteTextLayout4_Draw(This,context,renderer,originX,originY) (This)->lpVtbl->Draw(This,context,renderer,originX,originY)
6717 #define IDWriteTextLayout4_GetOverhangMetrics(This,overhangs) (This)->lpVtbl->GetOverhangMetrics(This,overhangs)
6718 #define IDWriteTextLayout4_GetClusterMetrics(This,metrics,max_count,act_count) (This)->lpVtbl->GetClusterMetrics(This,metrics,max_count,act_count)
6719 #define IDWriteTextLayout4_DetermineMinWidth(This,min_width) (This)->lpVtbl->DetermineMinWidth(This,min_width)
6720 #define IDWriteTextLayout4_HitTestPoint(This,pointX,pointY,is_trailinghit,is_inside,metrics) (This)->lpVtbl->HitTestPoint(This,pointX,pointY,is_trailinghit,is_inside,metrics)
6721 #define IDWriteTextLayout4_HitTestTextPosition(This,textPosition,is_trailinghit,pointX,pointY,metrics) (This)->lpVtbl->HitTestTextPosition(This,textPosition,is_trailinghit,pointX,pointY,metrics)
6722 #define IDWriteTextLayout4_HitTestTextRange(This,textPosition,textLength,originX,originY,metrics,max_metricscount,actual_metricscount) (This)->lpVtbl->HitTestTextRange(This,textPosition,textLength,originX,originY,metrics,max_metricscount,actual_metricscount)
6723 /*** IDWriteTextLayout1 methods ***/
6724 #define IDWriteTextLayout4_SetPairKerning(This,is_pairkerning_enabled,range) (This)->lpVtbl->SetPairKerning(This,is_pairkerning_enabled,range)
6725 #define IDWriteTextLayout4_GetPairKerning(This,position,is_pairkerning_enabled,range) (This)->lpVtbl->GetPairKerning(This,position,is_pairkerning_enabled,range)
6726 #define IDWriteTextLayout4_SetCharacterSpacing(This,leading_spacing,trailing_spacing,minimum_advance_width,range) (This)->lpVtbl->SetCharacterSpacing(This,leading_spacing,trailing_spacing,minimum_advance_width,range)
6727 #define IDWriteTextLayout4_GetCharacterSpacing(This,position,leading_spacing,trailing_spacing,minimum_advance_width,range) (This)->lpVtbl->GetCharacterSpacing(This,position,leading_spacing,trailing_spacing,minimum_advance_width,range)
6728 /*** IDWriteTextLayout2 methods ***/
6729 #define IDWriteTextLayout4_GetMetrics(This,metrics) (This)->lpVtbl->IDWriteTextLayout2_GetMetrics(This,metrics)
6730 #define IDWriteTextLayout4_SetVerticalGlyphOrientation(This,orientation) (This)->lpVtbl->SetVerticalGlyphOrientation(This,orientation)
6731 #define IDWriteTextLayout4_GetVerticalGlyphOrientation(This) (This)->lpVtbl->GetVerticalGlyphOrientation(This)
6732 #define IDWriteTextLayout4_SetLastLineWrapping(This,lastline_wrapping_enabled) (This)->lpVtbl->SetLastLineWrapping(This,lastline_wrapping_enabled)
6733 #define IDWriteTextLayout4_GetLastLineWrapping(This) (This)->lpVtbl->GetLastLineWrapping(This)
6734 #define IDWriteTextLayout4_SetOpticalAlignment(This,alignment) (This)->lpVtbl->SetOpticalAlignment(This,alignment)
6735 #define IDWriteTextLayout4_GetOpticalAlignment(This) (This)->lpVtbl->GetOpticalAlignment(This)
6736 #define IDWriteTextLayout4_SetFontFallback(This,fallback) (This)->lpVtbl->SetFontFallback(This,fallback)
6737 #define IDWriteTextLayout4_GetFontFallback(This,fallback) (This)->lpVtbl->GetFontFallback(This,fallback)
6738 /*** IDWriteTextLayout3 methods ***/
6739 #define IDWriteTextLayout4_InvalidateLayout(This) (This)->lpVtbl->InvalidateLayout(This)
6740 #define IDWriteTextLayout4_SetLineSpacing(This,spacing) (This)->lpVtbl->IDWriteTextLayout3_SetLineSpacing(This,spacing)
6741 #define IDWriteTextLayout4_GetLineSpacing(This,spacing) (This)->lpVtbl->IDWriteTextLayout3_GetLineSpacing(This,spacing)
6742 #define IDWriteTextLayout4_GetLineMetrics(This,metrics,max_count,count) (This)->lpVtbl->IDWriteTextLayout3_GetLineMetrics(This,metrics,max_count,count)
6743 /*** IDWriteTextLayout4 methods ***/
6744 #define IDWriteTextLayout4_SetFontAxisValues(This,axis_values,num_values,range) (This)->lpVtbl->SetFontAxisValues(This,axis_values,num_values,range)
6745 #define IDWriteTextLayout4_GetFontAxisValueCount(This,pos) (This)->lpVtbl->GetFontAxisValueCount(This,pos)
6746 #define IDWriteTextLayout4_GetFontAxisValues(This,pos,values,num_values,range) (This)->lpVtbl->GetFontAxisValues(This,pos,values,num_values,range)
6747 #define IDWriteTextLayout4_GetAutomaticFontAxes(This) (This)->lpVtbl->GetAutomaticFontAxes(This)
6748 #define IDWriteTextLayout4_SetAutomaticFontAxes(This,axes) (This)->lpVtbl->SetAutomaticFontAxes(This,axes)
6749 #else
6750 /*** IUnknown methods ***/
6751 static FORCEINLINE HRESULT IDWriteTextLayout4_QueryInterface(IDWriteTextLayout4* This,REFIID riid,void **ppvObject) {
6752     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6753 }
6754 static FORCEINLINE ULONG IDWriteTextLayout4_AddRef(IDWriteTextLayout4* This) {
6755     return This->lpVtbl->AddRef(This);
6756 }
6757 static FORCEINLINE ULONG IDWriteTextLayout4_Release(IDWriteTextLayout4* This) {
6758     return This->lpVtbl->Release(This);
6759 }
6760 /*** IDWriteTextFormat methods ***/
6761 static FORCEINLINE HRESULT IDWriteTextLayout4_SetTextAlignment(IDWriteTextLayout4* This,DWRITE_TEXT_ALIGNMENT alignment) {
6762     return This->lpVtbl->SetTextAlignment(This,alignment);
6763 }
6764 static FORCEINLINE HRESULT IDWriteTextLayout4_SetParagraphAlignment(IDWriteTextLayout4* This,DWRITE_PARAGRAPH_ALIGNMENT alignment) {
6765     return This->lpVtbl->SetParagraphAlignment(This,alignment);
6766 }
6767 static FORCEINLINE HRESULT IDWriteTextLayout4_SetWordWrapping(IDWriteTextLayout4* This,DWRITE_WORD_WRAPPING wrapping) {
6768     return This->lpVtbl->SetWordWrapping(This,wrapping);
6769 }
6770 static FORCEINLINE HRESULT IDWriteTextLayout4_SetReadingDirection(IDWriteTextLayout4* This,DWRITE_READING_DIRECTION direction) {
6771     return This->lpVtbl->SetReadingDirection(This,direction);
6772 }
6773 static FORCEINLINE HRESULT IDWriteTextLayout4_SetFlowDirection(IDWriteTextLayout4* This,DWRITE_FLOW_DIRECTION direction) {
6774     return This->lpVtbl->SetFlowDirection(This,direction);
6775 }
6776 static FORCEINLINE HRESULT IDWriteTextLayout4_SetIncrementalTabStop(IDWriteTextLayout4* This,FLOAT tabstop) {
6777     return This->lpVtbl->SetIncrementalTabStop(This,tabstop);
6778 }
6779 static FORCEINLINE HRESULT IDWriteTextLayout4_SetTrimming(IDWriteTextLayout4* This,const DWRITE_TRIMMING *trimming,IDWriteInlineObject *trimming_sign) {
6780     return This->lpVtbl->SetTrimming(This,trimming,trimming_sign);
6781 }
6782 static FORCEINLINE DWRITE_TEXT_ALIGNMENT IDWriteTextLayout4_GetTextAlignment(IDWriteTextLayout4* This) {
6783     return This->lpVtbl->GetTextAlignment(This);
6784 }
6785 static FORCEINLINE DWRITE_PARAGRAPH_ALIGNMENT IDWriteTextLayout4_GetParagraphAlignment(IDWriteTextLayout4* This) {
6786     return This->lpVtbl->GetParagraphAlignment(This);
6787 }
6788 static FORCEINLINE DWRITE_WORD_WRAPPING IDWriteTextLayout4_GetWordWrapping(IDWriteTextLayout4* This) {
6789     return This->lpVtbl->GetWordWrapping(This);
6790 }
6791 static FORCEINLINE DWRITE_READING_DIRECTION IDWriteTextLayout4_GetReadingDirection(IDWriteTextLayout4* This) {
6792     return This->lpVtbl->GetReadingDirection(This);
6793 }
6794 static FORCEINLINE DWRITE_FLOW_DIRECTION IDWriteTextLayout4_GetFlowDirection(IDWriteTextLayout4* This) {
6795     return This->lpVtbl->GetFlowDirection(This);
6796 }
6797 static FORCEINLINE FLOAT IDWriteTextLayout4_GetIncrementalTabStop(IDWriteTextLayout4* This) {
6798     return This->lpVtbl->GetIncrementalTabStop(This);
6799 }
6800 static FORCEINLINE HRESULT IDWriteTextLayout4_GetTrimming(IDWriteTextLayout4* This,DWRITE_TRIMMING *options,IDWriteInlineObject **trimming_sign) {
6801     return This->lpVtbl->GetTrimming(This,options,trimming_sign);
6802 }
6803 /*** IDWriteTextLayout methods ***/
6804 static FORCEINLINE HRESULT IDWriteTextLayout4_SetMaxWidth(IDWriteTextLayout4* This,FLOAT maxWidth) {
6805     return This->lpVtbl->SetMaxWidth(This,maxWidth);
6806 }
6807 static FORCEINLINE HRESULT IDWriteTextLayout4_SetMaxHeight(IDWriteTextLayout4* This,FLOAT maxHeight) {
6808     return This->lpVtbl->SetMaxHeight(This,maxHeight);
6809 }
6810 static FORCEINLINE HRESULT IDWriteTextLayout4_SetFontCollection(IDWriteTextLayout4* This,IDWriteFontCollection *collection,DWRITE_TEXT_RANGE range) {
6811     return This->lpVtbl->SetFontCollection(This,collection,range);
6812 }
6813 static FORCEINLINE HRESULT IDWriteTextLayout4_SetFontFamilyName(IDWriteTextLayout4* This,const WCHAR *name,DWRITE_TEXT_RANGE range) {
6814     return This->lpVtbl->SetFontFamilyName(This,name,range);
6815 }
6816 static FORCEINLINE HRESULT IDWriteTextLayout4_SetFontWeight(IDWriteTextLayout4* This,DWRITE_FONT_WEIGHT weight,DWRITE_TEXT_RANGE range) {
6817     return This->lpVtbl->SetFontWeight(This,weight,range);
6818 }
6819 static FORCEINLINE HRESULT IDWriteTextLayout4_SetFontStyle(IDWriteTextLayout4* This,DWRITE_FONT_STYLE style,DWRITE_TEXT_RANGE range) {
6820     return This->lpVtbl->SetFontStyle(This,style,range);
6821 }
6822 static FORCEINLINE HRESULT IDWriteTextLayout4_SetFontStretch(IDWriteTextLayout4* This,DWRITE_FONT_STRETCH stretch,DWRITE_TEXT_RANGE range) {
6823     return This->lpVtbl->SetFontStretch(This,stretch,range);
6824 }
6825 static FORCEINLINE HRESULT IDWriteTextLayout4_SetFontSize(IDWriteTextLayout4* This,FLOAT size,DWRITE_TEXT_RANGE range) {
6826     return This->lpVtbl->SetFontSize(This,size,range);
6827 }
6828 static FORCEINLINE HRESULT IDWriteTextLayout4_SetUnderline(IDWriteTextLayout4* This,WINBOOL underline,DWRITE_TEXT_RANGE range) {
6829     return This->lpVtbl->SetUnderline(This,underline,range);
6830 }
6831 static FORCEINLINE HRESULT IDWriteTextLayout4_SetStrikethrough(IDWriteTextLayout4* This,WINBOOL strikethrough,DWRITE_TEXT_RANGE range) {
6832     return This->lpVtbl->SetStrikethrough(This,strikethrough,range);
6833 }
6834 static FORCEINLINE HRESULT IDWriteTextLayout4_SetDrawingEffect(IDWriteTextLayout4* This,IUnknown *effect,DWRITE_TEXT_RANGE range) {
6835     return This->lpVtbl->SetDrawingEffect(This,effect,range);
6836 }
6837 static FORCEINLINE HRESULT IDWriteTextLayout4_SetInlineObject(IDWriteTextLayout4* This,IDWriteInlineObject *object,DWRITE_TEXT_RANGE range) {
6838     return This->lpVtbl->SetInlineObject(This,object,range);
6839 }
6840 static FORCEINLINE HRESULT IDWriteTextLayout4_SetTypography(IDWriteTextLayout4* This,IDWriteTypography *typography,DWRITE_TEXT_RANGE range) {
6841     return This->lpVtbl->SetTypography(This,typography,range);
6842 }
6843 static FORCEINLINE HRESULT IDWriteTextLayout4_SetLocaleName(IDWriteTextLayout4* This,const WCHAR *locale,DWRITE_TEXT_RANGE range) {
6844     return This->lpVtbl->SetLocaleName(This,locale,range);
6845 }
6846 static FORCEINLINE FLOAT IDWriteTextLayout4_GetMaxWidth(IDWriteTextLayout4* This) {
6847     return This->lpVtbl->GetMaxWidth(This);
6848 }
6849 static FORCEINLINE FLOAT IDWriteTextLayout4_GetMaxHeight(IDWriteTextLayout4* This) {
6850     return This->lpVtbl->GetMaxHeight(This);
6851 }
6852 static FORCEINLINE HRESULT IDWriteTextLayout4_GetFontCollection(IDWriteTextLayout4* This,UINT32 pos,IDWriteFontCollection **collection,DWRITE_TEXT_RANGE *range) {
6853     return This->lpVtbl->IDWriteTextLayout_GetFontCollection(This,pos,collection,range);
6854 }
6855 static FORCEINLINE HRESULT IDWriteTextLayout4_GetFontFamilyNameLength(IDWriteTextLayout4* This,UINT32 pos,UINT32 *len,DWRITE_TEXT_RANGE *range) {
6856     return This->lpVtbl->IDWriteTextLayout_GetFontFamilyNameLength(This,pos,len,range);
6857 }
6858 static FORCEINLINE HRESULT IDWriteTextLayout4_GetFontFamilyName(IDWriteTextLayout4* This,UINT32 position,WCHAR *name,UINT32 name_size,DWRITE_TEXT_RANGE *range) {
6859     return This->lpVtbl->IDWriteTextLayout_GetFontFamilyName(This,position,name,name_size,range);
6860 }
6861 static FORCEINLINE HRESULT IDWriteTextLayout4_GetFontWeight(IDWriteTextLayout4* This,UINT32 position,DWRITE_FONT_WEIGHT *weight,DWRITE_TEXT_RANGE *range) {
6862     return This->lpVtbl->IDWriteTextLayout_GetFontWeight(This,position,weight,range);
6863 }
6864 static FORCEINLINE HRESULT IDWriteTextLayout4_GetFontStyle(IDWriteTextLayout4* This,UINT32 currentPosition,DWRITE_FONT_STYLE *style,DWRITE_TEXT_RANGE *range) {
6865     return This->lpVtbl->IDWriteTextLayout_GetFontStyle(This,currentPosition,style,range);
6866 }
6867 static FORCEINLINE HRESULT IDWriteTextLayout4_GetFontStretch(IDWriteTextLayout4* This,UINT32 position,DWRITE_FONT_STRETCH *stretch,DWRITE_TEXT_RANGE *range) {
6868     return This->lpVtbl->IDWriteTextLayout_GetFontStretch(This,position,stretch,range);
6869 }
6870 static FORCEINLINE HRESULT IDWriteTextLayout4_GetFontSize(IDWriteTextLayout4* This,UINT32 position,FLOAT *size,DWRITE_TEXT_RANGE *range) {
6871     return This->lpVtbl->IDWriteTextLayout_GetFontSize(This,position,size,range);
6872 }
6873 static FORCEINLINE HRESULT IDWriteTextLayout4_GetUnderline(IDWriteTextLayout4* This,UINT32 position,WINBOOL *has_underline,DWRITE_TEXT_RANGE *range) {
6874     return This->lpVtbl->GetUnderline(This,position,has_underline,range);
6875 }
6876 static FORCEINLINE HRESULT IDWriteTextLayout4_GetStrikethrough(IDWriteTextLayout4* This,UINT32 position,WINBOOL *has_strikethrough,DWRITE_TEXT_RANGE *range) {
6877     return This->lpVtbl->GetStrikethrough(This,position,has_strikethrough,range);
6878 }
6879 static FORCEINLINE HRESULT IDWriteTextLayout4_GetDrawingEffect(IDWriteTextLayout4* This,UINT32 position,IUnknown **effect,DWRITE_TEXT_RANGE *range) {
6880     return This->lpVtbl->GetDrawingEffect(This,position,effect,range);
6881 }
6882 static FORCEINLINE HRESULT IDWriteTextLayout4_GetInlineObject(IDWriteTextLayout4* This,UINT32 position,IDWriteInlineObject **object,DWRITE_TEXT_RANGE *range) {
6883     return This->lpVtbl->GetInlineObject(This,position,object,range);
6884 }
6885 static FORCEINLINE HRESULT IDWriteTextLayout4_GetTypography(IDWriteTextLayout4* This,UINT32 position,IDWriteTypography **typography,DWRITE_TEXT_RANGE *range) {
6886     return This->lpVtbl->GetTypography(This,position,typography,range);
6887 }
6888 static FORCEINLINE HRESULT IDWriteTextLayout4_GetLocaleNameLength(IDWriteTextLayout4* This,UINT32 position,UINT32 *length,DWRITE_TEXT_RANGE *range) {
6889     return This->lpVtbl->IDWriteTextLayout_GetLocaleNameLength(This,position,length,range);
6890 }
6891 static FORCEINLINE HRESULT IDWriteTextLayout4_GetLocaleName(IDWriteTextLayout4* This,UINT32 position,WCHAR *name,UINT32 name_size,DWRITE_TEXT_RANGE *range) {
6892     return This->lpVtbl->IDWriteTextLayout_GetLocaleName(This,position,name,name_size,range);
6893 }
6894 static FORCEINLINE HRESULT IDWriteTextLayout4_Draw(IDWriteTextLayout4* This,void *context,IDWriteTextRenderer *renderer,FLOAT originX,FLOAT originY) {
6895     return This->lpVtbl->Draw(This,context,renderer,originX,originY);
6896 }
6897 static FORCEINLINE HRESULT IDWriteTextLayout4_GetOverhangMetrics(IDWriteTextLayout4* This,DWRITE_OVERHANG_METRICS *overhangs) {
6898     return This->lpVtbl->GetOverhangMetrics(This,overhangs);
6899 }
6900 static FORCEINLINE HRESULT IDWriteTextLayout4_GetClusterMetrics(IDWriteTextLayout4* This,DWRITE_CLUSTER_METRICS *metrics,UINT32 max_count,UINT32 *act_count) {
6901     return This->lpVtbl->GetClusterMetrics(This,metrics,max_count,act_count);
6902 }
6903 static FORCEINLINE HRESULT IDWriteTextLayout4_DetermineMinWidth(IDWriteTextLayout4* This,FLOAT *min_width) {
6904     return This->lpVtbl->DetermineMinWidth(This,min_width);
6905 }
6906 static FORCEINLINE HRESULT IDWriteTextLayout4_HitTestPoint(IDWriteTextLayout4* This,FLOAT pointX,FLOAT pointY,WINBOOL *is_trailinghit,WINBOOL *is_inside,DWRITE_HIT_TEST_METRICS *metrics) {
6907     return This->lpVtbl->HitTestPoint(This,pointX,pointY,is_trailinghit,is_inside,metrics);
6908 }
6909 static FORCEINLINE HRESULT IDWriteTextLayout4_HitTestTextPosition(IDWriteTextLayout4* This,UINT32 textPosition,WINBOOL is_trailinghit,FLOAT *pointX,FLOAT *pointY,DWRITE_HIT_TEST_METRICS *metrics) {
6910     return This->lpVtbl->HitTestTextPosition(This,textPosition,is_trailinghit,pointX,pointY,metrics);
6911 }
6912 static FORCEINLINE HRESULT IDWriteTextLayout4_HitTestTextRange(IDWriteTextLayout4* This,UINT32 textPosition,UINT32 textLength,FLOAT originX,FLOAT originY,DWRITE_HIT_TEST_METRICS *metrics,UINT32 max_metricscount,UINT32 *actual_metricscount) {
6913     return This->lpVtbl->HitTestTextRange(This,textPosition,textLength,originX,originY,metrics,max_metricscount,actual_metricscount);
6914 }
6915 /*** IDWriteTextLayout1 methods ***/
6916 static FORCEINLINE HRESULT IDWriteTextLayout4_SetPairKerning(IDWriteTextLayout4* This,WINBOOL is_pairkerning_enabled,DWRITE_TEXT_RANGE range) {
6917     return This->lpVtbl->SetPairKerning(This,is_pairkerning_enabled,range);
6918 }
6919 static FORCEINLINE HRESULT IDWriteTextLayout4_GetPairKerning(IDWriteTextLayout4* This,UINT32 position,WINBOOL *is_pairkerning_enabled,DWRITE_TEXT_RANGE *range) {
6920     return This->lpVtbl->GetPairKerning(This,position,is_pairkerning_enabled,range);
6921 }
6922 static FORCEINLINE HRESULT IDWriteTextLayout4_SetCharacterSpacing(IDWriteTextLayout4* This,FLOAT leading_spacing,FLOAT trailing_spacing,FLOAT minimum_advance_width,DWRITE_TEXT_RANGE range) {
6923     return This->lpVtbl->SetCharacterSpacing(This,leading_spacing,trailing_spacing,minimum_advance_width,range);
6924 }
6925 static FORCEINLINE HRESULT IDWriteTextLayout4_GetCharacterSpacing(IDWriteTextLayout4* This,UINT32 position,FLOAT *leading_spacing,FLOAT *trailing_spacing,FLOAT *minimum_advance_width,DWRITE_TEXT_RANGE *range) {
6926     return This->lpVtbl->GetCharacterSpacing(This,position,leading_spacing,trailing_spacing,minimum_advance_width,range);
6927 }
6928 /*** IDWriteTextLayout2 methods ***/
6929 static FORCEINLINE HRESULT IDWriteTextLayout4_GetMetrics(IDWriteTextLayout4* This,DWRITE_TEXT_METRICS1 *metrics) {
6930     return This->lpVtbl->IDWriteTextLayout2_GetMetrics(This,metrics);
6931 }
6932 static FORCEINLINE HRESULT IDWriteTextLayout4_SetVerticalGlyphOrientation(IDWriteTextLayout4* This,DWRITE_VERTICAL_GLYPH_ORIENTATION orientation) {
6933     return This->lpVtbl->SetVerticalGlyphOrientation(This,orientation);
6934 }
6935 static FORCEINLINE DWRITE_VERTICAL_GLYPH_ORIENTATION IDWriteTextLayout4_GetVerticalGlyphOrientation(IDWriteTextLayout4* This) {
6936     return This->lpVtbl->GetVerticalGlyphOrientation(This);
6937 }
6938 static FORCEINLINE HRESULT IDWriteTextLayout4_SetLastLineWrapping(IDWriteTextLayout4* This,WINBOOL lastline_wrapping_enabled) {
6939     return This->lpVtbl->SetLastLineWrapping(This,lastline_wrapping_enabled);
6940 }
6941 static FORCEINLINE WINBOOL IDWriteTextLayout4_GetLastLineWrapping(IDWriteTextLayout4* This) {
6942     return This->lpVtbl->GetLastLineWrapping(This);
6943 }
6944 static FORCEINLINE HRESULT IDWriteTextLayout4_SetOpticalAlignment(IDWriteTextLayout4* This,DWRITE_OPTICAL_ALIGNMENT alignment) {
6945     return This->lpVtbl->SetOpticalAlignment(This,alignment);
6946 }
6947 static FORCEINLINE DWRITE_OPTICAL_ALIGNMENT IDWriteTextLayout4_GetOpticalAlignment(IDWriteTextLayout4* This) {
6948     return This->lpVtbl->GetOpticalAlignment(This);
6949 }
6950 static FORCEINLINE HRESULT IDWriteTextLayout4_SetFontFallback(IDWriteTextLayout4* This,IDWriteFontFallback *fallback) {
6951     return This->lpVtbl->SetFontFallback(This,fallback);
6952 }
6953 static FORCEINLINE HRESULT IDWriteTextLayout4_GetFontFallback(IDWriteTextLayout4* This,IDWriteFontFallback **fallback) {
6954     return This->lpVtbl->GetFontFallback(This,fallback);
6955 }
6956 /*** IDWriteTextLayout3 methods ***/
6957 static FORCEINLINE HRESULT IDWriteTextLayout4_InvalidateLayout(IDWriteTextLayout4* This) {
6958     return This->lpVtbl->InvalidateLayout(This);
6959 }
6960 static FORCEINLINE HRESULT IDWriteTextLayout4_SetLineSpacing(IDWriteTextLayout4* This,const DWRITE_LINE_SPACING *spacing) {
6961     return This->lpVtbl->IDWriteTextLayout3_SetLineSpacing(This,spacing);
6962 }
6963 static FORCEINLINE HRESULT IDWriteTextLayout4_GetLineSpacing(IDWriteTextLayout4* This,DWRITE_LINE_SPACING *spacing) {
6964     return This->lpVtbl->IDWriteTextLayout3_GetLineSpacing(This,spacing);
6965 }
6966 static FORCEINLINE HRESULT IDWriteTextLayout4_GetLineMetrics(IDWriteTextLayout4* This,DWRITE_LINE_METRICS1 *metrics,UINT32 max_count,UINT32 *count) {
6967     return This->lpVtbl->IDWriteTextLayout3_GetLineMetrics(This,metrics,max_count,count);
6968 }
6969 /*** IDWriteTextLayout4 methods ***/
6970 static FORCEINLINE HRESULT IDWriteTextLayout4_SetFontAxisValues(IDWriteTextLayout4* This,const DWRITE_FONT_AXIS_VALUE *axis_values,UINT32 num_values,DWRITE_TEXT_RANGE range) {
6971     return This->lpVtbl->SetFontAxisValues(This,axis_values,num_values,range);
6972 }
6973 static FORCEINLINE UINT32 IDWriteTextLayout4_GetFontAxisValueCount(IDWriteTextLayout4* This,UINT32 pos) {
6974     return This->lpVtbl->GetFontAxisValueCount(This,pos);
6975 }
6976 static FORCEINLINE HRESULT IDWriteTextLayout4_GetFontAxisValues(IDWriteTextLayout4* This,UINT32 pos,DWRITE_FONT_AXIS_VALUE *values,UINT32 num_values,DWRITE_TEXT_RANGE *range) {
6977     return This->lpVtbl->GetFontAxisValues(This,pos,values,num_values,range);
6978 }
6979 static FORCEINLINE DWRITE_AUTOMATIC_FONT_AXES IDWriteTextLayout4_GetAutomaticFontAxes(IDWriteTextLayout4* This) {
6980     return This->lpVtbl->GetAutomaticFontAxes(This);
6981 }
6982 static FORCEINLINE HRESULT IDWriteTextLayout4_SetAutomaticFontAxes(IDWriteTextLayout4* This,DWRITE_AUTOMATIC_FONT_AXES axes) {
6983     return This->lpVtbl->SetAutomaticFontAxes(This,axes);
6984 }
6985 #endif
6986 #endif
6987 
6988 #endif
6989 
6990 
6991 #endif  /* __IDWriteTextLayout4_INTERFACE_DEFINED__ */
6992 
6993 /*****************************************************************************
6994  * IDWriteFontFallback1 interface
6995  */
6996 #ifndef __IDWriteFontFallback1_INTERFACE_DEFINED__
6997 #define __IDWriteFontFallback1_INTERFACE_DEFINED__
6998 
6999 DEFINE_GUID(IID_IDWriteFontFallback1, 0x2397599d, 0xdd0d, 0x4681, 0xbd,0x6a, 0xf4,0xf3,0x1e,0xaa,0xde,0x77);
7000 #if defined(__cplusplus) && !defined(CINTERFACE)
7001 MIDL_INTERFACE("2397599d-dd0d-4681-bd6a-f4f31eaade77")
7002 IDWriteFontFallback1 : public IDWriteFontFallback
7003 {
7004     virtual HRESULT STDMETHODCALLTYPE MapCharacters(
7005         IDWriteTextAnalysisSource *source,
7006         UINT32 pos,
7007         UINT32 length,
7008         IDWriteFontCollection *base_collection,
7009         const WCHAR *familyname,
7010         const DWRITE_FONT_AXIS_VALUE *axis_values,
7011         UINT32 num_values,
7012         UINT32 *mapped_length,
7013         FLOAT *scale,
7014         IDWriteFontFace5 **fontface) = 0;
7015 
7016 };
7017 #ifdef __CRT_UUID_DECL
7018 __CRT_UUID_DECL(IDWriteFontFallback1, 0x2397599d, 0xdd0d, 0x4681, 0xbd,0x6a, 0xf4,0xf3,0x1e,0xaa,0xde,0x77)
7019 #endif
7020 #else
7021 typedef struct IDWriteFontFallback1Vtbl {
7022     BEGIN_INTERFACE
7023 
7024     /*** IUnknown methods ***/
7025     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7026         IDWriteFontFallback1 *This,
7027         REFIID riid,
7028         void **ppvObject);
7029 
7030     ULONG (STDMETHODCALLTYPE *AddRef)(
7031         IDWriteFontFallback1 *This);
7032 
7033     ULONG (STDMETHODCALLTYPE *Release)(
7034         IDWriteFontFallback1 *This);
7035 
7036     /*** IDWriteFontFallback methods ***/
7037     HRESULT (STDMETHODCALLTYPE *MapCharacters)(
7038         IDWriteFontFallback1 *This,
7039         IDWriteTextAnalysisSource *source,
7040         UINT32 position,
7041         UINT32 length,
7042         IDWriteFontCollection *basecollection,
7043         const WCHAR *baseFamilyName,
7044         DWRITE_FONT_WEIGHT baseWeight,
7045         DWRITE_FONT_STYLE baseStyle,
7046         DWRITE_FONT_STRETCH baseStretch,
7047         UINT32 *mappedLength,
7048         IDWriteFont **mappedFont,
7049         FLOAT *scale);
7050 
7051     /*** IDWriteFontFallback1 methods ***/
7052     HRESULT (STDMETHODCALLTYPE *IDWriteFontFallback1_MapCharacters)(
7053         IDWriteFontFallback1 *This,
7054         IDWriteTextAnalysisSource *source,
7055         UINT32 pos,
7056         UINT32 length,
7057         IDWriteFontCollection *base_collection,
7058         const WCHAR *familyname,
7059         const DWRITE_FONT_AXIS_VALUE *axis_values,
7060         UINT32 num_values,
7061         UINT32 *mapped_length,
7062         FLOAT *scale,
7063         IDWriteFontFace5 **fontface);
7064 
7065     END_INTERFACE
7066 } IDWriteFontFallback1Vtbl;
7067 
7068 interface IDWriteFontFallback1 {
7069     CONST_VTBL IDWriteFontFallback1Vtbl* lpVtbl;
7070 };
7071 
7072 #ifdef COBJMACROS
7073 #ifndef WIDL_C_INLINE_WRAPPERS
7074 /*** IUnknown methods ***/
7075 #define IDWriteFontFallback1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
7076 #define IDWriteFontFallback1_AddRef(This) (This)->lpVtbl->AddRef(This)
7077 #define IDWriteFontFallback1_Release(This) (This)->lpVtbl->Release(This)
7078 /*** IDWriteFontFallback methods ***/
7079 /*** IDWriteFontFallback1 methods ***/
7080 #define IDWriteFontFallback1_MapCharacters(This,source,pos,length,base_collection,familyname,axis_values,num_values,mapped_length,scale,fontface) (This)->lpVtbl->IDWriteFontFallback1_MapCharacters(This,source,pos,length,base_collection,familyname,axis_values,num_values,mapped_length,scale,fontface)
7081 #else
7082 /*** IUnknown methods ***/
7083 static FORCEINLINE HRESULT IDWriteFontFallback1_QueryInterface(IDWriteFontFallback1* This,REFIID riid,void **ppvObject) {
7084     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7085 }
7086 static FORCEINLINE ULONG IDWriteFontFallback1_AddRef(IDWriteFontFallback1* This) {
7087     return This->lpVtbl->AddRef(This);
7088 }
7089 static FORCEINLINE ULONG IDWriteFontFallback1_Release(IDWriteFontFallback1* This) {
7090     return This->lpVtbl->Release(This);
7091 }
7092 /*** IDWriteFontFallback methods ***/
7093 /*** IDWriteFontFallback1 methods ***/
7094 static FORCEINLINE HRESULT IDWriteFontFallback1_MapCharacters(IDWriteFontFallback1* This,IDWriteTextAnalysisSource *source,UINT32 pos,UINT32 length,IDWriteFontCollection *base_collection,const WCHAR *familyname,const DWRITE_FONT_AXIS_VALUE *axis_values,UINT32 num_values,UINT32 *mapped_length,FLOAT *scale,IDWriteFontFace5 **fontface) {
7095     return This->lpVtbl->IDWriteFontFallback1_MapCharacters(This,source,pos,length,base_collection,familyname,axis_values,num_values,mapped_length,scale,fontface);
7096 }
7097 #endif
7098 #endif
7099 
7100 #endif
7101 
7102 
7103 #endif  /* __IDWriteFontFallback1_INTERFACE_DEFINED__ */
7104 
7105 /*****************************************************************************
7106  * IDWriteGdiInterop1 interface
7107  */
7108 #ifndef __IDWriteGdiInterop1_INTERFACE_DEFINED__
7109 #define __IDWriteGdiInterop1_INTERFACE_DEFINED__
7110 
7111 DEFINE_GUID(IID_IDWriteGdiInterop1, 0x4556be70, 0x3abd, 0x4f70, 0x90,0xbe, 0x42,0x17,0x80,0xa6,0xf5,0x15);
7112 #if defined(__cplusplus) && !defined(CINTERFACE)
7113 MIDL_INTERFACE("4556be70-3abd-4f70-90be-421780a6f515")
7114 IDWriteGdiInterop1 : public IDWriteGdiInterop
7115 {
7116     virtual HRESULT STDMETHODCALLTYPE CreateFontFromLOGFONT(
7117         const LOGFONTW *logfont,
7118         IDWriteFontCollection *collection,
7119         IDWriteFont **font) = 0;
7120 
7121     virtual HRESULT STDMETHODCALLTYPE GetFontSignature_(
7122         IDWriteFontFace *fontface,
7123         FONTSIGNATURE *fontsig) = 0;
7124 
7125     virtual HRESULT STDMETHODCALLTYPE GetFontSignature(
7126         IDWriteFont *font,
7127         FONTSIGNATURE *fontsig) = 0;
7128 
7129     virtual HRESULT STDMETHODCALLTYPE GetMatchingFontsByLOGFONT(
7130         const LOGFONTW *logfont,
7131         IDWriteFontSet *fontset,
7132         IDWriteFontSet **subset) = 0;
7133 
7134 };
7135 #ifdef __CRT_UUID_DECL
7136 __CRT_UUID_DECL(IDWriteGdiInterop1, 0x4556be70, 0x3abd, 0x4f70, 0x90,0xbe, 0x42,0x17,0x80,0xa6,0xf5,0x15)
7137 #endif
7138 #else
7139 typedef struct IDWriteGdiInterop1Vtbl {
7140     BEGIN_INTERFACE
7141 
7142     /*** IUnknown methods ***/
7143     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7144         IDWriteGdiInterop1 *This,
7145         REFIID riid,
7146         void **ppvObject);
7147 
7148     ULONG (STDMETHODCALLTYPE *AddRef)(
7149         IDWriteGdiInterop1 *This);
7150 
7151     ULONG (STDMETHODCALLTYPE *Release)(
7152         IDWriteGdiInterop1 *This);
7153 
7154     /*** IDWriteGdiInterop methods ***/
7155     HRESULT (STDMETHODCALLTYPE *CreateFontFromLOGFONT)(
7156         IDWriteGdiInterop1 *This,
7157         const LOGFONTW *logfont,
7158         IDWriteFont **font);
7159 
7160     HRESULT (STDMETHODCALLTYPE *ConvertFontToLOGFONT)(
7161         IDWriteGdiInterop1 *This,
7162         IDWriteFont *font,
7163         LOGFONTW *logfont,
7164         WINBOOL *is_systemfont);
7165 
7166     HRESULT (STDMETHODCALLTYPE *ConvertFontFaceToLOGFONT)(
7167         IDWriteGdiInterop1 *This,
7168         IDWriteFontFace *font,
7169         LOGFONTW *logfont);
7170 
7171     HRESULT (STDMETHODCALLTYPE *CreateFontFaceFromHdc)(
7172         IDWriteGdiInterop1 *This,
7173         HDC hdc,
7174         IDWriteFontFace **fontface);
7175 
7176     HRESULT (STDMETHODCALLTYPE *CreateBitmapRenderTarget)(
7177         IDWriteGdiInterop1 *This,
7178         HDC hdc,
7179         UINT32 width,
7180         UINT32 height,
7181         IDWriteBitmapRenderTarget **target);
7182 
7183     /*** IDWriteGdiInterop1 methods ***/
7184     HRESULT (STDMETHODCALLTYPE *IDWriteGdiInterop1_CreateFontFromLOGFONT)(
7185         IDWriteGdiInterop1 *This,
7186         const LOGFONTW *logfont,
7187         IDWriteFontCollection *collection,
7188         IDWriteFont **font);
7189 
7190     HRESULT (STDMETHODCALLTYPE *GetFontSignature_)(
7191         IDWriteGdiInterop1 *This,
7192         IDWriteFontFace *fontface,
7193         FONTSIGNATURE *fontsig);
7194 
7195     HRESULT (STDMETHODCALLTYPE *GetFontSignature)(
7196         IDWriteGdiInterop1 *This,
7197         IDWriteFont *font,
7198         FONTSIGNATURE *fontsig);
7199 
7200     HRESULT (STDMETHODCALLTYPE *GetMatchingFontsByLOGFONT)(
7201         IDWriteGdiInterop1 *This,
7202         const LOGFONTW *logfont,
7203         IDWriteFontSet *fontset,
7204         IDWriteFontSet **subset);
7205 
7206     END_INTERFACE
7207 } IDWriteGdiInterop1Vtbl;
7208 
7209 interface IDWriteGdiInterop1 {
7210     CONST_VTBL IDWriteGdiInterop1Vtbl* lpVtbl;
7211 };
7212 
7213 #ifdef COBJMACROS
7214 #ifndef WIDL_C_INLINE_WRAPPERS
7215 /*** IUnknown methods ***/
7216 #define IDWriteGdiInterop1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
7217 #define IDWriteGdiInterop1_AddRef(This) (This)->lpVtbl->AddRef(This)
7218 #define IDWriteGdiInterop1_Release(This) (This)->lpVtbl->Release(This)
7219 /*** IDWriteGdiInterop methods ***/
7220 #define IDWriteGdiInterop1_ConvertFontToLOGFONT(This,font,logfont,is_systemfont) (This)->lpVtbl->ConvertFontToLOGFONT(This,font,logfont,is_systemfont)
7221 #define IDWriteGdiInterop1_ConvertFontFaceToLOGFONT(This,font,logfont) (This)->lpVtbl->ConvertFontFaceToLOGFONT(This,font,logfont)
7222 #define IDWriteGdiInterop1_CreateFontFaceFromHdc(This,hdc,fontface) (This)->lpVtbl->CreateFontFaceFromHdc(This,hdc,fontface)
7223 #define IDWriteGdiInterop1_CreateBitmapRenderTarget(This,hdc,width,height,target) (This)->lpVtbl->CreateBitmapRenderTarget(This,hdc,width,height,target)
7224 /*** IDWriteGdiInterop1 methods ***/
7225 #define IDWriteGdiInterop1_CreateFontFromLOGFONT(This,logfont,collection,font) (This)->lpVtbl->IDWriteGdiInterop1_CreateFontFromLOGFONT(This,logfont,collection,font)
7226 #define IDWriteGdiInterop1_GetFontSignature_(This,fontface,fontsig) (This)->lpVtbl->GetFontSignature_(This,fontface,fontsig)
7227 #define IDWriteGdiInterop1_GetFontSignature(This,font,fontsig) (This)->lpVtbl->GetFontSignature(This,font,fontsig)
7228 #define IDWriteGdiInterop1_GetMatchingFontsByLOGFONT(This,logfont,fontset,subset) (This)->lpVtbl->GetMatchingFontsByLOGFONT(This,logfont,fontset,subset)
7229 #else
7230 /*** IUnknown methods ***/
7231 static FORCEINLINE HRESULT IDWriteGdiInterop1_QueryInterface(IDWriteGdiInterop1* This,REFIID riid,void **ppvObject) {
7232     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7233 }
7234 static FORCEINLINE ULONG IDWriteGdiInterop1_AddRef(IDWriteGdiInterop1* This) {
7235     return This->lpVtbl->AddRef(This);
7236 }
7237 static FORCEINLINE ULONG IDWriteGdiInterop1_Release(IDWriteGdiInterop1* This) {
7238     return This->lpVtbl->Release(This);
7239 }
7240 /*** IDWriteGdiInterop methods ***/
7241 static FORCEINLINE HRESULT IDWriteGdiInterop1_ConvertFontToLOGFONT(IDWriteGdiInterop1* This,IDWriteFont *font,LOGFONTW *logfont,WINBOOL *is_systemfont) {
7242     return This->lpVtbl->ConvertFontToLOGFONT(This,font,logfont,is_systemfont);
7243 }
7244 static FORCEINLINE HRESULT IDWriteGdiInterop1_ConvertFontFaceToLOGFONT(IDWriteGdiInterop1* This,IDWriteFontFace *font,LOGFONTW *logfont) {
7245     return This->lpVtbl->ConvertFontFaceToLOGFONT(This,font,logfont);
7246 }
7247 static FORCEINLINE HRESULT IDWriteGdiInterop1_CreateFontFaceFromHdc(IDWriteGdiInterop1* This,HDC hdc,IDWriteFontFace **fontface) {
7248     return This->lpVtbl->CreateFontFaceFromHdc(This,hdc,fontface);
7249 }
7250 static FORCEINLINE HRESULT IDWriteGdiInterop1_CreateBitmapRenderTarget(IDWriteGdiInterop1* This,HDC hdc,UINT32 width,UINT32 height,IDWriteBitmapRenderTarget **target) {
7251     return This->lpVtbl->CreateBitmapRenderTarget(This,hdc,width,height,target);
7252 }
7253 /*** IDWriteGdiInterop1 methods ***/
7254 static FORCEINLINE HRESULT IDWriteGdiInterop1_CreateFontFromLOGFONT(IDWriteGdiInterop1* This,const LOGFONTW *logfont,IDWriteFontCollection *collection,IDWriteFont **font) {
7255     return This->lpVtbl->IDWriteGdiInterop1_CreateFontFromLOGFONT(This,logfont,collection,font);
7256 }
7257 static FORCEINLINE HRESULT IDWriteGdiInterop1_GetFontSignature_(IDWriteGdiInterop1* This,IDWriteFontFace *fontface,FONTSIGNATURE *fontsig) {
7258     return This->lpVtbl->GetFontSignature_(This,fontface,fontsig);
7259 }
7260 static FORCEINLINE HRESULT IDWriteGdiInterop1_GetFontSignature(IDWriteGdiInterop1* This,IDWriteFont *font,FONTSIGNATURE *fontsig) {
7261     return This->lpVtbl->GetFontSignature(This,font,fontsig);
7262 }
7263 static FORCEINLINE HRESULT IDWriteGdiInterop1_GetMatchingFontsByLOGFONT(IDWriteGdiInterop1* This,const LOGFONTW *logfont,IDWriteFontSet *fontset,IDWriteFontSet **subset) {
7264     return This->lpVtbl->GetMatchingFontsByLOGFONT(This,logfont,fontset,subset);
7265 }
7266 #endif
7267 #endif
7268 
7269 #endif
7270 
7271 
7272 #endif  /* __IDWriteGdiInterop1_INTERFACE_DEFINED__ */
7273 
7274 /*****************************************************************************
7275  * IDWriteFontSetBuilder interface
7276  */
7277 #ifndef __IDWriteFontSetBuilder_INTERFACE_DEFINED__
7278 #define __IDWriteFontSetBuilder_INTERFACE_DEFINED__
7279 
7280 DEFINE_GUID(IID_IDWriteFontSetBuilder, 0x2f642afe, 0x9c68, 0x4f40, 0xb8,0xbe, 0x45,0x74,0x01,0xaf,0xcb,0x3d);
7281 #if defined(__cplusplus) && !defined(CINTERFACE)
7282 MIDL_INTERFACE("2f642afe-9c68-4f40-b8be-457401afcb3d")
7283 IDWriteFontSetBuilder : public IUnknown
7284 {
7285     virtual HRESULT STDMETHODCALLTYPE AddFontFaceReference_(
7286         IDWriteFontFaceReference *ref,
7287         const DWRITE_FONT_PROPERTY *props,
7288         UINT32 prop_count) = 0;
7289 
7290     virtual HRESULT STDMETHODCALLTYPE AddFontFaceReference(
7291         IDWriteFontFaceReference *ref) = 0;
7292 
7293     virtual HRESULT STDMETHODCALLTYPE AddFontSet(
7294         IDWriteFontSet *fontset) = 0;
7295 
7296     virtual HRESULT STDMETHODCALLTYPE CreateFontSet(
7297         IDWriteFontSet **fontset) = 0;
7298 
7299 };
7300 #ifdef __CRT_UUID_DECL
7301 __CRT_UUID_DECL(IDWriteFontSetBuilder, 0x2f642afe, 0x9c68, 0x4f40, 0xb8,0xbe, 0x45,0x74,0x01,0xaf,0xcb,0x3d)
7302 #endif
7303 #else
7304 typedef struct IDWriteFontSetBuilderVtbl {
7305     BEGIN_INTERFACE
7306 
7307     /*** IUnknown methods ***/
7308     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7309         IDWriteFontSetBuilder *This,
7310         REFIID riid,
7311         void **ppvObject);
7312 
7313     ULONG (STDMETHODCALLTYPE *AddRef)(
7314         IDWriteFontSetBuilder *This);
7315 
7316     ULONG (STDMETHODCALLTYPE *Release)(
7317         IDWriteFontSetBuilder *This);
7318 
7319     /*** IDWriteFontSetBuilder methods ***/
7320     HRESULT (STDMETHODCALLTYPE *AddFontFaceReference_)(
7321         IDWriteFontSetBuilder *This,
7322         IDWriteFontFaceReference *ref,
7323         const DWRITE_FONT_PROPERTY *props,
7324         UINT32 prop_count);
7325 
7326     HRESULT (STDMETHODCALLTYPE *AddFontFaceReference)(
7327         IDWriteFontSetBuilder *This,
7328         IDWriteFontFaceReference *ref);
7329 
7330     HRESULT (STDMETHODCALLTYPE *AddFontSet)(
7331         IDWriteFontSetBuilder *This,
7332         IDWriteFontSet *fontset);
7333 
7334     HRESULT (STDMETHODCALLTYPE *CreateFontSet)(
7335         IDWriteFontSetBuilder *This,
7336         IDWriteFontSet **fontset);
7337 
7338     END_INTERFACE
7339 } IDWriteFontSetBuilderVtbl;
7340 
7341 interface IDWriteFontSetBuilder {
7342     CONST_VTBL IDWriteFontSetBuilderVtbl* lpVtbl;
7343 };
7344 
7345 #ifdef COBJMACROS
7346 #ifndef WIDL_C_INLINE_WRAPPERS
7347 /*** IUnknown methods ***/
7348 #define IDWriteFontSetBuilder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
7349 #define IDWriteFontSetBuilder_AddRef(This) (This)->lpVtbl->AddRef(This)
7350 #define IDWriteFontSetBuilder_Release(This) (This)->lpVtbl->Release(This)
7351 /*** IDWriteFontSetBuilder methods ***/
7352 #define IDWriteFontSetBuilder_AddFontFaceReference_(This,ref,props,prop_count) (This)->lpVtbl->AddFontFaceReference_(This,ref,props,prop_count)
7353 #define IDWriteFontSetBuilder_AddFontFaceReference(This,ref) (This)->lpVtbl->AddFontFaceReference(This,ref)
7354 #define IDWriteFontSetBuilder_AddFontSet(This,fontset) (This)->lpVtbl->AddFontSet(This,fontset)
7355 #define IDWriteFontSetBuilder_CreateFontSet(This,fontset) (This)->lpVtbl->CreateFontSet(This,fontset)
7356 #else
7357 /*** IUnknown methods ***/
7358 static FORCEINLINE HRESULT IDWriteFontSetBuilder_QueryInterface(IDWriteFontSetBuilder* This,REFIID riid,void **ppvObject) {
7359     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7360 }
7361 static FORCEINLINE ULONG IDWriteFontSetBuilder_AddRef(IDWriteFontSetBuilder* This) {
7362     return This->lpVtbl->AddRef(This);
7363 }
7364 static FORCEINLINE ULONG IDWriteFontSetBuilder_Release(IDWriteFontSetBuilder* This) {
7365     return This->lpVtbl->Release(This);
7366 }
7367 /*** IDWriteFontSetBuilder methods ***/
7368 static FORCEINLINE HRESULT IDWriteFontSetBuilder_AddFontFaceReference_(IDWriteFontSetBuilder* This,IDWriteFontFaceReference *ref,const DWRITE_FONT_PROPERTY *props,UINT32 prop_count) {
7369     return This->lpVtbl->AddFontFaceReference_(This,ref,props,prop_count);
7370 }
7371 static FORCEINLINE HRESULT IDWriteFontSetBuilder_AddFontFaceReference(IDWriteFontSetBuilder* This,IDWriteFontFaceReference *ref) {
7372     return This->lpVtbl->AddFontFaceReference(This,ref);
7373 }
7374 static FORCEINLINE HRESULT IDWriteFontSetBuilder_AddFontSet(IDWriteFontSetBuilder* This,IDWriteFontSet *fontset) {
7375     return This->lpVtbl->AddFontSet(This,fontset);
7376 }
7377 static FORCEINLINE HRESULT IDWriteFontSetBuilder_CreateFontSet(IDWriteFontSetBuilder* This,IDWriteFontSet **fontset) {
7378     return This->lpVtbl->CreateFontSet(This,fontset);
7379 }
7380 #endif
7381 #endif
7382 
7383 #endif
7384 
7385 
7386 #endif  /* __IDWriteFontSetBuilder_INTERFACE_DEFINED__ */
7387 
7388 /*****************************************************************************
7389  * IDWriteFontSetBuilder1 interface
7390  */
7391 #ifndef __IDWriteFontSetBuilder1_INTERFACE_DEFINED__
7392 #define __IDWriteFontSetBuilder1_INTERFACE_DEFINED__
7393 
7394 DEFINE_GUID(IID_IDWriteFontSetBuilder1, 0x3ff7715f, 0x3cdc, 0x4dc6, 0x9b,0x72, 0xec,0x56,0x21,0xdc,0xca,0xfd);
7395 #if defined(__cplusplus) && !defined(CINTERFACE)
7396 MIDL_INTERFACE("3ff7715f-3cdc-4dc6-9b72-ec5621dccafd")
7397 IDWriteFontSetBuilder1 : public IDWriteFontSetBuilder
7398 {
7399     virtual HRESULT STDMETHODCALLTYPE AddFontFile(
7400         IDWriteFontFile *file) = 0;
7401 
7402 };
7403 #ifdef __CRT_UUID_DECL
7404 __CRT_UUID_DECL(IDWriteFontSetBuilder1, 0x3ff7715f, 0x3cdc, 0x4dc6, 0x9b,0x72, 0xec,0x56,0x21,0xdc,0xca,0xfd)
7405 #endif
7406 #else
7407 typedef struct IDWriteFontSetBuilder1Vtbl {
7408     BEGIN_INTERFACE
7409 
7410     /*** IUnknown methods ***/
7411     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7412         IDWriteFontSetBuilder1 *This,
7413         REFIID riid,
7414         void **ppvObject);
7415 
7416     ULONG (STDMETHODCALLTYPE *AddRef)(
7417         IDWriteFontSetBuilder1 *This);
7418 
7419     ULONG (STDMETHODCALLTYPE *Release)(
7420         IDWriteFontSetBuilder1 *This);
7421 
7422     /*** IDWriteFontSetBuilder methods ***/
7423     HRESULT (STDMETHODCALLTYPE *AddFontFaceReference_)(
7424         IDWriteFontSetBuilder1 *This,
7425         IDWriteFontFaceReference *ref,
7426         const DWRITE_FONT_PROPERTY *props,
7427         UINT32 prop_count);
7428 
7429     HRESULT (STDMETHODCALLTYPE *AddFontFaceReference)(
7430         IDWriteFontSetBuilder1 *This,
7431         IDWriteFontFaceReference *ref);
7432 
7433     HRESULT (STDMETHODCALLTYPE *AddFontSet)(
7434         IDWriteFontSetBuilder1 *This,
7435         IDWriteFontSet *fontset);
7436 
7437     HRESULT (STDMETHODCALLTYPE *CreateFontSet)(
7438         IDWriteFontSetBuilder1 *This,
7439         IDWriteFontSet **fontset);
7440 
7441     /*** IDWriteFontSetBuilder1 methods ***/
7442     HRESULT (STDMETHODCALLTYPE *AddFontFile)(
7443         IDWriteFontSetBuilder1 *This,
7444         IDWriteFontFile *file);
7445 
7446     END_INTERFACE
7447 } IDWriteFontSetBuilder1Vtbl;
7448 
7449 interface IDWriteFontSetBuilder1 {
7450     CONST_VTBL IDWriteFontSetBuilder1Vtbl* lpVtbl;
7451 };
7452 
7453 #ifdef COBJMACROS
7454 #ifndef WIDL_C_INLINE_WRAPPERS
7455 /*** IUnknown methods ***/
7456 #define IDWriteFontSetBuilder1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
7457 #define IDWriteFontSetBuilder1_AddRef(This) (This)->lpVtbl->AddRef(This)
7458 #define IDWriteFontSetBuilder1_Release(This) (This)->lpVtbl->Release(This)
7459 /*** IDWriteFontSetBuilder methods ***/
7460 #define IDWriteFontSetBuilder1_AddFontFaceReference_(This,ref,props,prop_count) (This)->lpVtbl->AddFontFaceReference_(This,ref,props,prop_count)
7461 #define IDWriteFontSetBuilder1_AddFontFaceReference(This,ref) (This)->lpVtbl->AddFontFaceReference(This,ref)
7462 #define IDWriteFontSetBuilder1_AddFontSet(This,fontset) (This)->lpVtbl->AddFontSet(This,fontset)
7463 #define IDWriteFontSetBuilder1_CreateFontSet(This,fontset) (This)->lpVtbl->CreateFontSet(This,fontset)
7464 /*** IDWriteFontSetBuilder1 methods ***/
7465 #define IDWriteFontSetBuilder1_AddFontFile(This,file) (This)->lpVtbl->AddFontFile(This,file)
7466 #else
7467 /*** IUnknown methods ***/
7468 static FORCEINLINE HRESULT IDWriteFontSetBuilder1_QueryInterface(IDWriteFontSetBuilder1* This,REFIID riid,void **ppvObject) {
7469     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7470 }
7471 static FORCEINLINE ULONG IDWriteFontSetBuilder1_AddRef(IDWriteFontSetBuilder1* This) {
7472     return This->lpVtbl->AddRef(This);
7473 }
7474 static FORCEINLINE ULONG IDWriteFontSetBuilder1_Release(IDWriteFontSetBuilder1* This) {
7475     return This->lpVtbl->Release(This);
7476 }
7477 /*** IDWriteFontSetBuilder methods ***/
7478 static FORCEINLINE HRESULT IDWriteFontSetBuilder1_AddFontFaceReference_(IDWriteFontSetBuilder1* This,IDWriteFontFaceReference *ref,const DWRITE_FONT_PROPERTY *props,UINT32 prop_count) {
7479     return This->lpVtbl->AddFontFaceReference_(This,ref,props,prop_count);
7480 }
7481 static FORCEINLINE HRESULT IDWriteFontSetBuilder1_AddFontFaceReference(IDWriteFontSetBuilder1* This,IDWriteFontFaceReference *ref) {
7482     return This->lpVtbl->AddFontFaceReference(This,ref);
7483 }
7484 static FORCEINLINE HRESULT IDWriteFontSetBuilder1_AddFontSet(IDWriteFontSetBuilder1* This,IDWriteFontSet *fontset) {
7485     return This->lpVtbl->AddFontSet(This,fontset);
7486 }
7487 static FORCEINLINE HRESULT IDWriteFontSetBuilder1_CreateFontSet(IDWriteFontSetBuilder1* This,IDWriteFontSet **fontset) {
7488     return This->lpVtbl->CreateFontSet(This,fontset);
7489 }
7490 /*** IDWriteFontSetBuilder1 methods ***/
7491 static FORCEINLINE HRESULT IDWriteFontSetBuilder1_AddFontFile(IDWriteFontSetBuilder1* This,IDWriteFontFile *file) {
7492     return This->lpVtbl->AddFontFile(This,file);
7493 }
7494 #endif
7495 #endif
7496 
7497 #endif
7498 
7499 
7500 #endif  /* __IDWriteFontSetBuilder1_INTERFACE_DEFINED__ */
7501 
7502 /*****************************************************************************
7503  * IDWriteFontSetBuilder2 interface
7504  */
7505 #ifndef __IDWriteFontSetBuilder2_INTERFACE_DEFINED__
7506 #define __IDWriteFontSetBuilder2_INTERFACE_DEFINED__
7507 
7508 DEFINE_GUID(IID_IDWriteFontSetBuilder2, 0xee5ba612, 0xb131, 0x463c, 0x8f,0x4f, 0x31,0x89,0xb9,0x40,0x1e,0x45);
7509 #if defined(__cplusplus) && !defined(CINTERFACE)
7510 MIDL_INTERFACE("ee5ba612-b131-463c-8f4f-3189b9401e45")
7511 IDWriteFontSetBuilder2 : public IDWriteFontSetBuilder1
7512 {
7513     virtual HRESULT STDMETHODCALLTYPE AddFont(
7514         IDWriteFontFile *fontfile,
7515         UINT32 face_index,
7516         DWRITE_FONT_SIMULATIONS simulations,
7517         const DWRITE_FONT_AXIS_VALUE *axis_values,
7518         UINT32 num_values,
7519         const DWRITE_FONT_AXIS_RANGE *axis_ranges,
7520         UINT32 num_ranges,
7521         const DWRITE_FONT_PROPERTY *props,
7522         UINT32 num_properties) = 0;
7523 
7524     virtual HRESULT STDMETHODCALLTYPE AddFontFile(
7525         const WCHAR *filepath) = 0;
7526 
7527 };
7528 #ifdef __CRT_UUID_DECL
7529 __CRT_UUID_DECL(IDWriteFontSetBuilder2, 0xee5ba612, 0xb131, 0x463c, 0x8f,0x4f, 0x31,0x89,0xb9,0x40,0x1e,0x45)
7530 #endif
7531 #else
7532 typedef struct IDWriteFontSetBuilder2Vtbl {
7533     BEGIN_INTERFACE
7534 
7535     /*** IUnknown methods ***/
7536     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7537         IDWriteFontSetBuilder2 *This,
7538         REFIID riid,
7539         void **ppvObject);
7540 
7541     ULONG (STDMETHODCALLTYPE *AddRef)(
7542         IDWriteFontSetBuilder2 *This);
7543 
7544     ULONG (STDMETHODCALLTYPE *Release)(
7545         IDWriteFontSetBuilder2 *This);
7546 
7547     /*** IDWriteFontSetBuilder methods ***/
7548     HRESULT (STDMETHODCALLTYPE *AddFontFaceReference_)(
7549         IDWriteFontSetBuilder2 *This,
7550         IDWriteFontFaceReference *ref,
7551         const DWRITE_FONT_PROPERTY *props,
7552         UINT32 prop_count);
7553 
7554     HRESULT (STDMETHODCALLTYPE *AddFontFaceReference)(
7555         IDWriteFontSetBuilder2 *This,
7556         IDWriteFontFaceReference *ref);
7557 
7558     HRESULT (STDMETHODCALLTYPE *AddFontSet)(
7559         IDWriteFontSetBuilder2 *This,
7560         IDWriteFontSet *fontset);
7561 
7562     HRESULT (STDMETHODCALLTYPE *CreateFontSet)(
7563         IDWriteFontSetBuilder2 *This,
7564         IDWriteFontSet **fontset);
7565 
7566     /*** IDWriteFontSetBuilder1 methods ***/
7567     HRESULT (STDMETHODCALLTYPE *AddFontFile)(
7568         IDWriteFontSetBuilder2 *This,
7569         IDWriteFontFile *file);
7570 
7571     /*** IDWriteFontSetBuilder2 methods ***/
7572     HRESULT (STDMETHODCALLTYPE *AddFont)(
7573         IDWriteFontSetBuilder2 *This,
7574         IDWriteFontFile *fontfile,
7575         UINT32 face_index,
7576         DWRITE_FONT_SIMULATIONS simulations,
7577         const DWRITE_FONT_AXIS_VALUE *axis_values,
7578         UINT32 num_values,
7579         const DWRITE_FONT_AXIS_RANGE *axis_ranges,
7580         UINT32 num_ranges,
7581         const DWRITE_FONT_PROPERTY *props,
7582         UINT32 num_properties);
7583 
7584     HRESULT (STDMETHODCALLTYPE *IDWriteFontSetBuilder2_AddFontFile)(
7585         IDWriteFontSetBuilder2 *This,
7586         const WCHAR *filepath);
7587 
7588     END_INTERFACE
7589 } IDWriteFontSetBuilder2Vtbl;
7590 
7591 interface IDWriteFontSetBuilder2 {
7592     CONST_VTBL IDWriteFontSetBuilder2Vtbl* lpVtbl;
7593 };
7594 
7595 #ifdef COBJMACROS
7596 #ifndef WIDL_C_INLINE_WRAPPERS
7597 /*** IUnknown methods ***/
7598 #define IDWriteFontSetBuilder2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
7599 #define IDWriteFontSetBuilder2_AddRef(This) (This)->lpVtbl->AddRef(This)
7600 #define IDWriteFontSetBuilder2_Release(This) (This)->lpVtbl->Release(This)
7601 /*** IDWriteFontSetBuilder methods ***/
7602 #define IDWriteFontSetBuilder2_AddFontFaceReference_(This,ref,props,prop_count) (This)->lpVtbl->AddFontFaceReference_(This,ref,props,prop_count)
7603 #define IDWriteFontSetBuilder2_AddFontFaceReference(This,ref) (This)->lpVtbl->AddFontFaceReference(This,ref)
7604 #define IDWriteFontSetBuilder2_AddFontSet(This,fontset) (This)->lpVtbl->AddFontSet(This,fontset)
7605 #define IDWriteFontSetBuilder2_CreateFontSet(This,fontset) (This)->lpVtbl->CreateFontSet(This,fontset)
7606 /*** IDWriteFontSetBuilder1 methods ***/
7607 /*** IDWriteFontSetBuilder2 methods ***/
7608 #define IDWriteFontSetBuilder2_AddFont(This,fontfile,face_index,simulations,axis_values,num_values,axis_ranges,num_ranges,props,num_properties) (This)->lpVtbl->AddFont(This,fontfile,face_index,simulations,axis_values,num_values,axis_ranges,num_ranges,props,num_properties)
7609 #define IDWriteFontSetBuilder2_AddFontFile(This,filepath) (This)->lpVtbl->IDWriteFontSetBuilder2_AddFontFile(This,filepath)
7610 #else
7611 /*** IUnknown methods ***/
7612 static FORCEINLINE HRESULT IDWriteFontSetBuilder2_QueryInterface(IDWriteFontSetBuilder2* This,REFIID riid,void **ppvObject) {
7613     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7614 }
7615 static FORCEINLINE ULONG IDWriteFontSetBuilder2_AddRef(IDWriteFontSetBuilder2* This) {
7616     return This->lpVtbl->AddRef(This);
7617 }
7618 static FORCEINLINE ULONG IDWriteFontSetBuilder2_Release(IDWriteFontSetBuilder2* This) {
7619     return This->lpVtbl->Release(This);
7620 }
7621 /*** IDWriteFontSetBuilder methods ***/
7622 static FORCEINLINE HRESULT IDWriteFontSetBuilder2_AddFontFaceReference_(IDWriteFontSetBuilder2* This,IDWriteFontFaceReference *ref,const DWRITE_FONT_PROPERTY *props,UINT32 prop_count) {
7623     return This->lpVtbl->AddFontFaceReference_(This,ref,props,prop_count);
7624 }
7625 static FORCEINLINE HRESULT IDWriteFontSetBuilder2_AddFontFaceReference(IDWriteFontSetBuilder2* This,IDWriteFontFaceReference *ref) {
7626     return This->lpVtbl->AddFontFaceReference(This,ref);
7627 }
7628 static FORCEINLINE HRESULT IDWriteFontSetBuilder2_AddFontSet(IDWriteFontSetBuilder2* This,IDWriteFontSet *fontset) {
7629     return This->lpVtbl->AddFontSet(This,fontset);
7630 }
7631 static FORCEINLINE HRESULT IDWriteFontSetBuilder2_CreateFontSet(IDWriteFontSetBuilder2* This,IDWriteFontSet **fontset) {
7632     return This->lpVtbl->CreateFontSet(This,fontset);
7633 }
7634 /*** IDWriteFontSetBuilder1 methods ***/
7635 /*** IDWriteFontSetBuilder2 methods ***/
7636 static FORCEINLINE HRESULT IDWriteFontSetBuilder2_AddFont(IDWriteFontSetBuilder2* This,IDWriteFontFile *fontfile,UINT32 face_index,DWRITE_FONT_SIMULATIONS simulations,const DWRITE_FONT_AXIS_VALUE *axis_values,UINT32 num_values,const DWRITE_FONT_AXIS_RANGE *axis_ranges,UINT32 num_ranges,const DWRITE_FONT_PROPERTY *props,UINT32 num_properties) {
7637     return This->lpVtbl->AddFont(This,fontfile,face_index,simulations,axis_values,num_values,axis_ranges,num_ranges,props,num_properties);
7638 }
7639 static FORCEINLINE HRESULT IDWriteFontSetBuilder2_AddFontFile(IDWriteFontSetBuilder2* This,const WCHAR *filepath) {
7640     return This->lpVtbl->IDWriteFontSetBuilder2_AddFontFile(This,filepath);
7641 }
7642 #endif
7643 #endif
7644 
7645 #endif
7646 
7647 
7648 #endif  /* __IDWriteFontSetBuilder2_INTERFACE_DEFINED__ */
7649 
7650 /*****************************************************************************
7651  * IDWriteFactory3 interface
7652  */
7653 #ifndef __IDWriteFactory3_INTERFACE_DEFINED__
7654 #define __IDWriteFactory3_INTERFACE_DEFINED__
7655 
7656 DEFINE_GUID(IID_IDWriteFactory3, 0x9a1b41c3, 0xd3bb, 0x466a, 0x87,0xfc, 0xfe,0x67,0x55,0x6a,0x3b,0x65);
7657 #if defined(__cplusplus) && !defined(CINTERFACE)
7658 MIDL_INTERFACE("9a1b41c3-d3bb-466a-87fc-fe67556a3b65")
7659 IDWriteFactory3 : public IDWriteFactory2
7660 {
7661     virtual HRESULT STDMETHODCALLTYPE CreateGlyphRunAnalysis(
7662         const DWRITE_GLYPH_RUN *run,
7663         const DWRITE_MATRIX *transform,
7664         DWRITE_RENDERING_MODE1 rendering_mode,
7665         DWRITE_MEASURING_MODE measuring_mode,
7666         DWRITE_GRID_FIT_MODE gridfit_mode,
7667         DWRITE_TEXT_ANTIALIAS_MODE antialias_mode,
7668         FLOAT origin_x,
7669         FLOAT origin_y,
7670         IDWriteGlyphRunAnalysis **analysis) = 0;
7671 
7672     virtual HRESULT STDMETHODCALLTYPE CreateCustomRenderingParams(
7673         FLOAT gamma,
7674         FLOAT enhanced_contrast,
7675         FLOAT grayscale_enhanced_contrast,
7676         FLOAT cleartype_level,
7677         DWRITE_PIXEL_GEOMETRY pixel_geometry,
7678         DWRITE_RENDERING_MODE1 rendering_mode,
7679         DWRITE_GRID_FIT_MODE gridfit_mode,
7680         IDWriteRenderingParams3 **params) = 0;
7681 
7682     virtual HRESULT STDMETHODCALLTYPE CreateFontFaceReference_(
7683         IDWriteFontFile *file,
7684         UINT32 index,
7685         DWRITE_FONT_SIMULATIONS simulations,
7686         IDWriteFontFaceReference **reference) = 0;
7687 
7688     virtual HRESULT STDMETHODCALLTYPE CreateFontFaceReference(
7689         const WCHAR *path,
7690         const FILETIME *writetime,
7691         UINT32 index,
7692         DWRITE_FONT_SIMULATIONS simulations,
7693         IDWriteFontFaceReference **reference) = 0;
7694 
7695     virtual HRESULT STDMETHODCALLTYPE GetSystemFontSet(
7696         IDWriteFontSet **fontset) = 0;
7697 
7698     virtual HRESULT STDMETHODCALLTYPE CreateFontSetBuilder(
7699         IDWriteFontSetBuilder **builder) = 0;
7700 
7701     virtual HRESULT STDMETHODCALLTYPE CreateFontCollectionFromFontSet(
7702         IDWriteFontSet *fontset,
7703         IDWriteFontCollection1 **collection) = 0;
7704 
7705     virtual HRESULT STDMETHODCALLTYPE GetSystemFontCollection(
7706         WINBOOL include_downloadable,
7707         IDWriteFontCollection1 **collection,
7708         WINBOOL check_for_updates) = 0;
7709 
7710     virtual HRESULT STDMETHODCALLTYPE GetFontDownloadQueue(
7711         IDWriteFontDownloadQueue **queue) = 0;
7712 
7713 };
7714 #ifdef __CRT_UUID_DECL
7715 __CRT_UUID_DECL(IDWriteFactory3, 0x9a1b41c3, 0xd3bb, 0x466a, 0x87,0xfc, 0xfe,0x67,0x55,0x6a,0x3b,0x65)
7716 #endif
7717 #else
7718 typedef struct IDWriteFactory3Vtbl {
7719     BEGIN_INTERFACE
7720 
7721     /*** IUnknown methods ***/
7722     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7723         IDWriteFactory3 *This,
7724         REFIID riid,
7725         void **ppvObject);
7726 
7727     ULONG (STDMETHODCALLTYPE *AddRef)(
7728         IDWriteFactory3 *This);
7729 
7730     ULONG (STDMETHODCALLTYPE *Release)(
7731         IDWriteFactory3 *This);
7732 
7733     /*** IDWriteFactory methods ***/
7734     HRESULT (STDMETHODCALLTYPE *GetSystemFontCollection)(
7735         IDWriteFactory3 *This,
7736         IDWriteFontCollection **collection,
7737         WINBOOL check_for_updates);
7738 
7739     HRESULT (STDMETHODCALLTYPE *CreateCustomFontCollection)(
7740         IDWriteFactory3 *This,
7741         IDWriteFontCollectionLoader *loader,
7742         const void *key,
7743         UINT32 key_size,
7744         IDWriteFontCollection **collection);
7745 
7746     HRESULT (STDMETHODCALLTYPE *RegisterFontCollectionLoader)(
7747         IDWriteFactory3 *This,
7748         IDWriteFontCollectionLoader *loader);
7749 
7750     HRESULT (STDMETHODCALLTYPE *UnregisterFontCollectionLoader)(
7751         IDWriteFactory3 *This,
7752         IDWriteFontCollectionLoader *loader);
7753 
7754     HRESULT (STDMETHODCALLTYPE *CreateFontFileReference)(
7755         IDWriteFactory3 *This,
7756         const WCHAR *path,
7757         const FILETIME *writetime,
7758         IDWriteFontFile **font_file);
7759 
7760     HRESULT (STDMETHODCALLTYPE *CreateCustomFontFileReference)(
7761         IDWriteFactory3 *This,
7762         const void *reference_key,
7763         UINT32 key_size,
7764         IDWriteFontFileLoader *loader,
7765         IDWriteFontFile **font_file);
7766 
7767     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
7768         IDWriteFactory3 *This,
7769         DWRITE_FONT_FACE_TYPE facetype,
7770         UINT32 files_number,
7771         IDWriteFontFile *const *font_files,
7772         UINT32 index,
7773         DWRITE_FONT_SIMULATIONS sim_flags,
7774         IDWriteFontFace **font_face);
7775 
7776     HRESULT (STDMETHODCALLTYPE *CreateRenderingParams)(
7777         IDWriteFactory3 *This,
7778         IDWriteRenderingParams **params);
7779 
7780     HRESULT (STDMETHODCALLTYPE *CreateMonitorRenderingParams)(
7781         IDWriteFactory3 *This,
7782         HMONITOR monitor,
7783         IDWriteRenderingParams **params);
7784 
7785     HRESULT (STDMETHODCALLTYPE *CreateCustomRenderingParams)(
7786         IDWriteFactory3 *This,
7787         FLOAT gamma,
7788         FLOAT enhancedContrast,
7789         FLOAT cleartype_level,
7790         DWRITE_PIXEL_GEOMETRY geometry,
7791         DWRITE_RENDERING_MODE mode,
7792         IDWriteRenderingParams **params);
7793 
7794     HRESULT (STDMETHODCALLTYPE *RegisterFontFileLoader)(
7795         IDWriteFactory3 *This,
7796         IDWriteFontFileLoader *loader);
7797 
7798     HRESULT (STDMETHODCALLTYPE *UnregisterFontFileLoader)(
7799         IDWriteFactory3 *This,
7800         IDWriteFontFileLoader *loader);
7801 
7802     HRESULT (STDMETHODCALLTYPE *CreateTextFormat)(
7803         IDWriteFactory3 *This,
7804         const WCHAR *family_name,
7805         IDWriteFontCollection *collection,
7806         DWRITE_FONT_WEIGHT weight,
7807         DWRITE_FONT_STYLE style,
7808         DWRITE_FONT_STRETCH stretch,
7809         FLOAT size,
7810         const WCHAR *locale,
7811         IDWriteTextFormat **format);
7812 
7813     HRESULT (STDMETHODCALLTYPE *CreateTypography)(
7814         IDWriteFactory3 *This,
7815         IDWriteTypography **typography);
7816 
7817     HRESULT (STDMETHODCALLTYPE *GetGdiInterop)(
7818         IDWriteFactory3 *This,
7819         IDWriteGdiInterop **gdi_interop);
7820 
7821     HRESULT (STDMETHODCALLTYPE *CreateTextLayout)(
7822         IDWriteFactory3 *This,
7823         const WCHAR *string,
7824         UINT32 len,
7825         IDWriteTextFormat *format,
7826         FLOAT max_width,
7827         FLOAT max_height,
7828         IDWriteTextLayout **layout);
7829 
7830     HRESULT (STDMETHODCALLTYPE *CreateGdiCompatibleTextLayout)(
7831         IDWriteFactory3 *This,
7832         const WCHAR *string,
7833         UINT32 len,
7834         IDWriteTextFormat *format,
7835         FLOAT layout_width,
7836         FLOAT layout_height,
7837         FLOAT pixels_per_dip,
7838         const DWRITE_MATRIX *transform,
7839         WINBOOL use_gdi_natural,
7840         IDWriteTextLayout **layout);
7841 
7842     HRESULT (STDMETHODCALLTYPE *CreateEllipsisTrimmingSign)(
7843         IDWriteFactory3 *This,
7844         IDWriteTextFormat *format,
7845         IDWriteInlineObject **trimming_sign);
7846 
7847     HRESULT (STDMETHODCALLTYPE *CreateTextAnalyzer)(
7848         IDWriteFactory3 *This,
7849         IDWriteTextAnalyzer **analyzer);
7850 
7851     HRESULT (STDMETHODCALLTYPE *CreateNumberSubstitution)(
7852         IDWriteFactory3 *This,
7853         DWRITE_NUMBER_SUBSTITUTION_METHOD method,
7854         const WCHAR *locale,
7855         WINBOOL ignore_user_override,
7856         IDWriteNumberSubstitution **substitution);
7857 
7858     HRESULT (STDMETHODCALLTYPE *CreateGlyphRunAnalysis)(
7859         IDWriteFactory3 *This,
7860         const DWRITE_GLYPH_RUN *glyph_run,
7861         FLOAT pixels_per_dip,
7862         const DWRITE_MATRIX *transform,
7863         DWRITE_RENDERING_MODE rendering_mode,
7864         DWRITE_MEASURING_MODE measuring_mode,
7865         FLOAT baseline_x,
7866         FLOAT baseline_y,
7867         IDWriteGlyphRunAnalysis **analysis);
7868 
7869     /*** IDWriteFactory1 methods ***/
7870     HRESULT (STDMETHODCALLTYPE *GetEudcFontCollection)(
7871         IDWriteFactory3 *This,
7872         IDWriteFontCollection **collection,
7873         WINBOOL check_for_updates);
7874 
7875     HRESULT (STDMETHODCALLTYPE *IDWriteFactory1_CreateCustomRenderingParams)(
7876         IDWriteFactory3 *This,
7877         FLOAT gamma,
7878         FLOAT enhcontrast,
7879         FLOAT enhcontrast_grayscale,
7880         FLOAT cleartype_level,
7881         DWRITE_PIXEL_GEOMETRY geometry,
7882         DWRITE_RENDERING_MODE mode,
7883         IDWriteRenderingParams1 **params);
7884 
7885     /*** IDWriteFactory2 methods ***/
7886     HRESULT (STDMETHODCALLTYPE *GetSystemFontFallback)(
7887         IDWriteFactory3 *This,
7888         IDWriteFontFallback **fallback);
7889 
7890     HRESULT (STDMETHODCALLTYPE *CreateFontFallbackBuilder)(
7891         IDWriteFactory3 *This,
7892         IDWriteFontFallbackBuilder **fallbackbuilder);
7893 
7894     HRESULT (STDMETHODCALLTYPE *TranslateColorGlyphRun)(
7895         IDWriteFactory3 *This,
7896         FLOAT originX,
7897         FLOAT originY,
7898         const DWRITE_GLYPH_RUN *run,
7899         const DWRITE_GLYPH_RUN_DESCRIPTION *rundescr,
7900         DWRITE_MEASURING_MODE mode,
7901         const DWRITE_MATRIX *transform,
7902         UINT32 palette_index,
7903         IDWriteColorGlyphRunEnumerator **colorlayers);
7904 
7905     HRESULT (STDMETHODCALLTYPE *IDWriteFactory2_CreateCustomRenderingParams)(
7906         IDWriteFactory3 *This,
7907         FLOAT gamma,
7908         FLOAT contrast,
7909         FLOAT grayscalecontrast,
7910         FLOAT cleartypeLevel,
7911         DWRITE_PIXEL_GEOMETRY pixelGeometry,
7912         DWRITE_RENDERING_MODE renderingMode,
7913         DWRITE_GRID_FIT_MODE gridFitMode,
7914         IDWriteRenderingParams2 **params);
7915 
7916     HRESULT (STDMETHODCALLTYPE *IDWriteFactory2_CreateGlyphRunAnalysis)(
7917         IDWriteFactory3 *This,
7918         const DWRITE_GLYPH_RUN *run,
7919         const DWRITE_MATRIX *transform,
7920         DWRITE_RENDERING_MODE renderingMode,
7921         DWRITE_MEASURING_MODE measuringMode,
7922         DWRITE_GRID_FIT_MODE gridFitMode,
7923         DWRITE_TEXT_ANTIALIAS_MODE antialiasMode,
7924         FLOAT originX,
7925         FLOAT originY,
7926         IDWriteGlyphRunAnalysis **analysis);
7927 
7928     /*** IDWriteFactory3 methods ***/
7929     HRESULT (STDMETHODCALLTYPE *IDWriteFactory3_CreateGlyphRunAnalysis)(
7930         IDWriteFactory3 *This,
7931         const DWRITE_GLYPH_RUN *run,
7932         const DWRITE_MATRIX *transform,
7933         DWRITE_RENDERING_MODE1 rendering_mode,
7934         DWRITE_MEASURING_MODE measuring_mode,
7935         DWRITE_GRID_FIT_MODE gridfit_mode,
7936         DWRITE_TEXT_ANTIALIAS_MODE antialias_mode,
7937         FLOAT origin_x,
7938         FLOAT origin_y,
7939         IDWriteGlyphRunAnalysis **analysis);
7940 
7941     HRESULT (STDMETHODCALLTYPE *IDWriteFactory3_CreateCustomRenderingParams)(
7942         IDWriteFactory3 *This,
7943         FLOAT gamma,
7944         FLOAT enhanced_contrast,
7945         FLOAT grayscale_enhanced_contrast,
7946         FLOAT cleartype_level,
7947         DWRITE_PIXEL_GEOMETRY pixel_geometry,
7948         DWRITE_RENDERING_MODE1 rendering_mode,
7949         DWRITE_GRID_FIT_MODE gridfit_mode,
7950         IDWriteRenderingParams3 **params);
7951 
7952     HRESULT (STDMETHODCALLTYPE *CreateFontFaceReference_)(
7953         IDWriteFactory3 *This,
7954         IDWriteFontFile *file,
7955         UINT32 index,
7956         DWRITE_FONT_SIMULATIONS simulations,
7957         IDWriteFontFaceReference **reference);
7958 
7959     HRESULT (STDMETHODCALLTYPE *CreateFontFaceReference)(
7960         IDWriteFactory3 *This,
7961         const WCHAR *path,
7962         const FILETIME *writetime,
7963         UINT32 index,
7964         DWRITE_FONT_SIMULATIONS simulations,
7965         IDWriteFontFaceReference **reference);
7966 
7967     HRESULT (STDMETHODCALLTYPE *GetSystemFontSet)(
7968         IDWriteFactory3 *This,
7969         IDWriteFontSet **fontset);
7970 
7971     HRESULT (STDMETHODCALLTYPE *CreateFontSetBuilder)(
7972         IDWriteFactory3 *This,
7973         IDWriteFontSetBuilder **builder);
7974 
7975     HRESULT (STDMETHODCALLTYPE *CreateFontCollectionFromFontSet)(
7976         IDWriteFactory3 *This,
7977         IDWriteFontSet *fontset,
7978         IDWriteFontCollection1 **collection);
7979 
7980     HRESULT (STDMETHODCALLTYPE *IDWriteFactory3_GetSystemFontCollection)(
7981         IDWriteFactory3 *This,
7982         WINBOOL include_downloadable,
7983         IDWriteFontCollection1 **collection,
7984         WINBOOL check_for_updates);
7985 
7986     HRESULT (STDMETHODCALLTYPE *GetFontDownloadQueue)(
7987         IDWriteFactory3 *This,
7988         IDWriteFontDownloadQueue **queue);
7989 
7990     END_INTERFACE
7991 } IDWriteFactory3Vtbl;
7992 
7993 interface IDWriteFactory3 {
7994     CONST_VTBL IDWriteFactory3Vtbl* lpVtbl;
7995 };
7996 
7997 #ifdef COBJMACROS
7998 #ifndef WIDL_C_INLINE_WRAPPERS
7999 /*** IUnknown methods ***/
8000 #define IDWriteFactory3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
8001 #define IDWriteFactory3_AddRef(This) (This)->lpVtbl->AddRef(This)
8002 #define IDWriteFactory3_Release(This) (This)->lpVtbl->Release(This)
8003 /*** IDWriteFactory methods ***/
8004 #define IDWriteFactory3_CreateCustomFontCollection(This,loader,key,key_size,collection) (This)->lpVtbl->CreateCustomFontCollection(This,loader,key,key_size,collection)
8005 #define IDWriteFactory3_RegisterFontCollectionLoader(This,loader) (This)->lpVtbl->RegisterFontCollectionLoader(This,loader)
8006 #define IDWriteFactory3_UnregisterFontCollectionLoader(This,loader) (This)->lpVtbl->UnregisterFontCollectionLoader(This,loader)
8007 #define IDWriteFactory3_CreateFontFileReference(This,path,writetime,font_file) (This)->lpVtbl->CreateFontFileReference(This,path,writetime,font_file)
8008 #define IDWriteFactory3_CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file) (This)->lpVtbl->CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file)
8009 #define IDWriteFactory3_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)
8010 #define IDWriteFactory3_CreateRenderingParams(This,params) (This)->lpVtbl->CreateRenderingParams(This,params)
8011 #define IDWriteFactory3_CreateMonitorRenderingParams(This,monitor,params) (This)->lpVtbl->CreateMonitorRenderingParams(This,monitor,params)
8012 #define IDWriteFactory3_RegisterFontFileLoader(This,loader) (This)->lpVtbl->RegisterFontFileLoader(This,loader)
8013 #define IDWriteFactory3_UnregisterFontFileLoader(This,loader) (This)->lpVtbl->UnregisterFontFileLoader(This,loader)
8014 #define IDWriteFactory3_CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format) (This)->lpVtbl->CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format)
8015 #define IDWriteFactory3_CreateTypography(This,typography) (This)->lpVtbl->CreateTypography(This,typography)
8016 #define IDWriteFactory3_GetGdiInterop(This,gdi_interop) (This)->lpVtbl->GetGdiInterop(This,gdi_interop)
8017 #define IDWriteFactory3_CreateTextLayout(This,string,len,format,max_width,max_height,layout) (This)->lpVtbl->CreateTextLayout(This,string,len,format,max_width,max_height,layout)
8018 #define IDWriteFactory3_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)
8019 #define IDWriteFactory3_CreateEllipsisTrimmingSign(This,format,trimming_sign) (This)->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign)
8020 #define IDWriteFactory3_CreateTextAnalyzer(This,analyzer) (This)->lpVtbl->CreateTextAnalyzer(This,analyzer)
8021 #define IDWriteFactory3_CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution) (This)->lpVtbl->CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution)
8022 /*** IDWriteFactory1 methods ***/
8023 #define IDWriteFactory3_GetEudcFontCollection(This,collection,check_for_updates) (This)->lpVtbl->GetEudcFontCollection(This,collection,check_for_updates)
8024 /*** IDWriteFactory2 methods ***/
8025 #define IDWriteFactory3_GetSystemFontFallback(This,fallback) (This)->lpVtbl->GetSystemFontFallback(This,fallback)
8026 #define IDWriteFactory3_CreateFontFallbackBuilder(This,fallbackbuilder) (This)->lpVtbl->CreateFontFallbackBuilder(This,fallbackbuilder)
8027 #define IDWriteFactory3_TranslateColorGlyphRun(This,originX,originY,run,rundescr,mode,transform,palette_index,colorlayers) (This)->lpVtbl->TranslateColorGlyphRun(This,originX,originY,run,rundescr,mode,transform,palette_index,colorlayers)
8028 /*** IDWriteFactory3 methods ***/
8029 #define IDWriteFactory3_CreateGlyphRunAnalysis(This,run,transform,rendering_mode,measuring_mode,gridfit_mode,antialias_mode,origin_x,origin_y,analysis) (This)->lpVtbl->IDWriteFactory3_CreateGlyphRunAnalysis(This,run,transform,rendering_mode,measuring_mode,gridfit_mode,antialias_mode,origin_x,origin_y,analysis)
8030 #define IDWriteFactory3_CreateCustomRenderingParams(This,gamma,enhanced_contrast,grayscale_enhanced_contrast,cleartype_level,pixel_geometry,rendering_mode,gridfit_mode,params) (This)->lpVtbl->IDWriteFactory3_CreateCustomRenderingParams(This,gamma,enhanced_contrast,grayscale_enhanced_contrast,cleartype_level,pixel_geometry,rendering_mode,gridfit_mode,params)
8031 #define IDWriteFactory3_CreateFontFaceReference_(This,file,index,simulations,reference) (This)->lpVtbl->CreateFontFaceReference_(This,file,index,simulations,reference)
8032 #define IDWriteFactory3_CreateFontFaceReference(This,path,writetime,index,simulations,reference) (This)->lpVtbl->CreateFontFaceReference(This,path,writetime,index,simulations,reference)
8033 #define IDWriteFactory3_GetSystemFontSet(This,fontset) (This)->lpVtbl->GetSystemFontSet(This,fontset)
8034 #define IDWriteFactory3_CreateFontSetBuilder(This,builder) (This)->lpVtbl->CreateFontSetBuilder(This,builder)
8035 #define IDWriteFactory3_CreateFontCollectionFromFontSet(This,fontset,collection) (This)->lpVtbl->CreateFontCollectionFromFontSet(This,fontset,collection)
8036 #define IDWriteFactory3_GetSystemFontCollection(This,include_downloadable,collection,check_for_updates) (This)->lpVtbl->IDWriteFactory3_GetSystemFontCollection(This,include_downloadable,collection,check_for_updates)
8037 #define IDWriteFactory3_GetFontDownloadQueue(This,queue) (This)->lpVtbl->GetFontDownloadQueue(This,queue)
8038 #else
8039 /*** IUnknown methods ***/
8040 static FORCEINLINE HRESULT IDWriteFactory3_QueryInterface(IDWriteFactory3* This,REFIID riid,void **ppvObject) {
8041     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
8042 }
8043 static FORCEINLINE ULONG IDWriteFactory3_AddRef(IDWriteFactory3* This) {
8044     return This->lpVtbl->AddRef(This);
8045 }
8046 static FORCEINLINE ULONG IDWriteFactory3_Release(IDWriteFactory3* This) {
8047     return This->lpVtbl->Release(This);
8048 }
8049 /*** IDWriteFactory methods ***/
8050 static FORCEINLINE HRESULT IDWriteFactory3_CreateCustomFontCollection(IDWriteFactory3* This,IDWriteFontCollectionLoader *loader,const void *key,UINT32 key_size,IDWriteFontCollection **collection) {
8051     return This->lpVtbl->CreateCustomFontCollection(This,loader,key,key_size,collection);
8052 }
8053 static FORCEINLINE HRESULT IDWriteFactory3_RegisterFontCollectionLoader(IDWriteFactory3* This,IDWriteFontCollectionLoader *loader) {
8054     return This->lpVtbl->RegisterFontCollectionLoader(This,loader);
8055 }
8056 static FORCEINLINE HRESULT IDWriteFactory3_UnregisterFontCollectionLoader(IDWriteFactory3* This,IDWriteFontCollectionLoader *loader) {
8057     return This->lpVtbl->UnregisterFontCollectionLoader(This,loader);
8058 }
8059 static FORCEINLINE HRESULT IDWriteFactory3_CreateFontFileReference(IDWriteFactory3* This,const WCHAR *path,const FILETIME *writetime,IDWriteFontFile **font_file) {
8060     return This->lpVtbl->CreateFontFileReference(This,path,writetime,font_file);
8061 }
8062 static FORCEINLINE HRESULT IDWriteFactory3_CreateCustomFontFileReference(IDWriteFactory3* This,const void *reference_key,UINT32 key_size,IDWriteFontFileLoader *loader,IDWriteFontFile **font_file) {
8063     return This->lpVtbl->CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file);
8064 }
8065 static FORCEINLINE HRESULT IDWriteFactory3_CreateFontFace(IDWriteFactory3* This,DWRITE_FONT_FACE_TYPE facetype,UINT32 files_number,IDWriteFontFile *const *font_files,UINT32 index,DWRITE_FONT_SIMULATIONS sim_flags,IDWriteFontFace **font_face) {
8066     return This->lpVtbl->CreateFontFace(This,facetype,files_number,font_files,index,sim_flags,font_face);
8067 }
8068 static FORCEINLINE HRESULT IDWriteFactory3_CreateRenderingParams(IDWriteFactory3* This,IDWriteRenderingParams **params) {
8069     return This->lpVtbl->CreateRenderingParams(This,params);
8070 }
8071 static FORCEINLINE HRESULT IDWriteFactory3_CreateMonitorRenderingParams(IDWriteFactory3* This,HMONITOR monitor,IDWriteRenderingParams **params) {
8072     return This->lpVtbl->CreateMonitorRenderingParams(This,monitor,params);
8073 }
8074 static FORCEINLINE HRESULT IDWriteFactory3_RegisterFontFileLoader(IDWriteFactory3* This,IDWriteFontFileLoader *loader) {
8075     return This->lpVtbl->RegisterFontFileLoader(This,loader);
8076 }
8077 static FORCEINLINE HRESULT IDWriteFactory3_UnregisterFontFileLoader(IDWriteFactory3* This,IDWriteFontFileLoader *loader) {
8078     return This->lpVtbl->UnregisterFontFileLoader(This,loader);
8079 }
8080 static FORCEINLINE HRESULT IDWriteFactory3_CreateTextFormat(IDWriteFactory3* 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) {
8081     return This->lpVtbl->CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format);
8082 }
8083 static FORCEINLINE HRESULT IDWriteFactory3_CreateTypography(IDWriteFactory3* This,IDWriteTypography **typography) {
8084     return This->lpVtbl->CreateTypography(This,typography);
8085 }
8086 static FORCEINLINE HRESULT IDWriteFactory3_GetGdiInterop(IDWriteFactory3* This,IDWriteGdiInterop **gdi_interop) {
8087     return This->lpVtbl->GetGdiInterop(This,gdi_interop);
8088 }
8089 static FORCEINLINE HRESULT IDWriteFactory3_CreateTextLayout(IDWriteFactory3* This,const WCHAR *string,UINT32 len,IDWriteTextFormat *format,FLOAT max_width,FLOAT max_height,IDWriteTextLayout **layout) {
8090     return This->lpVtbl->CreateTextLayout(This,string,len,format,max_width,max_height,layout);
8091 }
8092 static FORCEINLINE HRESULT IDWriteFactory3_CreateGdiCompatibleTextLayout(IDWriteFactory3* 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) {
8093     return This->lpVtbl->CreateGdiCompatibleTextLayout(This,string,len,format,layout_width,layout_height,pixels_per_dip,transform,use_gdi_natural,layout);
8094 }
8095 static FORCEINLINE HRESULT IDWriteFactory3_CreateEllipsisTrimmingSign(IDWriteFactory3* This,IDWriteTextFormat *format,IDWriteInlineObject **trimming_sign) {
8096     return This->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign);
8097 }
8098 static FORCEINLINE HRESULT IDWriteFactory3_CreateTextAnalyzer(IDWriteFactory3* This,IDWriteTextAnalyzer **analyzer) {
8099     return This->lpVtbl->CreateTextAnalyzer(This,analyzer);
8100 }
8101 static FORCEINLINE HRESULT IDWriteFactory3_CreateNumberSubstitution(IDWriteFactory3* This,DWRITE_NUMBER_SUBSTITUTION_METHOD method,const WCHAR *locale,WINBOOL ignore_user_override,IDWriteNumberSubstitution **substitution) {
8102     return This->lpVtbl->CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution);
8103 }
8104 /*** IDWriteFactory1 methods ***/
8105 static FORCEINLINE HRESULT IDWriteFactory3_GetEudcFontCollection(IDWriteFactory3* This,IDWriteFontCollection **collection,WINBOOL check_for_updates) {
8106     return This->lpVtbl->GetEudcFontCollection(This,collection,check_for_updates);
8107 }
8108 /*** IDWriteFactory2 methods ***/
8109 static FORCEINLINE HRESULT IDWriteFactory3_GetSystemFontFallback(IDWriteFactory3* This,IDWriteFontFallback **fallback) {
8110     return This->lpVtbl->GetSystemFontFallback(This,fallback);
8111 }
8112 static FORCEINLINE HRESULT IDWriteFactory3_CreateFontFallbackBuilder(IDWriteFactory3* This,IDWriteFontFallbackBuilder **fallbackbuilder) {
8113     return This->lpVtbl->CreateFontFallbackBuilder(This,fallbackbuilder);
8114 }
8115 static FORCEINLINE HRESULT IDWriteFactory3_TranslateColorGlyphRun(IDWriteFactory3* 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) {
8116     return This->lpVtbl->TranslateColorGlyphRun(This,originX,originY,run,rundescr,mode,transform,palette_index,colorlayers);
8117 }
8118 /*** IDWriteFactory3 methods ***/
8119 static FORCEINLINE HRESULT IDWriteFactory3_CreateGlyphRunAnalysis(IDWriteFactory3* This,const DWRITE_GLYPH_RUN *run,const DWRITE_MATRIX *transform,DWRITE_RENDERING_MODE1 rendering_mode,DWRITE_MEASURING_MODE measuring_mode,DWRITE_GRID_FIT_MODE gridfit_mode,DWRITE_TEXT_ANTIALIAS_MODE antialias_mode,FLOAT origin_x,FLOAT origin_y,IDWriteGlyphRunAnalysis **analysis) {
8120     return This->lpVtbl->IDWriteFactory3_CreateGlyphRunAnalysis(This,run,transform,rendering_mode,measuring_mode,gridfit_mode,antialias_mode,origin_x,origin_y,analysis);
8121 }
8122 static FORCEINLINE HRESULT IDWriteFactory3_CreateCustomRenderingParams(IDWriteFactory3* This,FLOAT gamma,FLOAT enhanced_contrast,FLOAT grayscale_enhanced_contrast,FLOAT cleartype_level,DWRITE_PIXEL_GEOMETRY pixel_geometry,DWRITE_RENDERING_MODE1 rendering_mode,DWRITE_GRID_FIT_MODE gridfit_mode,IDWriteRenderingParams3 **params) {
8123     return This->lpVtbl->IDWriteFactory3_CreateCustomRenderingParams(This,gamma,enhanced_contrast,grayscale_enhanced_contrast,cleartype_level,pixel_geometry,rendering_mode,gridfit_mode,params);
8124 }
8125 static FORCEINLINE HRESULT IDWriteFactory3_CreateFontFaceReference_(IDWriteFactory3* This,IDWriteFontFile *file,UINT32 index,DWRITE_FONT_SIMULATIONS simulations,IDWriteFontFaceReference **reference) {
8126     return This->lpVtbl->CreateFontFaceReference_(This,file,index,simulations,reference);
8127 }
8128 static FORCEINLINE HRESULT IDWriteFactory3_CreateFontFaceReference(IDWriteFactory3* This,const WCHAR *path,const FILETIME *writetime,UINT32 index,DWRITE_FONT_SIMULATIONS simulations,IDWriteFontFaceReference **reference) {
8129     return This->lpVtbl->CreateFontFaceReference(This,path,writetime,index,simulations,reference);
8130 }
8131 static FORCEINLINE HRESULT IDWriteFactory3_GetSystemFontSet(IDWriteFactory3* This,IDWriteFontSet **fontset) {
8132     return This->lpVtbl->GetSystemFontSet(This,fontset);
8133 }
8134 static FORCEINLINE HRESULT IDWriteFactory3_CreateFontSetBuilder(IDWriteFactory3* This,IDWriteFontSetBuilder **builder) {
8135     return This->lpVtbl->CreateFontSetBuilder(This,builder);
8136 }
8137 static FORCEINLINE HRESULT IDWriteFactory3_CreateFontCollectionFromFontSet(IDWriteFactory3* This,IDWriteFontSet *fontset,IDWriteFontCollection1 **collection) {
8138     return This->lpVtbl->CreateFontCollectionFromFontSet(This,fontset,collection);
8139 }
8140 static FORCEINLINE HRESULT IDWriteFactory3_GetSystemFontCollection(IDWriteFactory3* This,WINBOOL include_downloadable,IDWriteFontCollection1 **collection,WINBOOL check_for_updates) {
8141     return This->lpVtbl->IDWriteFactory3_GetSystemFontCollection(This,include_downloadable,collection,check_for_updates);
8142 }
8143 static FORCEINLINE HRESULT IDWriteFactory3_GetFontDownloadQueue(IDWriteFactory3* This,IDWriteFontDownloadQueue **queue) {
8144     return This->lpVtbl->GetFontDownloadQueue(This,queue);
8145 }
8146 #endif
8147 #endif
8148 
8149 #endif
8150 
8151 
8152 #endif  /* __IDWriteFactory3_INTERFACE_DEFINED__ */
8153 
8154 typedef struct DWRITE_GLYPH_IMAGE_DATA {
8155     const void *imageData;
8156     UINT32 imageDataSize;
8157     UINT32 uniqueDataId;
8158     UINT32 pixelsPerEm;
8159     D2D1_SIZE_U pixelSize;
8160     D2D1_POINT_2L horizontalLeftOrigin;
8161     D2D1_POINT_2L horizontalRightOrigin;
8162     D2D1_POINT_2L verticalTopOrigin;
8163     D2D1_POINT_2L verticalBottomOrigin;
8164 } DWRITE_GLYPH_IMAGE_DATA;
8165 /*****************************************************************************
8166  * IDWriteFontFace4 interface
8167  */
8168 #ifndef __IDWriteFontFace4_INTERFACE_DEFINED__
8169 #define __IDWriteFontFace4_INTERFACE_DEFINED__
8170 
8171 DEFINE_GUID(IID_IDWriteFontFace4, 0x27f2a904, 0x4eb8, 0x441d, 0x96,0x78, 0x05,0x63,0xf5,0x3e,0x3e,0x2f);
8172 #if defined(__cplusplus) && !defined(CINTERFACE)
8173 MIDL_INTERFACE("27f2a904-4eb8-441d-9678-0563f53e3e2f")
8174 IDWriteFontFace4 : public IDWriteFontFace3
8175 {
8176     virtual HRESULT STDMETHODCALLTYPE GetGlyphImageFormats_(
8177         UINT16 glyph,
8178         UINT32 ppem_first,
8179         UINT32 ppem_last,
8180         DWRITE_GLYPH_IMAGE_FORMATS *formats) = 0;
8181 
8182     virtual DWRITE_GLYPH_IMAGE_FORMATS STDMETHODCALLTYPE GetGlyphImageFormats(
8183         ) = 0;
8184 
8185     virtual HRESULT STDMETHODCALLTYPE GetGlyphImageData(
8186         UINT16 glyph,
8187         UINT32 ppem,
8188         DWRITE_GLYPH_IMAGE_FORMATS format,
8189         DWRITE_GLYPH_IMAGE_DATA *data,
8190         void **context) = 0;
8191 
8192     virtual void STDMETHODCALLTYPE ReleaseGlyphImageData(
8193         void *context) = 0;
8194 
8195 };
8196 #ifdef __CRT_UUID_DECL
8197 __CRT_UUID_DECL(IDWriteFontFace4, 0x27f2a904, 0x4eb8, 0x441d, 0x96,0x78, 0x05,0x63,0xf5,0x3e,0x3e,0x2f)
8198 #endif
8199 #else
8200 typedef struct IDWriteFontFace4Vtbl {
8201     BEGIN_INTERFACE
8202 
8203     /*** IUnknown methods ***/
8204     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
8205         IDWriteFontFace4 *This,
8206         REFIID riid,
8207         void **ppvObject);
8208 
8209     ULONG (STDMETHODCALLTYPE *AddRef)(
8210         IDWriteFontFace4 *This);
8211 
8212     ULONG (STDMETHODCALLTYPE *Release)(
8213         IDWriteFontFace4 *This);
8214 
8215     /*** IDWriteFontFace methods ***/
8216     DWRITE_FONT_FACE_TYPE (STDMETHODCALLTYPE *GetType)(
8217         IDWriteFontFace4 *This);
8218 
8219     HRESULT (STDMETHODCALLTYPE *GetFiles)(
8220         IDWriteFontFace4 *This,
8221         UINT32 *number_of_files,
8222         IDWriteFontFile **fontfiles);
8223 
8224     UINT32 (STDMETHODCALLTYPE *GetIndex)(
8225         IDWriteFontFace4 *This);
8226 
8227     DWRITE_FONT_SIMULATIONS (STDMETHODCALLTYPE *GetSimulations)(
8228         IDWriteFontFace4 *This);
8229 
8230     WINBOOL (STDMETHODCALLTYPE *IsSymbolFont)(
8231         IDWriteFontFace4 *This);
8232 
8233     void (STDMETHODCALLTYPE *GetMetrics)(
8234         IDWriteFontFace4 *This,
8235         DWRITE_FONT_METRICS *metrics);
8236 
8237     UINT16 (STDMETHODCALLTYPE *GetGlyphCount)(
8238         IDWriteFontFace4 *This);
8239 
8240     HRESULT (STDMETHODCALLTYPE *GetDesignGlyphMetrics)(
8241         IDWriteFontFace4 *This,
8242         const UINT16 *glyph_indices,
8243         UINT32 glyph_count,
8244         DWRITE_GLYPH_METRICS *metrics,
8245         WINBOOL is_sideways);
8246 
8247     HRESULT (STDMETHODCALLTYPE *GetGlyphIndices)(
8248         IDWriteFontFace4 *This,
8249         const UINT32 *codepoints,
8250         UINT32 count,
8251         UINT16 *glyph_indices);
8252 
8253     HRESULT (STDMETHODCALLTYPE *TryGetFontTable)(
8254         IDWriteFontFace4 *This,
8255         UINT32 table_tag,
8256         const void **table_data,
8257         UINT32 *table_size,
8258         void **context,
8259         WINBOOL *exists);
8260 
8261     void (STDMETHODCALLTYPE *ReleaseFontTable)(
8262         IDWriteFontFace4 *This,
8263         void *table_context);
8264 
8265     HRESULT (STDMETHODCALLTYPE *GetGlyphRunOutline)(
8266         IDWriteFontFace4 *This,
8267         FLOAT emSize,
8268         const UINT16 *glyph_indices,
8269         const FLOAT *glyph_advances,
8270         const DWRITE_GLYPH_OFFSET *glyph_offsets,
8271         UINT32 glyph_count,
8272         WINBOOL is_sideways,
8273         WINBOOL is_rtl,
8274         IDWriteGeometrySink *geometrysink);
8275 
8276     HRESULT (STDMETHODCALLTYPE *GetRecommendedRenderingMode)(
8277         IDWriteFontFace4 *This,
8278         FLOAT emSize,
8279         FLOAT pixels_per_dip,
8280         DWRITE_MEASURING_MODE mode,
8281         IDWriteRenderingParams *params,
8282         DWRITE_RENDERING_MODE *rendering_mode);
8283 
8284     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleMetrics)(
8285         IDWriteFontFace4 *This,
8286         FLOAT emSize,
8287         FLOAT pixels_per_dip,
8288         const DWRITE_MATRIX *transform,
8289         DWRITE_FONT_METRICS *metrics);
8290 
8291     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleGlyphMetrics)(
8292         IDWriteFontFace4 *This,
8293         FLOAT emSize,
8294         FLOAT pixels_per_dip,
8295         const DWRITE_MATRIX *transform,
8296         WINBOOL use_gdi_natural,
8297         const UINT16 *glyph_indices,
8298         UINT32 glyph_count,
8299         DWRITE_GLYPH_METRICS *metrics,
8300         WINBOOL is_sideways);
8301 
8302     /*** IDWriteFontFace1 methods ***/
8303     void (STDMETHODCALLTYPE *IDWriteFontFace1_GetMetrics)(
8304         IDWriteFontFace4 *This,
8305         DWRITE_FONT_METRICS1 *metrics);
8306 
8307     HRESULT (STDMETHODCALLTYPE *IDWriteFontFace1_GetGdiCompatibleMetrics)(
8308         IDWriteFontFace4 *This,
8309         FLOAT em_size,
8310         FLOAT pixels_per_dip,
8311         const DWRITE_MATRIX *transform,
8312         DWRITE_FONT_METRICS1 *metrics);
8313 
8314     void (STDMETHODCALLTYPE *GetCaretMetrics)(
8315         IDWriteFontFace4 *This,
8316         DWRITE_CARET_METRICS *metrics);
8317 
8318     HRESULT (STDMETHODCALLTYPE *GetUnicodeRanges)(
8319         IDWriteFontFace4 *This,
8320         UINT32 max_count,
8321         DWRITE_UNICODE_RANGE *ranges,
8322         UINT32 *count);
8323 
8324     WINBOOL (STDMETHODCALLTYPE *IsMonospacedFont)(
8325         IDWriteFontFace4 *This);
8326 
8327     HRESULT (STDMETHODCALLTYPE *GetDesignGlyphAdvances)(
8328         IDWriteFontFace4 *This,
8329         UINT32 glyph_count,
8330         const UINT16 *indices,
8331         INT32 *advances,
8332         WINBOOL is_sideways);
8333 
8334     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleGlyphAdvances)(
8335         IDWriteFontFace4 *This,
8336         FLOAT em_size,
8337         FLOAT pixels_per_dip,
8338         const DWRITE_MATRIX *transform,
8339         WINBOOL use_gdi_natural,
8340         WINBOOL is_sideways,
8341         UINT32 glyph_count,
8342         const UINT16 *indices,
8343         INT32 *advances);
8344 
8345     HRESULT (STDMETHODCALLTYPE *GetKerningPairAdjustments)(
8346         IDWriteFontFace4 *This,
8347         UINT32 glyph_count,
8348         const UINT16 *indices,
8349         INT32 *adjustments);
8350 
8351     WINBOOL (STDMETHODCALLTYPE *HasKerningPairs)(
8352         IDWriteFontFace4 *This);
8353 
8354     HRESULT (STDMETHODCALLTYPE *IDWriteFontFace1_GetRecommendedRenderingMode)(
8355         IDWriteFontFace4 *This,
8356         FLOAT font_emsize,
8357         FLOAT dpiX,
8358         FLOAT dpiY,
8359         const DWRITE_MATRIX *transform,
8360         WINBOOL is_sideways,
8361         DWRITE_OUTLINE_THRESHOLD threshold,
8362         DWRITE_MEASURING_MODE measuring_mode,
8363         DWRITE_RENDERING_MODE *rendering_mode);
8364 
8365     HRESULT (STDMETHODCALLTYPE *GetVerticalGlyphVariants)(
8366         IDWriteFontFace4 *This,
8367         UINT32 glyph_count,
8368         const UINT16 *nominal_indices,
8369         UINT16 *vertical_indices);
8370 
8371     WINBOOL (STDMETHODCALLTYPE *HasVerticalGlyphVariants)(
8372         IDWriteFontFace4 *This);
8373 
8374     /*** IDWriteFontFace2 methods ***/
8375     WINBOOL (STDMETHODCALLTYPE *IsColorFont)(
8376         IDWriteFontFace4 *This);
8377 
8378     UINT32 (STDMETHODCALLTYPE *GetColorPaletteCount)(
8379         IDWriteFontFace4 *This);
8380 
8381     UINT32 (STDMETHODCALLTYPE *GetPaletteEntryCount)(
8382         IDWriteFontFace4 *This);
8383 
8384     HRESULT (STDMETHODCALLTYPE *GetPaletteEntries)(
8385         IDWriteFontFace4 *This,
8386         UINT32 palette_index,
8387         UINT32 first_entry_index,
8388         UINT32 entry_count,
8389         DWRITE_COLOR_F *entries);
8390 
8391     HRESULT (STDMETHODCALLTYPE *IDWriteFontFace2_GetRecommendedRenderingMode)(
8392         IDWriteFontFace4 *This,
8393         FLOAT fontEmSize,
8394         FLOAT dpiX,
8395         FLOAT dpiY,
8396         const DWRITE_MATRIX *transform,
8397         WINBOOL is_sideways,
8398         DWRITE_OUTLINE_THRESHOLD threshold,
8399         DWRITE_MEASURING_MODE measuringmode,
8400         IDWriteRenderingParams *params,
8401         DWRITE_RENDERING_MODE *renderingmode,
8402         DWRITE_GRID_FIT_MODE *gridfitmode);
8403 
8404     /*** IDWriteFontFace3 methods ***/
8405     HRESULT (STDMETHODCALLTYPE *GetFontFaceReference)(
8406         IDWriteFontFace4 *This,
8407         IDWriteFontFaceReference **reference);
8408 
8409     void (STDMETHODCALLTYPE *GetPanose)(
8410         IDWriteFontFace4 *This,
8411         DWRITE_PANOSE *panose);
8412 
8413     DWRITE_FONT_WEIGHT (STDMETHODCALLTYPE *GetWeight)(
8414         IDWriteFontFace4 *This);
8415 
8416     DWRITE_FONT_STRETCH (STDMETHODCALLTYPE *GetStretch)(
8417         IDWriteFontFace4 *This);
8418 
8419     DWRITE_FONT_STYLE (STDMETHODCALLTYPE *GetStyle)(
8420         IDWriteFontFace4 *This);
8421 
8422     HRESULT (STDMETHODCALLTYPE *GetFamilyNames)(
8423         IDWriteFontFace4 *This,
8424         IDWriteLocalizedStrings **names);
8425 
8426     HRESULT (STDMETHODCALLTYPE *GetFaceNames)(
8427         IDWriteFontFace4 *This,
8428         IDWriteLocalizedStrings **names);
8429 
8430     HRESULT (STDMETHODCALLTYPE *GetInformationalStrings)(
8431         IDWriteFontFace4 *This,
8432         DWRITE_INFORMATIONAL_STRING_ID stringid,
8433         IDWriteLocalizedStrings **strings,
8434         WINBOOL *exists);
8435 
8436     WINBOOL (STDMETHODCALLTYPE *HasCharacter)(
8437         IDWriteFontFace4 *This,
8438         UINT32 character);
8439 
8440     HRESULT (STDMETHODCALLTYPE *IDWriteFontFace3_GetRecommendedRenderingMode)(
8441         IDWriteFontFace4 *This,
8442         FLOAT emsize,
8443         FLOAT dpi_x,
8444         FLOAT dpi_y,
8445         const DWRITE_MATRIX *transform,
8446         WINBOOL is_sideways,
8447         DWRITE_OUTLINE_THRESHOLD threshold,
8448         DWRITE_MEASURING_MODE measuring_mode,
8449         IDWriteRenderingParams *params,
8450         DWRITE_RENDERING_MODE1 *rendering_mode,
8451         DWRITE_GRID_FIT_MODE *gridfit_mode);
8452 
8453     WINBOOL (STDMETHODCALLTYPE *IsCharacterLocal)(
8454         IDWriteFontFace4 *This,
8455         UINT32 character);
8456 
8457     WINBOOL (STDMETHODCALLTYPE *IsGlyphLocal)(
8458         IDWriteFontFace4 *This,
8459         UINT16 glyph);
8460 
8461     HRESULT (STDMETHODCALLTYPE *AreCharactersLocal)(
8462         IDWriteFontFace4 *This,
8463         const WCHAR *characters,
8464         UINT32 count,
8465         WINBOOL enqueue_if_not,
8466         WINBOOL *are_local);
8467 
8468     HRESULT (STDMETHODCALLTYPE *AreGlyphsLocal)(
8469         IDWriteFontFace4 *This,
8470         const UINT16 *glyphs,
8471         UINT32 count,
8472         WINBOOL enqueue_if_not,
8473         WINBOOL *are_local);
8474 
8475     /*** IDWriteFontFace4 methods ***/
8476     HRESULT (STDMETHODCALLTYPE *GetGlyphImageFormats_)(
8477         IDWriteFontFace4 *This,
8478         UINT16 glyph,
8479         UINT32 ppem_first,
8480         UINT32 ppem_last,
8481         DWRITE_GLYPH_IMAGE_FORMATS *formats);
8482 
8483     DWRITE_GLYPH_IMAGE_FORMATS (STDMETHODCALLTYPE *GetGlyphImageFormats)(
8484         IDWriteFontFace4 *This);
8485 
8486     HRESULT (STDMETHODCALLTYPE *GetGlyphImageData)(
8487         IDWriteFontFace4 *This,
8488         UINT16 glyph,
8489         UINT32 ppem,
8490         DWRITE_GLYPH_IMAGE_FORMATS format,
8491         DWRITE_GLYPH_IMAGE_DATA *data,
8492         void **context);
8493 
8494     void (STDMETHODCALLTYPE *ReleaseGlyphImageData)(
8495         IDWriteFontFace4 *This,
8496         void *context);
8497 
8498     END_INTERFACE
8499 } IDWriteFontFace4Vtbl;
8500 
8501 interface IDWriteFontFace4 {
8502     CONST_VTBL IDWriteFontFace4Vtbl* lpVtbl;
8503 };
8504 
8505 #ifdef COBJMACROS
8506 #ifndef WIDL_C_INLINE_WRAPPERS
8507 /*** IUnknown methods ***/
8508 #define IDWriteFontFace4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
8509 #define IDWriteFontFace4_AddRef(This) (This)->lpVtbl->AddRef(This)
8510 #define IDWriteFontFace4_Release(This) (This)->lpVtbl->Release(This)
8511 /*** IDWriteFontFace methods ***/
8512 #define IDWriteFontFace4_GetType(This) (This)->lpVtbl->GetType(This)
8513 #define IDWriteFontFace4_GetFiles(This,number_of_files,fontfiles) (This)->lpVtbl->GetFiles(This,number_of_files,fontfiles)
8514 #define IDWriteFontFace4_GetIndex(This) (This)->lpVtbl->GetIndex(This)
8515 #define IDWriteFontFace4_GetSimulations(This) (This)->lpVtbl->GetSimulations(This)
8516 #define IDWriteFontFace4_IsSymbolFont(This) (This)->lpVtbl->IsSymbolFont(This)
8517 #define IDWriteFontFace4_GetGlyphCount(This) (This)->lpVtbl->GetGlyphCount(This)
8518 #define IDWriteFontFace4_GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways) (This)->lpVtbl->GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways)
8519 #define IDWriteFontFace4_GetGlyphIndices(This,codepoints,count,glyph_indices) (This)->lpVtbl->GetGlyphIndices(This,codepoints,count,glyph_indices)
8520 #define IDWriteFontFace4_TryGetFontTable(This,table_tag,table_data,table_size,context,exists) (This)->lpVtbl->TryGetFontTable(This,table_tag,table_data,table_size,context,exists)
8521 #define IDWriteFontFace4_ReleaseFontTable(This,table_context) (This)->lpVtbl->ReleaseFontTable(This,table_context)
8522 #define IDWriteFontFace4_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)
8523 #define IDWriteFontFace4_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)
8524 /*** IDWriteFontFace1 methods ***/
8525 #define IDWriteFontFace4_GetMetrics(This,metrics) (This)->lpVtbl->IDWriteFontFace1_GetMetrics(This,metrics)
8526 #define IDWriteFontFace4_GetGdiCompatibleMetrics(This,em_size,pixels_per_dip,transform,metrics) (This)->lpVtbl->IDWriteFontFace1_GetGdiCompatibleMetrics(This,em_size,pixels_per_dip,transform,metrics)
8527 #define IDWriteFontFace4_GetCaretMetrics(This,metrics) (This)->lpVtbl->GetCaretMetrics(This,metrics)
8528 #define IDWriteFontFace4_GetUnicodeRanges(This,max_count,ranges,count) (This)->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count)
8529 #define IDWriteFontFace4_IsMonospacedFont(This) (This)->lpVtbl->IsMonospacedFont(This)
8530 #define IDWriteFontFace4_GetDesignGlyphAdvances(This,glyph_count,indices,advances,is_sideways) (This)->lpVtbl->GetDesignGlyphAdvances(This,glyph_count,indices,advances,is_sideways)
8531 #define IDWriteFontFace4_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)
8532 #define IDWriteFontFace4_GetKerningPairAdjustments(This,glyph_count,indices,adjustments) (This)->lpVtbl->GetKerningPairAdjustments(This,glyph_count,indices,adjustments)
8533 #define IDWriteFontFace4_HasKerningPairs(This) (This)->lpVtbl->HasKerningPairs(This)
8534 #define IDWriteFontFace4_GetVerticalGlyphVariants(This,glyph_count,nominal_indices,vertical_indices) (This)->lpVtbl->GetVerticalGlyphVariants(This,glyph_count,nominal_indices,vertical_indices)
8535 #define IDWriteFontFace4_HasVerticalGlyphVariants(This) (This)->lpVtbl->HasVerticalGlyphVariants(This)
8536 /*** IDWriteFontFace2 methods ***/
8537 #define IDWriteFontFace4_IsColorFont(This) (This)->lpVtbl->IsColorFont(This)
8538 #define IDWriteFontFace4_GetColorPaletteCount(This) (This)->lpVtbl->GetColorPaletteCount(This)
8539 #define IDWriteFontFace4_GetPaletteEntryCount(This) (This)->lpVtbl->GetPaletteEntryCount(This)
8540 #define IDWriteFontFace4_GetPaletteEntries(This,palette_index,first_entry_index,entry_count,entries) (This)->lpVtbl->GetPaletteEntries(This,palette_index,first_entry_index,entry_count,entries)
8541 /*** IDWriteFontFace3 methods ***/
8542 #define IDWriteFontFace4_GetFontFaceReference(This,reference) (This)->lpVtbl->GetFontFaceReference(This,reference)
8543 #define IDWriteFontFace4_GetPanose(This,panose) (This)->lpVtbl->GetPanose(This,panose)
8544 #define IDWriteFontFace4_GetWeight(This) (This)->lpVtbl->GetWeight(This)
8545 #define IDWriteFontFace4_GetStretch(This) (This)->lpVtbl->GetStretch(This)
8546 #define IDWriteFontFace4_GetStyle(This) (This)->lpVtbl->GetStyle(This)
8547 #define IDWriteFontFace4_GetFamilyNames(This,names) (This)->lpVtbl->GetFamilyNames(This,names)
8548 #define IDWriteFontFace4_GetFaceNames(This,names) (This)->lpVtbl->GetFaceNames(This,names)
8549 #define IDWriteFontFace4_GetInformationalStrings(This,stringid,strings,exists) (This)->lpVtbl->GetInformationalStrings(This,stringid,strings,exists)
8550 #define IDWriteFontFace4_HasCharacter(This,character) (This)->lpVtbl->HasCharacter(This,character)
8551 #define IDWriteFontFace4_GetRecommendedRenderingMode(This,emsize,dpi_x,dpi_y,transform,is_sideways,threshold,measuring_mode,params,rendering_mode,gridfit_mode) (This)->lpVtbl->IDWriteFontFace3_GetRecommendedRenderingMode(This,emsize,dpi_x,dpi_y,transform,is_sideways,threshold,measuring_mode,params,rendering_mode,gridfit_mode)
8552 #define IDWriteFontFace4_IsCharacterLocal(This,character) (This)->lpVtbl->IsCharacterLocal(This,character)
8553 #define IDWriteFontFace4_IsGlyphLocal(This,glyph) (This)->lpVtbl->IsGlyphLocal(This,glyph)
8554 #define IDWriteFontFace4_AreCharactersLocal(This,characters,count,enqueue_if_not,are_local) (This)->lpVtbl->AreCharactersLocal(This,characters,count,enqueue_if_not,are_local)
8555 #define IDWriteFontFace4_AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local) (This)->lpVtbl->AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local)
8556 /*** IDWriteFontFace4 methods ***/
8557 #define IDWriteFontFace4_GetGlyphImageFormats_(This,glyph,ppem_first,ppem_last,formats) (This)->lpVtbl->GetGlyphImageFormats_(This,glyph,ppem_first,ppem_last,formats)
8558 #define IDWriteFontFace4_GetGlyphImageFormats(This) (This)->lpVtbl->GetGlyphImageFormats(This)
8559 #define IDWriteFontFace4_GetGlyphImageData(This,glyph,ppem,format,data,context) (This)->lpVtbl->GetGlyphImageData(This,glyph,ppem,format,data,context)
8560 #define IDWriteFontFace4_ReleaseGlyphImageData(This,context) (This)->lpVtbl->ReleaseGlyphImageData(This,context)
8561 #else
8562 /*** IUnknown methods ***/
8563 static FORCEINLINE HRESULT IDWriteFontFace4_QueryInterface(IDWriteFontFace4* This,REFIID riid,void **ppvObject) {
8564     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
8565 }
8566 static FORCEINLINE ULONG IDWriteFontFace4_AddRef(IDWriteFontFace4* This) {
8567     return This->lpVtbl->AddRef(This);
8568 }
8569 static FORCEINLINE ULONG IDWriteFontFace4_Release(IDWriteFontFace4* This) {
8570     return This->lpVtbl->Release(This);
8571 }
8572 /*** IDWriteFontFace methods ***/
8573 static FORCEINLINE DWRITE_FONT_FACE_TYPE IDWriteFontFace4_GetType(IDWriteFontFace4* This) {
8574     return This->lpVtbl->GetType(This);
8575 }
8576 static FORCEINLINE HRESULT IDWriteFontFace4_GetFiles(IDWriteFontFace4* This,UINT32 *number_of_files,IDWriteFontFile **fontfiles) {
8577     return This->lpVtbl->GetFiles(This,number_of_files,fontfiles);
8578 }
8579 static FORCEINLINE UINT32 IDWriteFontFace4_GetIndex(IDWriteFontFace4* This) {
8580     return This->lpVtbl->GetIndex(This);
8581 }
8582 static FORCEINLINE DWRITE_FONT_SIMULATIONS IDWriteFontFace4_GetSimulations(IDWriteFontFace4* This) {
8583     return This->lpVtbl->GetSimulations(This);
8584 }
8585 static FORCEINLINE WINBOOL IDWriteFontFace4_IsSymbolFont(IDWriteFontFace4* This) {
8586     return This->lpVtbl->IsSymbolFont(This);
8587 }
8588 static FORCEINLINE UINT16 IDWriteFontFace4_GetGlyphCount(IDWriteFontFace4* This) {
8589     return This->lpVtbl->GetGlyphCount(This);
8590 }
8591 static FORCEINLINE HRESULT IDWriteFontFace4_GetDesignGlyphMetrics(IDWriteFontFace4* This,const UINT16 *glyph_indices,UINT32 glyph_count,DWRITE_GLYPH_METRICS *metrics,WINBOOL is_sideways) {
8592     return This->lpVtbl->GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways);
8593 }
8594 static FORCEINLINE HRESULT IDWriteFontFace4_GetGlyphIndices(IDWriteFontFace4* This,const UINT32 *codepoints,UINT32 count,UINT16 *glyph_indices) {
8595     return This->lpVtbl->GetGlyphIndices(This,codepoints,count,glyph_indices);
8596 }
8597 static FORCEINLINE HRESULT IDWriteFontFace4_TryGetFontTable(IDWriteFontFace4* This,UINT32 table_tag,const void **table_data,UINT32 *table_size,void **context,WINBOOL *exists) {
8598     return This->lpVtbl->TryGetFontTable(This,table_tag,table_data,table_size,context,exists);
8599 }
8600 static FORCEINLINE void IDWriteFontFace4_ReleaseFontTable(IDWriteFontFace4* This,void *table_context) {
8601     This->lpVtbl->ReleaseFontTable(This,table_context);
8602 }
8603 static FORCEINLINE HRESULT IDWriteFontFace4_GetGlyphRunOutline(IDWriteFontFace4* 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) {
8604     return This->lpVtbl->GetGlyphRunOutline(This,emSize,glyph_indices,glyph_advances,glyph_offsets,glyph_count,is_sideways,is_rtl,geometrysink);
8605 }
8606 static FORCEINLINE HRESULT IDWriteFontFace4_GetGdiCompatibleGlyphMetrics(IDWriteFontFace4* 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) {
8607     return This->lpVtbl->GetGdiCompatibleGlyphMetrics(This,emSize,pixels_per_dip,transform,use_gdi_natural,glyph_indices,glyph_count,metrics,is_sideways);
8608 }
8609 /*** IDWriteFontFace1 methods ***/
8610 static FORCEINLINE void IDWriteFontFace4_GetMetrics(IDWriteFontFace4* This,DWRITE_FONT_METRICS1 *metrics) {
8611     This->lpVtbl->IDWriteFontFace1_GetMetrics(This,metrics);
8612 }
8613 static FORCEINLINE HRESULT IDWriteFontFace4_GetGdiCompatibleMetrics(IDWriteFontFace4* This,FLOAT em_size,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,DWRITE_FONT_METRICS1 *metrics) {
8614     return This->lpVtbl->IDWriteFontFace1_GetGdiCompatibleMetrics(This,em_size,pixels_per_dip,transform,metrics);
8615 }
8616 static FORCEINLINE void IDWriteFontFace4_GetCaretMetrics(IDWriteFontFace4* This,DWRITE_CARET_METRICS *metrics) {
8617     This->lpVtbl->GetCaretMetrics(This,metrics);
8618 }
8619 static FORCEINLINE HRESULT IDWriteFontFace4_GetUnicodeRanges(IDWriteFontFace4* This,UINT32 max_count,DWRITE_UNICODE_RANGE *ranges,UINT32 *count) {
8620     return This->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count);
8621 }
8622 static FORCEINLINE WINBOOL IDWriteFontFace4_IsMonospacedFont(IDWriteFontFace4* This) {
8623     return This->lpVtbl->IsMonospacedFont(This);
8624 }
8625 static FORCEINLINE HRESULT IDWriteFontFace4_GetDesignGlyphAdvances(IDWriteFontFace4* This,UINT32 glyph_count,const UINT16 *indices,INT32 *advances,WINBOOL is_sideways) {
8626     return This->lpVtbl->GetDesignGlyphAdvances(This,glyph_count,indices,advances,is_sideways);
8627 }
8628 static FORCEINLINE HRESULT IDWriteFontFace4_GetGdiCompatibleGlyphAdvances(IDWriteFontFace4* 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) {
8629     return This->lpVtbl->GetGdiCompatibleGlyphAdvances(This,em_size,pixels_per_dip,transform,use_gdi_natural,is_sideways,glyph_count,indices,advances);
8630 }
8631 static FORCEINLINE HRESULT IDWriteFontFace4_GetKerningPairAdjustments(IDWriteFontFace4* This,UINT32 glyph_count,const UINT16 *indices,INT32 *adjustments) {
8632     return This->lpVtbl->GetKerningPairAdjustments(This,glyph_count,indices,adjustments);
8633 }
8634 static FORCEINLINE WINBOOL IDWriteFontFace4_HasKerningPairs(IDWriteFontFace4* This) {
8635     return This->lpVtbl->HasKerningPairs(This);
8636 }
8637 static FORCEINLINE HRESULT IDWriteFontFace4_GetVerticalGlyphVariants(IDWriteFontFace4* This,UINT32 glyph_count,const UINT16 *nominal_indices,UINT16 *vertical_indices) {
8638     return This->lpVtbl->GetVerticalGlyphVariants(This,glyph_count,nominal_indices,vertical_indices);
8639 }
8640 static FORCEINLINE WINBOOL IDWriteFontFace4_HasVerticalGlyphVariants(IDWriteFontFace4* This) {
8641     return This->lpVtbl->HasVerticalGlyphVariants(This);
8642 }
8643 /*** IDWriteFontFace2 methods ***/
8644 static FORCEINLINE WINBOOL IDWriteFontFace4_IsColorFont(IDWriteFontFace4* This) {
8645     return This->lpVtbl->IsColorFont(This);
8646 }
8647 static FORCEINLINE UINT32 IDWriteFontFace4_GetColorPaletteCount(IDWriteFontFace4* This) {
8648     return This->lpVtbl->GetColorPaletteCount(This);
8649 }
8650 static FORCEINLINE UINT32 IDWriteFontFace4_GetPaletteEntryCount(IDWriteFontFace4* This) {
8651     return This->lpVtbl->GetPaletteEntryCount(This);
8652 }
8653 static FORCEINLINE HRESULT IDWriteFontFace4_GetPaletteEntries(IDWriteFontFace4* This,UINT32 palette_index,UINT32 first_entry_index,UINT32 entry_count,DWRITE_COLOR_F *entries) {
8654     return This->lpVtbl->GetPaletteEntries(This,palette_index,first_entry_index,entry_count,entries);
8655 }
8656 /*** IDWriteFontFace3 methods ***/
8657 static FORCEINLINE HRESULT IDWriteFontFace4_GetFontFaceReference(IDWriteFontFace4* This,IDWriteFontFaceReference **reference) {
8658     return This->lpVtbl->GetFontFaceReference(This,reference);
8659 }
8660 static FORCEINLINE void IDWriteFontFace4_GetPanose(IDWriteFontFace4* This,DWRITE_PANOSE *panose) {
8661     This->lpVtbl->GetPanose(This,panose);
8662 }
8663 static FORCEINLINE DWRITE_FONT_WEIGHT IDWriteFontFace4_GetWeight(IDWriteFontFace4* This) {
8664     return This->lpVtbl->GetWeight(This);
8665 }
8666 static FORCEINLINE DWRITE_FONT_STRETCH IDWriteFontFace4_GetStretch(IDWriteFontFace4* This) {
8667     return This->lpVtbl->GetStretch(This);
8668 }
8669 static FORCEINLINE DWRITE_FONT_STYLE IDWriteFontFace4_GetStyle(IDWriteFontFace4* This) {
8670     return This->lpVtbl->GetStyle(This);
8671 }
8672 static FORCEINLINE HRESULT IDWriteFontFace4_GetFamilyNames(IDWriteFontFace4* This,IDWriteLocalizedStrings **names) {
8673     return This->lpVtbl->GetFamilyNames(This,names);
8674 }
8675 static FORCEINLINE HRESULT IDWriteFontFace4_GetFaceNames(IDWriteFontFace4* This,IDWriteLocalizedStrings **names) {
8676     return This->lpVtbl->GetFaceNames(This,names);
8677 }
8678 static FORCEINLINE HRESULT IDWriteFontFace4_GetInformationalStrings(IDWriteFontFace4* This,DWRITE_INFORMATIONAL_STRING_ID stringid,IDWriteLocalizedStrings **strings,WINBOOL *exists) {
8679     return This->lpVtbl->GetInformationalStrings(This,stringid,strings,exists);
8680 }
8681 static FORCEINLINE WINBOOL IDWriteFontFace4_HasCharacter(IDWriteFontFace4* This,UINT32 character) {
8682     return This->lpVtbl->HasCharacter(This,character);
8683 }
8684 static FORCEINLINE HRESULT IDWriteFontFace4_GetRecommendedRenderingMode(IDWriteFontFace4* This,FLOAT emsize,FLOAT dpi_x,FLOAT dpi_y,const DWRITE_MATRIX *transform,WINBOOL is_sideways,DWRITE_OUTLINE_THRESHOLD threshold,DWRITE_MEASURING_MODE measuring_mode,IDWriteRenderingParams *params,DWRITE_RENDERING_MODE1 *rendering_mode,DWRITE_GRID_FIT_MODE *gridfit_mode) {
8685     return This->lpVtbl->IDWriteFontFace3_GetRecommendedRenderingMode(This,emsize,dpi_x,dpi_y,transform,is_sideways,threshold,measuring_mode,params,rendering_mode,gridfit_mode);
8686 }
8687 static FORCEINLINE WINBOOL IDWriteFontFace4_IsCharacterLocal(IDWriteFontFace4* This,UINT32 character) {
8688     return This->lpVtbl->IsCharacterLocal(This,character);
8689 }
8690 static FORCEINLINE WINBOOL IDWriteFontFace4_IsGlyphLocal(IDWriteFontFace4* This,UINT16 glyph) {
8691     return This->lpVtbl->IsGlyphLocal(This,glyph);
8692 }
8693 static FORCEINLINE HRESULT IDWriteFontFace4_AreCharactersLocal(IDWriteFontFace4* This,const WCHAR *characters,UINT32 count,WINBOOL enqueue_if_not,WINBOOL *are_local) {
8694     return This->lpVtbl->AreCharactersLocal(This,characters,count,enqueue_if_not,are_local);
8695 }
8696 static FORCEINLINE HRESULT IDWriteFontFace4_AreGlyphsLocal(IDWriteFontFace4* This,const UINT16 *glyphs,UINT32 count,WINBOOL enqueue_if_not,WINBOOL *are_local) {
8697     return This->lpVtbl->AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local);
8698 }
8699 /*** IDWriteFontFace4 methods ***/
8700 static FORCEINLINE HRESULT IDWriteFontFace4_GetGlyphImageFormats_(IDWriteFontFace4* This,UINT16 glyph,UINT32 ppem_first,UINT32 ppem_last,DWRITE_GLYPH_IMAGE_FORMATS *formats) {
8701     return This->lpVtbl->GetGlyphImageFormats_(This,glyph,ppem_first,ppem_last,formats);
8702 }
8703 static FORCEINLINE DWRITE_GLYPH_IMAGE_FORMATS IDWriteFontFace4_GetGlyphImageFormats(IDWriteFontFace4* This) {
8704     return This->lpVtbl->GetGlyphImageFormats(This);
8705 }
8706 static FORCEINLINE HRESULT IDWriteFontFace4_GetGlyphImageData(IDWriteFontFace4* This,UINT16 glyph,UINT32 ppem,DWRITE_GLYPH_IMAGE_FORMATS format,DWRITE_GLYPH_IMAGE_DATA *data,void **context) {
8707     return This->lpVtbl->GetGlyphImageData(This,glyph,ppem,format,data,context);
8708 }
8709 static FORCEINLINE void IDWriteFontFace4_ReleaseGlyphImageData(IDWriteFontFace4* This,void *context) {
8710     This->lpVtbl->ReleaseGlyphImageData(This,context);
8711 }
8712 #endif
8713 #endif
8714 
8715 #endif
8716 
8717 
8718 #endif  /* __IDWriteFontFace4_INTERFACE_DEFINED__ */
8719 
8720 /*****************************************************************************
8721  * IDWriteFontFace5 interface
8722  */
8723 #ifndef __IDWriteFontFace5_INTERFACE_DEFINED__
8724 #define __IDWriteFontFace5_INTERFACE_DEFINED__
8725 
8726 DEFINE_GUID(IID_IDWriteFontFace5, 0x98eff3a5, 0xb667, 0x479a, 0xb1,0x45, 0xe2,0xfa,0x5b,0x9f,0xdc,0x29);
8727 #if defined(__cplusplus) && !defined(CINTERFACE)
8728 MIDL_INTERFACE("98eff3a5-b667-479a-b145-e2fa5b9fdc29")
8729 IDWriteFontFace5 : public IDWriteFontFace4
8730 {
8731     virtual UINT32 STDMETHODCALLTYPE GetFontAxisValueCount(
8732         ) = 0;
8733 
8734     virtual HRESULT STDMETHODCALLTYPE GetFontAxisValues(
8735         DWRITE_FONT_AXIS_VALUE *values,
8736         UINT32 value_count) = 0;
8737 
8738     virtual WINBOOL STDMETHODCALLTYPE HasVariations(
8739         ) = 0;
8740 
8741     virtual HRESULT STDMETHODCALLTYPE GetFontResource(
8742         IDWriteFontResource **resource) = 0;
8743 
8744     virtual WINBOOL STDMETHODCALLTYPE Equals(
8745         IDWriteFontFace *fontface) = 0;
8746 
8747 };
8748 #ifdef __CRT_UUID_DECL
8749 __CRT_UUID_DECL(IDWriteFontFace5, 0x98eff3a5, 0xb667, 0x479a, 0xb1,0x45, 0xe2,0xfa,0x5b,0x9f,0xdc,0x29)
8750 #endif
8751 #else
8752 typedef struct IDWriteFontFace5Vtbl {
8753     BEGIN_INTERFACE
8754 
8755     /*** IUnknown methods ***/
8756     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
8757         IDWriteFontFace5 *This,
8758         REFIID riid,
8759         void **ppvObject);
8760 
8761     ULONG (STDMETHODCALLTYPE *AddRef)(
8762         IDWriteFontFace5 *This);
8763 
8764     ULONG (STDMETHODCALLTYPE *Release)(
8765         IDWriteFontFace5 *This);
8766 
8767     /*** IDWriteFontFace methods ***/
8768     DWRITE_FONT_FACE_TYPE (STDMETHODCALLTYPE *GetType)(
8769         IDWriteFontFace5 *This);
8770 
8771     HRESULT (STDMETHODCALLTYPE *GetFiles)(
8772         IDWriteFontFace5 *This,
8773         UINT32 *number_of_files,
8774         IDWriteFontFile **fontfiles);
8775 
8776     UINT32 (STDMETHODCALLTYPE *GetIndex)(
8777         IDWriteFontFace5 *This);
8778 
8779     DWRITE_FONT_SIMULATIONS (STDMETHODCALLTYPE *GetSimulations)(
8780         IDWriteFontFace5 *This);
8781 
8782     WINBOOL (STDMETHODCALLTYPE *IsSymbolFont)(
8783         IDWriteFontFace5 *This);
8784 
8785     void (STDMETHODCALLTYPE *GetMetrics)(
8786         IDWriteFontFace5 *This,
8787         DWRITE_FONT_METRICS *metrics);
8788 
8789     UINT16 (STDMETHODCALLTYPE *GetGlyphCount)(
8790         IDWriteFontFace5 *This);
8791 
8792     HRESULT (STDMETHODCALLTYPE *GetDesignGlyphMetrics)(
8793         IDWriteFontFace5 *This,
8794         const UINT16 *glyph_indices,
8795         UINT32 glyph_count,
8796         DWRITE_GLYPH_METRICS *metrics,
8797         WINBOOL is_sideways);
8798 
8799     HRESULT (STDMETHODCALLTYPE *GetGlyphIndices)(
8800         IDWriteFontFace5 *This,
8801         const UINT32 *codepoints,
8802         UINT32 count,
8803         UINT16 *glyph_indices);
8804 
8805     HRESULT (STDMETHODCALLTYPE *TryGetFontTable)(
8806         IDWriteFontFace5 *This,
8807         UINT32 table_tag,
8808         const void **table_data,
8809         UINT32 *table_size,
8810         void **context,
8811         WINBOOL *exists);
8812 
8813     void (STDMETHODCALLTYPE *ReleaseFontTable)(
8814         IDWriteFontFace5 *This,
8815         void *table_context);
8816 
8817     HRESULT (STDMETHODCALLTYPE *GetGlyphRunOutline)(
8818         IDWriteFontFace5 *This,
8819         FLOAT emSize,
8820         const UINT16 *glyph_indices,
8821         const FLOAT *glyph_advances,
8822         const DWRITE_GLYPH_OFFSET *glyph_offsets,
8823         UINT32 glyph_count,
8824         WINBOOL is_sideways,
8825         WINBOOL is_rtl,
8826         IDWriteGeometrySink *geometrysink);
8827 
8828     HRESULT (STDMETHODCALLTYPE *GetRecommendedRenderingMode)(
8829         IDWriteFontFace5 *This,
8830         FLOAT emSize,
8831         FLOAT pixels_per_dip,
8832         DWRITE_MEASURING_MODE mode,
8833         IDWriteRenderingParams *params,
8834         DWRITE_RENDERING_MODE *rendering_mode);
8835 
8836     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleMetrics)(
8837         IDWriteFontFace5 *This,
8838         FLOAT emSize,
8839         FLOAT pixels_per_dip,
8840         const DWRITE_MATRIX *transform,
8841         DWRITE_FONT_METRICS *metrics);
8842 
8843     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleGlyphMetrics)(
8844         IDWriteFontFace5 *This,
8845         FLOAT emSize,
8846         FLOAT pixels_per_dip,
8847         const DWRITE_MATRIX *transform,
8848         WINBOOL use_gdi_natural,
8849         const UINT16 *glyph_indices,
8850         UINT32 glyph_count,
8851         DWRITE_GLYPH_METRICS *metrics,
8852         WINBOOL is_sideways);
8853 
8854     /*** IDWriteFontFace1 methods ***/
8855     void (STDMETHODCALLTYPE *IDWriteFontFace1_GetMetrics)(
8856         IDWriteFontFace5 *This,
8857         DWRITE_FONT_METRICS1 *metrics);
8858 
8859     HRESULT (STDMETHODCALLTYPE *IDWriteFontFace1_GetGdiCompatibleMetrics)(
8860         IDWriteFontFace5 *This,
8861         FLOAT em_size,
8862         FLOAT pixels_per_dip,
8863         const DWRITE_MATRIX *transform,
8864         DWRITE_FONT_METRICS1 *metrics);
8865 
8866     void (STDMETHODCALLTYPE *GetCaretMetrics)(
8867         IDWriteFontFace5 *This,
8868         DWRITE_CARET_METRICS *metrics);
8869 
8870     HRESULT (STDMETHODCALLTYPE *GetUnicodeRanges)(
8871         IDWriteFontFace5 *This,
8872         UINT32 max_count,
8873         DWRITE_UNICODE_RANGE *ranges,
8874         UINT32 *count);
8875 
8876     WINBOOL (STDMETHODCALLTYPE *IsMonospacedFont)(
8877         IDWriteFontFace5 *This);
8878 
8879     HRESULT (STDMETHODCALLTYPE *GetDesignGlyphAdvances)(
8880         IDWriteFontFace5 *This,
8881         UINT32 glyph_count,
8882         const UINT16 *indices,
8883         INT32 *advances,
8884         WINBOOL is_sideways);
8885 
8886     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleGlyphAdvances)(
8887         IDWriteFontFace5 *This,
8888         FLOAT em_size,
8889         FLOAT pixels_per_dip,
8890         const DWRITE_MATRIX *transform,
8891         WINBOOL use_gdi_natural,
8892         WINBOOL is_sideways,
8893         UINT32 glyph_count,
8894         const UINT16 *indices,
8895         INT32 *advances);
8896 
8897     HRESULT (STDMETHODCALLTYPE *GetKerningPairAdjustments)(
8898         IDWriteFontFace5 *This,
8899         UINT32 glyph_count,
8900         const UINT16 *indices,
8901         INT32 *adjustments);
8902 
8903     WINBOOL (STDMETHODCALLTYPE *HasKerningPairs)(
8904         IDWriteFontFace5 *This);
8905 
8906     HRESULT (STDMETHODCALLTYPE *IDWriteFontFace1_GetRecommendedRenderingMode)(
8907         IDWriteFontFace5 *This,
8908         FLOAT font_emsize,
8909         FLOAT dpiX,
8910         FLOAT dpiY,
8911         const DWRITE_MATRIX *transform,
8912         WINBOOL is_sideways,
8913         DWRITE_OUTLINE_THRESHOLD threshold,
8914         DWRITE_MEASURING_MODE measuring_mode,
8915         DWRITE_RENDERING_MODE *rendering_mode);
8916 
8917     HRESULT (STDMETHODCALLTYPE *GetVerticalGlyphVariants)(
8918         IDWriteFontFace5 *This,
8919         UINT32 glyph_count,
8920         const UINT16 *nominal_indices,
8921         UINT16 *vertical_indices);
8922 
8923     WINBOOL (STDMETHODCALLTYPE *HasVerticalGlyphVariants)(
8924         IDWriteFontFace5 *This);
8925 
8926     /*** IDWriteFontFace2 methods ***/
8927     WINBOOL (STDMETHODCALLTYPE *IsColorFont)(
8928         IDWriteFontFace5 *This);
8929 
8930     UINT32 (STDMETHODCALLTYPE *GetColorPaletteCount)(
8931         IDWriteFontFace5 *This);
8932 
8933     UINT32 (STDMETHODCALLTYPE *GetPaletteEntryCount)(
8934         IDWriteFontFace5 *This);
8935 
8936     HRESULT (STDMETHODCALLTYPE *GetPaletteEntries)(
8937         IDWriteFontFace5 *This,
8938         UINT32 palette_index,
8939         UINT32 first_entry_index,
8940         UINT32 entry_count,
8941         DWRITE_COLOR_F *entries);
8942 
8943     HRESULT (STDMETHODCALLTYPE *IDWriteFontFace2_GetRecommendedRenderingMode)(
8944         IDWriteFontFace5 *This,
8945         FLOAT fontEmSize,
8946         FLOAT dpiX,
8947         FLOAT dpiY,
8948         const DWRITE_MATRIX *transform,
8949         WINBOOL is_sideways,
8950         DWRITE_OUTLINE_THRESHOLD threshold,
8951         DWRITE_MEASURING_MODE measuringmode,
8952         IDWriteRenderingParams *params,
8953         DWRITE_RENDERING_MODE *renderingmode,
8954         DWRITE_GRID_FIT_MODE *gridfitmode);
8955 
8956     /*** IDWriteFontFace3 methods ***/
8957     HRESULT (STDMETHODCALLTYPE *GetFontFaceReference)(
8958         IDWriteFontFace5 *This,
8959         IDWriteFontFaceReference **reference);
8960 
8961     void (STDMETHODCALLTYPE *GetPanose)(
8962         IDWriteFontFace5 *This,
8963         DWRITE_PANOSE *panose);
8964 
8965     DWRITE_FONT_WEIGHT (STDMETHODCALLTYPE *GetWeight)(
8966         IDWriteFontFace5 *This);
8967 
8968     DWRITE_FONT_STRETCH (STDMETHODCALLTYPE *GetStretch)(
8969         IDWriteFontFace5 *This);
8970 
8971     DWRITE_FONT_STYLE (STDMETHODCALLTYPE *GetStyle)(
8972         IDWriteFontFace5 *This);
8973 
8974     HRESULT (STDMETHODCALLTYPE *GetFamilyNames)(
8975         IDWriteFontFace5 *This,
8976         IDWriteLocalizedStrings **names);
8977 
8978     HRESULT (STDMETHODCALLTYPE *GetFaceNames)(
8979         IDWriteFontFace5 *This,
8980         IDWriteLocalizedStrings **names);
8981 
8982     HRESULT (STDMETHODCALLTYPE *GetInformationalStrings)(
8983         IDWriteFontFace5 *This,
8984         DWRITE_INFORMATIONAL_STRING_ID stringid,
8985         IDWriteLocalizedStrings **strings,
8986         WINBOOL *exists);
8987 
8988     WINBOOL (STDMETHODCALLTYPE *HasCharacter)(
8989         IDWriteFontFace5 *This,
8990         UINT32 character);
8991 
8992     HRESULT (STDMETHODCALLTYPE *IDWriteFontFace3_GetRecommendedRenderingMode)(
8993         IDWriteFontFace5 *This,
8994         FLOAT emsize,
8995         FLOAT dpi_x,
8996         FLOAT dpi_y,
8997         const DWRITE_MATRIX *transform,
8998         WINBOOL is_sideways,
8999         DWRITE_OUTLINE_THRESHOLD threshold,
9000         DWRITE_MEASURING_MODE measuring_mode,
9001         IDWriteRenderingParams *params,
9002         DWRITE_RENDERING_MODE1 *rendering_mode,
9003         DWRITE_GRID_FIT_MODE *gridfit_mode);
9004 
9005     WINBOOL (STDMETHODCALLTYPE *IsCharacterLocal)(
9006         IDWriteFontFace5 *This,
9007         UINT32 character);
9008 
9009     WINBOOL (STDMETHODCALLTYPE *IsGlyphLocal)(
9010         IDWriteFontFace5 *This,
9011         UINT16 glyph);
9012 
9013     HRESULT (STDMETHODCALLTYPE *AreCharactersLocal)(
9014         IDWriteFontFace5 *This,
9015         const WCHAR *characters,
9016         UINT32 count,
9017         WINBOOL enqueue_if_not,
9018         WINBOOL *are_local);
9019 
9020     HRESULT (STDMETHODCALLTYPE *AreGlyphsLocal)(
9021         IDWriteFontFace5 *This,
9022         const UINT16 *glyphs,
9023         UINT32 count,
9024         WINBOOL enqueue_if_not,
9025         WINBOOL *are_local);
9026 
9027     /*** IDWriteFontFace4 methods ***/
9028     HRESULT (STDMETHODCALLTYPE *GetGlyphImageFormats_)(
9029         IDWriteFontFace5 *This,
9030         UINT16 glyph,
9031         UINT32 ppem_first,
9032         UINT32 ppem_last,
9033         DWRITE_GLYPH_IMAGE_FORMATS *formats);
9034 
9035     DWRITE_GLYPH_IMAGE_FORMATS (STDMETHODCALLTYPE *GetGlyphImageFormats)(
9036         IDWriteFontFace5 *This);
9037 
9038     HRESULT (STDMETHODCALLTYPE *GetGlyphImageData)(
9039         IDWriteFontFace5 *This,
9040         UINT16 glyph,
9041         UINT32 ppem,
9042         DWRITE_GLYPH_IMAGE_FORMATS format,
9043         DWRITE_GLYPH_IMAGE_DATA *data,
9044         void **context);
9045 
9046     void (STDMETHODCALLTYPE *ReleaseGlyphImageData)(
9047         IDWriteFontFace5 *This,
9048         void *context);
9049 
9050     /*** IDWriteFontFace5 methods ***/
9051     UINT32 (STDMETHODCALLTYPE *GetFontAxisValueCount)(
9052         IDWriteFontFace5 *This);
9053 
9054     HRESULT (STDMETHODCALLTYPE *GetFontAxisValues)(
9055         IDWriteFontFace5 *This,
9056         DWRITE_FONT_AXIS_VALUE *values,
9057         UINT32 value_count);
9058 
9059     WINBOOL (STDMETHODCALLTYPE *HasVariations)(
9060         IDWriteFontFace5 *This);
9061 
9062     HRESULT (STDMETHODCALLTYPE *GetFontResource)(
9063         IDWriteFontFace5 *This,
9064         IDWriteFontResource **resource);
9065 
9066     WINBOOL (STDMETHODCALLTYPE *Equals)(
9067         IDWriteFontFace5 *This,
9068         IDWriteFontFace *fontface);
9069 
9070     END_INTERFACE
9071 } IDWriteFontFace5Vtbl;
9072 
9073 interface IDWriteFontFace5 {
9074     CONST_VTBL IDWriteFontFace5Vtbl* lpVtbl;
9075 };
9076 
9077 #ifdef COBJMACROS
9078 #ifndef WIDL_C_INLINE_WRAPPERS
9079 /*** IUnknown methods ***/
9080 #define IDWriteFontFace5_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
9081 #define IDWriteFontFace5_AddRef(This) (This)->lpVtbl->AddRef(This)
9082 #define IDWriteFontFace5_Release(This) (This)->lpVtbl->Release(This)
9083 /*** IDWriteFontFace methods ***/
9084 #define IDWriteFontFace5_GetType(This) (This)->lpVtbl->GetType(This)
9085 #define IDWriteFontFace5_GetFiles(This,number_of_files,fontfiles) (This)->lpVtbl->GetFiles(This,number_of_files,fontfiles)
9086 #define IDWriteFontFace5_GetIndex(This) (This)->lpVtbl->GetIndex(This)
9087 #define IDWriteFontFace5_GetSimulations(This) (This)->lpVtbl->GetSimulations(This)
9088 #define IDWriteFontFace5_IsSymbolFont(This) (This)->lpVtbl->IsSymbolFont(This)
9089 #define IDWriteFontFace5_GetGlyphCount(This) (This)->lpVtbl->GetGlyphCount(This)
9090 #define IDWriteFontFace5_GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways) (This)->lpVtbl->GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways)
9091 #define IDWriteFontFace5_GetGlyphIndices(This,codepoints,count,glyph_indices) (This)->lpVtbl->GetGlyphIndices(This,codepoints,count,glyph_indices)
9092 #define IDWriteFontFace5_TryGetFontTable(This,table_tag,table_data,table_size,context,exists) (This)->lpVtbl->TryGetFontTable(This,table_tag,table_data,table_size,context,exists)
9093 #define IDWriteFontFace5_ReleaseFontTable(This,table_context) (This)->lpVtbl->ReleaseFontTable(This,table_context)
9094 #define IDWriteFontFace5_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)
9095 #define IDWriteFontFace5_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)
9096 /*** IDWriteFontFace1 methods ***/
9097 #define IDWriteFontFace5_GetMetrics(This,metrics) (This)->lpVtbl->IDWriteFontFace1_GetMetrics(This,metrics)
9098 #define IDWriteFontFace5_GetGdiCompatibleMetrics(This,em_size,pixels_per_dip,transform,metrics) (This)->lpVtbl->IDWriteFontFace1_GetGdiCompatibleMetrics(This,em_size,pixels_per_dip,transform,metrics)
9099 #define IDWriteFontFace5_GetCaretMetrics(This,metrics) (This)->lpVtbl->GetCaretMetrics(This,metrics)
9100 #define IDWriteFontFace5_GetUnicodeRanges(This,max_count,ranges,count) (This)->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count)
9101 #define IDWriteFontFace5_IsMonospacedFont(This) (This)->lpVtbl->IsMonospacedFont(This)
9102 #define IDWriteFontFace5_GetDesignGlyphAdvances(This,glyph_count,indices,advances,is_sideways) (This)->lpVtbl->GetDesignGlyphAdvances(This,glyph_count,indices,advances,is_sideways)
9103 #define IDWriteFontFace5_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)
9104 #define IDWriteFontFace5_GetKerningPairAdjustments(This,glyph_count,indices,adjustments) (This)->lpVtbl->GetKerningPairAdjustments(This,glyph_count,indices,adjustments)
9105 #define IDWriteFontFace5_HasKerningPairs(This) (This)->lpVtbl->HasKerningPairs(This)
9106 #define IDWriteFontFace5_GetVerticalGlyphVariants(This,glyph_count,nominal_indices,vertical_indices) (This)->lpVtbl->GetVerticalGlyphVariants(This,glyph_count,nominal_indices,vertical_indices)
9107 #define IDWriteFontFace5_HasVerticalGlyphVariants(This) (This)->lpVtbl->HasVerticalGlyphVariants(This)
9108 /*** IDWriteFontFace2 methods ***/
9109 #define IDWriteFontFace5_IsColorFont(This) (This)->lpVtbl->IsColorFont(This)
9110 #define IDWriteFontFace5_GetColorPaletteCount(This) (This)->lpVtbl->GetColorPaletteCount(This)
9111 #define IDWriteFontFace5_GetPaletteEntryCount(This) (This)->lpVtbl->GetPaletteEntryCount(This)
9112 #define IDWriteFontFace5_GetPaletteEntries(This,palette_index,first_entry_index,entry_count,entries) (This)->lpVtbl->GetPaletteEntries(This,palette_index,first_entry_index,entry_count,entries)
9113 /*** IDWriteFontFace3 methods ***/
9114 #define IDWriteFontFace5_GetFontFaceReference(This,reference) (This)->lpVtbl->GetFontFaceReference(This,reference)
9115 #define IDWriteFontFace5_GetPanose(This,panose) (This)->lpVtbl->GetPanose(This,panose)
9116 #define IDWriteFontFace5_GetWeight(This) (This)->lpVtbl->GetWeight(This)
9117 #define IDWriteFontFace5_GetStretch(This) (This)->lpVtbl->GetStretch(This)
9118 #define IDWriteFontFace5_GetStyle(This) (This)->lpVtbl->GetStyle(This)
9119 #define IDWriteFontFace5_GetFamilyNames(This,names) (This)->lpVtbl->GetFamilyNames(This,names)
9120 #define IDWriteFontFace5_GetFaceNames(This,names) (This)->lpVtbl->GetFaceNames(This,names)
9121 #define IDWriteFontFace5_GetInformationalStrings(This,stringid,strings,exists) (This)->lpVtbl->GetInformationalStrings(This,stringid,strings,exists)
9122 #define IDWriteFontFace5_HasCharacter(This,character) (This)->lpVtbl->HasCharacter(This,character)
9123 #define IDWriteFontFace5_GetRecommendedRenderingMode(This,emsize,dpi_x,dpi_y,transform,is_sideways,threshold,measuring_mode,params,rendering_mode,gridfit_mode) (This)->lpVtbl->IDWriteFontFace3_GetRecommendedRenderingMode(This,emsize,dpi_x,dpi_y,transform,is_sideways,threshold,measuring_mode,params,rendering_mode,gridfit_mode)
9124 #define IDWriteFontFace5_IsCharacterLocal(This,character) (This)->lpVtbl->IsCharacterLocal(This,character)
9125 #define IDWriteFontFace5_IsGlyphLocal(This,glyph) (This)->lpVtbl->IsGlyphLocal(This,glyph)
9126 #define IDWriteFontFace5_AreCharactersLocal(This,characters,count,enqueue_if_not,are_local) (This)->lpVtbl->AreCharactersLocal(This,characters,count,enqueue_if_not,are_local)
9127 #define IDWriteFontFace5_AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local) (This)->lpVtbl->AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local)
9128 /*** IDWriteFontFace4 methods ***/
9129 #define IDWriteFontFace5_GetGlyphImageFormats_(This,glyph,ppem_first,ppem_last,formats) (This)->lpVtbl->GetGlyphImageFormats_(This,glyph,ppem_first,ppem_last,formats)
9130 #define IDWriteFontFace5_GetGlyphImageFormats(This) (This)->lpVtbl->GetGlyphImageFormats(This)
9131 #define IDWriteFontFace5_GetGlyphImageData(This,glyph,ppem,format,data,context) (This)->lpVtbl->GetGlyphImageData(This,glyph,ppem,format,data,context)
9132 #define IDWriteFontFace5_ReleaseGlyphImageData(This,context) (This)->lpVtbl->ReleaseGlyphImageData(This,context)
9133 /*** IDWriteFontFace5 methods ***/
9134 #define IDWriteFontFace5_GetFontAxisValueCount(This) (This)->lpVtbl->GetFontAxisValueCount(This)
9135 #define IDWriteFontFace5_GetFontAxisValues(This,values,value_count) (This)->lpVtbl->GetFontAxisValues(This,values,value_count)
9136 #define IDWriteFontFace5_HasVariations(This) (This)->lpVtbl->HasVariations(This)
9137 #define IDWriteFontFace5_GetFontResource(This,resource) (This)->lpVtbl->GetFontResource(This,resource)
9138 #define IDWriteFontFace5_Equals(This,fontface) (This)->lpVtbl->Equals(This,fontface)
9139 #else
9140 /*** IUnknown methods ***/
9141 static FORCEINLINE HRESULT IDWriteFontFace5_QueryInterface(IDWriteFontFace5* This,REFIID riid,void **ppvObject) {
9142     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
9143 }
9144 static FORCEINLINE ULONG IDWriteFontFace5_AddRef(IDWriteFontFace5* This) {
9145     return This->lpVtbl->AddRef(This);
9146 }
9147 static FORCEINLINE ULONG IDWriteFontFace5_Release(IDWriteFontFace5* This) {
9148     return This->lpVtbl->Release(This);
9149 }
9150 /*** IDWriteFontFace methods ***/
9151 static FORCEINLINE DWRITE_FONT_FACE_TYPE IDWriteFontFace5_GetType(IDWriteFontFace5* This) {
9152     return This->lpVtbl->GetType(This);
9153 }
9154 static FORCEINLINE HRESULT IDWriteFontFace5_GetFiles(IDWriteFontFace5* This,UINT32 *number_of_files,IDWriteFontFile **fontfiles) {
9155     return This->lpVtbl->GetFiles(This,number_of_files,fontfiles);
9156 }
9157 static FORCEINLINE UINT32 IDWriteFontFace5_GetIndex(IDWriteFontFace5* This) {
9158     return This->lpVtbl->GetIndex(This);
9159 }
9160 static FORCEINLINE DWRITE_FONT_SIMULATIONS IDWriteFontFace5_GetSimulations(IDWriteFontFace5* This) {
9161     return This->lpVtbl->GetSimulations(This);
9162 }
9163 static FORCEINLINE WINBOOL IDWriteFontFace5_IsSymbolFont(IDWriteFontFace5* This) {
9164     return This->lpVtbl->IsSymbolFont(This);
9165 }
9166 static FORCEINLINE UINT16 IDWriteFontFace5_GetGlyphCount(IDWriteFontFace5* This) {
9167     return This->lpVtbl->GetGlyphCount(This);
9168 }
9169 static FORCEINLINE HRESULT IDWriteFontFace5_GetDesignGlyphMetrics(IDWriteFontFace5* This,const UINT16 *glyph_indices,UINT32 glyph_count,DWRITE_GLYPH_METRICS *metrics,WINBOOL is_sideways) {
9170     return This->lpVtbl->GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways);
9171 }
9172 static FORCEINLINE HRESULT IDWriteFontFace5_GetGlyphIndices(IDWriteFontFace5* This,const UINT32 *codepoints,UINT32 count,UINT16 *glyph_indices) {
9173     return This->lpVtbl->GetGlyphIndices(This,codepoints,count,glyph_indices);
9174 }
9175 static FORCEINLINE HRESULT IDWriteFontFace5_TryGetFontTable(IDWriteFontFace5* This,UINT32 table_tag,const void **table_data,UINT32 *table_size,void **context,WINBOOL *exists) {
9176     return This->lpVtbl->TryGetFontTable(This,table_tag,table_data,table_size,context,exists);
9177 }
9178 static FORCEINLINE void IDWriteFontFace5_ReleaseFontTable(IDWriteFontFace5* This,void *table_context) {
9179     This->lpVtbl->ReleaseFontTable(This,table_context);
9180 }
9181 static FORCEINLINE HRESULT IDWriteFontFace5_GetGlyphRunOutline(IDWriteFontFace5* 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) {
9182     return This->lpVtbl->GetGlyphRunOutline(This,emSize,glyph_indices,glyph_advances,glyph_offsets,glyph_count,is_sideways,is_rtl,geometrysink);
9183 }
9184 static FORCEINLINE HRESULT IDWriteFontFace5_GetGdiCompatibleGlyphMetrics(IDWriteFontFace5* 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) {
9185     return This->lpVtbl->GetGdiCompatibleGlyphMetrics(This,emSize,pixels_per_dip,transform,use_gdi_natural,glyph_indices,glyph_count,metrics,is_sideways);
9186 }
9187 /*** IDWriteFontFace1 methods ***/
9188 static FORCEINLINE void IDWriteFontFace5_GetMetrics(IDWriteFontFace5* This,DWRITE_FONT_METRICS1 *metrics) {
9189     This->lpVtbl->IDWriteFontFace1_GetMetrics(This,metrics);
9190 }
9191 static FORCEINLINE HRESULT IDWriteFontFace5_GetGdiCompatibleMetrics(IDWriteFontFace5* This,FLOAT em_size,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,DWRITE_FONT_METRICS1 *metrics) {
9192     return This->lpVtbl->IDWriteFontFace1_GetGdiCompatibleMetrics(This,em_size,pixels_per_dip,transform,metrics);
9193 }
9194 static FORCEINLINE void IDWriteFontFace5_GetCaretMetrics(IDWriteFontFace5* This,DWRITE_CARET_METRICS *metrics) {
9195     This->lpVtbl->GetCaretMetrics(This,metrics);
9196 }
9197 static FORCEINLINE HRESULT IDWriteFontFace5_GetUnicodeRanges(IDWriteFontFace5* This,UINT32 max_count,DWRITE_UNICODE_RANGE *ranges,UINT32 *count) {
9198     return This->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count);
9199 }
9200 static FORCEINLINE WINBOOL IDWriteFontFace5_IsMonospacedFont(IDWriteFontFace5* This) {
9201     return This->lpVtbl->IsMonospacedFont(This);
9202 }
9203 static FORCEINLINE HRESULT IDWriteFontFace5_GetDesignGlyphAdvances(IDWriteFontFace5* This,UINT32 glyph_count,const UINT16 *indices,INT32 *advances,WINBOOL is_sideways) {
9204     return This->lpVtbl->GetDesignGlyphAdvances(This,glyph_count,indices,advances,is_sideways);
9205 }
9206 static FORCEINLINE HRESULT IDWriteFontFace5_GetGdiCompatibleGlyphAdvances(IDWriteFontFace5* 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) {
9207     return This->lpVtbl->GetGdiCompatibleGlyphAdvances(This,em_size,pixels_per_dip,transform,use_gdi_natural,is_sideways,glyph_count,indices,advances);
9208 }
9209 static FORCEINLINE HRESULT IDWriteFontFace5_GetKerningPairAdjustments(IDWriteFontFace5* This,UINT32 glyph_count,const UINT16 *indices,INT32 *adjustments) {
9210     return This->lpVtbl->GetKerningPairAdjustments(This,glyph_count,indices,adjustments);
9211 }
9212 static FORCEINLINE WINBOOL IDWriteFontFace5_HasKerningPairs(IDWriteFontFace5* This) {
9213     return This->lpVtbl->HasKerningPairs(This);
9214 }
9215 static FORCEINLINE HRESULT IDWriteFontFace5_GetVerticalGlyphVariants(IDWriteFontFace5* This,UINT32 glyph_count,const UINT16 *nominal_indices,UINT16 *vertical_indices) {
9216     return This->lpVtbl->GetVerticalGlyphVariants(This,glyph_count,nominal_indices,vertical_indices);
9217 }
9218 static FORCEINLINE WINBOOL IDWriteFontFace5_HasVerticalGlyphVariants(IDWriteFontFace5* This) {
9219     return This->lpVtbl->HasVerticalGlyphVariants(This);
9220 }
9221 /*** IDWriteFontFace2 methods ***/
9222 static FORCEINLINE WINBOOL IDWriteFontFace5_IsColorFont(IDWriteFontFace5* This) {
9223     return This->lpVtbl->IsColorFont(This);
9224 }
9225 static FORCEINLINE UINT32 IDWriteFontFace5_GetColorPaletteCount(IDWriteFontFace5* This) {
9226     return This->lpVtbl->GetColorPaletteCount(This);
9227 }
9228 static FORCEINLINE UINT32 IDWriteFontFace5_GetPaletteEntryCount(IDWriteFontFace5* This) {
9229     return This->lpVtbl->GetPaletteEntryCount(This);
9230 }
9231 static FORCEINLINE HRESULT IDWriteFontFace5_GetPaletteEntries(IDWriteFontFace5* This,UINT32 palette_index,UINT32 first_entry_index,UINT32 entry_count,DWRITE_COLOR_F *entries) {
9232     return This->lpVtbl->GetPaletteEntries(This,palette_index,first_entry_index,entry_count,entries);
9233 }
9234 /*** IDWriteFontFace3 methods ***/
9235 static FORCEINLINE HRESULT IDWriteFontFace5_GetFontFaceReference(IDWriteFontFace5* This,IDWriteFontFaceReference **reference) {
9236     return This->lpVtbl->GetFontFaceReference(This,reference);
9237 }
9238 static FORCEINLINE void IDWriteFontFace5_GetPanose(IDWriteFontFace5* This,DWRITE_PANOSE *panose) {
9239     This->lpVtbl->GetPanose(This,panose);
9240 }
9241 static FORCEINLINE DWRITE_FONT_WEIGHT IDWriteFontFace5_GetWeight(IDWriteFontFace5* This) {
9242     return This->lpVtbl->GetWeight(This);
9243 }
9244 static FORCEINLINE DWRITE_FONT_STRETCH IDWriteFontFace5_GetStretch(IDWriteFontFace5* This) {
9245     return This->lpVtbl->GetStretch(This);
9246 }
9247 static FORCEINLINE DWRITE_FONT_STYLE IDWriteFontFace5_GetStyle(IDWriteFontFace5* This) {
9248     return This->lpVtbl->GetStyle(This);
9249 }
9250 static FORCEINLINE HRESULT IDWriteFontFace5_GetFamilyNames(IDWriteFontFace5* This,IDWriteLocalizedStrings **names) {
9251     return This->lpVtbl->GetFamilyNames(This,names);
9252 }
9253 static FORCEINLINE HRESULT IDWriteFontFace5_GetFaceNames(IDWriteFontFace5* This,IDWriteLocalizedStrings **names) {
9254     return This->lpVtbl->GetFaceNames(This,names);
9255 }
9256 static FORCEINLINE HRESULT IDWriteFontFace5_GetInformationalStrings(IDWriteFontFace5* This,DWRITE_INFORMATIONAL_STRING_ID stringid,IDWriteLocalizedStrings **strings,WINBOOL *exists) {
9257     return This->lpVtbl->GetInformationalStrings(This,stringid,strings,exists);
9258 }
9259 static FORCEINLINE WINBOOL IDWriteFontFace5_HasCharacter(IDWriteFontFace5* This,UINT32 character) {
9260     return This->lpVtbl->HasCharacter(This,character);
9261 }
9262 static FORCEINLINE HRESULT IDWriteFontFace5_GetRecommendedRenderingMode(IDWriteFontFace5* This,FLOAT emsize,FLOAT dpi_x,FLOAT dpi_y,const DWRITE_MATRIX *transform,WINBOOL is_sideways,DWRITE_OUTLINE_THRESHOLD threshold,DWRITE_MEASURING_MODE measuring_mode,IDWriteRenderingParams *params,DWRITE_RENDERING_MODE1 *rendering_mode,DWRITE_GRID_FIT_MODE *gridfit_mode) {
9263     return This->lpVtbl->IDWriteFontFace3_GetRecommendedRenderingMode(This,emsize,dpi_x,dpi_y,transform,is_sideways,threshold,measuring_mode,params,rendering_mode,gridfit_mode);
9264 }
9265 static FORCEINLINE WINBOOL IDWriteFontFace5_IsCharacterLocal(IDWriteFontFace5* This,UINT32 character) {
9266     return This->lpVtbl->IsCharacterLocal(This,character);
9267 }
9268 static FORCEINLINE WINBOOL IDWriteFontFace5_IsGlyphLocal(IDWriteFontFace5* This,UINT16 glyph) {
9269     return This->lpVtbl->IsGlyphLocal(This,glyph);
9270 }
9271 static FORCEINLINE HRESULT IDWriteFontFace5_AreCharactersLocal(IDWriteFontFace5* This,const WCHAR *characters,UINT32 count,WINBOOL enqueue_if_not,WINBOOL *are_local) {
9272     return This->lpVtbl->AreCharactersLocal(This,characters,count,enqueue_if_not,are_local);
9273 }
9274 static FORCEINLINE HRESULT IDWriteFontFace5_AreGlyphsLocal(IDWriteFontFace5* This,const UINT16 *glyphs,UINT32 count,WINBOOL enqueue_if_not,WINBOOL *are_local) {
9275     return This->lpVtbl->AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local);
9276 }
9277 /*** IDWriteFontFace4 methods ***/
9278 static FORCEINLINE HRESULT IDWriteFontFace5_GetGlyphImageFormats_(IDWriteFontFace5* This,UINT16 glyph,UINT32 ppem_first,UINT32 ppem_last,DWRITE_GLYPH_IMAGE_FORMATS *formats) {
9279     return This->lpVtbl->GetGlyphImageFormats_(This,glyph,ppem_first,ppem_last,formats);
9280 }
9281 static FORCEINLINE DWRITE_GLYPH_IMAGE_FORMATS IDWriteFontFace5_GetGlyphImageFormats(IDWriteFontFace5* This) {
9282     return This->lpVtbl->GetGlyphImageFormats(This);
9283 }
9284 static FORCEINLINE HRESULT IDWriteFontFace5_GetGlyphImageData(IDWriteFontFace5* This,UINT16 glyph,UINT32 ppem,DWRITE_GLYPH_IMAGE_FORMATS format,DWRITE_GLYPH_IMAGE_DATA *data,void **context) {
9285     return This->lpVtbl->GetGlyphImageData(This,glyph,ppem,format,data,context);
9286 }
9287 static FORCEINLINE void IDWriteFontFace5_ReleaseGlyphImageData(IDWriteFontFace5* This,void *context) {
9288     This->lpVtbl->ReleaseGlyphImageData(This,context);
9289 }
9290 /*** IDWriteFontFace5 methods ***/
9291 static FORCEINLINE UINT32 IDWriteFontFace5_GetFontAxisValueCount(IDWriteFontFace5* This) {
9292     return This->lpVtbl->GetFontAxisValueCount(This);
9293 }
9294 static FORCEINLINE HRESULT IDWriteFontFace5_GetFontAxisValues(IDWriteFontFace5* This,DWRITE_FONT_AXIS_VALUE *values,UINT32 value_count) {
9295     return This->lpVtbl->GetFontAxisValues(This,values,value_count);
9296 }
9297 static FORCEINLINE WINBOOL IDWriteFontFace5_HasVariations(IDWriteFontFace5* This) {
9298     return This->lpVtbl->HasVariations(This);
9299 }
9300 static FORCEINLINE HRESULT IDWriteFontFace5_GetFontResource(IDWriteFontFace5* This,IDWriteFontResource **resource) {
9301     return This->lpVtbl->GetFontResource(This,resource);
9302 }
9303 static FORCEINLINE WINBOOL IDWriteFontFace5_Equals(IDWriteFontFace5* This,IDWriteFontFace *fontface) {
9304     return This->lpVtbl->Equals(This,fontface);
9305 }
9306 #endif
9307 #endif
9308 
9309 #endif
9310 
9311 
9312 #endif  /* __IDWriteFontFace5_INTERFACE_DEFINED__ */
9313 
9314 typedef struct DWRITE_COLOR_GLYPH_RUN1 {
9315     DWRITE_GLYPH_RUN glyphRun;
9316     DWRITE_GLYPH_RUN_DESCRIPTION *glyphRunDescription;
9317     FLOAT baselineOriginX;
9318     FLOAT baselineOriginY;
9319     DWRITE_COLOR_F runColor;
9320     UINT16 paletteIndex;
9321     DWRITE_GLYPH_IMAGE_FORMATS glyphImageFormat;
9322     DWRITE_MEASURING_MODE measuringMode;
9323 } DWRITE_COLOR_GLYPH_RUN1;
9324 /*****************************************************************************
9325  * IDWriteColorGlyphRunEnumerator1 interface
9326  */
9327 #ifndef __IDWriteColorGlyphRunEnumerator1_INTERFACE_DEFINED__
9328 #define __IDWriteColorGlyphRunEnumerator1_INTERFACE_DEFINED__
9329 
9330 DEFINE_GUID(IID_IDWriteColorGlyphRunEnumerator1, 0x7c5f86da, 0xc7a1, 0x4f05, 0xb8,0xe1, 0x55,0xa1,0x79,0xfe,0x5a,0x35);
9331 #if defined(__cplusplus) && !defined(CINTERFACE)
9332 MIDL_INTERFACE("7c5f86da-c7a1-4f05-b8e1-55a179fe5a35")
9333 IDWriteColorGlyphRunEnumerator1 : public IDWriteColorGlyphRunEnumerator
9334 {
9335     virtual HRESULT STDMETHODCALLTYPE GetCurrentRun(
9336         const DWRITE_COLOR_GLYPH_RUN1 **run) = 0;
9337 
9338 };
9339 #ifdef __CRT_UUID_DECL
9340 __CRT_UUID_DECL(IDWriteColorGlyphRunEnumerator1, 0x7c5f86da, 0xc7a1, 0x4f05, 0xb8,0xe1, 0x55,0xa1,0x79,0xfe,0x5a,0x35)
9341 #endif
9342 #else
9343 typedef struct IDWriteColorGlyphRunEnumerator1Vtbl {
9344     BEGIN_INTERFACE
9345 
9346     /*** IUnknown methods ***/
9347     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
9348         IDWriteColorGlyphRunEnumerator1 *This,
9349         REFIID riid,
9350         void **ppvObject);
9351 
9352     ULONG (STDMETHODCALLTYPE *AddRef)(
9353         IDWriteColorGlyphRunEnumerator1 *This);
9354 
9355     ULONG (STDMETHODCALLTYPE *Release)(
9356         IDWriteColorGlyphRunEnumerator1 *This);
9357 
9358     /*** IDWriteColorGlyphRunEnumerator methods ***/
9359     HRESULT (STDMETHODCALLTYPE *MoveNext)(
9360         IDWriteColorGlyphRunEnumerator1 *This,
9361         WINBOOL *hasRun);
9362 
9363     HRESULT (STDMETHODCALLTYPE *GetCurrentRun)(
9364         IDWriteColorGlyphRunEnumerator1 *This,
9365         const DWRITE_COLOR_GLYPH_RUN **run);
9366 
9367     /*** IDWriteColorGlyphRunEnumerator1 methods ***/
9368     HRESULT (STDMETHODCALLTYPE *IDWriteColorGlyphRunEnumerator1_GetCurrentRun)(
9369         IDWriteColorGlyphRunEnumerator1 *This,
9370         const DWRITE_COLOR_GLYPH_RUN1 **run);
9371 
9372     END_INTERFACE
9373 } IDWriteColorGlyphRunEnumerator1Vtbl;
9374 
9375 interface IDWriteColorGlyphRunEnumerator1 {
9376     CONST_VTBL IDWriteColorGlyphRunEnumerator1Vtbl* lpVtbl;
9377 };
9378 
9379 #ifdef COBJMACROS
9380 #ifndef WIDL_C_INLINE_WRAPPERS
9381 /*** IUnknown methods ***/
9382 #define IDWriteColorGlyphRunEnumerator1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
9383 #define IDWriteColorGlyphRunEnumerator1_AddRef(This) (This)->lpVtbl->AddRef(This)
9384 #define IDWriteColorGlyphRunEnumerator1_Release(This) (This)->lpVtbl->Release(This)
9385 /*** IDWriteColorGlyphRunEnumerator methods ***/
9386 #define IDWriteColorGlyphRunEnumerator1_MoveNext(This,hasRun) (This)->lpVtbl->MoveNext(This,hasRun)
9387 /*** IDWriteColorGlyphRunEnumerator1 methods ***/
9388 #define IDWriteColorGlyphRunEnumerator1_GetCurrentRun(This,run) (This)->lpVtbl->IDWriteColorGlyphRunEnumerator1_GetCurrentRun(This,run)
9389 #else
9390 /*** IUnknown methods ***/
9391 static FORCEINLINE HRESULT IDWriteColorGlyphRunEnumerator1_QueryInterface(IDWriteColorGlyphRunEnumerator1* This,REFIID riid,void **ppvObject) {
9392     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
9393 }
9394 static FORCEINLINE ULONG IDWriteColorGlyphRunEnumerator1_AddRef(IDWriteColorGlyphRunEnumerator1* This) {
9395     return This->lpVtbl->AddRef(This);
9396 }
9397 static FORCEINLINE ULONG IDWriteColorGlyphRunEnumerator1_Release(IDWriteColorGlyphRunEnumerator1* This) {
9398     return This->lpVtbl->Release(This);
9399 }
9400 /*** IDWriteColorGlyphRunEnumerator methods ***/
9401 static FORCEINLINE HRESULT IDWriteColorGlyphRunEnumerator1_MoveNext(IDWriteColorGlyphRunEnumerator1* This,WINBOOL *hasRun) {
9402     return This->lpVtbl->MoveNext(This,hasRun);
9403 }
9404 /*** IDWriteColorGlyphRunEnumerator1 methods ***/
9405 static FORCEINLINE HRESULT IDWriteColorGlyphRunEnumerator1_GetCurrentRun(IDWriteColorGlyphRunEnumerator1* This,const DWRITE_COLOR_GLYPH_RUN1 **run) {
9406     return This->lpVtbl->IDWriteColorGlyphRunEnumerator1_GetCurrentRun(This,run);
9407 }
9408 #endif
9409 #endif
9410 
9411 #endif
9412 
9413 
9414 #endif  /* __IDWriteColorGlyphRunEnumerator1_INTERFACE_DEFINED__ */
9415 
9416 /*****************************************************************************
9417  * IDWriteFactory4 interface
9418  */
9419 #ifndef __IDWriteFactory4_INTERFACE_DEFINED__
9420 #define __IDWriteFactory4_INTERFACE_DEFINED__
9421 
9422 DEFINE_GUID(IID_IDWriteFactory4, 0x4b0b5bd3, 0x0797, 0x4549, 0x8a,0xc5, 0xfe,0x91,0x5c,0xc5,0x38,0x56);
9423 #if defined(__cplusplus) && !defined(CINTERFACE)
9424 MIDL_INTERFACE("4b0b5bd3-0797-4549-8ac5-fe915cc53856")
9425 IDWriteFactory4 : public IDWriteFactory3
9426 {
9427     virtual HRESULT STDMETHODCALLTYPE TranslateColorGlyphRun(
9428         D2D1_POINT_2F baseline_origin,
9429         const DWRITE_GLYPH_RUN *run,
9430         const DWRITE_GLYPH_RUN_DESCRIPTION *run_desc,
9431         DWRITE_GLYPH_IMAGE_FORMATS desired_formats,
9432         DWRITE_MEASURING_MODE measuring_mode,
9433         const DWRITE_MATRIX *transform,
9434         UINT32 palette,
9435         IDWriteColorGlyphRunEnumerator1 **layers) = 0;
9436 
9437     virtual HRESULT STDMETHODCALLTYPE ComputeGlyphOrigins_(
9438         const DWRITE_GLYPH_RUN *run,
9439         D2D1_POINT_2F baseline_origin,
9440         D2D1_POINT_2F *origins) = 0;
9441 
9442     virtual HRESULT STDMETHODCALLTYPE ComputeGlyphOrigins(
9443         const DWRITE_GLYPH_RUN *run,
9444         DWRITE_MEASURING_MODE measuring_mode,
9445         D2D1_POINT_2F baseline_origin,
9446         const DWRITE_MATRIX *transform,
9447         D2D1_POINT_2F *origins) = 0;
9448 
9449 };
9450 #ifdef __CRT_UUID_DECL
9451 __CRT_UUID_DECL(IDWriteFactory4, 0x4b0b5bd3, 0x0797, 0x4549, 0x8a,0xc5, 0xfe,0x91,0x5c,0xc5,0x38,0x56)
9452 #endif
9453 #else
9454 typedef struct IDWriteFactory4Vtbl {
9455     BEGIN_INTERFACE
9456 
9457     /*** IUnknown methods ***/
9458     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
9459         IDWriteFactory4 *This,
9460         REFIID riid,
9461         void **ppvObject);
9462 
9463     ULONG (STDMETHODCALLTYPE *AddRef)(
9464         IDWriteFactory4 *This);
9465 
9466     ULONG (STDMETHODCALLTYPE *Release)(
9467         IDWriteFactory4 *This);
9468 
9469     /*** IDWriteFactory methods ***/
9470     HRESULT (STDMETHODCALLTYPE *GetSystemFontCollection)(
9471         IDWriteFactory4 *This,
9472         IDWriteFontCollection **collection,
9473         WINBOOL check_for_updates);
9474 
9475     HRESULT (STDMETHODCALLTYPE *CreateCustomFontCollection)(
9476         IDWriteFactory4 *This,
9477         IDWriteFontCollectionLoader *loader,
9478         const void *key,
9479         UINT32 key_size,
9480         IDWriteFontCollection **collection);
9481 
9482     HRESULT (STDMETHODCALLTYPE *RegisterFontCollectionLoader)(
9483         IDWriteFactory4 *This,
9484         IDWriteFontCollectionLoader *loader);
9485 
9486     HRESULT (STDMETHODCALLTYPE *UnregisterFontCollectionLoader)(
9487         IDWriteFactory4 *This,
9488         IDWriteFontCollectionLoader *loader);
9489 
9490     HRESULT (STDMETHODCALLTYPE *CreateFontFileReference)(
9491         IDWriteFactory4 *This,
9492         const WCHAR *path,
9493         const FILETIME *writetime,
9494         IDWriteFontFile **font_file);
9495 
9496     HRESULT (STDMETHODCALLTYPE *CreateCustomFontFileReference)(
9497         IDWriteFactory4 *This,
9498         const void *reference_key,
9499         UINT32 key_size,
9500         IDWriteFontFileLoader *loader,
9501         IDWriteFontFile **font_file);
9502 
9503     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
9504         IDWriteFactory4 *This,
9505         DWRITE_FONT_FACE_TYPE facetype,
9506         UINT32 files_number,
9507         IDWriteFontFile *const *font_files,
9508         UINT32 index,
9509         DWRITE_FONT_SIMULATIONS sim_flags,
9510         IDWriteFontFace **font_face);
9511 
9512     HRESULT (STDMETHODCALLTYPE *CreateRenderingParams)(
9513         IDWriteFactory4 *This,
9514         IDWriteRenderingParams **params);
9515 
9516     HRESULT (STDMETHODCALLTYPE *CreateMonitorRenderingParams)(
9517         IDWriteFactory4 *This,
9518         HMONITOR monitor,
9519         IDWriteRenderingParams **params);
9520 
9521     HRESULT (STDMETHODCALLTYPE *CreateCustomRenderingParams)(
9522         IDWriteFactory4 *This,
9523         FLOAT gamma,
9524         FLOAT enhancedContrast,
9525         FLOAT cleartype_level,
9526         DWRITE_PIXEL_GEOMETRY geometry,
9527         DWRITE_RENDERING_MODE mode,
9528         IDWriteRenderingParams **params);
9529 
9530     HRESULT (STDMETHODCALLTYPE *RegisterFontFileLoader)(
9531         IDWriteFactory4 *This,
9532         IDWriteFontFileLoader *loader);
9533 
9534     HRESULT (STDMETHODCALLTYPE *UnregisterFontFileLoader)(
9535         IDWriteFactory4 *This,
9536         IDWriteFontFileLoader *loader);
9537 
9538     HRESULT (STDMETHODCALLTYPE *CreateTextFormat)(
9539         IDWriteFactory4 *This,
9540         const WCHAR *family_name,
9541         IDWriteFontCollection *collection,
9542         DWRITE_FONT_WEIGHT weight,
9543         DWRITE_FONT_STYLE style,
9544         DWRITE_FONT_STRETCH stretch,
9545         FLOAT size,
9546         const WCHAR *locale,
9547         IDWriteTextFormat **format);
9548 
9549     HRESULT (STDMETHODCALLTYPE *CreateTypography)(
9550         IDWriteFactory4 *This,
9551         IDWriteTypography **typography);
9552 
9553     HRESULT (STDMETHODCALLTYPE *GetGdiInterop)(
9554         IDWriteFactory4 *This,
9555         IDWriteGdiInterop **gdi_interop);
9556 
9557     HRESULT (STDMETHODCALLTYPE *CreateTextLayout)(
9558         IDWriteFactory4 *This,
9559         const WCHAR *string,
9560         UINT32 len,
9561         IDWriteTextFormat *format,
9562         FLOAT max_width,
9563         FLOAT max_height,
9564         IDWriteTextLayout **layout);
9565 
9566     HRESULT (STDMETHODCALLTYPE *CreateGdiCompatibleTextLayout)(
9567         IDWriteFactory4 *This,
9568         const WCHAR *string,
9569         UINT32 len,
9570         IDWriteTextFormat *format,
9571         FLOAT layout_width,
9572         FLOAT layout_height,
9573         FLOAT pixels_per_dip,
9574         const DWRITE_MATRIX *transform,
9575         WINBOOL use_gdi_natural,
9576         IDWriteTextLayout **layout);
9577 
9578     HRESULT (STDMETHODCALLTYPE *CreateEllipsisTrimmingSign)(
9579         IDWriteFactory4 *This,
9580         IDWriteTextFormat *format,
9581         IDWriteInlineObject **trimming_sign);
9582 
9583     HRESULT (STDMETHODCALLTYPE *CreateTextAnalyzer)(
9584         IDWriteFactory4 *This,
9585         IDWriteTextAnalyzer **analyzer);
9586 
9587     HRESULT (STDMETHODCALLTYPE *CreateNumberSubstitution)(
9588         IDWriteFactory4 *This,
9589         DWRITE_NUMBER_SUBSTITUTION_METHOD method,
9590         const WCHAR *locale,
9591         WINBOOL ignore_user_override,
9592         IDWriteNumberSubstitution **substitution);
9593 
9594     HRESULT (STDMETHODCALLTYPE *CreateGlyphRunAnalysis)(
9595         IDWriteFactory4 *This,
9596         const DWRITE_GLYPH_RUN *glyph_run,
9597         FLOAT pixels_per_dip,
9598         const DWRITE_MATRIX *transform,
9599         DWRITE_RENDERING_MODE rendering_mode,
9600         DWRITE_MEASURING_MODE measuring_mode,
9601         FLOAT baseline_x,
9602         FLOAT baseline_y,
9603         IDWriteGlyphRunAnalysis **analysis);
9604 
9605     /*** IDWriteFactory1 methods ***/
9606     HRESULT (STDMETHODCALLTYPE *GetEudcFontCollection)(
9607         IDWriteFactory4 *This,
9608         IDWriteFontCollection **collection,
9609         WINBOOL check_for_updates);
9610 
9611     HRESULT (STDMETHODCALLTYPE *IDWriteFactory1_CreateCustomRenderingParams)(
9612         IDWriteFactory4 *This,
9613         FLOAT gamma,
9614         FLOAT enhcontrast,
9615         FLOAT enhcontrast_grayscale,
9616         FLOAT cleartype_level,
9617         DWRITE_PIXEL_GEOMETRY geometry,
9618         DWRITE_RENDERING_MODE mode,
9619         IDWriteRenderingParams1 **params);
9620 
9621     /*** IDWriteFactory2 methods ***/
9622     HRESULT (STDMETHODCALLTYPE *GetSystemFontFallback)(
9623         IDWriteFactory4 *This,
9624         IDWriteFontFallback **fallback);
9625 
9626     HRESULT (STDMETHODCALLTYPE *CreateFontFallbackBuilder)(
9627         IDWriteFactory4 *This,
9628         IDWriteFontFallbackBuilder **fallbackbuilder);
9629 
9630     HRESULT (STDMETHODCALLTYPE *TranslateColorGlyphRun)(
9631         IDWriteFactory4 *This,
9632         FLOAT originX,
9633         FLOAT originY,
9634         const DWRITE_GLYPH_RUN *run,
9635         const DWRITE_GLYPH_RUN_DESCRIPTION *rundescr,
9636         DWRITE_MEASURING_MODE mode,
9637         const DWRITE_MATRIX *transform,
9638         UINT32 palette_index,
9639         IDWriteColorGlyphRunEnumerator **colorlayers);
9640 
9641     HRESULT (STDMETHODCALLTYPE *IDWriteFactory2_CreateCustomRenderingParams)(
9642         IDWriteFactory4 *This,
9643         FLOAT gamma,
9644         FLOAT contrast,
9645         FLOAT grayscalecontrast,
9646         FLOAT cleartypeLevel,
9647         DWRITE_PIXEL_GEOMETRY pixelGeometry,
9648         DWRITE_RENDERING_MODE renderingMode,
9649         DWRITE_GRID_FIT_MODE gridFitMode,
9650         IDWriteRenderingParams2 **params);
9651 
9652     HRESULT (STDMETHODCALLTYPE *IDWriteFactory2_CreateGlyphRunAnalysis)(
9653         IDWriteFactory4 *This,
9654         const DWRITE_GLYPH_RUN *run,
9655         const DWRITE_MATRIX *transform,
9656         DWRITE_RENDERING_MODE renderingMode,
9657         DWRITE_MEASURING_MODE measuringMode,
9658         DWRITE_GRID_FIT_MODE gridFitMode,
9659         DWRITE_TEXT_ANTIALIAS_MODE antialiasMode,
9660         FLOAT originX,
9661         FLOAT originY,
9662         IDWriteGlyphRunAnalysis **analysis);
9663 
9664     /*** IDWriteFactory3 methods ***/
9665     HRESULT (STDMETHODCALLTYPE *IDWriteFactory3_CreateGlyphRunAnalysis)(
9666         IDWriteFactory4 *This,
9667         const DWRITE_GLYPH_RUN *run,
9668         const DWRITE_MATRIX *transform,
9669         DWRITE_RENDERING_MODE1 rendering_mode,
9670         DWRITE_MEASURING_MODE measuring_mode,
9671         DWRITE_GRID_FIT_MODE gridfit_mode,
9672         DWRITE_TEXT_ANTIALIAS_MODE antialias_mode,
9673         FLOAT origin_x,
9674         FLOAT origin_y,
9675         IDWriteGlyphRunAnalysis **analysis);
9676 
9677     HRESULT (STDMETHODCALLTYPE *IDWriteFactory3_CreateCustomRenderingParams)(
9678         IDWriteFactory4 *This,
9679         FLOAT gamma,
9680         FLOAT enhanced_contrast,
9681         FLOAT grayscale_enhanced_contrast,
9682         FLOAT cleartype_level,
9683         DWRITE_PIXEL_GEOMETRY pixel_geometry,
9684         DWRITE_RENDERING_MODE1 rendering_mode,
9685         DWRITE_GRID_FIT_MODE gridfit_mode,
9686         IDWriteRenderingParams3 **params);
9687 
9688     HRESULT (STDMETHODCALLTYPE *CreateFontFaceReference_)(
9689         IDWriteFactory4 *This,
9690         IDWriteFontFile *file,
9691         UINT32 index,
9692         DWRITE_FONT_SIMULATIONS simulations,
9693         IDWriteFontFaceReference **reference);
9694 
9695     HRESULT (STDMETHODCALLTYPE *CreateFontFaceReference)(
9696         IDWriteFactory4 *This,
9697         const WCHAR *path,
9698         const FILETIME *writetime,
9699         UINT32 index,
9700         DWRITE_FONT_SIMULATIONS simulations,
9701         IDWriteFontFaceReference **reference);
9702 
9703     HRESULT (STDMETHODCALLTYPE *GetSystemFontSet)(
9704         IDWriteFactory4 *This,
9705         IDWriteFontSet **fontset);
9706 
9707     HRESULT (STDMETHODCALLTYPE *CreateFontSetBuilder)(
9708         IDWriteFactory4 *This,
9709         IDWriteFontSetBuilder **builder);
9710 
9711     HRESULT (STDMETHODCALLTYPE *CreateFontCollectionFromFontSet)(
9712         IDWriteFactory4 *This,
9713         IDWriteFontSet *fontset,
9714         IDWriteFontCollection1 **collection);
9715 
9716     HRESULT (STDMETHODCALLTYPE *IDWriteFactory3_GetSystemFontCollection)(
9717         IDWriteFactory4 *This,
9718         WINBOOL include_downloadable,
9719         IDWriteFontCollection1 **collection,
9720         WINBOOL check_for_updates);
9721 
9722     HRESULT (STDMETHODCALLTYPE *GetFontDownloadQueue)(
9723         IDWriteFactory4 *This,
9724         IDWriteFontDownloadQueue **queue);
9725 
9726     /*** IDWriteFactory4 methods ***/
9727     HRESULT (STDMETHODCALLTYPE *IDWriteFactory4_TranslateColorGlyphRun)(
9728         IDWriteFactory4 *This,
9729         D2D1_POINT_2F baseline_origin,
9730         const DWRITE_GLYPH_RUN *run,
9731         const DWRITE_GLYPH_RUN_DESCRIPTION *run_desc,
9732         DWRITE_GLYPH_IMAGE_FORMATS desired_formats,
9733         DWRITE_MEASURING_MODE measuring_mode,
9734         const DWRITE_MATRIX *transform,
9735         UINT32 palette,
9736         IDWriteColorGlyphRunEnumerator1 **layers);
9737 
9738     HRESULT (STDMETHODCALLTYPE *ComputeGlyphOrigins_)(
9739         IDWriteFactory4 *This,
9740         const DWRITE_GLYPH_RUN *run,
9741         D2D1_POINT_2F baseline_origin,
9742         D2D1_POINT_2F *origins);
9743 
9744     HRESULT (STDMETHODCALLTYPE *ComputeGlyphOrigins)(
9745         IDWriteFactory4 *This,
9746         const DWRITE_GLYPH_RUN *run,
9747         DWRITE_MEASURING_MODE measuring_mode,
9748         D2D1_POINT_2F baseline_origin,
9749         const DWRITE_MATRIX *transform,
9750         D2D1_POINT_2F *origins);
9751 
9752     END_INTERFACE
9753 } IDWriteFactory4Vtbl;
9754 
9755 interface IDWriteFactory4 {
9756     CONST_VTBL IDWriteFactory4Vtbl* lpVtbl;
9757 };
9758 
9759 #ifdef COBJMACROS
9760 #ifndef WIDL_C_INLINE_WRAPPERS
9761 /*** IUnknown methods ***/
9762 #define IDWriteFactory4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
9763 #define IDWriteFactory4_AddRef(This) (This)->lpVtbl->AddRef(This)
9764 #define IDWriteFactory4_Release(This) (This)->lpVtbl->Release(This)
9765 /*** IDWriteFactory methods ***/
9766 #define IDWriteFactory4_CreateCustomFontCollection(This,loader,key,key_size,collection) (This)->lpVtbl->CreateCustomFontCollection(This,loader,key,key_size,collection)
9767 #define IDWriteFactory4_RegisterFontCollectionLoader(This,loader) (This)->lpVtbl->RegisterFontCollectionLoader(This,loader)
9768 #define IDWriteFactory4_UnregisterFontCollectionLoader(This,loader) (This)->lpVtbl->UnregisterFontCollectionLoader(This,loader)
9769 #define IDWriteFactory4_CreateFontFileReference(This,path,writetime,font_file) (This)->lpVtbl->CreateFontFileReference(This,path,writetime,font_file)
9770 #define IDWriteFactory4_CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file) (This)->lpVtbl->CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file)
9771 #define IDWriteFactory4_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)
9772 #define IDWriteFactory4_CreateRenderingParams(This,params) (This)->lpVtbl->CreateRenderingParams(This,params)
9773 #define IDWriteFactory4_CreateMonitorRenderingParams(This,monitor,params) (This)->lpVtbl->CreateMonitorRenderingParams(This,monitor,params)
9774 #define IDWriteFactory4_RegisterFontFileLoader(This,loader) (This)->lpVtbl->RegisterFontFileLoader(This,loader)
9775 #define IDWriteFactory4_UnregisterFontFileLoader(This,loader) (This)->lpVtbl->UnregisterFontFileLoader(This,loader)
9776 #define IDWriteFactory4_CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format) (This)->lpVtbl->CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format)
9777 #define IDWriteFactory4_CreateTypography(This,typography) (This)->lpVtbl->CreateTypography(This,typography)
9778 #define IDWriteFactory4_GetGdiInterop(This,gdi_interop) (This)->lpVtbl->GetGdiInterop(This,gdi_interop)
9779 #define IDWriteFactory4_CreateTextLayout(This,string,len,format,max_width,max_height,layout) (This)->lpVtbl->CreateTextLayout(This,string,len,format,max_width,max_height,layout)
9780 #define IDWriteFactory4_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)
9781 #define IDWriteFactory4_CreateEllipsisTrimmingSign(This,format,trimming_sign) (This)->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign)
9782 #define IDWriteFactory4_CreateTextAnalyzer(This,analyzer) (This)->lpVtbl->CreateTextAnalyzer(This,analyzer)
9783 #define IDWriteFactory4_CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution) (This)->lpVtbl->CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution)
9784 /*** IDWriteFactory1 methods ***/
9785 #define IDWriteFactory4_GetEudcFontCollection(This,collection,check_for_updates) (This)->lpVtbl->GetEudcFontCollection(This,collection,check_for_updates)
9786 /*** IDWriteFactory2 methods ***/
9787 #define IDWriteFactory4_GetSystemFontFallback(This,fallback) (This)->lpVtbl->GetSystemFontFallback(This,fallback)
9788 #define IDWriteFactory4_CreateFontFallbackBuilder(This,fallbackbuilder) (This)->lpVtbl->CreateFontFallbackBuilder(This,fallbackbuilder)
9789 /*** IDWriteFactory3 methods ***/
9790 #define IDWriteFactory4_CreateGlyphRunAnalysis(This,run,transform,rendering_mode,measuring_mode,gridfit_mode,antialias_mode,origin_x,origin_y,analysis) (This)->lpVtbl->IDWriteFactory3_CreateGlyphRunAnalysis(This,run,transform,rendering_mode,measuring_mode,gridfit_mode,antialias_mode,origin_x,origin_y,analysis)
9791 #define IDWriteFactory4_CreateCustomRenderingParams(This,gamma,enhanced_contrast,grayscale_enhanced_contrast,cleartype_level,pixel_geometry,rendering_mode,gridfit_mode,params) (This)->lpVtbl->IDWriteFactory3_CreateCustomRenderingParams(This,gamma,enhanced_contrast,grayscale_enhanced_contrast,cleartype_level,pixel_geometry,rendering_mode,gridfit_mode,params)
9792 #define IDWriteFactory4_CreateFontFaceReference_(This,file,index,simulations,reference) (This)->lpVtbl->CreateFontFaceReference_(This,file,index,simulations,reference)
9793 #define IDWriteFactory4_CreateFontFaceReference(This,path,writetime,index,simulations,reference) (This)->lpVtbl->CreateFontFaceReference(This,path,writetime,index,simulations,reference)
9794 #define IDWriteFactory4_GetSystemFontSet(This,fontset) (This)->lpVtbl->GetSystemFontSet(This,fontset)
9795 #define IDWriteFactory4_CreateFontSetBuilder(This,builder) (This)->lpVtbl->CreateFontSetBuilder(This,builder)
9796 #define IDWriteFactory4_CreateFontCollectionFromFontSet(This,fontset,collection) (This)->lpVtbl->CreateFontCollectionFromFontSet(This,fontset,collection)
9797 #define IDWriteFactory4_GetSystemFontCollection(This,include_downloadable,collection,check_for_updates) (This)->lpVtbl->IDWriteFactory3_GetSystemFontCollection(This,include_downloadable,collection,check_for_updates)
9798 #define IDWriteFactory4_GetFontDownloadQueue(This,queue) (This)->lpVtbl->GetFontDownloadQueue(This,queue)
9799 /*** IDWriteFactory4 methods ***/
9800 #define IDWriteFactory4_TranslateColorGlyphRun(This,baseline_origin,run,run_desc,desired_formats,measuring_mode,transform,palette,layers) (This)->lpVtbl->IDWriteFactory4_TranslateColorGlyphRun(This,baseline_origin,run,run_desc,desired_formats,measuring_mode,transform,palette,layers)
9801 #define IDWriteFactory4_ComputeGlyphOrigins_(This,run,baseline_origin,origins) (This)->lpVtbl->ComputeGlyphOrigins_(This,run,baseline_origin,origins)
9802 #define IDWriteFactory4_ComputeGlyphOrigins(This,run,measuring_mode,baseline_origin,transform,origins) (This)->lpVtbl->ComputeGlyphOrigins(This,run,measuring_mode,baseline_origin,transform,origins)
9803 #else
9804 /*** IUnknown methods ***/
9805 static FORCEINLINE HRESULT IDWriteFactory4_QueryInterface(IDWriteFactory4* This,REFIID riid,void **ppvObject) {
9806     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
9807 }
9808 static FORCEINLINE ULONG IDWriteFactory4_AddRef(IDWriteFactory4* This) {
9809     return This->lpVtbl->AddRef(This);
9810 }
9811 static FORCEINLINE ULONG IDWriteFactory4_Release(IDWriteFactory4* This) {
9812     return This->lpVtbl->Release(This);
9813 }
9814 /*** IDWriteFactory methods ***/
9815 static FORCEINLINE HRESULT IDWriteFactory4_CreateCustomFontCollection(IDWriteFactory4* This,IDWriteFontCollectionLoader *loader,const void *key,UINT32 key_size,IDWriteFontCollection **collection) {
9816     return This->lpVtbl->CreateCustomFontCollection(This,loader,key,key_size,collection);
9817 }
9818 static FORCEINLINE HRESULT IDWriteFactory4_RegisterFontCollectionLoader(IDWriteFactory4* This,IDWriteFontCollectionLoader *loader) {
9819     return This->lpVtbl->RegisterFontCollectionLoader(This,loader);
9820 }
9821 static FORCEINLINE HRESULT IDWriteFactory4_UnregisterFontCollectionLoader(IDWriteFactory4* This,IDWriteFontCollectionLoader *loader) {
9822     return This->lpVtbl->UnregisterFontCollectionLoader(This,loader);
9823 }
9824 static FORCEINLINE HRESULT IDWriteFactory4_CreateFontFileReference(IDWriteFactory4* This,const WCHAR *path,const FILETIME *writetime,IDWriteFontFile **font_file) {
9825     return This->lpVtbl->CreateFontFileReference(This,path,writetime,font_file);
9826 }
9827 static FORCEINLINE HRESULT IDWriteFactory4_CreateCustomFontFileReference(IDWriteFactory4* This,const void *reference_key,UINT32 key_size,IDWriteFontFileLoader *loader,IDWriteFontFile **font_file) {
9828     return This->lpVtbl->CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file);
9829 }
9830 static FORCEINLINE HRESULT IDWriteFactory4_CreateFontFace(IDWriteFactory4* This,DWRITE_FONT_FACE_TYPE facetype,UINT32 files_number,IDWriteFontFile *const *font_files,UINT32 index,DWRITE_FONT_SIMULATIONS sim_flags,IDWriteFontFace **font_face) {
9831     return This->lpVtbl->CreateFontFace(This,facetype,files_number,font_files,index,sim_flags,font_face);
9832 }
9833 static FORCEINLINE HRESULT IDWriteFactory4_CreateRenderingParams(IDWriteFactory4* This,IDWriteRenderingParams **params) {
9834     return This->lpVtbl->CreateRenderingParams(This,params);
9835 }
9836 static FORCEINLINE HRESULT IDWriteFactory4_CreateMonitorRenderingParams(IDWriteFactory4* This,HMONITOR monitor,IDWriteRenderingParams **params) {
9837     return This->lpVtbl->CreateMonitorRenderingParams(This,monitor,params);
9838 }
9839 static FORCEINLINE HRESULT IDWriteFactory4_RegisterFontFileLoader(IDWriteFactory4* This,IDWriteFontFileLoader *loader) {
9840     return This->lpVtbl->RegisterFontFileLoader(This,loader);
9841 }
9842 static FORCEINLINE HRESULT IDWriteFactory4_UnregisterFontFileLoader(IDWriteFactory4* This,IDWriteFontFileLoader *loader) {
9843     return This->lpVtbl->UnregisterFontFileLoader(This,loader);
9844 }
9845 static FORCEINLINE HRESULT IDWriteFactory4_CreateTextFormat(IDWriteFactory4* 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) {
9846     return This->lpVtbl->CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format);
9847 }
9848 static FORCEINLINE HRESULT IDWriteFactory4_CreateTypography(IDWriteFactory4* This,IDWriteTypography **typography) {
9849     return This->lpVtbl->CreateTypography(This,typography);
9850 }
9851 static FORCEINLINE HRESULT IDWriteFactory4_GetGdiInterop(IDWriteFactory4* This,IDWriteGdiInterop **gdi_interop) {
9852     return This->lpVtbl->GetGdiInterop(This,gdi_interop);
9853 }
9854 static FORCEINLINE HRESULT IDWriteFactory4_CreateTextLayout(IDWriteFactory4* This,const WCHAR *string,UINT32 len,IDWriteTextFormat *format,FLOAT max_width,FLOAT max_height,IDWriteTextLayout **layout) {
9855     return This->lpVtbl->CreateTextLayout(This,string,len,format,max_width,max_height,layout);
9856 }
9857 static FORCEINLINE HRESULT IDWriteFactory4_CreateGdiCompatibleTextLayout(IDWriteFactory4* 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) {
9858     return This->lpVtbl->CreateGdiCompatibleTextLayout(This,string,len,format,layout_width,layout_height,pixels_per_dip,transform,use_gdi_natural,layout);
9859 }
9860 static FORCEINLINE HRESULT IDWriteFactory4_CreateEllipsisTrimmingSign(IDWriteFactory4* This,IDWriteTextFormat *format,IDWriteInlineObject **trimming_sign) {
9861     return This->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign);
9862 }
9863 static FORCEINLINE HRESULT IDWriteFactory4_CreateTextAnalyzer(IDWriteFactory4* This,IDWriteTextAnalyzer **analyzer) {
9864     return This->lpVtbl->CreateTextAnalyzer(This,analyzer);
9865 }
9866 static FORCEINLINE HRESULT IDWriteFactory4_CreateNumberSubstitution(IDWriteFactory4* This,DWRITE_NUMBER_SUBSTITUTION_METHOD method,const WCHAR *locale,WINBOOL ignore_user_override,IDWriteNumberSubstitution **substitution) {
9867     return This->lpVtbl->CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution);
9868 }
9869 /*** IDWriteFactory1 methods ***/
9870 static FORCEINLINE HRESULT IDWriteFactory4_GetEudcFontCollection(IDWriteFactory4* This,IDWriteFontCollection **collection,WINBOOL check_for_updates) {
9871     return This->lpVtbl->GetEudcFontCollection(This,collection,check_for_updates);
9872 }
9873 /*** IDWriteFactory2 methods ***/
9874 static FORCEINLINE HRESULT IDWriteFactory4_GetSystemFontFallback(IDWriteFactory4* This,IDWriteFontFallback **fallback) {
9875     return This->lpVtbl->GetSystemFontFallback(This,fallback);
9876 }
9877 static FORCEINLINE HRESULT IDWriteFactory4_CreateFontFallbackBuilder(IDWriteFactory4* This,IDWriteFontFallbackBuilder **fallbackbuilder) {
9878     return This->lpVtbl->CreateFontFallbackBuilder(This,fallbackbuilder);
9879 }
9880 /*** IDWriteFactory3 methods ***/
9881 static FORCEINLINE HRESULT IDWriteFactory4_CreateGlyphRunAnalysis(IDWriteFactory4* This,const DWRITE_GLYPH_RUN *run,const DWRITE_MATRIX *transform,DWRITE_RENDERING_MODE1 rendering_mode,DWRITE_MEASURING_MODE measuring_mode,DWRITE_GRID_FIT_MODE gridfit_mode,DWRITE_TEXT_ANTIALIAS_MODE antialias_mode,FLOAT origin_x,FLOAT origin_y,IDWriteGlyphRunAnalysis **analysis) {
9882     return This->lpVtbl->IDWriteFactory3_CreateGlyphRunAnalysis(This,run,transform,rendering_mode,measuring_mode,gridfit_mode,antialias_mode,origin_x,origin_y,analysis);
9883 }
9884 static FORCEINLINE HRESULT IDWriteFactory4_CreateCustomRenderingParams(IDWriteFactory4* This,FLOAT gamma,FLOAT enhanced_contrast,FLOAT grayscale_enhanced_contrast,FLOAT cleartype_level,DWRITE_PIXEL_GEOMETRY pixel_geometry,DWRITE_RENDERING_MODE1 rendering_mode,DWRITE_GRID_FIT_MODE gridfit_mode,IDWriteRenderingParams3 **params) {
9885     return This->lpVtbl->IDWriteFactory3_CreateCustomRenderingParams(This,gamma,enhanced_contrast,grayscale_enhanced_contrast,cleartype_level,pixel_geometry,rendering_mode,gridfit_mode,params);
9886 }
9887 static FORCEINLINE HRESULT IDWriteFactory4_CreateFontFaceReference_(IDWriteFactory4* This,IDWriteFontFile *file,UINT32 index,DWRITE_FONT_SIMULATIONS simulations,IDWriteFontFaceReference **reference) {
9888     return This->lpVtbl->CreateFontFaceReference_(This,file,index,simulations,reference);
9889 }
9890 static FORCEINLINE HRESULT IDWriteFactory4_CreateFontFaceReference(IDWriteFactory4* This,const WCHAR *path,const FILETIME *writetime,UINT32 index,DWRITE_FONT_SIMULATIONS simulations,IDWriteFontFaceReference **reference) {
9891     return This->lpVtbl->CreateFontFaceReference(This,path,writetime,index,simulations,reference);
9892 }
9893 static FORCEINLINE HRESULT IDWriteFactory4_GetSystemFontSet(IDWriteFactory4* This,IDWriteFontSet **fontset) {
9894     return This->lpVtbl->GetSystemFontSet(This,fontset);
9895 }
9896 static FORCEINLINE HRESULT IDWriteFactory4_CreateFontSetBuilder(IDWriteFactory4* This,IDWriteFontSetBuilder **builder) {
9897     return This->lpVtbl->CreateFontSetBuilder(This,builder);
9898 }
9899 static FORCEINLINE HRESULT IDWriteFactory4_CreateFontCollectionFromFontSet(IDWriteFactory4* This,IDWriteFontSet *fontset,IDWriteFontCollection1 **collection) {
9900     return This->lpVtbl->CreateFontCollectionFromFontSet(This,fontset,collection);
9901 }
9902 static FORCEINLINE HRESULT IDWriteFactory4_GetSystemFontCollection(IDWriteFactory4* This,WINBOOL include_downloadable,IDWriteFontCollection1 **collection,WINBOOL check_for_updates) {
9903     return This->lpVtbl->IDWriteFactory3_GetSystemFontCollection(This,include_downloadable,collection,check_for_updates);
9904 }
9905 static FORCEINLINE HRESULT IDWriteFactory4_GetFontDownloadQueue(IDWriteFactory4* This,IDWriteFontDownloadQueue **queue) {
9906     return This->lpVtbl->GetFontDownloadQueue(This,queue);
9907 }
9908 /*** IDWriteFactory4 methods ***/
9909 static FORCEINLINE HRESULT IDWriteFactory4_TranslateColorGlyphRun(IDWriteFactory4* This,D2D1_POINT_2F baseline_origin,const DWRITE_GLYPH_RUN *run,const DWRITE_GLYPH_RUN_DESCRIPTION *run_desc,DWRITE_GLYPH_IMAGE_FORMATS desired_formats,DWRITE_MEASURING_MODE measuring_mode,const DWRITE_MATRIX *transform,UINT32 palette,IDWriteColorGlyphRunEnumerator1 **layers) {
9910     return This->lpVtbl->IDWriteFactory4_TranslateColorGlyphRun(This,baseline_origin,run,run_desc,desired_formats,measuring_mode,transform,palette,layers);
9911 }
9912 static FORCEINLINE HRESULT IDWriteFactory4_ComputeGlyphOrigins_(IDWriteFactory4* This,const DWRITE_GLYPH_RUN *run,D2D1_POINT_2F baseline_origin,D2D1_POINT_2F *origins) {
9913     return This->lpVtbl->ComputeGlyphOrigins_(This,run,baseline_origin,origins);
9914 }
9915 static FORCEINLINE HRESULT IDWriteFactory4_ComputeGlyphOrigins(IDWriteFactory4* This,const DWRITE_GLYPH_RUN *run,DWRITE_MEASURING_MODE measuring_mode,D2D1_POINT_2F baseline_origin,const DWRITE_MATRIX *transform,D2D1_POINT_2F *origins) {
9916     return This->lpVtbl->ComputeGlyphOrigins(This,run,measuring_mode,baseline_origin,transform,origins);
9917 }
9918 #endif
9919 #endif
9920 
9921 #endif
9922 
9923 
9924 #endif  /* __IDWriteFactory4_INTERFACE_DEFINED__ */
9925 
9926 /*****************************************************************************
9927  * IDWriteAsyncResult interface
9928  */
9929 #ifndef __IDWriteAsyncResult_INTERFACE_DEFINED__
9930 #define __IDWriteAsyncResult_INTERFACE_DEFINED__
9931 
9932 DEFINE_GUID(IID_IDWriteAsyncResult, 0xce25f8fd, 0x863b, 0x4d13, 0x96,0x51, 0xc1,0xf8,0x8d,0xc7,0x3f,0xe2);
9933 #if defined(__cplusplus) && !defined(CINTERFACE)
9934 MIDL_INTERFACE("ce25f8fd-863b-4d13-9651-c1f88dc73fe2")
9935 IDWriteAsyncResult : public IUnknown
9936 {
9937     virtual HANDLE STDMETHODCALLTYPE GetWaitHandle(
9938         ) = 0;
9939 
9940     virtual HRESULT STDMETHODCALLTYPE GetResult(
9941         ) = 0;
9942 
9943 };
9944 #ifdef __CRT_UUID_DECL
9945 __CRT_UUID_DECL(IDWriteAsyncResult, 0xce25f8fd, 0x863b, 0x4d13, 0x96,0x51, 0xc1,0xf8,0x8d,0xc7,0x3f,0xe2)
9946 #endif
9947 #else
9948 typedef struct IDWriteAsyncResultVtbl {
9949     BEGIN_INTERFACE
9950 
9951     /*** IUnknown methods ***/
9952     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
9953         IDWriteAsyncResult *This,
9954         REFIID riid,
9955         void **ppvObject);
9956 
9957     ULONG (STDMETHODCALLTYPE *AddRef)(
9958         IDWriteAsyncResult *This);
9959 
9960     ULONG (STDMETHODCALLTYPE *Release)(
9961         IDWriteAsyncResult *This);
9962 
9963     /*** IDWriteAsyncResult methods ***/
9964     HANDLE (STDMETHODCALLTYPE *GetWaitHandle)(
9965         IDWriteAsyncResult *This);
9966 
9967     HRESULT (STDMETHODCALLTYPE *GetResult)(
9968         IDWriteAsyncResult *This);
9969 
9970     END_INTERFACE
9971 } IDWriteAsyncResultVtbl;
9972 
9973 interface IDWriteAsyncResult {
9974     CONST_VTBL IDWriteAsyncResultVtbl* lpVtbl;
9975 };
9976 
9977 #ifdef COBJMACROS
9978 #ifndef WIDL_C_INLINE_WRAPPERS
9979 /*** IUnknown methods ***/
9980 #define IDWriteAsyncResult_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
9981 #define IDWriteAsyncResult_AddRef(This) (This)->lpVtbl->AddRef(This)
9982 #define IDWriteAsyncResult_Release(This) (This)->lpVtbl->Release(This)
9983 /*** IDWriteAsyncResult methods ***/
9984 #define IDWriteAsyncResult_GetWaitHandle(This) (This)->lpVtbl->GetWaitHandle(This)
9985 #define IDWriteAsyncResult_GetResult(This) (This)->lpVtbl->GetResult(This)
9986 #else
9987 /*** IUnknown methods ***/
9988 static FORCEINLINE HRESULT IDWriteAsyncResult_QueryInterface(IDWriteAsyncResult* This,REFIID riid,void **ppvObject) {
9989     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
9990 }
9991 static FORCEINLINE ULONG IDWriteAsyncResult_AddRef(IDWriteAsyncResult* This) {
9992     return This->lpVtbl->AddRef(This);
9993 }
9994 static FORCEINLINE ULONG IDWriteAsyncResult_Release(IDWriteAsyncResult* This) {
9995     return This->lpVtbl->Release(This);
9996 }
9997 /*** IDWriteAsyncResult methods ***/
9998 static FORCEINLINE HANDLE IDWriteAsyncResult_GetWaitHandle(IDWriteAsyncResult* This) {
9999     return This->lpVtbl->GetWaitHandle(This);
10000 }
10001 static FORCEINLINE HRESULT IDWriteAsyncResult_GetResult(IDWriteAsyncResult* This) {
10002     return This->lpVtbl->GetResult(This);
10003 }
10004 #endif
10005 #endif
10006 
10007 #endif
10008 
10009 
10010 #endif  /* __IDWriteAsyncResult_INTERFACE_DEFINED__ */
10011 
10012 typedef struct DWRITE_FILE_FRAGMENT {
10013     UINT64 fileOffset;
10014     UINT64 fragmentSize;
10015 } DWRITE_FILE_FRAGMENT;
10016 /*****************************************************************************
10017  * IDWriteRemoteFontFileStream interface
10018  */
10019 #ifndef __IDWriteRemoteFontFileStream_INTERFACE_DEFINED__
10020 #define __IDWriteRemoteFontFileStream_INTERFACE_DEFINED__
10021 
10022 DEFINE_GUID(IID_IDWriteRemoteFontFileStream, 0x4db3757a, 0x2c72, 0x4ed9, 0xb2,0xb6, 0x1a,0xba,0xbe,0x1a,0xff,0x9c);
10023 #if defined(__cplusplus) && !defined(CINTERFACE)
10024 MIDL_INTERFACE("4db3757a-2c72-4ed9-b2b6-1ababe1aff9c")
10025 IDWriteRemoteFontFileStream : public IDWriteFontFileStream
10026 {
10027     virtual HRESULT STDMETHODCALLTYPE GetLocalFileSize(
10028         UINT64 *size) = 0;
10029 
10030     virtual HRESULT STDMETHODCALLTYPE GetFileFragmentLocality(
10031         UINT64 offset,
10032         UINT64 size,
10033         WINBOOL *is_local,
10034         UINT64 *partial_size) = 0;
10035 
10036     virtual DWRITE_LOCALITY STDMETHODCALLTYPE GetLocality(
10037         ) = 0;
10038 
10039     virtual HRESULT STDMETHODCALLTYPE BeginDownload(
10040         const GUID *operation_id,
10041         const DWRITE_FILE_FRAGMENT *fragments,
10042         UINT32 fragment_count,
10043         IDWriteAsyncResult **async_result) = 0;
10044 
10045 };
10046 #ifdef __CRT_UUID_DECL
10047 __CRT_UUID_DECL(IDWriteRemoteFontFileStream, 0x4db3757a, 0x2c72, 0x4ed9, 0xb2,0xb6, 0x1a,0xba,0xbe,0x1a,0xff,0x9c)
10048 #endif
10049 #else
10050 typedef struct IDWriteRemoteFontFileStreamVtbl {
10051     BEGIN_INTERFACE
10052 
10053     /*** IUnknown methods ***/
10054     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
10055         IDWriteRemoteFontFileStream *This,
10056         REFIID riid,
10057         void **ppvObject);
10058 
10059     ULONG (STDMETHODCALLTYPE *AddRef)(
10060         IDWriteRemoteFontFileStream *This);
10061 
10062     ULONG (STDMETHODCALLTYPE *Release)(
10063         IDWriteRemoteFontFileStream *This);
10064 
10065     /*** IDWriteFontFileStream methods ***/
10066     HRESULT (STDMETHODCALLTYPE *ReadFileFragment)(
10067         IDWriteRemoteFontFileStream *This,
10068         const void **fragment_start,
10069         UINT64 offset,
10070         UINT64 fragment_size,
10071         void **fragment_context);
10072 
10073     void (STDMETHODCALLTYPE *ReleaseFileFragment)(
10074         IDWriteRemoteFontFileStream *This,
10075         void *fragment_context);
10076 
10077     HRESULT (STDMETHODCALLTYPE *GetFileSize)(
10078         IDWriteRemoteFontFileStream *This,
10079         UINT64 *size);
10080 
10081     HRESULT (STDMETHODCALLTYPE *GetLastWriteTime)(
10082         IDWriteRemoteFontFileStream *This,
10083         UINT64 *last_writetime);
10084 
10085     /*** IDWriteRemoteFontFileStream methods ***/
10086     HRESULT (STDMETHODCALLTYPE *GetLocalFileSize)(
10087         IDWriteRemoteFontFileStream *This,
10088         UINT64 *size);
10089 
10090     HRESULT (STDMETHODCALLTYPE *GetFileFragmentLocality)(
10091         IDWriteRemoteFontFileStream *This,
10092         UINT64 offset,
10093         UINT64 size,
10094         WINBOOL *is_local,
10095         UINT64 *partial_size);
10096 
10097     DWRITE_LOCALITY (STDMETHODCALLTYPE *GetLocality)(
10098         IDWriteRemoteFontFileStream *This);
10099 
10100     HRESULT (STDMETHODCALLTYPE *BeginDownload)(
10101         IDWriteRemoteFontFileStream *This,
10102         const GUID *operation_id,
10103         const DWRITE_FILE_FRAGMENT *fragments,
10104         UINT32 fragment_count,
10105         IDWriteAsyncResult **async_result);
10106 
10107     END_INTERFACE
10108 } IDWriteRemoteFontFileStreamVtbl;
10109 
10110 interface IDWriteRemoteFontFileStream {
10111     CONST_VTBL IDWriteRemoteFontFileStreamVtbl* lpVtbl;
10112 };
10113 
10114 #ifdef COBJMACROS
10115 #ifndef WIDL_C_INLINE_WRAPPERS
10116 /*** IUnknown methods ***/
10117 #define IDWriteRemoteFontFileStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
10118 #define IDWriteRemoteFontFileStream_AddRef(This) (This)->lpVtbl->AddRef(This)
10119 #define IDWriteRemoteFontFileStream_Release(This) (This)->lpVtbl->Release(This)
10120 /*** IDWriteFontFileStream methods ***/
10121 #define IDWriteRemoteFontFileStream_ReadFileFragment(This,fragment_start,offset,fragment_size,fragment_context) (This)->lpVtbl->ReadFileFragment(This,fragment_start,offset,fragment_size,fragment_context)
10122 #define IDWriteRemoteFontFileStream_ReleaseFileFragment(This,fragment_context) (This)->lpVtbl->ReleaseFileFragment(This,fragment_context)
10123 #define IDWriteRemoteFontFileStream_GetFileSize(This,size) (This)->lpVtbl->GetFileSize(This,size)
10124 #define IDWriteRemoteFontFileStream_GetLastWriteTime(This,last_writetime) (This)->lpVtbl->GetLastWriteTime(This,last_writetime)
10125 /*** IDWriteRemoteFontFileStream methods ***/
10126 #define IDWriteRemoteFontFileStream_GetLocalFileSize(This,size) (This)->lpVtbl->GetLocalFileSize(This,size)
10127 #define IDWriteRemoteFontFileStream_GetFileFragmentLocality(This,offset,size,is_local,partial_size) (This)->lpVtbl->GetFileFragmentLocality(This,offset,size,is_local,partial_size)
10128 #define IDWriteRemoteFontFileStream_GetLocality(This) (This)->lpVtbl->GetLocality(This)
10129 #define IDWriteRemoteFontFileStream_BeginDownload(This,operation_id,fragments,fragment_count,async_result) (This)->lpVtbl->BeginDownload(This,operation_id,fragments,fragment_count,async_result)
10130 #else
10131 /*** IUnknown methods ***/
10132 static FORCEINLINE HRESULT IDWriteRemoteFontFileStream_QueryInterface(IDWriteRemoteFontFileStream* This,REFIID riid,void **ppvObject) {
10133     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
10134 }
10135 static FORCEINLINE ULONG IDWriteRemoteFontFileStream_AddRef(IDWriteRemoteFontFileStream* This) {
10136     return This->lpVtbl->AddRef(This);
10137 }
10138 static FORCEINLINE ULONG IDWriteRemoteFontFileStream_Release(IDWriteRemoteFontFileStream* This) {
10139     return This->lpVtbl->Release(This);
10140 }
10141 /*** IDWriteFontFileStream methods ***/
10142 static FORCEINLINE HRESULT IDWriteRemoteFontFileStream_ReadFileFragment(IDWriteRemoteFontFileStream* This,const void **fragment_start,UINT64 offset,UINT64 fragment_size,void **fragment_context) {
10143     return This->lpVtbl->ReadFileFragment(This,fragment_start,offset,fragment_size,fragment_context);
10144 }
10145 static FORCEINLINE void IDWriteRemoteFontFileStream_ReleaseFileFragment(IDWriteRemoteFontFileStream* This,void *fragment_context) {
10146     This->lpVtbl->ReleaseFileFragment(This,fragment_context);
10147 }
10148 static FORCEINLINE HRESULT IDWriteRemoteFontFileStream_GetFileSize(IDWriteRemoteFontFileStream* This,UINT64 *size) {
10149     return This->lpVtbl->GetFileSize(This,size);
10150 }
10151 static FORCEINLINE HRESULT IDWriteRemoteFontFileStream_GetLastWriteTime(IDWriteRemoteFontFileStream* This,UINT64 *last_writetime) {
10152     return This->lpVtbl->GetLastWriteTime(This,last_writetime);
10153 }
10154 /*** IDWriteRemoteFontFileStream methods ***/
10155 static FORCEINLINE HRESULT IDWriteRemoteFontFileStream_GetLocalFileSize(IDWriteRemoteFontFileStream* This,UINT64 *size) {
10156     return This->lpVtbl->GetLocalFileSize(This,size);
10157 }
10158 static FORCEINLINE HRESULT IDWriteRemoteFontFileStream_GetFileFragmentLocality(IDWriteRemoteFontFileStream* This,UINT64 offset,UINT64 size,WINBOOL *is_local,UINT64 *partial_size) {
10159     return This->lpVtbl->GetFileFragmentLocality(This,offset,size,is_local,partial_size);
10160 }
10161 static FORCEINLINE DWRITE_LOCALITY IDWriteRemoteFontFileStream_GetLocality(IDWriteRemoteFontFileStream* This) {
10162     return This->lpVtbl->GetLocality(This);
10163 }
10164 static FORCEINLINE HRESULT IDWriteRemoteFontFileStream_BeginDownload(IDWriteRemoteFontFileStream* This,const GUID *operation_id,const DWRITE_FILE_FRAGMENT *fragments,UINT32 fragment_count,IDWriteAsyncResult **async_result) {
10165     return This->lpVtbl->BeginDownload(This,operation_id,fragments,fragment_count,async_result);
10166 }
10167 #endif
10168 #endif
10169 
10170 #endif
10171 
10172 
10173 #endif  /* __IDWriteRemoteFontFileStream_INTERFACE_DEFINED__ */
10174 
10175 typedef enum DWRITE_CONTAINER_TYPE {
10176     DWRITE_CONTAINER_TYPE_UNKNOWN = 0,
10177     DWRITE_CONTAINER_TYPE_WOFF = 1,
10178     DWRITE_CONTAINER_TYPE_WOFF2 = 2
10179 } DWRITE_CONTAINER_TYPE;
10180 /*****************************************************************************
10181  * IDWriteRemoteFontFileLoader interface
10182  */
10183 #ifndef __IDWriteRemoteFontFileLoader_INTERFACE_DEFINED__
10184 #define __IDWriteRemoteFontFileLoader_INTERFACE_DEFINED__
10185 
10186 DEFINE_GUID(IID_IDWriteRemoteFontFileLoader, 0x68648c83, 0x6ede, 0x46c0, 0xab,0x46, 0x20,0x08,0x3a,0x88,0x7f,0xde);
10187 #if defined(__cplusplus) && !defined(CINTERFACE)
10188 MIDL_INTERFACE("68648c83-6ede-46c0-ab46-20083a887fde")
10189 IDWriteRemoteFontFileLoader : public IDWriteFontFileLoader
10190 {
10191     virtual HRESULT STDMETHODCALLTYPE CreateRemoteStreamFromKey(
10192         const void *key,
10193         UINT32 key_size,
10194         IDWriteRemoteFontFileStream **stream) = 0;
10195 
10196     virtual HRESULT STDMETHODCALLTYPE GetLocalityFromKey(
10197         const void *key,
10198         UINT32 key_size,
10199         DWRITE_LOCALITY *locality) = 0;
10200 
10201     virtual HRESULT STDMETHODCALLTYPE CreateFontFileReferenceFromUrl(
10202         IDWriteFactory *factory,
10203         const WCHAR *base_url,
10204         const WCHAR *file_url,
10205         IDWriteFontFile **fontfile) = 0;
10206 
10207 };
10208 #ifdef __CRT_UUID_DECL
10209 __CRT_UUID_DECL(IDWriteRemoteFontFileLoader, 0x68648c83, 0x6ede, 0x46c0, 0xab,0x46, 0x20,0x08,0x3a,0x88,0x7f,0xde)
10210 #endif
10211 #else
10212 typedef struct IDWriteRemoteFontFileLoaderVtbl {
10213     BEGIN_INTERFACE
10214 
10215     /*** IUnknown methods ***/
10216     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
10217         IDWriteRemoteFontFileLoader *This,
10218         REFIID riid,
10219         void **ppvObject);
10220 
10221     ULONG (STDMETHODCALLTYPE *AddRef)(
10222         IDWriteRemoteFontFileLoader *This);
10223 
10224     ULONG (STDMETHODCALLTYPE *Release)(
10225         IDWriteRemoteFontFileLoader *This);
10226 
10227     /*** IDWriteFontFileLoader methods ***/
10228     HRESULT (STDMETHODCALLTYPE *CreateStreamFromKey)(
10229         IDWriteRemoteFontFileLoader *This,
10230         const void *key,
10231         UINT32 key_size,
10232         IDWriteFontFileStream **stream);
10233 
10234     /*** IDWriteRemoteFontFileLoader methods ***/
10235     HRESULT (STDMETHODCALLTYPE *CreateRemoteStreamFromKey)(
10236         IDWriteRemoteFontFileLoader *This,
10237         const void *key,
10238         UINT32 key_size,
10239         IDWriteRemoteFontFileStream **stream);
10240 
10241     HRESULT (STDMETHODCALLTYPE *GetLocalityFromKey)(
10242         IDWriteRemoteFontFileLoader *This,
10243         const void *key,
10244         UINT32 key_size,
10245         DWRITE_LOCALITY *locality);
10246 
10247     HRESULT (STDMETHODCALLTYPE *CreateFontFileReferenceFromUrl)(
10248         IDWriteRemoteFontFileLoader *This,
10249         IDWriteFactory *factory,
10250         const WCHAR *base_url,
10251         const WCHAR *file_url,
10252         IDWriteFontFile **fontfile);
10253 
10254     END_INTERFACE
10255 } IDWriteRemoteFontFileLoaderVtbl;
10256 
10257 interface IDWriteRemoteFontFileLoader {
10258     CONST_VTBL IDWriteRemoteFontFileLoaderVtbl* lpVtbl;
10259 };
10260 
10261 #ifdef COBJMACROS
10262 #ifndef WIDL_C_INLINE_WRAPPERS
10263 /*** IUnknown methods ***/
10264 #define IDWriteRemoteFontFileLoader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
10265 #define IDWriteRemoteFontFileLoader_AddRef(This) (This)->lpVtbl->AddRef(This)
10266 #define IDWriteRemoteFontFileLoader_Release(This) (This)->lpVtbl->Release(This)
10267 /*** IDWriteFontFileLoader methods ***/
10268 #define IDWriteRemoteFontFileLoader_CreateStreamFromKey(This,key,key_size,stream) (This)->lpVtbl->CreateStreamFromKey(This,key,key_size,stream)
10269 /*** IDWriteRemoteFontFileLoader methods ***/
10270 #define IDWriteRemoteFontFileLoader_CreateRemoteStreamFromKey(This,key,key_size,stream) (This)->lpVtbl->CreateRemoteStreamFromKey(This,key,key_size,stream)
10271 #define IDWriteRemoteFontFileLoader_GetLocalityFromKey(This,key,key_size,locality) (This)->lpVtbl->GetLocalityFromKey(This,key,key_size,locality)
10272 #define IDWriteRemoteFontFileLoader_CreateFontFileReferenceFromUrl(This,factory,base_url,file_url,fontfile) (This)->lpVtbl->CreateFontFileReferenceFromUrl(This,factory,base_url,file_url,fontfile)
10273 #else
10274 /*** IUnknown methods ***/
10275 static FORCEINLINE HRESULT IDWriteRemoteFontFileLoader_QueryInterface(IDWriteRemoteFontFileLoader* This,REFIID riid,void **ppvObject) {
10276     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
10277 }
10278 static FORCEINLINE ULONG IDWriteRemoteFontFileLoader_AddRef(IDWriteRemoteFontFileLoader* This) {
10279     return This->lpVtbl->AddRef(This);
10280 }
10281 static FORCEINLINE ULONG IDWriteRemoteFontFileLoader_Release(IDWriteRemoteFontFileLoader* This) {
10282     return This->lpVtbl->Release(This);
10283 }
10284 /*** IDWriteFontFileLoader methods ***/
10285 static FORCEINLINE HRESULT IDWriteRemoteFontFileLoader_CreateStreamFromKey(IDWriteRemoteFontFileLoader* This,const void *key,UINT32 key_size,IDWriteFontFileStream **stream) {
10286     return This->lpVtbl->CreateStreamFromKey(This,key,key_size,stream);
10287 }
10288 /*** IDWriteRemoteFontFileLoader methods ***/
10289 static FORCEINLINE HRESULT IDWriteRemoteFontFileLoader_CreateRemoteStreamFromKey(IDWriteRemoteFontFileLoader* This,const void *key,UINT32 key_size,IDWriteRemoteFontFileStream **stream) {
10290     return This->lpVtbl->CreateRemoteStreamFromKey(This,key,key_size,stream);
10291 }
10292 static FORCEINLINE HRESULT IDWriteRemoteFontFileLoader_GetLocalityFromKey(IDWriteRemoteFontFileLoader* This,const void *key,UINT32 key_size,DWRITE_LOCALITY *locality) {
10293     return This->lpVtbl->GetLocalityFromKey(This,key,key_size,locality);
10294 }
10295 static FORCEINLINE HRESULT IDWriteRemoteFontFileLoader_CreateFontFileReferenceFromUrl(IDWriteRemoteFontFileLoader* This,IDWriteFactory *factory,const WCHAR *base_url,const WCHAR *file_url,IDWriteFontFile **fontfile) {
10296     return This->lpVtbl->CreateFontFileReferenceFromUrl(This,factory,base_url,file_url,fontfile);
10297 }
10298 #endif
10299 #endif
10300 
10301 #endif
10302 
10303 
10304 #endif  /* __IDWriteRemoteFontFileLoader_INTERFACE_DEFINED__ */
10305 
10306 /*****************************************************************************
10307  * IDWriteInMemoryFontFileLoader interface
10308  */
10309 #ifndef __IDWriteInMemoryFontFileLoader_INTERFACE_DEFINED__
10310 #define __IDWriteInMemoryFontFileLoader_INTERFACE_DEFINED__
10311 
10312 DEFINE_GUID(IID_IDWriteInMemoryFontFileLoader, 0xdc102f47, 0xa12d, 0x4b1c, 0x82,0x2d, 0x9e,0x11,0x7e,0x33,0x04,0x3f);
10313 #if defined(__cplusplus) && !defined(CINTERFACE)
10314 MIDL_INTERFACE("dc102f47-a12d-4b1c-822d-9e117e33043f")
10315 IDWriteInMemoryFontFileLoader : public IDWriteFontFileLoader
10316 {
10317     virtual HRESULT STDMETHODCALLTYPE CreateInMemoryFontFileReference(
10318         IDWriteFactory *factory,
10319         const void *data,
10320         UINT32 data_size,
10321         IUnknown *owner,
10322         IDWriteFontFile **fontfile) = 0;
10323 
10324     virtual UINT32 STDMETHODCALLTYPE GetFileCount(
10325         ) = 0;
10326 
10327 };
10328 #ifdef __CRT_UUID_DECL
10329 __CRT_UUID_DECL(IDWriteInMemoryFontFileLoader, 0xdc102f47, 0xa12d, 0x4b1c, 0x82,0x2d, 0x9e,0x11,0x7e,0x33,0x04,0x3f)
10330 #endif
10331 #else
10332 typedef struct IDWriteInMemoryFontFileLoaderVtbl {
10333     BEGIN_INTERFACE
10334 
10335     /*** IUnknown methods ***/
10336     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
10337         IDWriteInMemoryFontFileLoader *This,
10338         REFIID riid,
10339         void **ppvObject);
10340 
10341     ULONG (STDMETHODCALLTYPE *AddRef)(
10342         IDWriteInMemoryFontFileLoader *This);
10343 
10344     ULONG (STDMETHODCALLTYPE *Release)(
10345         IDWriteInMemoryFontFileLoader *This);
10346 
10347     /*** IDWriteFontFileLoader methods ***/
10348     HRESULT (STDMETHODCALLTYPE *CreateStreamFromKey)(
10349         IDWriteInMemoryFontFileLoader *This,
10350         const void *key,
10351         UINT32 key_size,
10352         IDWriteFontFileStream **stream);
10353 
10354     /*** IDWriteInMemoryFontFileLoader methods ***/
10355     HRESULT (STDMETHODCALLTYPE *CreateInMemoryFontFileReference)(
10356         IDWriteInMemoryFontFileLoader *This,
10357         IDWriteFactory *factory,
10358         const void *data,
10359         UINT32 data_size,
10360         IUnknown *owner,
10361         IDWriteFontFile **fontfile);
10362 
10363     UINT32 (STDMETHODCALLTYPE *GetFileCount)(
10364         IDWriteInMemoryFontFileLoader *This);
10365 
10366     END_INTERFACE
10367 } IDWriteInMemoryFontFileLoaderVtbl;
10368 
10369 interface IDWriteInMemoryFontFileLoader {
10370     CONST_VTBL IDWriteInMemoryFontFileLoaderVtbl* lpVtbl;
10371 };
10372 
10373 #ifdef COBJMACROS
10374 #ifndef WIDL_C_INLINE_WRAPPERS
10375 /*** IUnknown methods ***/
10376 #define IDWriteInMemoryFontFileLoader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
10377 #define IDWriteInMemoryFontFileLoader_AddRef(This) (This)->lpVtbl->AddRef(This)
10378 #define IDWriteInMemoryFontFileLoader_Release(This) (This)->lpVtbl->Release(This)
10379 /*** IDWriteFontFileLoader methods ***/
10380 #define IDWriteInMemoryFontFileLoader_CreateStreamFromKey(This,key,key_size,stream) (This)->lpVtbl->CreateStreamFromKey(This,key,key_size,stream)
10381 /*** IDWriteInMemoryFontFileLoader methods ***/
10382 #define IDWriteInMemoryFontFileLoader_CreateInMemoryFontFileReference(This,factory,data,data_size,owner,fontfile) (This)->lpVtbl->CreateInMemoryFontFileReference(This,factory,data,data_size,owner,fontfile)
10383 #define IDWriteInMemoryFontFileLoader_GetFileCount(This) (This)->lpVtbl->GetFileCount(This)
10384 #else
10385 /*** IUnknown methods ***/
10386 static FORCEINLINE HRESULT IDWriteInMemoryFontFileLoader_QueryInterface(IDWriteInMemoryFontFileLoader* This,REFIID riid,void **ppvObject) {
10387     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
10388 }
10389 static FORCEINLINE ULONG IDWriteInMemoryFontFileLoader_AddRef(IDWriteInMemoryFontFileLoader* This) {
10390     return This->lpVtbl->AddRef(This);
10391 }
10392 static FORCEINLINE ULONG IDWriteInMemoryFontFileLoader_Release(IDWriteInMemoryFontFileLoader* This) {
10393     return This->lpVtbl->Release(This);
10394 }
10395 /*** IDWriteFontFileLoader methods ***/
10396 static FORCEINLINE HRESULT IDWriteInMemoryFontFileLoader_CreateStreamFromKey(IDWriteInMemoryFontFileLoader* This,const void *key,UINT32 key_size,IDWriteFontFileStream **stream) {
10397     return This->lpVtbl->CreateStreamFromKey(This,key,key_size,stream);
10398 }
10399 /*** IDWriteInMemoryFontFileLoader methods ***/
10400 static FORCEINLINE HRESULT IDWriteInMemoryFontFileLoader_CreateInMemoryFontFileReference(IDWriteInMemoryFontFileLoader* This,IDWriteFactory *factory,const void *data,UINT32 data_size,IUnknown *owner,IDWriteFontFile **fontfile) {
10401     return This->lpVtbl->CreateInMemoryFontFileReference(This,factory,data,data_size,owner,fontfile);
10402 }
10403 static FORCEINLINE UINT32 IDWriteInMemoryFontFileLoader_GetFileCount(IDWriteInMemoryFontFileLoader* This) {
10404     return This->lpVtbl->GetFileCount(This);
10405 }
10406 #endif
10407 #endif
10408 
10409 #endif
10410 
10411 
10412 #endif  /* __IDWriteInMemoryFontFileLoader_INTERFACE_DEFINED__ */
10413 
10414 /*****************************************************************************
10415  * IDWriteFactory5 interface
10416  */
10417 #ifndef __IDWriteFactory5_INTERFACE_DEFINED__
10418 #define __IDWriteFactory5_INTERFACE_DEFINED__
10419 
10420 DEFINE_GUID(IID_IDWriteFactory5, 0x958db99a, 0xbe2a, 0x4f09, 0xaf,0x7d, 0x65,0x18,0x98,0x03,0xd1,0xd3);
10421 #if defined(__cplusplus) && !defined(CINTERFACE)
10422 MIDL_INTERFACE("958db99a-be2a-4f09-af7d-65189803d1d3")
10423 IDWriteFactory5 : public IDWriteFactory4
10424 {
10425     virtual HRESULT STDMETHODCALLTYPE CreateFontSetBuilder(
10426         IDWriteFontSetBuilder1 **fontset_builder) = 0;
10427 
10428     virtual HRESULT STDMETHODCALLTYPE CreateInMemoryFontFileLoader(
10429         IDWriteInMemoryFontFileLoader **loader) = 0;
10430 
10431     virtual HRESULT STDMETHODCALLTYPE CreateHttpFontFileLoader(
10432         const WCHAR *referrer_url,
10433         const WCHAR *extra_headers,
10434         IDWriteRemoteFontFileLoader **loader) = 0;
10435 
10436     virtual DWRITE_CONTAINER_TYPE STDMETHODCALLTYPE AnalyzeContainerType(
10437         const void *data,
10438         UINT32 data_size) = 0;
10439 
10440     virtual HRESULT STDMETHODCALLTYPE UnpackFontFile(
10441         DWRITE_CONTAINER_TYPE container_type,
10442         const void *data,
10443         UINT32 data_size,
10444         IDWriteFontFileStream **stream) = 0;
10445 
10446 };
10447 #ifdef __CRT_UUID_DECL
10448 __CRT_UUID_DECL(IDWriteFactory5, 0x958db99a, 0xbe2a, 0x4f09, 0xaf,0x7d, 0x65,0x18,0x98,0x03,0xd1,0xd3)
10449 #endif
10450 #else
10451 typedef struct IDWriteFactory5Vtbl {
10452     BEGIN_INTERFACE
10453 
10454     /*** IUnknown methods ***/
10455     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
10456         IDWriteFactory5 *This,
10457         REFIID riid,
10458         void **ppvObject);
10459 
10460     ULONG (STDMETHODCALLTYPE *AddRef)(
10461         IDWriteFactory5 *This);
10462 
10463     ULONG (STDMETHODCALLTYPE *Release)(
10464         IDWriteFactory5 *This);
10465 
10466     /*** IDWriteFactory methods ***/
10467     HRESULT (STDMETHODCALLTYPE *GetSystemFontCollection)(
10468         IDWriteFactory5 *This,
10469         IDWriteFontCollection **collection,
10470         WINBOOL check_for_updates);
10471 
10472     HRESULT (STDMETHODCALLTYPE *CreateCustomFontCollection)(
10473         IDWriteFactory5 *This,
10474         IDWriteFontCollectionLoader *loader,
10475         const void *key,
10476         UINT32 key_size,
10477         IDWriteFontCollection **collection);
10478 
10479     HRESULT (STDMETHODCALLTYPE *RegisterFontCollectionLoader)(
10480         IDWriteFactory5 *This,
10481         IDWriteFontCollectionLoader *loader);
10482 
10483     HRESULT (STDMETHODCALLTYPE *UnregisterFontCollectionLoader)(
10484         IDWriteFactory5 *This,
10485         IDWriteFontCollectionLoader *loader);
10486 
10487     HRESULT (STDMETHODCALLTYPE *CreateFontFileReference)(
10488         IDWriteFactory5 *This,
10489         const WCHAR *path,
10490         const FILETIME *writetime,
10491         IDWriteFontFile **font_file);
10492 
10493     HRESULT (STDMETHODCALLTYPE *CreateCustomFontFileReference)(
10494         IDWriteFactory5 *This,
10495         const void *reference_key,
10496         UINT32 key_size,
10497         IDWriteFontFileLoader *loader,
10498         IDWriteFontFile **font_file);
10499 
10500     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
10501         IDWriteFactory5 *This,
10502         DWRITE_FONT_FACE_TYPE facetype,
10503         UINT32 files_number,
10504         IDWriteFontFile *const *font_files,
10505         UINT32 index,
10506         DWRITE_FONT_SIMULATIONS sim_flags,
10507         IDWriteFontFace **font_face);
10508 
10509     HRESULT (STDMETHODCALLTYPE *CreateRenderingParams)(
10510         IDWriteFactory5 *This,
10511         IDWriteRenderingParams **params);
10512 
10513     HRESULT (STDMETHODCALLTYPE *CreateMonitorRenderingParams)(
10514         IDWriteFactory5 *This,
10515         HMONITOR monitor,
10516         IDWriteRenderingParams **params);
10517 
10518     HRESULT (STDMETHODCALLTYPE *CreateCustomRenderingParams)(
10519         IDWriteFactory5 *This,
10520         FLOAT gamma,
10521         FLOAT enhancedContrast,
10522         FLOAT cleartype_level,
10523         DWRITE_PIXEL_GEOMETRY geometry,
10524         DWRITE_RENDERING_MODE mode,
10525         IDWriteRenderingParams **params);
10526 
10527     HRESULT (STDMETHODCALLTYPE *RegisterFontFileLoader)(
10528         IDWriteFactory5 *This,
10529         IDWriteFontFileLoader *loader);
10530 
10531     HRESULT (STDMETHODCALLTYPE *UnregisterFontFileLoader)(
10532         IDWriteFactory5 *This,
10533         IDWriteFontFileLoader *loader);
10534 
10535     HRESULT (STDMETHODCALLTYPE *CreateTextFormat)(
10536         IDWriteFactory5 *This,
10537         const WCHAR *family_name,
10538         IDWriteFontCollection *collection,
10539         DWRITE_FONT_WEIGHT weight,
10540         DWRITE_FONT_STYLE style,
10541         DWRITE_FONT_STRETCH stretch,
10542         FLOAT size,
10543         const WCHAR *locale,
10544         IDWriteTextFormat **format);
10545 
10546     HRESULT (STDMETHODCALLTYPE *CreateTypography)(
10547         IDWriteFactory5 *This,
10548         IDWriteTypography **typography);
10549 
10550     HRESULT (STDMETHODCALLTYPE *GetGdiInterop)(
10551         IDWriteFactory5 *This,
10552         IDWriteGdiInterop **gdi_interop);
10553 
10554     HRESULT (STDMETHODCALLTYPE *CreateTextLayout)(
10555         IDWriteFactory5 *This,
10556         const WCHAR *string,
10557         UINT32 len,
10558         IDWriteTextFormat *format,
10559         FLOAT max_width,
10560         FLOAT max_height,
10561         IDWriteTextLayout **layout);
10562 
10563     HRESULT (STDMETHODCALLTYPE *CreateGdiCompatibleTextLayout)(
10564         IDWriteFactory5 *This,
10565         const WCHAR *string,
10566         UINT32 len,
10567         IDWriteTextFormat *format,
10568         FLOAT layout_width,
10569         FLOAT layout_height,
10570         FLOAT pixels_per_dip,
10571         const DWRITE_MATRIX *transform,
10572         WINBOOL use_gdi_natural,
10573         IDWriteTextLayout **layout);
10574 
10575     HRESULT (STDMETHODCALLTYPE *CreateEllipsisTrimmingSign)(
10576         IDWriteFactory5 *This,
10577         IDWriteTextFormat *format,
10578         IDWriteInlineObject **trimming_sign);
10579 
10580     HRESULT (STDMETHODCALLTYPE *CreateTextAnalyzer)(
10581         IDWriteFactory5 *This,
10582         IDWriteTextAnalyzer **analyzer);
10583 
10584     HRESULT (STDMETHODCALLTYPE *CreateNumberSubstitution)(
10585         IDWriteFactory5 *This,
10586         DWRITE_NUMBER_SUBSTITUTION_METHOD method,
10587         const WCHAR *locale,
10588         WINBOOL ignore_user_override,
10589         IDWriteNumberSubstitution **substitution);
10590 
10591     HRESULT (STDMETHODCALLTYPE *CreateGlyphRunAnalysis)(
10592         IDWriteFactory5 *This,
10593         const DWRITE_GLYPH_RUN *glyph_run,
10594         FLOAT pixels_per_dip,
10595         const DWRITE_MATRIX *transform,
10596         DWRITE_RENDERING_MODE rendering_mode,
10597         DWRITE_MEASURING_MODE measuring_mode,
10598         FLOAT baseline_x,
10599         FLOAT baseline_y,
10600         IDWriteGlyphRunAnalysis **analysis);
10601 
10602     /*** IDWriteFactory1 methods ***/
10603     HRESULT (STDMETHODCALLTYPE *GetEudcFontCollection)(
10604         IDWriteFactory5 *This,
10605         IDWriteFontCollection **collection,
10606         WINBOOL check_for_updates);
10607 
10608     HRESULT (STDMETHODCALLTYPE *IDWriteFactory1_CreateCustomRenderingParams)(
10609         IDWriteFactory5 *This,
10610         FLOAT gamma,
10611         FLOAT enhcontrast,
10612         FLOAT enhcontrast_grayscale,
10613         FLOAT cleartype_level,
10614         DWRITE_PIXEL_GEOMETRY geometry,
10615         DWRITE_RENDERING_MODE mode,
10616         IDWriteRenderingParams1 **params);
10617 
10618     /*** IDWriteFactory2 methods ***/
10619     HRESULT (STDMETHODCALLTYPE *GetSystemFontFallback)(
10620         IDWriteFactory5 *This,
10621         IDWriteFontFallback **fallback);
10622 
10623     HRESULT (STDMETHODCALLTYPE *CreateFontFallbackBuilder)(
10624         IDWriteFactory5 *This,
10625         IDWriteFontFallbackBuilder **fallbackbuilder);
10626 
10627     HRESULT (STDMETHODCALLTYPE *TranslateColorGlyphRun)(
10628         IDWriteFactory5 *This,
10629         FLOAT originX,
10630         FLOAT originY,
10631         const DWRITE_GLYPH_RUN *run,
10632         const DWRITE_GLYPH_RUN_DESCRIPTION *rundescr,
10633         DWRITE_MEASURING_MODE mode,
10634         const DWRITE_MATRIX *transform,
10635         UINT32 palette_index,
10636         IDWriteColorGlyphRunEnumerator **colorlayers);
10637 
10638     HRESULT (STDMETHODCALLTYPE *IDWriteFactory2_CreateCustomRenderingParams)(
10639         IDWriteFactory5 *This,
10640         FLOAT gamma,
10641         FLOAT contrast,
10642         FLOAT grayscalecontrast,
10643         FLOAT cleartypeLevel,
10644         DWRITE_PIXEL_GEOMETRY pixelGeometry,
10645         DWRITE_RENDERING_MODE renderingMode,
10646         DWRITE_GRID_FIT_MODE gridFitMode,
10647         IDWriteRenderingParams2 **params);
10648 
10649     HRESULT (STDMETHODCALLTYPE *IDWriteFactory2_CreateGlyphRunAnalysis)(
10650         IDWriteFactory5 *This,
10651         const DWRITE_GLYPH_RUN *run,
10652         const DWRITE_MATRIX *transform,
10653         DWRITE_RENDERING_MODE renderingMode,
10654         DWRITE_MEASURING_MODE measuringMode,
10655         DWRITE_GRID_FIT_MODE gridFitMode,
10656         DWRITE_TEXT_ANTIALIAS_MODE antialiasMode,
10657         FLOAT originX,
10658         FLOAT originY,
10659         IDWriteGlyphRunAnalysis **analysis);
10660 
10661     /*** IDWriteFactory3 methods ***/
10662     HRESULT (STDMETHODCALLTYPE *IDWriteFactory3_CreateGlyphRunAnalysis)(
10663         IDWriteFactory5 *This,
10664         const DWRITE_GLYPH_RUN *run,
10665         const DWRITE_MATRIX *transform,
10666         DWRITE_RENDERING_MODE1 rendering_mode,
10667         DWRITE_MEASURING_MODE measuring_mode,
10668         DWRITE_GRID_FIT_MODE gridfit_mode,
10669         DWRITE_TEXT_ANTIALIAS_MODE antialias_mode,
10670         FLOAT origin_x,
10671         FLOAT origin_y,
10672         IDWriteGlyphRunAnalysis **analysis);
10673 
10674     HRESULT (STDMETHODCALLTYPE *IDWriteFactory3_CreateCustomRenderingParams)(
10675         IDWriteFactory5 *This,
10676         FLOAT gamma,
10677         FLOAT enhanced_contrast,
10678         FLOAT grayscale_enhanced_contrast,
10679         FLOAT cleartype_level,
10680         DWRITE_PIXEL_GEOMETRY pixel_geometry,
10681         DWRITE_RENDERING_MODE1 rendering_mode,
10682         DWRITE_GRID_FIT_MODE gridfit_mode,
10683         IDWriteRenderingParams3 **params);
10684 
10685     HRESULT (STDMETHODCALLTYPE *CreateFontFaceReference_)(
10686         IDWriteFactory5 *This,
10687         IDWriteFontFile *file,
10688         UINT32 index,
10689         DWRITE_FONT_SIMULATIONS simulations,
10690         IDWriteFontFaceReference **reference);
10691 
10692     HRESULT (STDMETHODCALLTYPE *CreateFontFaceReference)(
10693         IDWriteFactory5 *This,
10694         const WCHAR *path,
10695         const FILETIME *writetime,
10696         UINT32 index,
10697         DWRITE_FONT_SIMULATIONS simulations,
10698         IDWriteFontFaceReference **reference);
10699 
10700     HRESULT (STDMETHODCALLTYPE *GetSystemFontSet)(
10701         IDWriteFactory5 *This,
10702         IDWriteFontSet **fontset);
10703 
10704     HRESULT (STDMETHODCALLTYPE *CreateFontSetBuilder)(
10705         IDWriteFactory5 *This,
10706         IDWriteFontSetBuilder **builder);
10707 
10708     HRESULT (STDMETHODCALLTYPE *CreateFontCollectionFromFontSet)(
10709         IDWriteFactory5 *This,
10710         IDWriteFontSet *fontset,
10711         IDWriteFontCollection1 **collection);
10712 
10713     HRESULT (STDMETHODCALLTYPE *IDWriteFactory3_GetSystemFontCollection)(
10714         IDWriteFactory5 *This,
10715         WINBOOL include_downloadable,
10716         IDWriteFontCollection1 **collection,
10717         WINBOOL check_for_updates);
10718 
10719     HRESULT (STDMETHODCALLTYPE *GetFontDownloadQueue)(
10720         IDWriteFactory5 *This,
10721         IDWriteFontDownloadQueue **queue);
10722 
10723     /*** IDWriteFactory4 methods ***/
10724     HRESULT (STDMETHODCALLTYPE *IDWriteFactory4_TranslateColorGlyphRun)(
10725         IDWriteFactory5 *This,
10726         D2D1_POINT_2F baseline_origin,
10727         const DWRITE_GLYPH_RUN *run,
10728         const DWRITE_GLYPH_RUN_DESCRIPTION *run_desc,
10729         DWRITE_GLYPH_IMAGE_FORMATS desired_formats,
10730         DWRITE_MEASURING_MODE measuring_mode,
10731         const DWRITE_MATRIX *transform,
10732         UINT32 palette,
10733         IDWriteColorGlyphRunEnumerator1 **layers);
10734 
10735     HRESULT (STDMETHODCALLTYPE *ComputeGlyphOrigins_)(
10736         IDWriteFactory5 *This,
10737         const DWRITE_GLYPH_RUN *run,
10738         D2D1_POINT_2F baseline_origin,
10739         D2D1_POINT_2F *origins);
10740 
10741     HRESULT (STDMETHODCALLTYPE *ComputeGlyphOrigins)(
10742         IDWriteFactory5 *This,
10743         const DWRITE_GLYPH_RUN *run,
10744         DWRITE_MEASURING_MODE measuring_mode,
10745         D2D1_POINT_2F baseline_origin,
10746         const DWRITE_MATRIX *transform,
10747         D2D1_POINT_2F *origins);
10748 
10749     /*** IDWriteFactory5 methods ***/
10750     HRESULT (STDMETHODCALLTYPE *IDWriteFactory5_CreateFontSetBuilder)(
10751         IDWriteFactory5 *This,
10752         IDWriteFontSetBuilder1 **fontset_builder);
10753 
10754     HRESULT (STDMETHODCALLTYPE *CreateInMemoryFontFileLoader)(
10755         IDWriteFactory5 *This,
10756         IDWriteInMemoryFontFileLoader **loader);
10757 
10758     HRESULT (STDMETHODCALLTYPE *CreateHttpFontFileLoader)(
10759         IDWriteFactory5 *This,
10760         const WCHAR *referrer_url,
10761         const WCHAR *extra_headers,
10762         IDWriteRemoteFontFileLoader **loader);
10763 
10764     DWRITE_CONTAINER_TYPE (STDMETHODCALLTYPE *AnalyzeContainerType)(
10765         IDWriteFactory5 *This,
10766         const void *data,
10767         UINT32 data_size);
10768 
10769     HRESULT (STDMETHODCALLTYPE *UnpackFontFile)(
10770         IDWriteFactory5 *This,
10771         DWRITE_CONTAINER_TYPE container_type,
10772         const void *data,
10773         UINT32 data_size,
10774         IDWriteFontFileStream **stream);
10775 
10776     END_INTERFACE
10777 } IDWriteFactory5Vtbl;
10778 
10779 interface IDWriteFactory5 {
10780     CONST_VTBL IDWriteFactory5Vtbl* lpVtbl;
10781 };
10782 
10783 #ifdef COBJMACROS
10784 #ifndef WIDL_C_INLINE_WRAPPERS
10785 /*** IUnknown methods ***/
10786 #define IDWriteFactory5_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
10787 #define IDWriteFactory5_AddRef(This) (This)->lpVtbl->AddRef(This)
10788 #define IDWriteFactory5_Release(This) (This)->lpVtbl->Release(This)
10789 /*** IDWriteFactory methods ***/
10790 #define IDWriteFactory5_CreateCustomFontCollection(This,loader,key,key_size,collection) (This)->lpVtbl->CreateCustomFontCollection(This,loader,key,key_size,collection)
10791 #define IDWriteFactory5_RegisterFontCollectionLoader(This,loader) (This)->lpVtbl->RegisterFontCollectionLoader(This,loader)
10792 #define IDWriteFactory5_UnregisterFontCollectionLoader(This,loader) (This)->lpVtbl->UnregisterFontCollectionLoader(This,loader)
10793 #define IDWriteFactory5_CreateFontFileReference(This,path,writetime,font_file) (This)->lpVtbl->CreateFontFileReference(This,path,writetime,font_file)
10794 #define IDWriteFactory5_CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file) (This)->lpVtbl->CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file)
10795 #define IDWriteFactory5_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)
10796 #define IDWriteFactory5_CreateRenderingParams(This,params) (This)->lpVtbl->CreateRenderingParams(This,params)
10797 #define IDWriteFactory5_CreateMonitorRenderingParams(This,monitor,params) (This)->lpVtbl->CreateMonitorRenderingParams(This,monitor,params)
10798 #define IDWriteFactory5_RegisterFontFileLoader(This,loader) (This)->lpVtbl->RegisterFontFileLoader(This,loader)
10799 #define IDWriteFactory5_UnregisterFontFileLoader(This,loader) (This)->lpVtbl->UnregisterFontFileLoader(This,loader)
10800 #define IDWriteFactory5_CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format) (This)->lpVtbl->CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format)
10801 #define IDWriteFactory5_CreateTypography(This,typography) (This)->lpVtbl->CreateTypography(This,typography)
10802 #define IDWriteFactory5_GetGdiInterop(This,gdi_interop) (This)->lpVtbl->GetGdiInterop(This,gdi_interop)
10803 #define IDWriteFactory5_CreateTextLayout(This,string,len,format,max_width,max_height,layout) (This)->lpVtbl->CreateTextLayout(This,string,len,format,max_width,max_height,layout)
10804 #define IDWriteFactory5_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)
10805 #define IDWriteFactory5_CreateEllipsisTrimmingSign(This,format,trimming_sign) (This)->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign)
10806 #define IDWriteFactory5_CreateTextAnalyzer(This,analyzer) (This)->lpVtbl->CreateTextAnalyzer(This,analyzer)
10807 #define IDWriteFactory5_CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution) (This)->lpVtbl->CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution)
10808 /*** IDWriteFactory1 methods ***/
10809 #define IDWriteFactory5_GetEudcFontCollection(This,collection,check_for_updates) (This)->lpVtbl->GetEudcFontCollection(This,collection,check_for_updates)
10810 /*** IDWriteFactory2 methods ***/
10811 #define IDWriteFactory5_GetSystemFontFallback(This,fallback) (This)->lpVtbl->GetSystemFontFallback(This,fallback)
10812 #define IDWriteFactory5_CreateFontFallbackBuilder(This,fallbackbuilder) (This)->lpVtbl->CreateFontFallbackBuilder(This,fallbackbuilder)
10813 /*** IDWriteFactory3 methods ***/
10814 #define IDWriteFactory5_CreateGlyphRunAnalysis(This,run,transform,rendering_mode,measuring_mode,gridfit_mode,antialias_mode,origin_x,origin_y,analysis) (This)->lpVtbl->IDWriteFactory3_CreateGlyphRunAnalysis(This,run,transform,rendering_mode,measuring_mode,gridfit_mode,antialias_mode,origin_x,origin_y,analysis)
10815 #define IDWriteFactory5_CreateCustomRenderingParams(This,gamma,enhanced_contrast,grayscale_enhanced_contrast,cleartype_level,pixel_geometry,rendering_mode,gridfit_mode,params) (This)->lpVtbl->IDWriteFactory3_CreateCustomRenderingParams(This,gamma,enhanced_contrast,grayscale_enhanced_contrast,cleartype_level,pixel_geometry,rendering_mode,gridfit_mode,params)
10816 #define IDWriteFactory5_CreateFontFaceReference_(This,file,index,simulations,reference) (This)->lpVtbl->CreateFontFaceReference_(This,file,index,simulations,reference)
10817 #define IDWriteFactory5_CreateFontFaceReference(This,path,writetime,index,simulations,reference) (This)->lpVtbl->CreateFontFaceReference(This,path,writetime,index,simulations,reference)
10818 #define IDWriteFactory5_GetSystemFontSet(This,fontset) (This)->lpVtbl->GetSystemFontSet(This,fontset)
10819 #define IDWriteFactory5_CreateFontCollectionFromFontSet(This,fontset,collection) (This)->lpVtbl->CreateFontCollectionFromFontSet(This,fontset,collection)
10820 #define IDWriteFactory5_GetSystemFontCollection(This,include_downloadable,collection,check_for_updates) (This)->lpVtbl->IDWriteFactory3_GetSystemFontCollection(This,include_downloadable,collection,check_for_updates)
10821 #define IDWriteFactory5_GetFontDownloadQueue(This,queue) (This)->lpVtbl->GetFontDownloadQueue(This,queue)
10822 /*** IDWriteFactory4 methods ***/
10823 #define IDWriteFactory5_TranslateColorGlyphRun(This,baseline_origin,run,run_desc,desired_formats,measuring_mode,transform,palette,layers) (This)->lpVtbl->IDWriteFactory4_TranslateColorGlyphRun(This,baseline_origin,run,run_desc,desired_formats,measuring_mode,transform,palette,layers)
10824 #define IDWriteFactory5_ComputeGlyphOrigins_(This,run,baseline_origin,origins) (This)->lpVtbl->ComputeGlyphOrigins_(This,run,baseline_origin,origins)
10825 #define IDWriteFactory5_ComputeGlyphOrigins(This,run,measuring_mode,baseline_origin,transform,origins) (This)->lpVtbl->ComputeGlyphOrigins(This,run,measuring_mode,baseline_origin,transform,origins)
10826 /*** IDWriteFactory5 methods ***/
10827 #define IDWriteFactory5_CreateFontSetBuilder(This,fontset_builder) (This)->lpVtbl->IDWriteFactory5_CreateFontSetBuilder(This,fontset_builder)
10828 #define IDWriteFactory5_CreateInMemoryFontFileLoader(This,loader) (This)->lpVtbl->CreateInMemoryFontFileLoader(This,loader)
10829 #define IDWriteFactory5_CreateHttpFontFileLoader(This,referrer_url,extra_headers,loader) (This)->lpVtbl->CreateHttpFontFileLoader(This,referrer_url,extra_headers,loader)
10830 #define IDWriteFactory5_AnalyzeContainerType(This,data,data_size) (This)->lpVtbl->AnalyzeContainerType(This,data,data_size)
10831 #define IDWriteFactory5_UnpackFontFile(This,container_type,data,data_size,stream) (This)->lpVtbl->UnpackFontFile(This,container_type,data,data_size,stream)
10832 #else
10833 /*** IUnknown methods ***/
10834 static FORCEINLINE HRESULT IDWriteFactory5_QueryInterface(IDWriteFactory5* This,REFIID riid,void **ppvObject) {
10835     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
10836 }
10837 static FORCEINLINE ULONG IDWriteFactory5_AddRef(IDWriteFactory5* This) {
10838     return This->lpVtbl->AddRef(This);
10839 }
10840 static FORCEINLINE ULONG IDWriteFactory5_Release(IDWriteFactory5* This) {
10841     return This->lpVtbl->Release(This);
10842 }
10843 /*** IDWriteFactory methods ***/
10844 static FORCEINLINE HRESULT IDWriteFactory5_CreateCustomFontCollection(IDWriteFactory5* This,IDWriteFontCollectionLoader *loader,const void *key,UINT32 key_size,IDWriteFontCollection **collection) {
10845     return This->lpVtbl->CreateCustomFontCollection(This,loader,key,key_size,collection);
10846 }
10847 static FORCEINLINE HRESULT IDWriteFactory5_RegisterFontCollectionLoader(IDWriteFactory5* This,IDWriteFontCollectionLoader *loader) {
10848     return This->lpVtbl->RegisterFontCollectionLoader(This,loader);
10849 }
10850 static FORCEINLINE HRESULT IDWriteFactory5_UnregisterFontCollectionLoader(IDWriteFactory5* This,IDWriteFontCollectionLoader *loader) {
10851     return This->lpVtbl->UnregisterFontCollectionLoader(This,loader);
10852 }
10853 static FORCEINLINE HRESULT IDWriteFactory5_CreateFontFileReference(IDWriteFactory5* This,const WCHAR *path,const FILETIME *writetime,IDWriteFontFile **font_file) {
10854     return This->lpVtbl->CreateFontFileReference(This,path,writetime,font_file);
10855 }
10856 static FORCEINLINE HRESULT IDWriteFactory5_CreateCustomFontFileReference(IDWriteFactory5* This,const void *reference_key,UINT32 key_size,IDWriteFontFileLoader *loader,IDWriteFontFile **font_file) {
10857     return This->lpVtbl->CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file);
10858 }
10859 static FORCEINLINE HRESULT IDWriteFactory5_CreateFontFace(IDWriteFactory5* This,DWRITE_FONT_FACE_TYPE facetype,UINT32 files_number,IDWriteFontFile *const *font_files,UINT32 index,DWRITE_FONT_SIMULATIONS sim_flags,IDWriteFontFace **font_face) {
10860     return This->lpVtbl->CreateFontFace(This,facetype,files_number,font_files,index,sim_flags,font_face);
10861 }
10862 static FORCEINLINE HRESULT IDWriteFactory5_CreateRenderingParams(IDWriteFactory5* This,IDWriteRenderingParams **params) {
10863     return This->lpVtbl->CreateRenderingParams(This,params);
10864 }
10865 static FORCEINLINE HRESULT IDWriteFactory5_CreateMonitorRenderingParams(IDWriteFactory5* This,HMONITOR monitor,IDWriteRenderingParams **params) {
10866     return This->lpVtbl->CreateMonitorRenderingParams(This,monitor,params);
10867 }
10868 static FORCEINLINE HRESULT IDWriteFactory5_RegisterFontFileLoader(IDWriteFactory5* This,IDWriteFontFileLoader *loader) {
10869     return This->lpVtbl->RegisterFontFileLoader(This,loader);
10870 }
10871 static FORCEINLINE HRESULT IDWriteFactory5_UnregisterFontFileLoader(IDWriteFactory5* This,IDWriteFontFileLoader *loader) {
10872     return This->lpVtbl->UnregisterFontFileLoader(This,loader);
10873 }
10874 static FORCEINLINE HRESULT IDWriteFactory5_CreateTextFormat(IDWriteFactory5* 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) {
10875     return This->lpVtbl->CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format);
10876 }
10877 static FORCEINLINE HRESULT IDWriteFactory5_CreateTypography(IDWriteFactory5* This,IDWriteTypography **typography) {
10878     return This->lpVtbl->CreateTypography(This,typography);
10879 }
10880 static FORCEINLINE HRESULT IDWriteFactory5_GetGdiInterop(IDWriteFactory5* This,IDWriteGdiInterop **gdi_interop) {
10881     return This->lpVtbl->GetGdiInterop(This,gdi_interop);
10882 }
10883 static FORCEINLINE HRESULT IDWriteFactory5_CreateTextLayout(IDWriteFactory5* This,const WCHAR *string,UINT32 len,IDWriteTextFormat *format,FLOAT max_width,FLOAT max_height,IDWriteTextLayout **layout) {
10884     return This->lpVtbl->CreateTextLayout(This,string,len,format,max_width,max_height,layout);
10885 }
10886 static FORCEINLINE HRESULT IDWriteFactory5_CreateGdiCompatibleTextLayout(IDWriteFactory5* 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) {
10887     return This->lpVtbl->CreateGdiCompatibleTextLayout(This,string,len,format,layout_width,layout_height,pixels_per_dip,transform,use_gdi_natural,layout);
10888 }
10889 static FORCEINLINE HRESULT IDWriteFactory5_CreateEllipsisTrimmingSign(IDWriteFactory5* This,IDWriteTextFormat *format,IDWriteInlineObject **trimming_sign) {
10890     return This->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign);
10891 }
10892 static FORCEINLINE HRESULT IDWriteFactory5_CreateTextAnalyzer(IDWriteFactory5* This,IDWriteTextAnalyzer **analyzer) {
10893     return This->lpVtbl->CreateTextAnalyzer(This,analyzer);
10894 }
10895 static FORCEINLINE HRESULT IDWriteFactory5_CreateNumberSubstitution(IDWriteFactory5* This,DWRITE_NUMBER_SUBSTITUTION_METHOD method,const WCHAR *locale,WINBOOL ignore_user_override,IDWriteNumberSubstitution **substitution) {
10896     return This->lpVtbl->CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution);
10897 }
10898 /*** IDWriteFactory1 methods ***/
10899 static FORCEINLINE HRESULT IDWriteFactory5_GetEudcFontCollection(IDWriteFactory5* This,IDWriteFontCollection **collection,WINBOOL check_for_updates) {
10900     return This->lpVtbl->GetEudcFontCollection(This,collection,check_for_updates);
10901 }
10902 /*** IDWriteFactory2 methods ***/
10903 static FORCEINLINE HRESULT IDWriteFactory5_GetSystemFontFallback(IDWriteFactory5* This,IDWriteFontFallback **fallback) {
10904     return This->lpVtbl->GetSystemFontFallback(This,fallback);
10905 }
10906 static FORCEINLINE HRESULT IDWriteFactory5_CreateFontFallbackBuilder(IDWriteFactory5* This,IDWriteFontFallbackBuilder **fallbackbuilder) {
10907     return This->lpVtbl->CreateFontFallbackBuilder(This,fallbackbuilder);
10908 }
10909 /*** IDWriteFactory3 methods ***/
10910 static FORCEINLINE HRESULT IDWriteFactory5_CreateGlyphRunAnalysis(IDWriteFactory5* This,const DWRITE_GLYPH_RUN *run,const DWRITE_MATRIX *transform,DWRITE_RENDERING_MODE1 rendering_mode,DWRITE_MEASURING_MODE measuring_mode,DWRITE_GRID_FIT_MODE gridfit_mode,DWRITE_TEXT_ANTIALIAS_MODE antialias_mode,FLOAT origin_x,FLOAT origin_y,IDWriteGlyphRunAnalysis **analysis) {
10911     return This->lpVtbl->IDWriteFactory3_CreateGlyphRunAnalysis(This,run,transform,rendering_mode,measuring_mode,gridfit_mode,antialias_mode,origin_x,origin_y,analysis);
10912 }
10913 static FORCEINLINE HRESULT IDWriteFactory5_CreateCustomRenderingParams(IDWriteFactory5* This,FLOAT gamma,FLOAT enhanced_contrast,FLOAT grayscale_enhanced_contrast,FLOAT cleartype_level,DWRITE_PIXEL_GEOMETRY pixel_geometry,DWRITE_RENDERING_MODE1 rendering_mode,DWRITE_GRID_FIT_MODE gridfit_mode,IDWriteRenderingParams3 **params) {
10914     return This->lpVtbl->IDWriteFactory3_CreateCustomRenderingParams(This,gamma,enhanced_contrast,grayscale_enhanced_contrast,cleartype_level,pixel_geometry,rendering_mode,gridfit_mode,params);
10915 }
10916 static FORCEINLINE HRESULT IDWriteFactory5_CreateFontFaceReference_(IDWriteFactory5* This,IDWriteFontFile *file,UINT32 index,DWRITE_FONT_SIMULATIONS simulations,IDWriteFontFaceReference **reference) {
10917     return This->lpVtbl->CreateFontFaceReference_(This,file,index,simulations,reference);
10918 }
10919 static FORCEINLINE HRESULT IDWriteFactory5_CreateFontFaceReference(IDWriteFactory5* This,const WCHAR *path,const FILETIME *writetime,UINT32 index,DWRITE_FONT_SIMULATIONS simulations,IDWriteFontFaceReference **reference) {
10920     return This->lpVtbl->CreateFontFaceReference(This,path,writetime,index,simulations,reference);
10921 }
10922 static FORCEINLINE HRESULT IDWriteFactory5_GetSystemFontSet(IDWriteFactory5* This,IDWriteFontSet **fontset) {
10923     return This->lpVtbl->GetSystemFontSet(This,fontset);
10924 }
10925 static FORCEINLINE HRESULT IDWriteFactory5_CreateFontCollectionFromFontSet(IDWriteFactory5* This,IDWriteFontSet *fontset,IDWriteFontCollection1 **collection) {
10926     return This->lpVtbl->CreateFontCollectionFromFontSet(This,fontset,collection);
10927 }
10928 static FORCEINLINE HRESULT IDWriteFactory5_GetSystemFontCollection(IDWriteFactory5* This,WINBOOL include_downloadable,IDWriteFontCollection1 **collection,WINBOOL check_for_updates) {
10929     return This->lpVtbl->IDWriteFactory3_GetSystemFontCollection(This,include_downloadable,collection,check_for_updates);
10930 }
10931 static FORCEINLINE HRESULT IDWriteFactory5_GetFontDownloadQueue(IDWriteFactory5* This,IDWriteFontDownloadQueue **queue) {
10932     return This->lpVtbl->GetFontDownloadQueue(This,queue);
10933 }
10934 /*** IDWriteFactory4 methods ***/
10935 static FORCEINLINE HRESULT IDWriteFactory5_TranslateColorGlyphRun(IDWriteFactory5* This,D2D1_POINT_2F baseline_origin,const DWRITE_GLYPH_RUN *run,const DWRITE_GLYPH_RUN_DESCRIPTION *run_desc,DWRITE_GLYPH_IMAGE_FORMATS desired_formats,DWRITE_MEASURING_MODE measuring_mode,const DWRITE_MATRIX *transform,UINT32 palette,IDWriteColorGlyphRunEnumerator1 **layers) {
10936     return This->lpVtbl->IDWriteFactory4_TranslateColorGlyphRun(This,baseline_origin,run,run_desc,desired_formats,measuring_mode,transform,palette,layers);
10937 }
10938 static FORCEINLINE HRESULT IDWriteFactory5_ComputeGlyphOrigins_(IDWriteFactory5* This,const DWRITE_GLYPH_RUN *run,D2D1_POINT_2F baseline_origin,D2D1_POINT_2F *origins) {
10939     return This->lpVtbl->ComputeGlyphOrigins_(This,run,baseline_origin,origins);
10940 }
10941 static FORCEINLINE HRESULT IDWriteFactory5_ComputeGlyphOrigins(IDWriteFactory5* This,const DWRITE_GLYPH_RUN *run,DWRITE_MEASURING_MODE measuring_mode,D2D1_POINT_2F baseline_origin,const DWRITE_MATRIX *transform,D2D1_POINT_2F *origins) {
10942     return This->lpVtbl->ComputeGlyphOrigins(This,run,measuring_mode,baseline_origin,transform,origins);
10943 }
10944 /*** IDWriteFactory5 methods ***/
10945 static FORCEINLINE HRESULT IDWriteFactory5_CreateFontSetBuilder(IDWriteFactory5* This,IDWriteFontSetBuilder1 **fontset_builder) {
10946     return This->lpVtbl->IDWriteFactory5_CreateFontSetBuilder(This,fontset_builder);
10947 }
10948 static FORCEINLINE HRESULT IDWriteFactory5_CreateInMemoryFontFileLoader(IDWriteFactory5* This,IDWriteInMemoryFontFileLoader **loader) {
10949     return This->lpVtbl->CreateInMemoryFontFileLoader(This,loader);
10950 }
10951 static FORCEINLINE HRESULT IDWriteFactory5_CreateHttpFontFileLoader(IDWriteFactory5* This,const WCHAR *referrer_url,const WCHAR *extra_headers,IDWriteRemoteFontFileLoader **loader) {
10952     return This->lpVtbl->CreateHttpFontFileLoader(This,referrer_url,extra_headers,loader);
10953 }
10954 static FORCEINLINE DWRITE_CONTAINER_TYPE IDWriteFactory5_AnalyzeContainerType(IDWriteFactory5* This,const void *data,UINT32 data_size) {
10955     return This->lpVtbl->AnalyzeContainerType(This,data,data_size);
10956 }
10957 static FORCEINLINE HRESULT IDWriteFactory5_UnpackFontFile(IDWriteFactory5* This,DWRITE_CONTAINER_TYPE container_type,const void *data,UINT32 data_size,IDWriteFontFileStream **stream) {
10958     return This->lpVtbl->UnpackFontFile(This,container_type,data,data_size,stream);
10959 }
10960 #endif
10961 #endif
10962 
10963 #endif
10964 
10965 
10966 #endif  /* __IDWriteFactory5_INTERFACE_DEFINED__ */
10967 
10968 /*****************************************************************************
10969  * IDWriteFactory6 interface
10970  */
10971 #ifndef __IDWriteFactory6_INTERFACE_DEFINED__
10972 #define __IDWriteFactory6_INTERFACE_DEFINED__
10973 
10974 DEFINE_GUID(IID_IDWriteFactory6, 0xf3744d80, 0x21f7, 0x42eb, 0xb3,0x5d, 0x99,0x5b,0xc7,0x2f,0xc2,0x23);
10975 #if defined(__cplusplus) && !defined(CINTERFACE)
10976 MIDL_INTERFACE("f3744d80-21f7-42eb-b35d-995bc72fc223")
10977 IDWriteFactory6 : public IDWriteFactory5
10978 {
10979     virtual HRESULT STDMETHODCALLTYPE CreateFontFaceReference(
10980         IDWriteFontFile *file,
10981         UINT32 face_index,
10982         DWRITE_FONT_SIMULATIONS simulations,
10983         const DWRITE_FONT_AXIS_VALUE *axis_values,
10984         UINT32 num_axis,
10985         IDWriteFontFaceReference1 **face_ref) = 0;
10986 
10987     virtual HRESULT STDMETHODCALLTYPE CreateFontResource(
10988         IDWriteFontFile *file,
10989         UINT32 face_index,
10990         IDWriteFontResource **resource) = 0;
10991 
10992     virtual HRESULT STDMETHODCALLTYPE GetSystemFontSet(
10993         WINBOOL include_downloadable,
10994         IDWriteFontSet1 **fontset) = 0;
10995 
10996     virtual HRESULT STDMETHODCALLTYPE GetSystemFontCollection(
10997         WINBOOL include_downloadable,
10998         DWRITE_FONT_FAMILY_MODEL family_model,
10999         IDWriteFontCollection2 **collection) = 0;
11000 
11001     virtual HRESULT STDMETHODCALLTYPE CreateFontCollectionFromFontSet(
11002         IDWriteFontSet *fontset,
11003         DWRITE_FONT_FAMILY_MODEL family_model,
11004         IDWriteFontCollection2 **collection) = 0;
11005 
11006     virtual HRESULT STDMETHODCALLTYPE CreateFontSetBuilder(
11007         IDWriteFontSetBuilder2 **builder) = 0;
11008 
11009     virtual HRESULT STDMETHODCALLTYPE CreateTextFormat(
11010         const WCHAR *familyname,
11011         IDWriteFontCollection *collection,
11012         const DWRITE_FONT_AXIS_VALUE *axis_values,
11013         UINT32 num_axis,
11014         FLOAT fontsize,
11015         const WCHAR *localename,
11016         IDWriteTextFormat3 **format) = 0;
11017 
11018 };
11019 #ifdef __CRT_UUID_DECL
11020 __CRT_UUID_DECL(IDWriteFactory6, 0xf3744d80, 0x21f7, 0x42eb, 0xb3,0x5d, 0x99,0x5b,0xc7,0x2f,0xc2,0x23)
11021 #endif
11022 #else
11023 typedef struct IDWriteFactory6Vtbl {
11024     BEGIN_INTERFACE
11025 
11026     /*** IUnknown methods ***/
11027     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
11028         IDWriteFactory6 *This,
11029         REFIID riid,
11030         void **ppvObject);
11031 
11032     ULONG (STDMETHODCALLTYPE *AddRef)(
11033         IDWriteFactory6 *This);
11034 
11035     ULONG (STDMETHODCALLTYPE *Release)(
11036         IDWriteFactory6 *This);
11037 
11038     /*** IDWriteFactory methods ***/
11039     HRESULT (STDMETHODCALLTYPE *GetSystemFontCollection)(
11040         IDWriteFactory6 *This,
11041         IDWriteFontCollection **collection,
11042         WINBOOL check_for_updates);
11043 
11044     HRESULT (STDMETHODCALLTYPE *CreateCustomFontCollection)(
11045         IDWriteFactory6 *This,
11046         IDWriteFontCollectionLoader *loader,
11047         const void *key,
11048         UINT32 key_size,
11049         IDWriteFontCollection **collection);
11050 
11051     HRESULT (STDMETHODCALLTYPE *RegisterFontCollectionLoader)(
11052         IDWriteFactory6 *This,
11053         IDWriteFontCollectionLoader *loader);
11054 
11055     HRESULT (STDMETHODCALLTYPE *UnregisterFontCollectionLoader)(
11056         IDWriteFactory6 *This,
11057         IDWriteFontCollectionLoader *loader);
11058 
11059     HRESULT (STDMETHODCALLTYPE *CreateFontFileReference)(
11060         IDWriteFactory6 *This,
11061         const WCHAR *path,
11062         const FILETIME *writetime,
11063         IDWriteFontFile **font_file);
11064 
11065     HRESULT (STDMETHODCALLTYPE *CreateCustomFontFileReference)(
11066         IDWriteFactory6 *This,
11067         const void *reference_key,
11068         UINT32 key_size,
11069         IDWriteFontFileLoader *loader,
11070         IDWriteFontFile **font_file);
11071 
11072     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
11073         IDWriteFactory6 *This,
11074         DWRITE_FONT_FACE_TYPE facetype,
11075         UINT32 files_number,
11076         IDWriteFontFile *const *font_files,
11077         UINT32 index,
11078         DWRITE_FONT_SIMULATIONS sim_flags,
11079         IDWriteFontFace **font_face);
11080 
11081     HRESULT (STDMETHODCALLTYPE *CreateRenderingParams)(
11082         IDWriteFactory6 *This,
11083         IDWriteRenderingParams **params);
11084 
11085     HRESULT (STDMETHODCALLTYPE *CreateMonitorRenderingParams)(
11086         IDWriteFactory6 *This,
11087         HMONITOR monitor,
11088         IDWriteRenderingParams **params);
11089 
11090     HRESULT (STDMETHODCALLTYPE *CreateCustomRenderingParams)(
11091         IDWriteFactory6 *This,
11092         FLOAT gamma,
11093         FLOAT enhancedContrast,
11094         FLOAT cleartype_level,
11095         DWRITE_PIXEL_GEOMETRY geometry,
11096         DWRITE_RENDERING_MODE mode,
11097         IDWriteRenderingParams **params);
11098 
11099     HRESULT (STDMETHODCALLTYPE *RegisterFontFileLoader)(
11100         IDWriteFactory6 *This,
11101         IDWriteFontFileLoader *loader);
11102 
11103     HRESULT (STDMETHODCALLTYPE *UnregisterFontFileLoader)(
11104         IDWriteFactory6 *This,
11105         IDWriteFontFileLoader *loader);
11106 
11107     HRESULT (STDMETHODCALLTYPE *CreateTextFormat)(
11108         IDWriteFactory6 *This,
11109         const WCHAR *family_name,
11110         IDWriteFontCollection *collection,
11111         DWRITE_FONT_WEIGHT weight,
11112         DWRITE_FONT_STYLE style,
11113         DWRITE_FONT_STRETCH stretch,
11114         FLOAT size,
11115         const WCHAR *locale,
11116         IDWriteTextFormat **format);
11117 
11118     HRESULT (STDMETHODCALLTYPE *CreateTypography)(
11119         IDWriteFactory6 *This,
11120         IDWriteTypography **typography);
11121 
11122     HRESULT (STDMETHODCALLTYPE *GetGdiInterop)(
11123         IDWriteFactory6 *This,
11124         IDWriteGdiInterop **gdi_interop);
11125 
11126     HRESULT (STDMETHODCALLTYPE *CreateTextLayout)(
11127         IDWriteFactory6 *This,
11128         const WCHAR *string,
11129         UINT32 len,
11130         IDWriteTextFormat *format,
11131         FLOAT max_width,
11132         FLOAT max_height,
11133         IDWriteTextLayout **layout);
11134 
11135     HRESULT (STDMETHODCALLTYPE *CreateGdiCompatibleTextLayout)(
11136         IDWriteFactory6 *This,
11137         const WCHAR *string,
11138         UINT32 len,
11139         IDWriteTextFormat *format,
11140         FLOAT layout_width,
11141         FLOAT layout_height,
11142         FLOAT pixels_per_dip,
11143         const DWRITE_MATRIX *transform,
11144         WINBOOL use_gdi_natural,
11145         IDWriteTextLayout **layout);
11146 
11147     HRESULT (STDMETHODCALLTYPE *CreateEllipsisTrimmingSign)(
11148         IDWriteFactory6 *This,
11149         IDWriteTextFormat *format,
11150         IDWriteInlineObject **trimming_sign);
11151 
11152     HRESULT (STDMETHODCALLTYPE *CreateTextAnalyzer)(
11153         IDWriteFactory6 *This,
11154         IDWriteTextAnalyzer **analyzer);
11155 
11156     HRESULT (STDMETHODCALLTYPE *CreateNumberSubstitution)(
11157         IDWriteFactory6 *This,
11158         DWRITE_NUMBER_SUBSTITUTION_METHOD method,
11159         const WCHAR *locale,
11160         WINBOOL ignore_user_override,
11161         IDWriteNumberSubstitution **substitution);
11162 
11163     HRESULT (STDMETHODCALLTYPE *CreateGlyphRunAnalysis)(
11164         IDWriteFactory6 *This,
11165         const DWRITE_GLYPH_RUN *glyph_run,
11166         FLOAT pixels_per_dip,
11167         const DWRITE_MATRIX *transform,
11168         DWRITE_RENDERING_MODE rendering_mode,
11169         DWRITE_MEASURING_MODE measuring_mode,
11170         FLOAT baseline_x,
11171         FLOAT baseline_y,
11172         IDWriteGlyphRunAnalysis **analysis);
11173 
11174     /*** IDWriteFactory1 methods ***/
11175     HRESULT (STDMETHODCALLTYPE *GetEudcFontCollection)(
11176         IDWriteFactory6 *This,
11177         IDWriteFontCollection **collection,
11178         WINBOOL check_for_updates);
11179 
11180     HRESULT (STDMETHODCALLTYPE *IDWriteFactory1_CreateCustomRenderingParams)(
11181         IDWriteFactory6 *This,
11182         FLOAT gamma,
11183         FLOAT enhcontrast,
11184         FLOAT enhcontrast_grayscale,
11185         FLOAT cleartype_level,
11186         DWRITE_PIXEL_GEOMETRY geometry,
11187         DWRITE_RENDERING_MODE mode,
11188         IDWriteRenderingParams1 **params);
11189 
11190     /*** IDWriteFactory2 methods ***/
11191     HRESULT (STDMETHODCALLTYPE *GetSystemFontFallback)(
11192         IDWriteFactory6 *This,
11193         IDWriteFontFallback **fallback);
11194 
11195     HRESULT (STDMETHODCALLTYPE *CreateFontFallbackBuilder)(
11196         IDWriteFactory6 *This,
11197         IDWriteFontFallbackBuilder **fallbackbuilder);
11198 
11199     HRESULT (STDMETHODCALLTYPE *TranslateColorGlyphRun)(
11200         IDWriteFactory6 *This,
11201         FLOAT originX,
11202         FLOAT originY,
11203         const DWRITE_GLYPH_RUN *run,
11204         const DWRITE_GLYPH_RUN_DESCRIPTION *rundescr,
11205         DWRITE_MEASURING_MODE mode,
11206         const DWRITE_MATRIX *transform,
11207         UINT32 palette_index,
11208         IDWriteColorGlyphRunEnumerator **colorlayers);
11209 
11210     HRESULT (STDMETHODCALLTYPE *IDWriteFactory2_CreateCustomRenderingParams)(
11211         IDWriteFactory6 *This,
11212         FLOAT gamma,
11213         FLOAT contrast,
11214         FLOAT grayscalecontrast,
11215         FLOAT cleartypeLevel,
11216         DWRITE_PIXEL_GEOMETRY pixelGeometry,
11217         DWRITE_RENDERING_MODE renderingMode,
11218         DWRITE_GRID_FIT_MODE gridFitMode,
11219         IDWriteRenderingParams2 **params);
11220 
11221     HRESULT (STDMETHODCALLTYPE *IDWriteFactory2_CreateGlyphRunAnalysis)(
11222         IDWriteFactory6 *This,
11223         const DWRITE_GLYPH_RUN *run,
11224         const DWRITE_MATRIX *transform,
11225         DWRITE_RENDERING_MODE renderingMode,
11226         DWRITE_MEASURING_MODE measuringMode,
11227         DWRITE_GRID_FIT_MODE gridFitMode,
11228         DWRITE_TEXT_ANTIALIAS_MODE antialiasMode,
11229         FLOAT originX,
11230         FLOAT originY,
11231         IDWriteGlyphRunAnalysis **analysis);
11232 
11233     /*** IDWriteFactory3 methods ***/
11234     HRESULT (STDMETHODCALLTYPE *IDWriteFactory3_CreateGlyphRunAnalysis)(
11235         IDWriteFactory6 *This,
11236         const DWRITE_GLYPH_RUN *run,
11237         const DWRITE_MATRIX *transform,
11238         DWRITE_RENDERING_MODE1 rendering_mode,
11239         DWRITE_MEASURING_MODE measuring_mode,
11240         DWRITE_GRID_FIT_MODE gridfit_mode,
11241         DWRITE_TEXT_ANTIALIAS_MODE antialias_mode,
11242         FLOAT origin_x,
11243         FLOAT origin_y,
11244         IDWriteGlyphRunAnalysis **analysis);
11245 
11246     HRESULT (STDMETHODCALLTYPE *IDWriteFactory3_CreateCustomRenderingParams)(
11247         IDWriteFactory6 *This,
11248         FLOAT gamma,
11249         FLOAT enhanced_contrast,
11250         FLOAT grayscale_enhanced_contrast,
11251         FLOAT cleartype_level,
11252         DWRITE_PIXEL_GEOMETRY pixel_geometry,
11253         DWRITE_RENDERING_MODE1 rendering_mode,
11254         DWRITE_GRID_FIT_MODE gridfit_mode,
11255         IDWriteRenderingParams3 **params);
11256 
11257     HRESULT (STDMETHODCALLTYPE *CreateFontFaceReference_)(
11258         IDWriteFactory6 *This,
11259         IDWriteFontFile *file,
11260         UINT32 index,
11261         DWRITE_FONT_SIMULATIONS simulations,
11262         IDWriteFontFaceReference **reference);
11263 
11264     HRESULT (STDMETHODCALLTYPE *CreateFontFaceReference)(
11265         IDWriteFactory6 *This,
11266         const WCHAR *path,
11267         const FILETIME *writetime,
11268         UINT32 index,
11269         DWRITE_FONT_SIMULATIONS simulations,
11270         IDWriteFontFaceReference **reference);
11271 
11272     HRESULT (STDMETHODCALLTYPE *GetSystemFontSet)(
11273         IDWriteFactory6 *This,
11274         IDWriteFontSet **fontset);
11275 
11276     HRESULT (STDMETHODCALLTYPE *CreateFontSetBuilder)(
11277         IDWriteFactory6 *This,
11278         IDWriteFontSetBuilder **builder);
11279 
11280     HRESULT (STDMETHODCALLTYPE *CreateFontCollectionFromFontSet)(
11281         IDWriteFactory6 *This,
11282         IDWriteFontSet *fontset,
11283         IDWriteFontCollection1 **collection);
11284 
11285     HRESULT (STDMETHODCALLTYPE *IDWriteFactory3_GetSystemFontCollection)(
11286         IDWriteFactory6 *This,
11287         WINBOOL include_downloadable,
11288         IDWriteFontCollection1 **collection,
11289         WINBOOL check_for_updates);
11290 
11291     HRESULT (STDMETHODCALLTYPE *GetFontDownloadQueue)(
11292         IDWriteFactory6 *This,
11293         IDWriteFontDownloadQueue **queue);
11294 
11295     /*** IDWriteFactory4 methods ***/
11296     HRESULT (STDMETHODCALLTYPE *IDWriteFactory4_TranslateColorGlyphRun)(
11297         IDWriteFactory6 *This,
11298         D2D1_POINT_2F baseline_origin,
11299         const DWRITE_GLYPH_RUN *run,
11300         const DWRITE_GLYPH_RUN_DESCRIPTION *run_desc,
11301         DWRITE_GLYPH_IMAGE_FORMATS desired_formats,
11302         DWRITE_MEASURING_MODE measuring_mode,
11303         const DWRITE_MATRIX *transform,
11304         UINT32 palette,
11305         IDWriteColorGlyphRunEnumerator1 **layers);
11306 
11307     HRESULT (STDMETHODCALLTYPE *ComputeGlyphOrigins_)(
11308         IDWriteFactory6 *This,
11309         const DWRITE_GLYPH_RUN *run,
11310         D2D1_POINT_2F baseline_origin,
11311         D2D1_POINT_2F *origins);
11312 
11313     HRESULT (STDMETHODCALLTYPE *ComputeGlyphOrigins)(
11314         IDWriteFactory6 *This,
11315         const DWRITE_GLYPH_RUN *run,
11316         DWRITE_MEASURING_MODE measuring_mode,
11317         D2D1_POINT_2F baseline_origin,
11318         const DWRITE_MATRIX *transform,
11319         D2D1_POINT_2F *origins);
11320 
11321     /*** IDWriteFactory5 methods ***/
11322     HRESULT (STDMETHODCALLTYPE *IDWriteFactory5_CreateFontSetBuilder)(
11323         IDWriteFactory6 *This,
11324         IDWriteFontSetBuilder1 **fontset_builder);
11325 
11326     HRESULT (STDMETHODCALLTYPE *CreateInMemoryFontFileLoader)(
11327         IDWriteFactory6 *This,
11328         IDWriteInMemoryFontFileLoader **loader);
11329 
11330     HRESULT (STDMETHODCALLTYPE *CreateHttpFontFileLoader)(
11331         IDWriteFactory6 *This,
11332         const WCHAR *referrer_url,
11333         const WCHAR *extra_headers,
11334         IDWriteRemoteFontFileLoader **loader);
11335 
11336     DWRITE_CONTAINER_TYPE (STDMETHODCALLTYPE *AnalyzeContainerType)(
11337         IDWriteFactory6 *This,
11338         const void *data,
11339         UINT32 data_size);
11340 
11341     HRESULT (STDMETHODCALLTYPE *UnpackFontFile)(
11342         IDWriteFactory6 *This,
11343         DWRITE_CONTAINER_TYPE container_type,
11344         const void *data,
11345         UINT32 data_size,
11346         IDWriteFontFileStream **stream);
11347 
11348     /*** IDWriteFactory6 methods ***/
11349     HRESULT (STDMETHODCALLTYPE *IDWriteFactory6_CreateFontFaceReference)(
11350         IDWriteFactory6 *This,
11351         IDWriteFontFile *file,
11352         UINT32 face_index,
11353         DWRITE_FONT_SIMULATIONS simulations,
11354         const DWRITE_FONT_AXIS_VALUE *axis_values,
11355         UINT32 num_axis,
11356         IDWriteFontFaceReference1 **face_ref);
11357 
11358     HRESULT (STDMETHODCALLTYPE *CreateFontResource)(
11359         IDWriteFactory6 *This,
11360         IDWriteFontFile *file,
11361         UINT32 face_index,
11362         IDWriteFontResource **resource);
11363 
11364     HRESULT (STDMETHODCALLTYPE *IDWriteFactory6_GetSystemFontSet)(
11365         IDWriteFactory6 *This,
11366         WINBOOL include_downloadable,
11367         IDWriteFontSet1 **fontset);
11368 
11369     HRESULT (STDMETHODCALLTYPE *IDWriteFactory6_GetSystemFontCollection)(
11370         IDWriteFactory6 *This,
11371         WINBOOL include_downloadable,
11372         DWRITE_FONT_FAMILY_MODEL family_model,
11373         IDWriteFontCollection2 **collection);
11374 
11375     HRESULT (STDMETHODCALLTYPE *IDWriteFactory6_CreateFontCollectionFromFontSet)(
11376         IDWriteFactory6 *This,
11377         IDWriteFontSet *fontset,
11378         DWRITE_FONT_FAMILY_MODEL family_model,
11379         IDWriteFontCollection2 **collection);
11380 
11381     HRESULT (STDMETHODCALLTYPE *IDWriteFactory6_CreateFontSetBuilder)(
11382         IDWriteFactory6 *This,
11383         IDWriteFontSetBuilder2 **builder);
11384 
11385     HRESULT (STDMETHODCALLTYPE *IDWriteFactory6_CreateTextFormat)(
11386         IDWriteFactory6 *This,
11387         const WCHAR *familyname,
11388         IDWriteFontCollection *collection,
11389         const DWRITE_FONT_AXIS_VALUE *axis_values,
11390         UINT32 num_axis,
11391         FLOAT fontsize,
11392         const WCHAR *localename,
11393         IDWriteTextFormat3 **format);
11394 
11395     END_INTERFACE
11396 } IDWriteFactory6Vtbl;
11397 
11398 interface IDWriteFactory6 {
11399     CONST_VTBL IDWriteFactory6Vtbl* lpVtbl;
11400 };
11401 
11402 #ifdef COBJMACROS
11403 #ifndef WIDL_C_INLINE_WRAPPERS
11404 /*** IUnknown methods ***/
11405 #define IDWriteFactory6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
11406 #define IDWriteFactory6_AddRef(This) (This)->lpVtbl->AddRef(This)
11407 #define IDWriteFactory6_Release(This) (This)->lpVtbl->Release(This)
11408 /*** IDWriteFactory methods ***/
11409 #define IDWriteFactory6_CreateCustomFontCollection(This,loader,key,key_size,collection) (This)->lpVtbl->CreateCustomFontCollection(This,loader,key,key_size,collection)
11410 #define IDWriteFactory6_RegisterFontCollectionLoader(This,loader) (This)->lpVtbl->RegisterFontCollectionLoader(This,loader)
11411 #define IDWriteFactory6_UnregisterFontCollectionLoader(This,loader) (This)->lpVtbl->UnregisterFontCollectionLoader(This,loader)
11412 #define IDWriteFactory6_CreateFontFileReference(This,path,writetime,font_file) (This)->lpVtbl->CreateFontFileReference(This,path,writetime,font_file)
11413 #define IDWriteFactory6_CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file) (This)->lpVtbl->CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file)
11414 #define IDWriteFactory6_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)
11415 #define IDWriteFactory6_CreateRenderingParams(This,params) (This)->lpVtbl->CreateRenderingParams(This,params)
11416 #define IDWriteFactory6_CreateMonitorRenderingParams(This,monitor,params) (This)->lpVtbl->CreateMonitorRenderingParams(This,monitor,params)
11417 #define IDWriteFactory6_RegisterFontFileLoader(This,loader) (This)->lpVtbl->RegisterFontFileLoader(This,loader)
11418 #define IDWriteFactory6_UnregisterFontFileLoader(This,loader) (This)->lpVtbl->UnregisterFontFileLoader(This,loader)
11419 #define IDWriteFactory6_CreateTypography(This,typography) (This)->lpVtbl->CreateTypography(This,typography)
11420 #define IDWriteFactory6_GetGdiInterop(This,gdi_interop) (This)->lpVtbl->GetGdiInterop(This,gdi_interop)
11421 #define IDWriteFactory6_CreateTextLayout(This,string,len,format,max_width,max_height,layout) (This)->lpVtbl->CreateTextLayout(This,string,len,format,max_width,max_height,layout)
11422 #define IDWriteFactory6_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)
11423 #define IDWriteFactory6_CreateEllipsisTrimmingSign(This,format,trimming_sign) (This)->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign)
11424 #define IDWriteFactory6_CreateTextAnalyzer(This,analyzer) (This)->lpVtbl->CreateTextAnalyzer(This,analyzer)
11425 #define IDWriteFactory6_CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution) (This)->lpVtbl->CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution)
11426 /*** IDWriteFactory1 methods ***/
11427 #define IDWriteFactory6_GetEudcFontCollection(This,collection,check_for_updates) (This)->lpVtbl->GetEudcFontCollection(This,collection,check_for_updates)
11428 /*** IDWriteFactory2 methods ***/
11429 #define IDWriteFactory6_GetSystemFontFallback(This,fallback) (This)->lpVtbl->GetSystemFontFallback(This,fallback)
11430 #define IDWriteFactory6_CreateFontFallbackBuilder(This,fallbackbuilder) (This)->lpVtbl->CreateFontFallbackBuilder(This,fallbackbuilder)
11431 /*** IDWriteFactory3 methods ***/
11432 #define IDWriteFactory6_CreateGlyphRunAnalysis(This,run,transform,rendering_mode,measuring_mode,gridfit_mode,antialias_mode,origin_x,origin_y,analysis) (This)->lpVtbl->IDWriteFactory3_CreateGlyphRunAnalysis(This,run,transform,rendering_mode,measuring_mode,gridfit_mode,antialias_mode,origin_x,origin_y,analysis)
11433 #define IDWriteFactory6_CreateCustomRenderingParams(This,gamma,enhanced_contrast,grayscale_enhanced_contrast,cleartype_level,pixel_geometry,rendering_mode,gridfit_mode,params) (This)->lpVtbl->IDWriteFactory3_CreateCustomRenderingParams(This,gamma,enhanced_contrast,grayscale_enhanced_contrast,cleartype_level,pixel_geometry,rendering_mode,gridfit_mode,params)
11434 #define IDWriteFactory6_CreateFontFaceReference_(This,file,index,simulations,reference) (This)->lpVtbl->CreateFontFaceReference_(This,file,index,simulations,reference)
11435 #define IDWriteFactory6_GetFontDownloadQueue(This,queue) (This)->lpVtbl->GetFontDownloadQueue(This,queue)
11436 /*** IDWriteFactory4 methods ***/
11437 #define IDWriteFactory6_TranslateColorGlyphRun(This,baseline_origin,run,run_desc,desired_formats,measuring_mode,transform,palette,layers) (This)->lpVtbl->IDWriteFactory4_TranslateColorGlyphRun(This,baseline_origin,run,run_desc,desired_formats,measuring_mode,transform,palette,layers)
11438 #define IDWriteFactory6_ComputeGlyphOrigins_(This,run,baseline_origin,origins) (This)->lpVtbl->ComputeGlyphOrigins_(This,run,baseline_origin,origins)
11439 #define IDWriteFactory6_ComputeGlyphOrigins(This,run,measuring_mode,baseline_origin,transform,origins) (This)->lpVtbl->ComputeGlyphOrigins(This,run,measuring_mode,baseline_origin,transform,origins)
11440 /*** IDWriteFactory5 methods ***/
11441 #define IDWriteFactory6_CreateInMemoryFontFileLoader(This,loader) (This)->lpVtbl->CreateInMemoryFontFileLoader(This,loader)
11442 #define IDWriteFactory6_CreateHttpFontFileLoader(This,referrer_url,extra_headers,loader) (This)->lpVtbl->CreateHttpFontFileLoader(This,referrer_url,extra_headers,loader)
11443 #define IDWriteFactory6_AnalyzeContainerType(This,data,data_size) (This)->lpVtbl->AnalyzeContainerType(This,data,data_size)
11444 #define IDWriteFactory6_UnpackFontFile(This,container_type,data,data_size,stream) (This)->lpVtbl->UnpackFontFile(This,container_type,data,data_size,stream)
11445 /*** IDWriteFactory6 methods ***/
11446 #define IDWriteFactory6_CreateFontFaceReference(This,file,face_index,simulations,axis_values,num_axis,face_ref) (This)->lpVtbl->IDWriteFactory6_CreateFontFaceReference(This,file,face_index,simulations,axis_values,num_axis,face_ref)
11447 #define IDWriteFactory6_CreateFontResource(This,file,face_index,resource) (This)->lpVtbl->CreateFontResource(This,file,face_index,resource)
11448 #define IDWriteFactory6_GetSystemFontSet(This,include_downloadable,fontset) (This)->lpVtbl->IDWriteFactory6_GetSystemFontSet(This,include_downloadable,fontset)
11449 #define IDWriteFactory6_GetSystemFontCollection(This,include_downloadable,family_model,collection) (This)->lpVtbl->IDWriteFactory6_GetSystemFontCollection(This,include_downloadable,family_model,collection)
11450 #define IDWriteFactory6_CreateFontCollectionFromFontSet(This,fontset,family_model,collection) (This)->lpVtbl->IDWriteFactory6_CreateFontCollectionFromFontSet(This,fontset,family_model,collection)
11451 #define IDWriteFactory6_CreateFontSetBuilder(This,builder) (This)->lpVtbl->IDWriteFactory6_CreateFontSetBuilder(This,builder)
11452 #define IDWriteFactory6_CreateTextFormat(This,familyname,collection,axis_values,num_axis,fontsize,localename,format) (This)->lpVtbl->IDWriteFactory6_CreateTextFormat(This,familyname,collection,axis_values,num_axis,fontsize,localename,format)
11453 #else
11454 /*** IUnknown methods ***/
11455 static FORCEINLINE HRESULT IDWriteFactory6_QueryInterface(IDWriteFactory6* This,REFIID riid,void **ppvObject) {
11456     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
11457 }
11458 static FORCEINLINE ULONG IDWriteFactory6_AddRef(IDWriteFactory6* This) {
11459     return This->lpVtbl->AddRef(This);
11460 }
11461 static FORCEINLINE ULONG IDWriteFactory6_Release(IDWriteFactory6* This) {
11462     return This->lpVtbl->Release(This);
11463 }
11464 /*** IDWriteFactory methods ***/
11465 static FORCEINLINE HRESULT IDWriteFactory6_CreateCustomFontCollection(IDWriteFactory6* This,IDWriteFontCollectionLoader *loader,const void *key,UINT32 key_size,IDWriteFontCollection **collection) {
11466     return This->lpVtbl->CreateCustomFontCollection(This,loader,key,key_size,collection);
11467 }
11468 static FORCEINLINE HRESULT IDWriteFactory6_RegisterFontCollectionLoader(IDWriteFactory6* This,IDWriteFontCollectionLoader *loader) {
11469     return This->lpVtbl->RegisterFontCollectionLoader(This,loader);
11470 }
11471 static FORCEINLINE HRESULT IDWriteFactory6_UnregisterFontCollectionLoader(IDWriteFactory6* This,IDWriteFontCollectionLoader *loader) {
11472     return This->lpVtbl->UnregisterFontCollectionLoader(This,loader);
11473 }
11474 static FORCEINLINE HRESULT IDWriteFactory6_CreateFontFileReference(IDWriteFactory6* This,const WCHAR *path,const FILETIME *writetime,IDWriteFontFile **font_file) {
11475     return This->lpVtbl->CreateFontFileReference(This,path,writetime,font_file);
11476 }
11477 static FORCEINLINE HRESULT IDWriteFactory6_CreateCustomFontFileReference(IDWriteFactory6* This,const void *reference_key,UINT32 key_size,IDWriteFontFileLoader *loader,IDWriteFontFile **font_file) {
11478     return This->lpVtbl->CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file);
11479 }
11480 static FORCEINLINE HRESULT IDWriteFactory6_CreateFontFace(IDWriteFactory6* This,DWRITE_FONT_FACE_TYPE facetype,UINT32 files_number,IDWriteFontFile *const *font_files,UINT32 index,DWRITE_FONT_SIMULATIONS sim_flags,IDWriteFontFace **font_face) {
11481     return This->lpVtbl->CreateFontFace(This,facetype,files_number,font_files,index,sim_flags,font_face);
11482 }
11483 static FORCEINLINE HRESULT IDWriteFactory6_CreateRenderingParams(IDWriteFactory6* This,IDWriteRenderingParams **params) {
11484     return This->lpVtbl->CreateRenderingParams(This,params);
11485 }
11486 static FORCEINLINE HRESULT IDWriteFactory6_CreateMonitorRenderingParams(IDWriteFactory6* This,HMONITOR monitor,IDWriteRenderingParams **params) {
11487     return This->lpVtbl->CreateMonitorRenderingParams(This,monitor,params);
11488 }
11489 static FORCEINLINE HRESULT IDWriteFactory6_RegisterFontFileLoader(IDWriteFactory6* This,IDWriteFontFileLoader *loader) {
11490     return This->lpVtbl->RegisterFontFileLoader(This,loader);
11491 }
11492 static FORCEINLINE HRESULT IDWriteFactory6_UnregisterFontFileLoader(IDWriteFactory6* This,IDWriteFontFileLoader *loader) {
11493     return This->lpVtbl->UnregisterFontFileLoader(This,loader);
11494 }
11495 static FORCEINLINE HRESULT IDWriteFactory6_CreateTypography(IDWriteFactory6* This,IDWriteTypography **typography) {
11496     return This->lpVtbl->CreateTypography(This,typography);
11497 }
11498 static FORCEINLINE HRESULT IDWriteFactory6_GetGdiInterop(IDWriteFactory6* This,IDWriteGdiInterop **gdi_interop) {
11499     return This->lpVtbl->GetGdiInterop(This,gdi_interop);
11500 }
11501 static FORCEINLINE HRESULT IDWriteFactory6_CreateTextLayout(IDWriteFactory6* This,const WCHAR *string,UINT32 len,IDWriteTextFormat *format,FLOAT max_width,FLOAT max_height,IDWriteTextLayout **layout) {
11502     return This->lpVtbl->CreateTextLayout(This,string,len,format,max_width,max_height,layout);
11503 }
11504 static FORCEINLINE HRESULT IDWriteFactory6_CreateGdiCompatibleTextLayout(IDWriteFactory6* 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) {
11505     return This->lpVtbl->CreateGdiCompatibleTextLayout(This,string,len,format,layout_width,layout_height,pixels_per_dip,transform,use_gdi_natural,layout);
11506 }
11507 static FORCEINLINE HRESULT IDWriteFactory6_CreateEllipsisTrimmingSign(IDWriteFactory6* This,IDWriteTextFormat *format,IDWriteInlineObject **trimming_sign) {
11508     return This->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign);
11509 }
11510 static FORCEINLINE HRESULT IDWriteFactory6_CreateTextAnalyzer(IDWriteFactory6* This,IDWriteTextAnalyzer **analyzer) {
11511     return This->lpVtbl->CreateTextAnalyzer(This,analyzer);
11512 }
11513 static FORCEINLINE HRESULT IDWriteFactory6_CreateNumberSubstitution(IDWriteFactory6* This,DWRITE_NUMBER_SUBSTITUTION_METHOD method,const WCHAR *locale,WINBOOL ignore_user_override,IDWriteNumberSubstitution **substitution) {
11514     return This->lpVtbl->CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution);
11515 }
11516 /*** IDWriteFactory1 methods ***/
11517 static FORCEINLINE HRESULT IDWriteFactory6_GetEudcFontCollection(IDWriteFactory6* This,IDWriteFontCollection **collection,WINBOOL check_for_updates) {
11518     return This->lpVtbl->GetEudcFontCollection(This,collection,check_for_updates);
11519 }
11520 /*** IDWriteFactory2 methods ***/
11521 static FORCEINLINE HRESULT IDWriteFactory6_GetSystemFontFallback(IDWriteFactory6* This,IDWriteFontFallback **fallback) {
11522     return This->lpVtbl->GetSystemFontFallback(This,fallback);
11523 }
11524 static FORCEINLINE HRESULT IDWriteFactory6_CreateFontFallbackBuilder(IDWriteFactory6* This,IDWriteFontFallbackBuilder **fallbackbuilder) {
11525     return This->lpVtbl->CreateFontFallbackBuilder(This,fallbackbuilder);
11526 }
11527 /*** IDWriteFactory3 methods ***/
11528 static FORCEINLINE HRESULT IDWriteFactory6_CreateGlyphRunAnalysis(IDWriteFactory6* This,const DWRITE_GLYPH_RUN *run,const DWRITE_MATRIX *transform,DWRITE_RENDERING_MODE1 rendering_mode,DWRITE_MEASURING_MODE measuring_mode,DWRITE_GRID_FIT_MODE gridfit_mode,DWRITE_TEXT_ANTIALIAS_MODE antialias_mode,FLOAT origin_x,FLOAT origin_y,IDWriteGlyphRunAnalysis **analysis) {
11529     return This->lpVtbl->IDWriteFactory3_CreateGlyphRunAnalysis(This,run,transform,rendering_mode,measuring_mode,gridfit_mode,antialias_mode,origin_x,origin_y,analysis);
11530 }
11531 static FORCEINLINE HRESULT IDWriteFactory6_CreateCustomRenderingParams(IDWriteFactory6* This,FLOAT gamma,FLOAT enhanced_contrast,FLOAT grayscale_enhanced_contrast,FLOAT cleartype_level,DWRITE_PIXEL_GEOMETRY pixel_geometry,DWRITE_RENDERING_MODE1 rendering_mode,DWRITE_GRID_FIT_MODE gridfit_mode,IDWriteRenderingParams3 **params) {
11532     return This->lpVtbl->IDWriteFactory3_CreateCustomRenderingParams(This,gamma,enhanced_contrast,grayscale_enhanced_contrast,cleartype_level,pixel_geometry,rendering_mode,gridfit_mode,params);
11533 }
11534 static FORCEINLINE HRESULT IDWriteFactory6_CreateFontFaceReference_(IDWriteFactory6* This,IDWriteFontFile *file,UINT32 index,DWRITE_FONT_SIMULATIONS simulations,IDWriteFontFaceReference **reference) {
11535     return This->lpVtbl->CreateFontFaceReference_(This,file,index,simulations,reference);
11536 }
11537 static FORCEINLINE HRESULT IDWriteFactory6_GetFontDownloadQueue(IDWriteFactory6* This,IDWriteFontDownloadQueue **queue) {
11538     return This->lpVtbl->GetFontDownloadQueue(This,queue);
11539 }
11540 /*** IDWriteFactory4 methods ***/
11541 static FORCEINLINE HRESULT IDWriteFactory6_TranslateColorGlyphRun(IDWriteFactory6* This,D2D1_POINT_2F baseline_origin,const DWRITE_GLYPH_RUN *run,const DWRITE_GLYPH_RUN_DESCRIPTION *run_desc,DWRITE_GLYPH_IMAGE_FORMATS desired_formats,DWRITE_MEASURING_MODE measuring_mode,const DWRITE_MATRIX *transform,UINT32 palette,IDWriteColorGlyphRunEnumerator1 **layers) {
11542     return This->lpVtbl->IDWriteFactory4_TranslateColorGlyphRun(This,baseline_origin,run,run_desc,desired_formats,measuring_mode,transform,palette,layers);
11543 }
11544 static FORCEINLINE HRESULT IDWriteFactory6_ComputeGlyphOrigins_(IDWriteFactory6* This,const DWRITE_GLYPH_RUN *run,D2D1_POINT_2F baseline_origin,D2D1_POINT_2F *origins) {
11545     return This->lpVtbl->ComputeGlyphOrigins_(This,run,baseline_origin,origins);
11546 }
11547 static FORCEINLINE HRESULT IDWriteFactory6_ComputeGlyphOrigins(IDWriteFactory6* This,const DWRITE_GLYPH_RUN *run,DWRITE_MEASURING_MODE measuring_mode,D2D1_POINT_2F baseline_origin,const DWRITE_MATRIX *transform,D2D1_POINT_2F *origins) {
11548     return This->lpVtbl->ComputeGlyphOrigins(This,run,measuring_mode,baseline_origin,transform,origins);
11549 }
11550 /*** IDWriteFactory5 methods ***/
11551 static FORCEINLINE HRESULT IDWriteFactory6_CreateInMemoryFontFileLoader(IDWriteFactory6* This,IDWriteInMemoryFontFileLoader **loader) {
11552     return This->lpVtbl->CreateInMemoryFontFileLoader(This,loader);
11553 }
11554 static FORCEINLINE HRESULT IDWriteFactory6_CreateHttpFontFileLoader(IDWriteFactory6* This,const WCHAR *referrer_url,const WCHAR *extra_headers,IDWriteRemoteFontFileLoader **loader) {
11555     return This->lpVtbl->CreateHttpFontFileLoader(This,referrer_url,extra_headers,loader);
11556 }
11557 static FORCEINLINE DWRITE_CONTAINER_TYPE IDWriteFactory6_AnalyzeContainerType(IDWriteFactory6* This,const void *data,UINT32 data_size) {
11558     return This->lpVtbl->AnalyzeContainerType(This,data,data_size);
11559 }
11560 static FORCEINLINE HRESULT IDWriteFactory6_UnpackFontFile(IDWriteFactory6* This,DWRITE_CONTAINER_TYPE container_type,const void *data,UINT32 data_size,IDWriteFontFileStream **stream) {
11561     return This->lpVtbl->UnpackFontFile(This,container_type,data,data_size,stream);
11562 }
11563 /*** IDWriteFactory6 methods ***/
11564 static FORCEINLINE HRESULT IDWriteFactory6_CreateFontFaceReference(IDWriteFactory6* This,IDWriteFontFile *file,UINT32 face_index,DWRITE_FONT_SIMULATIONS simulations,const DWRITE_FONT_AXIS_VALUE *axis_values,UINT32 num_axis,IDWriteFontFaceReference1 **face_ref) {
11565     return This->lpVtbl->IDWriteFactory6_CreateFontFaceReference(This,file,face_index,simulations,axis_values,num_axis,face_ref);
11566 }
11567 static FORCEINLINE HRESULT IDWriteFactory6_CreateFontResource(IDWriteFactory6* This,IDWriteFontFile *file,UINT32 face_index,IDWriteFontResource **resource) {
11568     return This->lpVtbl->CreateFontResource(This,file,face_index,resource);
11569 }
11570 static FORCEINLINE HRESULT IDWriteFactory6_GetSystemFontSet(IDWriteFactory6* This,WINBOOL include_downloadable,IDWriteFontSet1 **fontset) {
11571     return This->lpVtbl->IDWriteFactory6_GetSystemFontSet(This,include_downloadable,fontset);
11572 }
11573 static FORCEINLINE HRESULT IDWriteFactory6_GetSystemFontCollection(IDWriteFactory6* This,WINBOOL include_downloadable,DWRITE_FONT_FAMILY_MODEL family_model,IDWriteFontCollection2 **collection) {
11574     return This->lpVtbl->IDWriteFactory6_GetSystemFontCollection(This,include_downloadable,family_model,collection);
11575 }
11576 static FORCEINLINE HRESULT IDWriteFactory6_CreateFontCollectionFromFontSet(IDWriteFactory6* This,IDWriteFontSet *fontset,DWRITE_FONT_FAMILY_MODEL family_model,IDWriteFontCollection2 **collection) {
11577     return This->lpVtbl->IDWriteFactory6_CreateFontCollectionFromFontSet(This,fontset,family_model,collection);
11578 }
11579 static FORCEINLINE HRESULT IDWriteFactory6_CreateFontSetBuilder(IDWriteFactory6* This,IDWriteFontSetBuilder2 **builder) {
11580     return This->lpVtbl->IDWriteFactory6_CreateFontSetBuilder(This,builder);
11581 }
11582 static FORCEINLINE HRESULT IDWriteFactory6_CreateTextFormat(IDWriteFactory6* This,const WCHAR *familyname,IDWriteFontCollection *collection,const DWRITE_FONT_AXIS_VALUE *axis_values,UINT32 num_axis,FLOAT fontsize,const WCHAR *localename,IDWriteTextFormat3 **format) {
11583     return This->lpVtbl->IDWriteFactory6_CreateTextFormat(This,familyname,collection,axis_values,num_axis,fontsize,localename,format);
11584 }
11585 #endif
11586 #endif
11587 
11588 #endif
11589 
11590 
11591 #endif  /* __IDWriteFactory6_INTERFACE_DEFINED__ */
11592 
11593 /*****************************************************************************
11594  * IDWriteFactory7 interface
11595  */
11596 #ifndef __IDWriteFactory7_INTERFACE_DEFINED__
11597 #define __IDWriteFactory7_INTERFACE_DEFINED__
11598 
11599 DEFINE_GUID(IID_IDWriteFactory7, 0x35d0e0b3, 0x9076, 0x4d2e, 0xa0,0x16, 0xa9,0x1b,0x56,0x8a,0x06,0xb4);
11600 #if defined(__cplusplus) && !defined(CINTERFACE)
11601 MIDL_INTERFACE("35d0e0b3-9076-4d2e-a016-a91b568a06b4")
11602 IDWriteFactory7 : public IDWriteFactory6
11603 {
11604     virtual HRESULT STDMETHODCALLTYPE GetSystemFontSet(
11605         WINBOOL include_downloadable,
11606         IDWriteFontSet2 **fontset) = 0;
11607 
11608     virtual HRESULT STDMETHODCALLTYPE GetSystemFontCollection(
11609         WINBOOL include_downloadable,
11610         DWRITE_FONT_FAMILY_MODEL family_model,
11611         IDWriteFontCollection3 **collection) = 0;
11612 
11613 };
11614 #ifdef __CRT_UUID_DECL
11615 __CRT_UUID_DECL(IDWriteFactory7, 0x35d0e0b3, 0x9076, 0x4d2e, 0xa0,0x16, 0xa9,0x1b,0x56,0x8a,0x06,0xb4)
11616 #endif
11617 #else
11618 typedef struct IDWriteFactory7Vtbl {
11619     BEGIN_INTERFACE
11620 
11621     /*** IUnknown methods ***/
11622     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
11623         IDWriteFactory7 *This,
11624         REFIID riid,
11625         void **ppvObject);
11626 
11627     ULONG (STDMETHODCALLTYPE *AddRef)(
11628         IDWriteFactory7 *This);
11629 
11630     ULONG (STDMETHODCALLTYPE *Release)(
11631         IDWriteFactory7 *This);
11632 
11633     /*** IDWriteFactory methods ***/
11634     HRESULT (STDMETHODCALLTYPE *GetSystemFontCollection)(
11635         IDWriteFactory7 *This,
11636         IDWriteFontCollection **collection,
11637         WINBOOL check_for_updates);
11638 
11639     HRESULT (STDMETHODCALLTYPE *CreateCustomFontCollection)(
11640         IDWriteFactory7 *This,
11641         IDWriteFontCollectionLoader *loader,
11642         const void *key,
11643         UINT32 key_size,
11644         IDWriteFontCollection **collection);
11645 
11646     HRESULT (STDMETHODCALLTYPE *RegisterFontCollectionLoader)(
11647         IDWriteFactory7 *This,
11648         IDWriteFontCollectionLoader *loader);
11649 
11650     HRESULT (STDMETHODCALLTYPE *UnregisterFontCollectionLoader)(
11651         IDWriteFactory7 *This,
11652         IDWriteFontCollectionLoader *loader);
11653 
11654     HRESULT (STDMETHODCALLTYPE *CreateFontFileReference)(
11655         IDWriteFactory7 *This,
11656         const WCHAR *path,
11657         const FILETIME *writetime,
11658         IDWriteFontFile **font_file);
11659 
11660     HRESULT (STDMETHODCALLTYPE *CreateCustomFontFileReference)(
11661         IDWriteFactory7 *This,
11662         const void *reference_key,
11663         UINT32 key_size,
11664         IDWriteFontFileLoader *loader,
11665         IDWriteFontFile **font_file);
11666 
11667     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
11668         IDWriteFactory7 *This,
11669         DWRITE_FONT_FACE_TYPE facetype,
11670         UINT32 files_number,
11671         IDWriteFontFile *const *font_files,
11672         UINT32 index,
11673         DWRITE_FONT_SIMULATIONS sim_flags,
11674         IDWriteFontFace **font_face);
11675 
11676     HRESULT (STDMETHODCALLTYPE *CreateRenderingParams)(
11677         IDWriteFactory7 *This,
11678         IDWriteRenderingParams **params);
11679 
11680     HRESULT (STDMETHODCALLTYPE *CreateMonitorRenderingParams)(
11681         IDWriteFactory7 *This,
11682         HMONITOR monitor,
11683         IDWriteRenderingParams **params);
11684 
11685     HRESULT (STDMETHODCALLTYPE *CreateCustomRenderingParams)(
11686         IDWriteFactory7 *This,
11687         FLOAT gamma,
11688         FLOAT enhancedContrast,
11689         FLOAT cleartype_level,
11690         DWRITE_PIXEL_GEOMETRY geometry,
11691         DWRITE_RENDERING_MODE mode,
11692         IDWriteRenderingParams **params);
11693 
11694     HRESULT (STDMETHODCALLTYPE *RegisterFontFileLoader)(
11695         IDWriteFactory7 *This,
11696         IDWriteFontFileLoader *loader);
11697 
11698     HRESULT (STDMETHODCALLTYPE *UnregisterFontFileLoader)(
11699         IDWriteFactory7 *This,
11700         IDWriteFontFileLoader *loader);
11701 
11702     HRESULT (STDMETHODCALLTYPE *CreateTextFormat)(
11703         IDWriteFactory7 *This,
11704         const WCHAR *family_name,
11705         IDWriteFontCollection *collection,
11706         DWRITE_FONT_WEIGHT weight,
11707         DWRITE_FONT_STYLE style,
11708         DWRITE_FONT_STRETCH stretch,
11709         FLOAT size,
11710         const WCHAR *locale,
11711         IDWriteTextFormat **format);
11712 
11713     HRESULT (STDMETHODCALLTYPE *CreateTypography)(
11714         IDWriteFactory7 *This,
11715         IDWriteTypography **typography);
11716 
11717     HRESULT (STDMETHODCALLTYPE *GetGdiInterop)(
11718         IDWriteFactory7 *This,
11719         IDWriteGdiInterop **gdi_interop);
11720 
11721     HRESULT (STDMETHODCALLTYPE *CreateTextLayout)(
11722         IDWriteFactory7 *This,
11723         const WCHAR *string,
11724         UINT32 len,
11725         IDWriteTextFormat *format,
11726         FLOAT max_width,
11727         FLOAT max_height,
11728         IDWriteTextLayout **layout);
11729 
11730     HRESULT (STDMETHODCALLTYPE *CreateGdiCompatibleTextLayout)(
11731         IDWriteFactory7 *This,
11732         const WCHAR *string,
11733         UINT32 len,
11734         IDWriteTextFormat *format,
11735         FLOAT layout_width,
11736         FLOAT layout_height,
11737         FLOAT pixels_per_dip,
11738         const DWRITE_MATRIX *transform,
11739         WINBOOL use_gdi_natural,
11740         IDWriteTextLayout **layout);
11741 
11742     HRESULT (STDMETHODCALLTYPE *CreateEllipsisTrimmingSign)(
11743         IDWriteFactory7 *This,
11744         IDWriteTextFormat *format,
11745         IDWriteInlineObject **trimming_sign);
11746 
11747     HRESULT (STDMETHODCALLTYPE *CreateTextAnalyzer)(
11748         IDWriteFactory7 *This,
11749         IDWriteTextAnalyzer **analyzer);
11750 
11751     HRESULT (STDMETHODCALLTYPE *CreateNumberSubstitution)(
11752         IDWriteFactory7 *This,
11753         DWRITE_NUMBER_SUBSTITUTION_METHOD method,
11754         const WCHAR *locale,
11755         WINBOOL ignore_user_override,
11756         IDWriteNumberSubstitution **substitution);
11757 
11758     HRESULT (STDMETHODCALLTYPE *CreateGlyphRunAnalysis)(
11759         IDWriteFactory7 *This,
11760         const DWRITE_GLYPH_RUN *glyph_run,
11761         FLOAT pixels_per_dip,
11762         const DWRITE_MATRIX *transform,
11763         DWRITE_RENDERING_MODE rendering_mode,
11764         DWRITE_MEASURING_MODE measuring_mode,
11765         FLOAT baseline_x,
11766         FLOAT baseline_y,
11767         IDWriteGlyphRunAnalysis **analysis);
11768 
11769     /*** IDWriteFactory1 methods ***/
11770     HRESULT (STDMETHODCALLTYPE *GetEudcFontCollection)(
11771         IDWriteFactory7 *This,
11772         IDWriteFontCollection **collection,
11773         WINBOOL check_for_updates);
11774 
11775     HRESULT (STDMETHODCALLTYPE *IDWriteFactory1_CreateCustomRenderingParams)(
11776         IDWriteFactory7 *This,
11777         FLOAT gamma,
11778         FLOAT enhcontrast,
11779         FLOAT enhcontrast_grayscale,
11780         FLOAT cleartype_level,
11781         DWRITE_PIXEL_GEOMETRY geometry,
11782         DWRITE_RENDERING_MODE mode,
11783         IDWriteRenderingParams1 **params);
11784 
11785     /*** IDWriteFactory2 methods ***/
11786     HRESULT (STDMETHODCALLTYPE *GetSystemFontFallback)(
11787         IDWriteFactory7 *This,
11788         IDWriteFontFallback **fallback);
11789 
11790     HRESULT (STDMETHODCALLTYPE *CreateFontFallbackBuilder)(
11791         IDWriteFactory7 *This,
11792         IDWriteFontFallbackBuilder **fallbackbuilder);
11793 
11794     HRESULT (STDMETHODCALLTYPE *TranslateColorGlyphRun)(
11795         IDWriteFactory7 *This,
11796         FLOAT originX,
11797         FLOAT originY,
11798         const DWRITE_GLYPH_RUN *run,
11799         const DWRITE_GLYPH_RUN_DESCRIPTION *rundescr,
11800         DWRITE_MEASURING_MODE mode,
11801         const DWRITE_MATRIX *transform,
11802         UINT32 palette_index,
11803         IDWriteColorGlyphRunEnumerator **colorlayers);
11804 
11805     HRESULT (STDMETHODCALLTYPE *IDWriteFactory2_CreateCustomRenderingParams)(
11806         IDWriteFactory7 *This,
11807         FLOAT gamma,
11808         FLOAT contrast,
11809         FLOAT grayscalecontrast,
11810         FLOAT cleartypeLevel,
11811         DWRITE_PIXEL_GEOMETRY pixelGeometry,
11812         DWRITE_RENDERING_MODE renderingMode,
11813         DWRITE_GRID_FIT_MODE gridFitMode,
11814         IDWriteRenderingParams2 **params);
11815 
11816     HRESULT (STDMETHODCALLTYPE *IDWriteFactory2_CreateGlyphRunAnalysis)(
11817         IDWriteFactory7 *This,
11818         const DWRITE_GLYPH_RUN *run,
11819         const DWRITE_MATRIX *transform,
11820         DWRITE_RENDERING_MODE renderingMode,
11821         DWRITE_MEASURING_MODE measuringMode,
11822         DWRITE_GRID_FIT_MODE gridFitMode,
11823         DWRITE_TEXT_ANTIALIAS_MODE antialiasMode,
11824         FLOAT originX,
11825         FLOAT originY,
11826         IDWriteGlyphRunAnalysis **analysis);
11827 
11828     /*** IDWriteFactory3 methods ***/
11829     HRESULT (STDMETHODCALLTYPE *IDWriteFactory3_CreateGlyphRunAnalysis)(
11830         IDWriteFactory7 *This,
11831         const DWRITE_GLYPH_RUN *run,
11832         const DWRITE_MATRIX *transform,
11833         DWRITE_RENDERING_MODE1 rendering_mode,
11834         DWRITE_MEASURING_MODE measuring_mode,
11835         DWRITE_GRID_FIT_MODE gridfit_mode,
11836         DWRITE_TEXT_ANTIALIAS_MODE antialias_mode,
11837         FLOAT origin_x,
11838         FLOAT origin_y,
11839         IDWriteGlyphRunAnalysis **analysis);
11840 
11841     HRESULT (STDMETHODCALLTYPE *IDWriteFactory3_CreateCustomRenderingParams)(
11842         IDWriteFactory7 *This,
11843         FLOAT gamma,
11844         FLOAT enhanced_contrast,
11845         FLOAT grayscale_enhanced_contrast,
11846         FLOAT cleartype_level,
11847         DWRITE_PIXEL_GEOMETRY pixel_geometry,
11848         DWRITE_RENDERING_MODE1 rendering_mode,
11849         DWRITE_GRID_FIT_MODE gridfit_mode,
11850         IDWriteRenderingParams3 **params);
11851 
11852     HRESULT (STDMETHODCALLTYPE *CreateFontFaceReference_)(
11853         IDWriteFactory7 *This,
11854         IDWriteFontFile *file,
11855         UINT32 index,
11856         DWRITE_FONT_SIMULATIONS simulations,
11857         IDWriteFontFaceReference **reference);
11858 
11859     HRESULT (STDMETHODCALLTYPE *CreateFontFaceReference)(
11860         IDWriteFactory7 *This,
11861         const WCHAR *path,
11862         const FILETIME *writetime,
11863         UINT32 index,
11864         DWRITE_FONT_SIMULATIONS simulations,
11865         IDWriteFontFaceReference **reference);
11866 
11867     HRESULT (STDMETHODCALLTYPE *GetSystemFontSet)(
11868         IDWriteFactory7 *This,
11869         IDWriteFontSet **fontset);
11870 
11871     HRESULT (STDMETHODCALLTYPE *CreateFontSetBuilder)(
11872         IDWriteFactory7 *This,
11873         IDWriteFontSetBuilder **builder);
11874 
11875     HRESULT (STDMETHODCALLTYPE *CreateFontCollectionFromFontSet)(
11876         IDWriteFactory7 *This,
11877         IDWriteFontSet *fontset,
11878         IDWriteFontCollection1 **collection);
11879 
11880     HRESULT (STDMETHODCALLTYPE *IDWriteFactory3_GetSystemFontCollection)(
11881         IDWriteFactory7 *This,
11882         WINBOOL include_downloadable,
11883         IDWriteFontCollection1 **collection,
11884         WINBOOL check_for_updates);
11885 
11886     HRESULT (STDMETHODCALLTYPE *GetFontDownloadQueue)(
11887         IDWriteFactory7 *This,
11888         IDWriteFontDownloadQueue **queue);
11889 
11890     /*** IDWriteFactory4 methods ***/
11891     HRESULT (STDMETHODCALLTYPE *IDWriteFactory4_TranslateColorGlyphRun)(
11892         IDWriteFactory7 *This,
11893         D2D1_POINT_2F baseline_origin,
11894         const DWRITE_GLYPH_RUN *run,
11895         const DWRITE_GLYPH_RUN_DESCRIPTION *run_desc,
11896         DWRITE_GLYPH_IMAGE_FORMATS desired_formats,
11897         DWRITE_MEASURING_MODE measuring_mode,
11898         const DWRITE_MATRIX *transform,
11899         UINT32 palette,
11900         IDWriteColorGlyphRunEnumerator1 **layers);
11901 
11902     HRESULT (STDMETHODCALLTYPE *ComputeGlyphOrigins_)(
11903         IDWriteFactory7 *This,
11904         const DWRITE_GLYPH_RUN *run,
11905         D2D1_POINT_2F baseline_origin,
11906         D2D1_POINT_2F *origins);
11907 
11908     HRESULT (STDMETHODCALLTYPE *ComputeGlyphOrigins)(
11909         IDWriteFactory7 *This,
11910         const DWRITE_GLYPH_RUN *run,
11911         DWRITE_MEASURING_MODE measuring_mode,
11912         D2D1_POINT_2F baseline_origin,
11913         const DWRITE_MATRIX *transform,
11914         D2D1_POINT_2F *origins);
11915 
11916     /*** IDWriteFactory5 methods ***/
11917     HRESULT (STDMETHODCALLTYPE *IDWriteFactory5_CreateFontSetBuilder)(
11918         IDWriteFactory7 *This,
11919         IDWriteFontSetBuilder1 **fontset_builder);
11920 
11921     HRESULT (STDMETHODCALLTYPE *CreateInMemoryFontFileLoader)(
11922         IDWriteFactory7 *This,
11923         IDWriteInMemoryFontFileLoader **loader);
11924 
11925     HRESULT (STDMETHODCALLTYPE *CreateHttpFontFileLoader)(
11926         IDWriteFactory7 *This,
11927         const WCHAR *referrer_url,
11928         const WCHAR *extra_headers,
11929         IDWriteRemoteFontFileLoader **loader);
11930 
11931     DWRITE_CONTAINER_TYPE (STDMETHODCALLTYPE *AnalyzeContainerType)(
11932         IDWriteFactory7 *This,
11933         const void *data,
11934         UINT32 data_size);
11935 
11936     HRESULT (STDMETHODCALLTYPE *UnpackFontFile)(
11937         IDWriteFactory7 *This,
11938         DWRITE_CONTAINER_TYPE container_type,
11939         const void *data,
11940         UINT32 data_size,
11941         IDWriteFontFileStream **stream);
11942 
11943     /*** IDWriteFactory6 methods ***/
11944     HRESULT (STDMETHODCALLTYPE *IDWriteFactory6_CreateFontFaceReference)(
11945         IDWriteFactory7 *This,
11946         IDWriteFontFile *file,
11947         UINT32 face_index,
11948         DWRITE_FONT_SIMULATIONS simulations,
11949         const DWRITE_FONT_AXIS_VALUE *axis_values,
11950         UINT32 num_axis,
11951         IDWriteFontFaceReference1 **face_ref);
11952 
11953     HRESULT (STDMETHODCALLTYPE *CreateFontResource)(
11954         IDWriteFactory7 *This,
11955         IDWriteFontFile *file,
11956         UINT32 face_index,
11957         IDWriteFontResource **resource);
11958 
11959     HRESULT (STDMETHODCALLTYPE *IDWriteFactory6_GetSystemFontSet)(
11960         IDWriteFactory7 *This,
11961         WINBOOL include_downloadable,
11962         IDWriteFontSet1 **fontset);
11963 
11964     HRESULT (STDMETHODCALLTYPE *IDWriteFactory6_GetSystemFontCollection)(
11965         IDWriteFactory7 *This,
11966         WINBOOL include_downloadable,
11967         DWRITE_FONT_FAMILY_MODEL family_model,
11968         IDWriteFontCollection2 **collection);
11969 
11970     HRESULT (STDMETHODCALLTYPE *IDWriteFactory6_CreateFontCollectionFromFontSet)(
11971         IDWriteFactory7 *This,
11972         IDWriteFontSet *fontset,
11973         DWRITE_FONT_FAMILY_MODEL family_model,
11974         IDWriteFontCollection2 **collection);
11975 
11976     HRESULT (STDMETHODCALLTYPE *IDWriteFactory6_CreateFontSetBuilder)(
11977         IDWriteFactory7 *This,
11978         IDWriteFontSetBuilder2 **builder);
11979 
11980     HRESULT (STDMETHODCALLTYPE *IDWriteFactory6_CreateTextFormat)(
11981         IDWriteFactory7 *This,
11982         const WCHAR *familyname,
11983         IDWriteFontCollection *collection,
11984         const DWRITE_FONT_AXIS_VALUE *axis_values,
11985         UINT32 num_axis,
11986         FLOAT fontsize,
11987         const WCHAR *localename,
11988         IDWriteTextFormat3 **format);
11989 
11990     /*** IDWriteFactory7 methods ***/
11991     HRESULT (STDMETHODCALLTYPE *IDWriteFactory7_GetSystemFontSet)(
11992         IDWriteFactory7 *This,
11993         WINBOOL include_downloadable,
11994         IDWriteFontSet2 **fontset);
11995 
11996     HRESULT (STDMETHODCALLTYPE *IDWriteFactory7_GetSystemFontCollection)(
11997         IDWriteFactory7 *This,
11998         WINBOOL include_downloadable,
11999         DWRITE_FONT_FAMILY_MODEL family_model,
12000         IDWriteFontCollection3 **collection);
12001 
12002     END_INTERFACE
12003 } IDWriteFactory7Vtbl;
12004 
12005 interface IDWriteFactory7 {
12006     CONST_VTBL IDWriteFactory7Vtbl* lpVtbl;
12007 };
12008 
12009 #ifdef COBJMACROS
12010 #ifndef WIDL_C_INLINE_WRAPPERS
12011 /*** IUnknown methods ***/
12012 #define IDWriteFactory7_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
12013 #define IDWriteFactory7_AddRef(This) (This)->lpVtbl->AddRef(This)
12014 #define IDWriteFactory7_Release(This) (This)->lpVtbl->Release(This)
12015 /*** IDWriteFactory methods ***/
12016 #define IDWriteFactory7_CreateCustomFontCollection(This,loader,key,key_size,collection) (This)->lpVtbl->CreateCustomFontCollection(This,loader,key,key_size,collection)
12017 #define IDWriteFactory7_RegisterFontCollectionLoader(This,loader) (This)->lpVtbl->RegisterFontCollectionLoader(This,loader)
12018 #define IDWriteFactory7_UnregisterFontCollectionLoader(This,loader) (This)->lpVtbl->UnregisterFontCollectionLoader(This,loader)
12019 #define IDWriteFactory7_CreateFontFileReference(This,path,writetime,font_file) (This)->lpVtbl->CreateFontFileReference(This,path,writetime,font_file)
12020 #define IDWriteFactory7_CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file) (This)->lpVtbl->CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file)
12021 #define IDWriteFactory7_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)
12022 #define IDWriteFactory7_CreateRenderingParams(This,params) (This)->lpVtbl->CreateRenderingParams(This,params)
12023 #define IDWriteFactory7_CreateMonitorRenderingParams(This,monitor,params) (This)->lpVtbl->CreateMonitorRenderingParams(This,monitor,params)
12024 #define IDWriteFactory7_RegisterFontFileLoader(This,loader) (This)->lpVtbl->RegisterFontFileLoader(This,loader)
12025 #define IDWriteFactory7_UnregisterFontFileLoader(This,loader) (This)->lpVtbl->UnregisterFontFileLoader(This,loader)
12026 #define IDWriteFactory7_CreateTypography(This,typography) (This)->lpVtbl->CreateTypography(This,typography)
12027 #define IDWriteFactory7_GetGdiInterop(This,gdi_interop) (This)->lpVtbl->GetGdiInterop(This,gdi_interop)
12028 #define IDWriteFactory7_CreateTextLayout(This,string,len,format,max_width,max_height,layout) (This)->lpVtbl->CreateTextLayout(This,string,len,format,max_width,max_height,layout)
12029 #define IDWriteFactory7_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)
12030 #define IDWriteFactory7_CreateEllipsisTrimmingSign(This,format,trimming_sign) (This)->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign)
12031 #define IDWriteFactory7_CreateTextAnalyzer(This,analyzer) (This)->lpVtbl->CreateTextAnalyzer(This,analyzer)
12032 #define IDWriteFactory7_CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution) (This)->lpVtbl->CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution)
12033 /*** IDWriteFactory1 methods ***/
12034 #define IDWriteFactory7_GetEudcFontCollection(This,collection,check_for_updates) (This)->lpVtbl->GetEudcFontCollection(This,collection,check_for_updates)
12035 /*** IDWriteFactory2 methods ***/
12036 #define IDWriteFactory7_GetSystemFontFallback(This,fallback) (This)->lpVtbl->GetSystemFontFallback(This,fallback)
12037 #define IDWriteFactory7_CreateFontFallbackBuilder(This,fallbackbuilder) (This)->lpVtbl->CreateFontFallbackBuilder(This,fallbackbuilder)
12038 /*** IDWriteFactory3 methods ***/
12039 #define IDWriteFactory7_CreateGlyphRunAnalysis(This,run,transform,rendering_mode,measuring_mode,gridfit_mode,antialias_mode,origin_x,origin_y,analysis) (This)->lpVtbl->IDWriteFactory3_CreateGlyphRunAnalysis(This,run,transform,rendering_mode,measuring_mode,gridfit_mode,antialias_mode,origin_x,origin_y,analysis)
12040 #define IDWriteFactory7_CreateCustomRenderingParams(This,gamma,enhanced_contrast,grayscale_enhanced_contrast,cleartype_level,pixel_geometry,rendering_mode,gridfit_mode,params) (This)->lpVtbl->IDWriteFactory3_CreateCustomRenderingParams(This,gamma,enhanced_contrast,grayscale_enhanced_contrast,cleartype_level,pixel_geometry,rendering_mode,gridfit_mode,params)
12041 #define IDWriteFactory7_CreateFontFaceReference_(This,file,index,simulations,reference) (This)->lpVtbl->CreateFontFaceReference_(This,file,index,simulations,reference)
12042 #define IDWriteFactory7_GetFontDownloadQueue(This,queue) (This)->lpVtbl->GetFontDownloadQueue(This,queue)
12043 /*** IDWriteFactory4 methods ***/
12044 #define IDWriteFactory7_TranslateColorGlyphRun(This,baseline_origin,run,run_desc,desired_formats,measuring_mode,transform,palette,layers) (This)->lpVtbl->IDWriteFactory4_TranslateColorGlyphRun(This,baseline_origin,run,run_desc,desired_formats,measuring_mode,transform,palette,layers)
12045 #define IDWriteFactory7_ComputeGlyphOrigins_(This,run,baseline_origin,origins) (This)->lpVtbl->ComputeGlyphOrigins_(This,run,baseline_origin,origins)
12046 #define IDWriteFactory7_ComputeGlyphOrigins(This,run,measuring_mode,baseline_origin,transform,origins) (This)->lpVtbl->ComputeGlyphOrigins(This,run,measuring_mode,baseline_origin,transform,origins)
12047 /*** IDWriteFactory5 methods ***/
12048 #define IDWriteFactory7_CreateInMemoryFontFileLoader(This,loader) (This)->lpVtbl->CreateInMemoryFontFileLoader(This,loader)
12049 #define IDWriteFactory7_CreateHttpFontFileLoader(This,referrer_url,extra_headers,loader) (This)->lpVtbl->CreateHttpFontFileLoader(This,referrer_url,extra_headers,loader)
12050 #define IDWriteFactory7_AnalyzeContainerType(This,data,data_size) (This)->lpVtbl->AnalyzeContainerType(This,data,data_size)
12051 #define IDWriteFactory7_UnpackFontFile(This,container_type,data,data_size,stream) (This)->lpVtbl->UnpackFontFile(This,container_type,data,data_size,stream)
12052 /*** IDWriteFactory6 methods ***/
12053 #define IDWriteFactory7_CreateFontFaceReference(This,file,face_index,simulations,axis_values,num_axis,face_ref) (This)->lpVtbl->IDWriteFactory6_CreateFontFaceReference(This,file,face_index,simulations,axis_values,num_axis,face_ref)
12054 #define IDWriteFactory7_CreateFontResource(This,file,face_index,resource) (This)->lpVtbl->CreateFontResource(This,file,face_index,resource)
12055 #define IDWriteFactory7_CreateFontCollectionFromFontSet(This,fontset,family_model,collection) (This)->lpVtbl->IDWriteFactory6_CreateFontCollectionFromFontSet(This,fontset,family_model,collection)
12056 #define IDWriteFactory7_CreateFontSetBuilder(This,builder) (This)->lpVtbl->IDWriteFactory6_CreateFontSetBuilder(This,builder)
12057 #define IDWriteFactory7_CreateTextFormat(This,familyname,collection,axis_values,num_axis,fontsize,localename,format) (This)->lpVtbl->IDWriteFactory6_CreateTextFormat(This,familyname,collection,axis_values,num_axis,fontsize,localename,format)
12058 /*** IDWriteFactory7 methods ***/
12059 #define IDWriteFactory7_GetSystemFontSet(This,include_downloadable,fontset) (This)->lpVtbl->IDWriteFactory7_GetSystemFontSet(This,include_downloadable,fontset)
12060 #define IDWriteFactory7_GetSystemFontCollection(This,include_downloadable,family_model,collection) (This)->lpVtbl->IDWriteFactory7_GetSystemFontCollection(This,include_downloadable,family_model,collection)
12061 #else
12062 /*** IUnknown methods ***/
12063 static FORCEINLINE HRESULT IDWriteFactory7_QueryInterface(IDWriteFactory7* This,REFIID riid,void **ppvObject) {
12064     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
12065 }
12066 static FORCEINLINE ULONG IDWriteFactory7_AddRef(IDWriteFactory7* This) {
12067     return This->lpVtbl->AddRef(This);
12068 }
12069 static FORCEINLINE ULONG IDWriteFactory7_Release(IDWriteFactory7* This) {
12070     return This->lpVtbl->Release(This);
12071 }
12072 /*** IDWriteFactory methods ***/
12073 static FORCEINLINE HRESULT IDWriteFactory7_CreateCustomFontCollection(IDWriteFactory7* This,IDWriteFontCollectionLoader *loader,const void *key,UINT32 key_size,IDWriteFontCollection **collection) {
12074     return This->lpVtbl->CreateCustomFontCollection(This,loader,key,key_size,collection);
12075 }
12076 static FORCEINLINE HRESULT IDWriteFactory7_RegisterFontCollectionLoader(IDWriteFactory7* This,IDWriteFontCollectionLoader *loader) {
12077     return This->lpVtbl->RegisterFontCollectionLoader(This,loader);
12078 }
12079 static FORCEINLINE HRESULT IDWriteFactory7_UnregisterFontCollectionLoader(IDWriteFactory7* This,IDWriteFontCollectionLoader *loader) {
12080     return This->lpVtbl->UnregisterFontCollectionLoader(This,loader);
12081 }
12082 static FORCEINLINE HRESULT IDWriteFactory7_CreateFontFileReference(IDWriteFactory7* This,const WCHAR *path,const FILETIME *writetime,IDWriteFontFile **font_file) {
12083     return This->lpVtbl->CreateFontFileReference(This,path,writetime,font_file);
12084 }
12085 static FORCEINLINE HRESULT IDWriteFactory7_CreateCustomFontFileReference(IDWriteFactory7* This,const void *reference_key,UINT32 key_size,IDWriteFontFileLoader *loader,IDWriteFontFile **font_file) {
12086     return This->lpVtbl->CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file);
12087 }
12088 static FORCEINLINE HRESULT IDWriteFactory7_CreateFontFace(IDWriteFactory7* This,DWRITE_FONT_FACE_TYPE facetype,UINT32 files_number,IDWriteFontFile *const *font_files,UINT32 index,DWRITE_FONT_SIMULATIONS sim_flags,IDWriteFontFace **font_face) {
12089     return This->lpVtbl->CreateFontFace(This,facetype,files_number,font_files,index,sim_flags,font_face);
12090 }
12091 static FORCEINLINE HRESULT IDWriteFactory7_CreateRenderingParams(IDWriteFactory7* This,IDWriteRenderingParams **params) {
12092     return This->lpVtbl->CreateRenderingParams(This,params);
12093 }
12094 static FORCEINLINE HRESULT IDWriteFactory7_CreateMonitorRenderingParams(IDWriteFactory7* This,HMONITOR monitor,IDWriteRenderingParams **params) {
12095     return This->lpVtbl->CreateMonitorRenderingParams(This,monitor,params);
12096 }
12097 static FORCEINLINE HRESULT IDWriteFactory7_RegisterFontFileLoader(IDWriteFactory7* This,IDWriteFontFileLoader *loader) {
12098     return This->lpVtbl->RegisterFontFileLoader(This,loader);
12099 }
12100 static FORCEINLINE HRESULT IDWriteFactory7_UnregisterFontFileLoader(IDWriteFactory7* This,IDWriteFontFileLoader *loader) {
12101     return This->lpVtbl->UnregisterFontFileLoader(This,loader);
12102 }
12103 static FORCEINLINE HRESULT IDWriteFactory7_CreateTypography(IDWriteFactory7* This,IDWriteTypography **typography) {
12104     return This->lpVtbl->CreateTypography(This,typography);
12105 }
12106 static FORCEINLINE HRESULT IDWriteFactory7_GetGdiInterop(IDWriteFactory7* This,IDWriteGdiInterop **gdi_interop) {
12107     return This->lpVtbl->GetGdiInterop(This,gdi_interop);
12108 }
12109 static FORCEINLINE HRESULT IDWriteFactory7_CreateTextLayout(IDWriteFactory7* This,const WCHAR *string,UINT32 len,IDWriteTextFormat *format,FLOAT max_width,FLOAT max_height,IDWriteTextLayout **layout) {
12110     return This->lpVtbl->CreateTextLayout(This,string,len,format,max_width,max_height,layout);
12111 }
12112 static FORCEINLINE HRESULT IDWriteFactory7_CreateGdiCompatibleTextLayout(IDWriteFactory7* 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) {
12113     return This->lpVtbl->CreateGdiCompatibleTextLayout(This,string,len,format,layout_width,layout_height,pixels_per_dip,transform,use_gdi_natural,layout);
12114 }
12115 static FORCEINLINE HRESULT IDWriteFactory7_CreateEllipsisTrimmingSign(IDWriteFactory7* This,IDWriteTextFormat *format,IDWriteInlineObject **trimming_sign) {
12116     return This->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign);
12117 }
12118 static FORCEINLINE HRESULT IDWriteFactory7_CreateTextAnalyzer(IDWriteFactory7* This,IDWriteTextAnalyzer **analyzer) {
12119     return This->lpVtbl->CreateTextAnalyzer(This,analyzer);
12120 }
12121 static FORCEINLINE HRESULT IDWriteFactory7_CreateNumberSubstitution(IDWriteFactory7* This,DWRITE_NUMBER_SUBSTITUTION_METHOD method,const WCHAR *locale,WINBOOL ignore_user_override,IDWriteNumberSubstitution **substitution) {
12122     return This->lpVtbl->CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution);
12123 }
12124 /*** IDWriteFactory1 methods ***/
12125 static FORCEINLINE HRESULT IDWriteFactory7_GetEudcFontCollection(IDWriteFactory7* This,IDWriteFontCollection **collection,WINBOOL check_for_updates) {
12126     return This->lpVtbl->GetEudcFontCollection(This,collection,check_for_updates);
12127 }
12128 /*** IDWriteFactory2 methods ***/
12129 static FORCEINLINE HRESULT IDWriteFactory7_GetSystemFontFallback(IDWriteFactory7* This,IDWriteFontFallback **fallback) {
12130     return This->lpVtbl->GetSystemFontFallback(This,fallback);
12131 }
12132 static FORCEINLINE HRESULT IDWriteFactory7_CreateFontFallbackBuilder(IDWriteFactory7* This,IDWriteFontFallbackBuilder **fallbackbuilder) {
12133     return This->lpVtbl->CreateFontFallbackBuilder(This,fallbackbuilder);
12134 }
12135 /*** IDWriteFactory3 methods ***/
12136 static FORCEINLINE HRESULT IDWriteFactory7_CreateGlyphRunAnalysis(IDWriteFactory7* This,const DWRITE_GLYPH_RUN *run,const DWRITE_MATRIX *transform,DWRITE_RENDERING_MODE1 rendering_mode,DWRITE_MEASURING_MODE measuring_mode,DWRITE_GRID_FIT_MODE gridfit_mode,DWRITE_TEXT_ANTIALIAS_MODE antialias_mode,FLOAT origin_x,FLOAT origin_y,IDWriteGlyphRunAnalysis **analysis) {
12137     return This->lpVtbl->IDWriteFactory3_CreateGlyphRunAnalysis(This,run,transform,rendering_mode,measuring_mode,gridfit_mode,antialias_mode,origin_x,origin_y,analysis);
12138 }
12139 static FORCEINLINE HRESULT IDWriteFactory7_CreateCustomRenderingParams(IDWriteFactory7* This,FLOAT gamma,FLOAT enhanced_contrast,FLOAT grayscale_enhanced_contrast,FLOAT cleartype_level,DWRITE_PIXEL_GEOMETRY pixel_geometry,DWRITE_RENDERING_MODE1 rendering_mode,DWRITE_GRID_FIT_MODE gridfit_mode,IDWriteRenderingParams3 **params) {
12140     return This->lpVtbl->IDWriteFactory3_CreateCustomRenderingParams(This,gamma,enhanced_contrast,grayscale_enhanced_contrast,cleartype_level,pixel_geometry,rendering_mode,gridfit_mode,params);
12141 }
12142 static FORCEINLINE HRESULT IDWriteFactory7_CreateFontFaceReference_(IDWriteFactory7* This,IDWriteFontFile *file,UINT32 index,DWRITE_FONT_SIMULATIONS simulations,IDWriteFontFaceReference **reference) {
12143     return This->lpVtbl->CreateFontFaceReference_(This,file,index,simulations,reference);
12144 }
12145 static FORCEINLINE HRESULT IDWriteFactory7_GetFontDownloadQueue(IDWriteFactory7* This,IDWriteFontDownloadQueue **queue) {
12146     return This->lpVtbl->GetFontDownloadQueue(This,queue);
12147 }
12148 /*** IDWriteFactory4 methods ***/
12149 static FORCEINLINE HRESULT IDWriteFactory7_TranslateColorGlyphRun(IDWriteFactory7* This,D2D1_POINT_2F baseline_origin,const DWRITE_GLYPH_RUN *run,const DWRITE_GLYPH_RUN_DESCRIPTION *run_desc,DWRITE_GLYPH_IMAGE_FORMATS desired_formats,DWRITE_MEASURING_MODE measuring_mode,const DWRITE_MATRIX *transform,UINT32 palette,IDWriteColorGlyphRunEnumerator1 **layers) {
12150     return This->lpVtbl->IDWriteFactory4_TranslateColorGlyphRun(This,baseline_origin,run,run_desc,desired_formats,measuring_mode,transform,palette,layers);
12151 }
12152 static FORCEINLINE HRESULT IDWriteFactory7_ComputeGlyphOrigins_(IDWriteFactory7* This,const DWRITE_GLYPH_RUN *run,D2D1_POINT_2F baseline_origin,D2D1_POINT_2F *origins) {
12153     return This->lpVtbl->ComputeGlyphOrigins_(This,run,baseline_origin,origins);
12154 }
12155 static FORCEINLINE HRESULT IDWriteFactory7_ComputeGlyphOrigins(IDWriteFactory7* This,const DWRITE_GLYPH_RUN *run,DWRITE_MEASURING_MODE measuring_mode,D2D1_POINT_2F baseline_origin,const DWRITE_MATRIX *transform,D2D1_POINT_2F *origins) {
12156     return This->lpVtbl->ComputeGlyphOrigins(This,run,measuring_mode,baseline_origin,transform,origins);
12157 }
12158 /*** IDWriteFactory5 methods ***/
12159 static FORCEINLINE HRESULT IDWriteFactory7_CreateInMemoryFontFileLoader(IDWriteFactory7* This,IDWriteInMemoryFontFileLoader **loader) {
12160     return This->lpVtbl->CreateInMemoryFontFileLoader(This,loader);
12161 }
12162 static FORCEINLINE HRESULT IDWriteFactory7_CreateHttpFontFileLoader(IDWriteFactory7* This,const WCHAR *referrer_url,const WCHAR *extra_headers,IDWriteRemoteFontFileLoader **loader) {
12163     return This->lpVtbl->CreateHttpFontFileLoader(This,referrer_url,extra_headers,loader);
12164 }
12165 static FORCEINLINE DWRITE_CONTAINER_TYPE IDWriteFactory7_AnalyzeContainerType(IDWriteFactory7* This,const void *data,UINT32 data_size) {
12166     return This->lpVtbl->AnalyzeContainerType(This,data,data_size);
12167 }
12168 static FORCEINLINE HRESULT IDWriteFactory7_UnpackFontFile(IDWriteFactory7* This,DWRITE_CONTAINER_TYPE container_type,const void *data,UINT32 data_size,IDWriteFontFileStream **stream) {
12169     return This->lpVtbl->UnpackFontFile(This,container_type,data,data_size,stream);
12170 }
12171 /*** IDWriteFactory6 methods ***/
12172 static FORCEINLINE HRESULT IDWriteFactory7_CreateFontFaceReference(IDWriteFactory7* This,IDWriteFontFile *file,UINT32 face_index,DWRITE_FONT_SIMULATIONS simulations,const DWRITE_FONT_AXIS_VALUE *axis_values,UINT32 num_axis,IDWriteFontFaceReference1 **face_ref) {
12173     return This->lpVtbl->IDWriteFactory6_CreateFontFaceReference(This,file,face_index,simulations,axis_values,num_axis,face_ref);
12174 }
12175 static FORCEINLINE HRESULT IDWriteFactory7_CreateFontResource(IDWriteFactory7* This,IDWriteFontFile *file,UINT32 face_index,IDWriteFontResource **resource) {
12176     return This->lpVtbl->CreateFontResource(This,file,face_index,resource);
12177 }
12178 static FORCEINLINE HRESULT IDWriteFactory7_CreateFontCollectionFromFontSet(IDWriteFactory7* This,IDWriteFontSet *fontset,DWRITE_FONT_FAMILY_MODEL family_model,IDWriteFontCollection2 **collection) {
12179     return This->lpVtbl->IDWriteFactory6_CreateFontCollectionFromFontSet(This,fontset,family_model,collection);
12180 }
12181 static FORCEINLINE HRESULT IDWriteFactory7_CreateFontSetBuilder(IDWriteFactory7* This,IDWriteFontSetBuilder2 **builder) {
12182     return This->lpVtbl->IDWriteFactory6_CreateFontSetBuilder(This,builder);
12183 }
12184 static FORCEINLINE HRESULT IDWriteFactory7_CreateTextFormat(IDWriteFactory7* This,const WCHAR *familyname,IDWriteFontCollection *collection,const DWRITE_FONT_AXIS_VALUE *axis_values,UINT32 num_axis,FLOAT fontsize,const WCHAR *localename,IDWriteTextFormat3 **format) {
12185     return This->lpVtbl->IDWriteFactory6_CreateTextFormat(This,familyname,collection,axis_values,num_axis,fontsize,localename,format);
12186 }
12187 /*** IDWriteFactory7 methods ***/
12188 static FORCEINLINE HRESULT IDWriteFactory7_GetSystemFontSet(IDWriteFactory7* This,WINBOOL include_downloadable,IDWriteFontSet2 **fontset) {
12189     return This->lpVtbl->IDWriteFactory7_GetSystemFontSet(This,include_downloadable,fontset);
12190 }
12191 static FORCEINLINE HRESULT IDWriteFactory7_GetSystemFontCollection(IDWriteFactory7* This,WINBOOL include_downloadable,DWRITE_FONT_FAMILY_MODEL family_model,IDWriteFontCollection3 **collection) {
12192     return This->lpVtbl->IDWriteFactory7_GetSystemFontCollection(This,include_downloadable,family_model,collection);
12193 }
12194 #endif
12195 #endif
12196 
12197 #endif
12198 
12199 
12200 #endif  /* __IDWriteFactory7_INTERFACE_DEFINED__ */
12201 
12202 /* Begin additional prototypes for all interfaces */
12203 
12204 
12205 /* End additional prototypes */
12206 
12207 #ifdef __cplusplus
12208 }
12209 #endif
12210 
12211 #endif /* __dwrite_3_h__ */
12212