zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

dwrite_2.h (156662B) - Raw


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