master
   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__
  23typedef interface IDWriteTextRenderer1 IDWriteTextRenderer1;
  24#ifdef __cplusplus
  25interface IDWriteTextRenderer1;
  26#endif /* __cplusplus */
  27#endif
  28
  29#ifndef __IDWriteFontFallback_FWD_DEFINED__
  30#define __IDWriteFontFallback_FWD_DEFINED__
  31typedef interface IDWriteFontFallback IDWriteFontFallback;
  32#ifdef __cplusplus
  33interface IDWriteFontFallback;
  34#endif /* __cplusplus */
  35#endif
  36
  37#ifndef __IDWriteTextFormat1_FWD_DEFINED__
  38#define __IDWriteTextFormat1_FWD_DEFINED__
  39typedef interface IDWriteTextFormat1 IDWriteTextFormat1;
  40#ifdef __cplusplus
  41interface IDWriteTextFormat1;
  42#endif /* __cplusplus */
  43#endif
  44
  45#ifndef __IDWriteTextLayout2_FWD_DEFINED__
  46#define __IDWriteTextLayout2_FWD_DEFINED__
  47typedef interface IDWriteTextLayout2 IDWriteTextLayout2;
  48#ifdef __cplusplus
  49interface IDWriteTextLayout2;
  50#endif /* __cplusplus */
  51#endif
  52
  53#ifndef __IDWriteTextAnalyzer2_FWD_DEFINED__
  54#define __IDWriteTextAnalyzer2_FWD_DEFINED__
  55typedef interface IDWriteTextAnalyzer2 IDWriteTextAnalyzer2;
  56#ifdef __cplusplus
  57interface IDWriteTextAnalyzer2;
  58#endif /* __cplusplus */
  59#endif
  60
  61#ifndef __IDWriteFontFallbackBuilder_FWD_DEFINED__
  62#define __IDWriteFontFallbackBuilder_FWD_DEFINED__
  63typedef interface IDWriteFontFallbackBuilder IDWriteFontFallbackBuilder;
  64#ifdef __cplusplus
  65interface IDWriteFontFallbackBuilder;
  66#endif /* __cplusplus */
  67#endif
  68
  69#ifndef __IDWriteFont2_FWD_DEFINED__
  70#define __IDWriteFont2_FWD_DEFINED__
  71typedef interface IDWriteFont2 IDWriteFont2;
  72#ifdef __cplusplus
  73interface IDWriteFont2;
  74#endif /* __cplusplus */
  75#endif
  76
  77#ifndef __IDWriteFontFace2_FWD_DEFINED__
  78#define __IDWriteFontFace2_FWD_DEFINED__
  79typedef interface IDWriteFontFace2 IDWriteFontFace2;
  80#ifdef __cplusplus
  81interface IDWriteFontFace2;
  82#endif /* __cplusplus */
  83#endif
  84
  85#ifndef __IDWriteColorGlyphRunEnumerator_FWD_DEFINED__
  86#define __IDWriteColorGlyphRunEnumerator_FWD_DEFINED__
  87typedef interface IDWriteColorGlyphRunEnumerator IDWriteColorGlyphRunEnumerator;
  88#ifdef __cplusplus
  89interface IDWriteColorGlyphRunEnumerator;
  90#endif /* __cplusplus */
  91#endif
  92
  93#ifndef __IDWriteRenderingParams2_FWD_DEFINED__
  94#define __IDWriteRenderingParams2_FWD_DEFINED__
  95typedef interface IDWriteRenderingParams2 IDWriteRenderingParams2;
  96#ifdef __cplusplus
  97interface IDWriteRenderingParams2;
  98#endif /* __cplusplus */
  99#endif
 100
 101#ifndef __IDWriteFactory2_FWD_DEFINED__
 102#define __IDWriteFactory2_FWD_DEFINED__
 103typedef interface IDWriteFactory2 IDWriteFactory2;
 104#ifdef __cplusplus
 105interface IDWriteFactory2;
 106#endif /* __cplusplus */
 107#endif
 108
 109/* Headers for imported files */
 110
 111#include <dwrite_1.h>
 112
 113#ifdef __cplusplus
 114extern "C" {
 115#endif
 116
 117typedef enum DWRITE_OPTICAL_ALIGNMENT {
 118    DWRITE_OPTICAL_ALIGNMENT_NONE = 0,
 119    DWRITE_OPTICAL_ALIGNMENT_NO_SIDE_BEARINGS = 1
 120} DWRITE_OPTICAL_ALIGNMENT;
 121typedef 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;
 126typedef 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
 139typedef 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
 159typedef D3DCOLORVALUE DWRITE_COLOR_F;
 160typedef 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
 174DEFINE_GUID(IID_IDWriteTextRenderer1, 0xd3e0e934, 0x22a0, 0x427e, 0xaa,0xe4, 0x7d,0x95,0x74,0xb5,0x9d,0xb1);
 175#if defined(__cplusplus) && !defined(CINTERFACE)
 176MIDL_INTERFACE("d3e0e934-22a0-427e-aae4-7d9574b59db1")
 177IDWriteTextRenderer1 : 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
 220typedef 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
 332interface 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 ***/
 354static inline HRESULT IDWriteTextRenderer1_QueryInterface(IDWriteTextRenderer1* This,REFIID riid,void **ppvObject) {
 355    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 356}
 357static inline ULONG IDWriteTextRenderer1_AddRef(IDWriteTextRenderer1* This) {
 358    return This->lpVtbl->AddRef(This);
 359}
 360static inline ULONG IDWriteTextRenderer1_Release(IDWriteTextRenderer1* This) {
 361    return This->lpVtbl->Release(This);
 362}
 363/*** IDWritePixelSnapping methods ***/
 364static inline HRESULT IDWriteTextRenderer1_IsPixelSnappingDisabled(IDWriteTextRenderer1* This,void *client_drawingcontext,WINBOOL *disabled) {
 365    return This->lpVtbl->IsPixelSnappingDisabled(This,client_drawingcontext,disabled);
 366}
 367static inline HRESULT IDWriteTextRenderer1_GetCurrentTransform(IDWriteTextRenderer1* This,void *client_drawingcontext,DWRITE_MATRIX *transform) {
 368    return This->lpVtbl->GetCurrentTransform(This,client_drawingcontext,transform);
 369}
 370static 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 ***/
 375static 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}
 378static 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}
 381static 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}
 384static 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
 401DEFINE_GUID(IID_IDWriteFontFallback, 0xefa008f9, 0xf7a1, 0x48bf, 0xb0,0x5c, 0xf2,0x24,0x71,0x3c,0xc0,0xff);
 402#if defined(__cplusplus) && !defined(CINTERFACE)
 403MIDL_INTERFACE("efa008f9-f7a1-48bf-b05c-f224713cc0ff")
 404IDWriteFontFallback : 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
 424typedef 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
 457interface 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 ***/
 471static inline HRESULT IDWriteFontFallback_QueryInterface(IDWriteFontFallback* This,REFIID riid,void **ppvObject) {
 472    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 473}
 474static inline ULONG IDWriteFontFallback_AddRef(IDWriteFontFallback* This) {
 475    return This->lpVtbl->AddRef(This);
 476}
 477static inline ULONG IDWriteFontFallback_Release(IDWriteFontFallback* This) {
 478    return This->lpVtbl->Release(This);
 479}
 480/*** IDWriteFontFallback methods ***/
 481static 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
 498DEFINE_GUID(IID_IDWriteTextFormat1, 0x5f174b49, 0x0d8b, 0x4cfb, 0x8b,0xca, 0xf1,0xcc,0xe9,0xd0,0x6c,0x67);
 499#if defined(__cplusplus) && !defined(CINTERFACE)
 500MIDL_INTERFACE("5f174b49-0d8b-4cfb-8bca-f1cce9d06c67")
 501IDWriteTextFormat1 : 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
 532typedef 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
 677interface 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 ***/
 724static inline HRESULT IDWriteTextFormat1_QueryInterface(IDWriteTextFormat1* This,REFIID riid,void **ppvObject) {
 725    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 726}
 727static inline ULONG IDWriteTextFormat1_AddRef(IDWriteTextFormat1* This) {
 728    return This->lpVtbl->AddRef(This);
 729}
 730static inline ULONG IDWriteTextFormat1_Release(IDWriteTextFormat1* This) {
 731    return This->lpVtbl->Release(This);
 732}
 733/*** IDWriteTextFormat methods ***/
 734static inline HRESULT IDWriteTextFormat1_SetTextAlignment(IDWriteTextFormat1* This,DWRITE_TEXT_ALIGNMENT alignment) {
 735    return This->lpVtbl->SetTextAlignment(This,alignment);
 736}
 737static inline HRESULT IDWriteTextFormat1_SetParagraphAlignment(IDWriteTextFormat1* This,DWRITE_PARAGRAPH_ALIGNMENT alignment) {
 738    return This->lpVtbl->SetParagraphAlignment(This,alignment);
 739}
 740static inline HRESULT IDWriteTextFormat1_SetWordWrapping(IDWriteTextFormat1* This,DWRITE_WORD_WRAPPING wrapping) {
 741    return This->lpVtbl->SetWordWrapping(This,wrapping);
 742}
 743static inline HRESULT IDWriteTextFormat1_SetReadingDirection(IDWriteTextFormat1* This,DWRITE_READING_DIRECTION direction) {
 744    return This->lpVtbl->SetReadingDirection(This,direction);
 745}
 746static inline HRESULT IDWriteTextFormat1_SetFlowDirection(IDWriteTextFormat1* This,DWRITE_FLOW_DIRECTION direction) {
 747    return This->lpVtbl->SetFlowDirection(This,direction);
 748}
 749static inline HRESULT IDWriteTextFormat1_SetIncrementalTabStop(IDWriteTextFormat1* This,FLOAT tabstop) {
 750    return This->lpVtbl->SetIncrementalTabStop(This,tabstop);
 751}
 752static inline HRESULT IDWriteTextFormat1_SetTrimming(IDWriteTextFormat1* This,const DWRITE_TRIMMING *trimming,IDWriteInlineObject *trimming_sign) {
 753    return This->lpVtbl->SetTrimming(This,trimming,trimming_sign);
 754}
 755static 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}
 758static inline DWRITE_TEXT_ALIGNMENT IDWriteTextFormat1_GetTextAlignment(IDWriteTextFormat1* This) {
 759    return This->lpVtbl->GetTextAlignment(This);
 760}
 761static inline DWRITE_PARAGRAPH_ALIGNMENT IDWriteTextFormat1_GetParagraphAlignment(IDWriteTextFormat1* This) {
 762    return This->lpVtbl->GetParagraphAlignment(This);
 763}
 764static inline DWRITE_WORD_WRAPPING IDWriteTextFormat1_GetWordWrapping(IDWriteTextFormat1* This) {
 765    return This->lpVtbl->GetWordWrapping(This);
 766}
 767static inline DWRITE_READING_DIRECTION IDWriteTextFormat1_GetReadingDirection(IDWriteTextFormat1* This) {
 768    return This->lpVtbl->GetReadingDirection(This);
 769}
 770static inline DWRITE_FLOW_DIRECTION IDWriteTextFormat1_GetFlowDirection(IDWriteTextFormat1* This) {
 771    return This->lpVtbl->GetFlowDirection(This);
 772}
 773static inline FLOAT IDWriteTextFormat1_GetIncrementalTabStop(IDWriteTextFormat1* This) {
 774    return This->lpVtbl->GetIncrementalTabStop(This);
 775}
 776static inline HRESULT IDWriteTextFormat1_GetTrimming(IDWriteTextFormat1* This,DWRITE_TRIMMING *options,IDWriteInlineObject **trimming_sign) {
 777    return This->lpVtbl->GetTrimming(This,options,trimming_sign);
 778}
 779static 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}
 782static inline HRESULT IDWriteTextFormat1_GetFontCollection(IDWriteTextFormat1* This,IDWriteFontCollection **collection) {
 783    return This->lpVtbl->GetFontCollection(This,collection);
 784}
 785static inline UINT32 IDWriteTextFormat1_GetFontFamilyNameLength(IDWriteTextFormat1* This) {
 786    return This->lpVtbl->GetFontFamilyNameLength(This);
 787}
 788static inline HRESULT IDWriteTextFormat1_GetFontFamilyName(IDWriteTextFormat1* This,WCHAR *name,UINT32 size) {
 789    return This->lpVtbl->GetFontFamilyName(This,name,size);
 790}
 791static inline DWRITE_FONT_WEIGHT IDWriteTextFormat1_GetFontWeight(IDWriteTextFormat1* This) {
 792    return This->lpVtbl->GetFontWeight(This);
 793}
 794static inline DWRITE_FONT_STYLE IDWriteTextFormat1_GetFontStyle(IDWriteTextFormat1* This) {
 795    return This->lpVtbl->GetFontStyle(This);
 796}
 797static inline DWRITE_FONT_STRETCH IDWriteTextFormat1_GetFontStretch(IDWriteTextFormat1* This) {
 798    return This->lpVtbl->GetFontStretch(This);
 799}
 800static inline FLOAT IDWriteTextFormat1_GetFontSize(IDWriteTextFormat1* This) {
 801    return This->lpVtbl->GetFontSize(This);
 802}
 803static inline UINT32 IDWriteTextFormat1_GetLocaleNameLength(IDWriteTextFormat1* This) {
 804    return This->lpVtbl->GetLocaleNameLength(This);
 805}
 806static inline HRESULT IDWriteTextFormat1_GetLocaleName(IDWriteTextFormat1* This,WCHAR *name,UINT32 size) {
 807    return This->lpVtbl->GetLocaleName(This,name,size);
 808}
 809/*** IDWriteTextFormat1 methods ***/
 810static inline HRESULT IDWriteTextFormat1_SetVerticalGlyphOrientation(IDWriteTextFormat1* This,DWRITE_VERTICAL_GLYPH_ORIENTATION orientation) {
 811    return This->lpVtbl->SetVerticalGlyphOrientation(This,orientation);
 812}
 813static inline DWRITE_VERTICAL_GLYPH_ORIENTATION IDWriteTextFormat1_GetVerticalGlyphOrientation(IDWriteTextFormat1* This) {
 814    return This->lpVtbl->GetVerticalGlyphOrientation(This);
 815}
 816static inline HRESULT IDWriteTextFormat1_SetLastLineWrapping(IDWriteTextFormat1* This,WINBOOL lastline_wrapping_enabled) {
 817    return This->lpVtbl->SetLastLineWrapping(This,lastline_wrapping_enabled);
 818}
 819static inline WINBOOL IDWriteTextFormat1_GetLastLineWrapping(IDWriteTextFormat1* This) {
 820    return This->lpVtbl->GetLastLineWrapping(This);
 821}
 822static inline HRESULT IDWriteTextFormat1_SetOpticalAlignment(IDWriteTextFormat1* This,DWRITE_OPTICAL_ALIGNMENT alignment) {
 823    return This->lpVtbl->SetOpticalAlignment(This,alignment);
 824}
 825static inline DWRITE_OPTICAL_ALIGNMENT IDWriteTextFormat1_GetOpticalAlignment(IDWriteTextFormat1* This) {
 826    return This->lpVtbl->GetOpticalAlignment(This);
 827}
 828static inline HRESULT IDWriteTextFormat1_SetFontFallback(IDWriteTextFormat1* This,IDWriteFontFallback *fallback) {
 829    return This->lpVtbl->SetFontFallback(This,fallback);
 830}
 831static 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
 848DEFINE_GUID(IID_IDWriteTextLayout2, 0x1093c18f, 0x8d5e, 0x43f0, 0xb0,0x64, 0x09,0x17,0x31,0x1b,0x52,0x5e);
 849#if defined(__cplusplus) && !defined(CINTERFACE)
 850MIDL_INTERFACE("1093c18f-8d5e-43f0-b064-0917311b525e")
 851IDWriteTextLayout2 : 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
 885typedef 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
1279interface 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 ***/
1362static inline HRESULT IDWriteTextLayout2_QueryInterface(IDWriteTextLayout2* This,REFIID riid,void **ppvObject) {
1363    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1364}
1365static inline ULONG IDWriteTextLayout2_AddRef(IDWriteTextLayout2* This) {
1366    return This->lpVtbl->AddRef(This);
1367}
1368static inline ULONG IDWriteTextLayout2_Release(IDWriteTextLayout2* This) {
1369    return This->lpVtbl->Release(This);
1370}
1371/*** IDWriteTextFormat methods ***/
1372static inline HRESULT IDWriteTextLayout2_SetTextAlignment(IDWriteTextLayout2* This,DWRITE_TEXT_ALIGNMENT alignment) {
1373    return This->lpVtbl->SetTextAlignment(This,alignment);
1374}
1375static inline HRESULT IDWriteTextLayout2_SetParagraphAlignment(IDWriteTextLayout2* This,DWRITE_PARAGRAPH_ALIGNMENT alignment) {
1376    return This->lpVtbl->SetParagraphAlignment(This,alignment);
1377}
1378static inline HRESULT IDWriteTextLayout2_SetWordWrapping(IDWriteTextLayout2* This,DWRITE_WORD_WRAPPING wrapping) {
1379    return This->lpVtbl->SetWordWrapping(This,wrapping);
1380}
1381static inline HRESULT IDWriteTextLayout2_SetReadingDirection(IDWriteTextLayout2* This,DWRITE_READING_DIRECTION direction) {
1382    return This->lpVtbl->SetReadingDirection(This,direction);
1383}
1384static inline HRESULT IDWriteTextLayout2_SetFlowDirection(IDWriteTextLayout2* This,DWRITE_FLOW_DIRECTION direction) {
1385    return This->lpVtbl->SetFlowDirection(This,direction);
1386}
1387static inline HRESULT IDWriteTextLayout2_SetIncrementalTabStop(IDWriteTextLayout2* This,FLOAT tabstop) {
1388    return This->lpVtbl->SetIncrementalTabStop(This,tabstop);
1389}
1390static inline HRESULT IDWriteTextLayout2_SetTrimming(IDWriteTextLayout2* This,const DWRITE_TRIMMING *trimming,IDWriteInlineObject *trimming_sign) {
1391    return This->lpVtbl->SetTrimming(This,trimming,trimming_sign);
1392}
1393static 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}
1396static inline DWRITE_TEXT_ALIGNMENT IDWriteTextLayout2_GetTextAlignment(IDWriteTextLayout2* This) {
1397    return This->lpVtbl->GetTextAlignment(This);
1398}
1399static inline DWRITE_PARAGRAPH_ALIGNMENT IDWriteTextLayout2_GetParagraphAlignment(IDWriteTextLayout2* This) {
1400    return This->lpVtbl->GetParagraphAlignment(This);
1401}
1402static inline DWRITE_WORD_WRAPPING IDWriteTextLayout2_GetWordWrapping(IDWriteTextLayout2* This) {
1403    return This->lpVtbl->GetWordWrapping(This);
1404}
1405static inline DWRITE_READING_DIRECTION IDWriteTextLayout2_GetReadingDirection(IDWriteTextLayout2* This) {
1406    return This->lpVtbl->GetReadingDirection(This);
1407}
1408static inline DWRITE_FLOW_DIRECTION IDWriteTextLayout2_GetFlowDirection(IDWriteTextLayout2* This) {
1409    return This->lpVtbl->GetFlowDirection(This);
1410}
1411static inline FLOAT IDWriteTextLayout2_GetIncrementalTabStop(IDWriteTextLayout2* This) {
1412    return This->lpVtbl->GetIncrementalTabStop(This);
1413}
1414static inline HRESULT IDWriteTextLayout2_GetTrimming(IDWriteTextLayout2* This,DWRITE_TRIMMING *options,IDWriteInlineObject **trimming_sign) {
1415    return This->lpVtbl->GetTrimming(This,options,trimming_sign);
1416}
1417static 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 ***/
1421static inline HRESULT IDWriteTextLayout2_SetMaxWidth(IDWriteTextLayout2* This,FLOAT maxWidth) {
1422    return This->lpVtbl->SetMaxWidth(This,maxWidth);
1423}
1424static inline HRESULT IDWriteTextLayout2_SetMaxHeight(IDWriteTextLayout2* This,FLOAT maxHeight) {
1425    return This->lpVtbl->SetMaxHeight(This,maxHeight);
1426}
1427static inline HRESULT IDWriteTextLayout2_SetFontCollection(IDWriteTextLayout2* This,IDWriteFontCollection *collection,DWRITE_TEXT_RANGE range) {
1428    return This->lpVtbl->SetFontCollection(This,collection,range);
1429}
1430static inline HRESULT IDWriteTextLayout2_SetFontFamilyName(IDWriteTextLayout2* This,const WCHAR *name,DWRITE_TEXT_RANGE range) {
1431    return This->lpVtbl->SetFontFamilyName(This,name,range);
1432}
1433static inline HRESULT IDWriteTextLayout2_SetFontWeight(IDWriteTextLayout2* This,DWRITE_FONT_WEIGHT weight,DWRITE_TEXT_RANGE range) {
1434    return This->lpVtbl->SetFontWeight(This,weight,range);
1435}
1436static inline HRESULT IDWriteTextLayout2_SetFontStyle(IDWriteTextLayout2* This,DWRITE_FONT_STYLE style,DWRITE_TEXT_RANGE range) {
1437    return This->lpVtbl->SetFontStyle(This,style,range);
1438}
1439static inline HRESULT IDWriteTextLayout2_SetFontStretch(IDWriteTextLayout2* This,DWRITE_FONT_STRETCH stretch,DWRITE_TEXT_RANGE range) {
1440    return This->lpVtbl->SetFontStretch(This,stretch,range);
1441}
1442static inline HRESULT IDWriteTextLayout2_SetFontSize(IDWriteTextLayout2* This,FLOAT size,DWRITE_TEXT_RANGE range) {
1443    return This->lpVtbl->SetFontSize(This,size,range);
1444}
1445static inline HRESULT IDWriteTextLayout2_SetUnderline(IDWriteTextLayout2* This,WINBOOL underline,DWRITE_TEXT_RANGE range) {
1446    return This->lpVtbl->SetUnderline(This,underline,range);
1447}
1448static inline HRESULT IDWriteTextLayout2_SetStrikethrough(IDWriteTextLayout2* This,WINBOOL strikethrough,DWRITE_TEXT_RANGE range) {
1449    return This->lpVtbl->SetStrikethrough(This,strikethrough,range);
1450}
1451static inline HRESULT IDWriteTextLayout2_SetDrawingEffect(IDWriteTextLayout2* This,IUnknown *effect,DWRITE_TEXT_RANGE range) {
1452    return This->lpVtbl->SetDrawingEffect(This,effect,range);
1453}
1454static inline HRESULT IDWriteTextLayout2_SetInlineObject(IDWriteTextLayout2* This,IDWriteInlineObject *object,DWRITE_TEXT_RANGE range) {
1455    return This->lpVtbl->SetInlineObject(This,object,range);
1456}
1457static inline HRESULT IDWriteTextLayout2_SetTypography(IDWriteTextLayout2* This,IDWriteTypography *typography,DWRITE_TEXT_RANGE range) {
1458    return This->lpVtbl->SetTypography(This,typography,range);
1459}
1460static inline HRESULT IDWriteTextLayout2_SetLocaleName(IDWriteTextLayout2* This,const WCHAR *locale,DWRITE_TEXT_RANGE range) {
1461    return This->lpVtbl->SetLocaleName(This,locale,range);
1462}
1463static inline FLOAT IDWriteTextLayout2_GetMaxWidth(IDWriteTextLayout2* This) {
1464    return This->lpVtbl->GetMaxWidth(This);
1465}
1466static inline FLOAT IDWriteTextLayout2_GetMaxHeight(IDWriteTextLayout2* This) {
1467    return This->lpVtbl->GetMaxHeight(This);
1468}
1469static 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}
1472static 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}
1475static 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}
1478static 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}
1481static 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}
1484static 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}
1487static 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}
1490static 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}
1493static 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}
1496static inline HRESULT IDWriteTextLayout2_GetDrawingEffect(IDWriteTextLayout2* This,UINT32 position,IUnknown **effect,DWRITE_TEXT_RANGE *range) {
1497    return This->lpVtbl->GetDrawingEffect(This,position,effect,range);
1498}
1499static inline HRESULT IDWriteTextLayout2_GetInlineObject(IDWriteTextLayout2* This,UINT32 position,IDWriteInlineObject **object,DWRITE_TEXT_RANGE *range) {
1500    return This->lpVtbl->GetInlineObject(This,position,object,range);
1501}
1502static inline HRESULT IDWriteTextLayout2_GetTypography(IDWriteTextLayout2* This,UINT32 position,IDWriteTypography **typography,DWRITE_TEXT_RANGE *range) {
1503    return This->lpVtbl->GetTypography(This,position,typography,range);
1504}
1505static 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}
1508static 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}
1511static 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}
1514static 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}
1517static inline HRESULT IDWriteTextLayout2_GetOverhangMetrics(IDWriteTextLayout2* This,DWRITE_OVERHANG_METRICS *overhangs) {
1518    return This->lpVtbl->GetOverhangMetrics(This,overhangs);
1519}
1520static 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}
1523static inline HRESULT IDWriteTextLayout2_DetermineMinWidth(IDWriteTextLayout2* This,FLOAT *min_width) {
1524    return This->lpVtbl->DetermineMinWidth(This,min_width);
1525}
1526static 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}
1529static 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}
1532static 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 ***/
1536static 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}
1539static 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}
1542static 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}
1545static 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 ***/
1549static inline HRESULT IDWriteTextLayout2_GetMetrics(IDWriteTextLayout2* This,DWRITE_TEXT_METRICS1 *metrics) {
1550    return This->lpVtbl->IDWriteTextLayout2_GetMetrics(This,metrics);
1551}
1552static inline HRESULT IDWriteTextLayout2_SetVerticalGlyphOrientation(IDWriteTextLayout2* This,DWRITE_VERTICAL_GLYPH_ORIENTATION orientation) {
1553    return This->lpVtbl->SetVerticalGlyphOrientation(This,orientation);
1554}
1555static inline DWRITE_VERTICAL_GLYPH_ORIENTATION IDWriteTextLayout2_GetVerticalGlyphOrientation(IDWriteTextLayout2* This) {
1556    return This->lpVtbl->GetVerticalGlyphOrientation(This);
1557}
1558static inline HRESULT IDWriteTextLayout2_SetLastLineWrapping(IDWriteTextLayout2* This,WINBOOL lastline_wrapping_enabled) {
1559    return This->lpVtbl->SetLastLineWrapping(This,lastline_wrapping_enabled);
1560}
1561static inline WINBOOL IDWriteTextLayout2_GetLastLineWrapping(IDWriteTextLayout2* This) {
1562    return This->lpVtbl->GetLastLineWrapping(This);
1563}
1564static inline HRESULT IDWriteTextLayout2_SetOpticalAlignment(IDWriteTextLayout2* This,DWRITE_OPTICAL_ALIGNMENT alignment) {
1565    return This->lpVtbl->SetOpticalAlignment(This,alignment);
1566}
1567static inline DWRITE_OPTICAL_ALIGNMENT IDWriteTextLayout2_GetOpticalAlignment(IDWriteTextLayout2* This) {
1568    return This->lpVtbl->GetOpticalAlignment(This);
1569}
1570static inline HRESULT IDWriteTextLayout2_SetFontFallback(IDWriteTextLayout2* This,IDWriteFontFallback *fallback) {
1571    return This->lpVtbl->SetFontFallback(This,fallback);
1572}
1573static 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
1590DEFINE_GUID(IID_IDWriteTextAnalyzer2, 0x553a9ff3, 0x5693, 0x4df7, 0xb5,0x2b, 0x74,0x80,0x6f,0x7f,0x2e,0xb9);
1591#if defined(__cplusplus) && !defined(CINTERFACE)
1592MIDL_INTERFACE("553a9ff3-5693-4df7-b52b-74806f7f2eb9")
1593IDWriteTextAnalyzer2 : 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
1624typedef 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
1859interface 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 ***/
1892static inline HRESULT IDWriteTextAnalyzer2_QueryInterface(IDWriteTextAnalyzer2* This,REFIID riid,void **ppvObject) {
1893    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1894}
1895static inline ULONG IDWriteTextAnalyzer2_AddRef(IDWriteTextAnalyzer2* This) {
1896    return This->lpVtbl->AddRef(This);
1897}
1898static inline ULONG IDWriteTextAnalyzer2_Release(IDWriteTextAnalyzer2* This) {
1899    return This->lpVtbl->Release(This);
1900}
1901/*** IDWriteTextAnalyzer methods ***/
1902static 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}
1905static 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}
1908static 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}
1911static 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}
1914static 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}
1917static 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}
1920static 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 ***/
1924static 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}
1927static 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}
1930static 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}
1933static inline HRESULT IDWriteTextAnalyzer2_GetScriptProperties(IDWriteTextAnalyzer2* This,DWRITE_SCRIPT_ANALYSIS sa,DWRITE_SCRIPT_PROPERTIES *props) {
1934    return This->lpVtbl->GetScriptProperties(This,sa,props);
1935}
1936static 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}
1939static 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}
1942static 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}
1945static 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 ***/
1949static 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}
1952static 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}
1955static 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
1972DEFINE_GUID(IID_IDWriteFontFallbackBuilder, 0xfd882d06, 0x8aba, 0x4fb8, 0xb8,0x49, 0x8b,0xe8,0xb7,0x3e,0x14,0xde);
1973#if defined(__cplusplus) && !defined(CINTERFACE)
1974MIDL_INTERFACE("fd882d06-8aba-4fb8-b849-8be8b73e14de")
1975IDWriteFontFallbackBuilder : 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
1998typedef 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
2036interface 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 ***/
2052static inline HRESULT IDWriteFontFallbackBuilder_QueryInterface(IDWriteFontFallbackBuilder* This,REFIID riid,void **ppvObject) {
2053    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2054}
2055static inline ULONG IDWriteFontFallbackBuilder_AddRef(IDWriteFontFallbackBuilder* This) {
2056    return This->lpVtbl->AddRef(This);
2057}
2058static inline ULONG IDWriteFontFallbackBuilder_Release(IDWriteFontFallbackBuilder* This) {
2059    return This->lpVtbl->Release(This);
2060}
2061/*** IDWriteFontFallbackBuilder methods ***/
2062static 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}
2065static inline HRESULT IDWriteFontFallbackBuilder_AddMappings(IDWriteFontFallbackBuilder* This,IDWriteFontFallback *fallback) {
2066    return This->lpVtbl->AddMappings(This,fallback);
2067}
2068static 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
2085DEFINE_GUID(IID_IDWriteFont2, 0x29748ed6, 0x8c9c, 0x4a6a, 0xbe,0x0b, 0xd9,0x12,0xe8,0x53,0x89,0x44);
2086#if defined(__cplusplus) && !defined(CINTERFACE)
2087MIDL_INTERFACE("29748ed6-8c9c-4a6a-be0b-d912e8538944")
2088IDWriteFont2 : 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
2098typedef 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
2181interface 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 ***/
2211static inline HRESULT IDWriteFont2_QueryInterface(IDWriteFont2* This,REFIID riid,void **ppvObject) {
2212    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2213}
2214static inline ULONG IDWriteFont2_AddRef(IDWriteFont2* This) {
2215    return This->lpVtbl->AddRef(This);
2216}
2217static inline ULONG IDWriteFont2_Release(IDWriteFont2* This) {
2218    return This->lpVtbl->Release(This);
2219}
2220/*** IDWriteFont methods ***/
2221static inline HRESULT IDWriteFont2_GetFontFamily(IDWriteFont2* This,IDWriteFontFamily **family) {
2222    return This->lpVtbl->GetFontFamily(This,family);
2223}
2224static inline DWRITE_FONT_WEIGHT IDWriteFont2_GetWeight(IDWriteFont2* This) {
2225    return This->lpVtbl->GetWeight(This);
2226}
2227static inline DWRITE_FONT_STRETCH IDWriteFont2_GetStretch(IDWriteFont2* This) {
2228    return This->lpVtbl->GetStretch(This);
2229}
2230static inline DWRITE_FONT_STYLE IDWriteFont2_GetStyle(IDWriteFont2* This) {
2231    return This->lpVtbl->GetStyle(This);
2232}
2233static inline WINBOOL IDWriteFont2_IsSymbolFont(IDWriteFont2* This) {
2234    return This->lpVtbl->IsSymbolFont(This);
2235}
2236static inline HRESULT IDWriteFont2_GetFaceNames(IDWriteFont2* This,IDWriteLocalizedStrings **names) {
2237    return This->lpVtbl->GetFaceNames(This,names);
2238}
2239static 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}
2242static inline DWRITE_FONT_SIMULATIONS IDWriteFont2_GetSimulations(IDWriteFont2* This) {
2243    return This->lpVtbl->GetSimulations(This);
2244}
2245static inline HRESULT IDWriteFont2_HasCharacter(IDWriteFont2* This,UINT32 value,WINBOOL *exists) {
2246    return This->lpVtbl->HasCharacter(This,value,exists);
2247}
2248static inline HRESULT IDWriteFont2_CreateFontFace(IDWriteFont2* This,IDWriteFontFace **face) {
2249    return This->lpVtbl->CreateFontFace(This,face);
2250}
2251/*** IDWriteFont1 methods ***/
2252static inline void IDWriteFont2_GetMetrics(IDWriteFont2* This,DWRITE_FONT_METRICS1 *metrics) {
2253    This->lpVtbl->IDWriteFont1_GetMetrics(This,metrics);
2254}
2255static inline void IDWriteFont2_GetPanose(IDWriteFont2* This,DWRITE_PANOSE *panose) {
2256    This->lpVtbl->GetPanose(This,panose);
2257}
2258static 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}
2261static inline WINBOOL IDWriteFont2_IsMonospacedFont(IDWriteFont2* This) {
2262    return This->lpVtbl->IsMonospacedFont(This);
2263}
2264/*** IDWriteFont2 methods ***/
2265static 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
2282DEFINE_GUID(IID_IDWriteFontFace2, 0xd8b768ff, 0x64bc, 0x4e66, 0x98,0x2b, 0xec,0x8e,0x87,0xf6,0x93,0xf7);
2283#if defined(__cplusplus) && !defined(CINTERFACE)
2284MIDL_INTERFACE("d8b768ff-64bc-4e66-982b-ec8e87f693f7")
2285IDWriteFontFace2 : 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
2319typedef 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
2526interface 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 ***/
2569static inline HRESULT IDWriteFontFace2_QueryInterface(IDWriteFontFace2* This,REFIID riid,void **ppvObject) {
2570    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2571}
2572static inline ULONG IDWriteFontFace2_AddRef(IDWriteFontFace2* This) {
2573    return This->lpVtbl->AddRef(This);
2574}
2575static inline ULONG IDWriteFontFace2_Release(IDWriteFontFace2* This) {
2576    return This->lpVtbl->Release(This);
2577}
2578/*** IDWriteFontFace methods ***/
2579static inline DWRITE_FONT_FACE_TYPE IDWriteFontFace2_GetType(IDWriteFontFace2* This) {
2580    return This->lpVtbl->GetType(This);
2581}
2582static inline HRESULT IDWriteFontFace2_GetFiles(IDWriteFontFace2* This,UINT32 *number_of_files,IDWriteFontFile **fontfiles) {
2583    return This->lpVtbl->GetFiles(This,number_of_files,fontfiles);
2584}
2585static inline UINT32 IDWriteFontFace2_GetIndex(IDWriteFontFace2* This) {
2586    return This->lpVtbl->GetIndex(This);
2587}
2588static inline DWRITE_FONT_SIMULATIONS IDWriteFontFace2_GetSimulations(IDWriteFontFace2* This) {
2589    return This->lpVtbl->GetSimulations(This);
2590}
2591static inline WINBOOL IDWriteFontFace2_IsSymbolFont(IDWriteFontFace2* This) {
2592    return This->lpVtbl->IsSymbolFont(This);
2593}
2594static inline UINT16 IDWriteFontFace2_GetGlyphCount(IDWriteFontFace2* This) {
2595    return This->lpVtbl->GetGlyphCount(This);
2596}
2597static 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}
2600static 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}
2603static 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}
2606static inline void IDWriteFontFace2_ReleaseFontTable(IDWriteFontFace2* This,void *table_context) {
2607    This->lpVtbl->ReleaseFontTable(This,table_context);
2608}
2609static 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}
2612static 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 ***/
2616static inline void IDWriteFontFace2_GetMetrics(IDWriteFontFace2* This,DWRITE_FONT_METRICS1 *metrics) {
2617    This->lpVtbl->IDWriteFontFace1_GetMetrics(This,metrics);
2618}
2619static 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}
2622static inline void IDWriteFontFace2_GetCaretMetrics(IDWriteFontFace2* This,DWRITE_CARET_METRICS *metrics) {
2623    This->lpVtbl->GetCaretMetrics(This,metrics);
2624}
2625static 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}
2628static inline WINBOOL IDWriteFontFace2_IsMonospacedFont(IDWriteFontFace2* This) {
2629    return This->lpVtbl->IsMonospacedFont(This);
2630}
2631static 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}
2634static 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}
2637static 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}
2640static inline WINBOOL IDWriteFontFace2_HasKerningPairs(IDWriteFontFace2* This) {
2641    return This->lpVtbl->HasKerningPairs(This);
2642}
2643static 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}
2646static inline WINBOOL IDWriteFontFace2_HasVerticalGlyphVariants(IDWriteFontFace2* This) {
2647    return This->lpVtbl->HasVerticalGlyphVariants(This);
2648}
2649/*** IDWriteFontFace2 methods ***/
2650static inline WINBOOL IDWriteFontFace2_IsColorFont(IDWriteFontFace2* This) {
2651    return This->lpVtbl->IsColorFont(This);
2652}
2653static inline UINT32 IDWriteFontFace2_GetColorPaletteCount(IDWriteFontFace2* This) {
2654    return This->lpVtbl->GetColorPaletteCount(This);
2655}
2656static inline UINT32 IDWriteFontFace2_GetPaletteEntryCount(IDWriteFontFace2* This) {
2657    return This->lpVtbl->GetPaletteEntryCount(This);
2658}
2659static 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}
2662static 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
2679DEFINE_GUID(IID_IDWriteColorGlyphRunEnumerator, 0xd31fbe17, 0xf157, 0x41a2, 0x8d,0x24, 0xcb,0x77,0x9e,0x05,0x60,0xe8);
2680#if defined(__cplusplus) && !defined(CINTERFACE)
2681MIDL_INTERFACE("d31fbe17-f157-41a2-8d24-cb779e0560e8")
2682IDWriteColorGlyphRunEnumerator : 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
2695typedef 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
2722interface 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 ***/
2737static inline HRESULT IDWriteColorGlyphRunEnumerator_QueryInterface(IDWriteColorGlyphRunEnumerator* This,REFIID riid,void **ppvObject) {
2738    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2739}
2740static inline ULONG IDWriteColorGlyphRunEnumerator_AddRef(IDWriteColorGlyphRunEnumerator* This) {
2741    return This->lpVtbl->AddRef(This);
2742}
2743static inline ULONG IDWriteColorGlyphRunEnumerator_Release(IDWriteColorGlyphRunEnumerator* This) {
2744    return This->lpVtbl->Release(This);
2745}
2746/*** IDWriteColorGlyphRunEnumerator methods ***/
2747static inline HRESULT IDWriteColorGlyphRunEnumerator_MoveNext(IDWriteColorGlyphRunEnumerator* This,WINBOOL *hasRun) {
2748    return This->lpVtbl->MoveNext(This,hasRun);
2749}
2750static 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
2767DEFINE_GUID(IID_IDWriteRenderingParams2, 0xf9d711c3, 0x9777, 0x40ae, 0x87,0xe8, 0x3e,0x5a,0xf9,0xbf,0x09,0x48);
2768#if defined(__cplusplus) && !defined(CINTERFACE)
2769MIDL_INTERFACE("f9d711c3-9777-40ae-87e8-3e5af9bf0948")
2770IDWriteRenderingParams2 : 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
2780typedef 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
2822interface 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 ***/
2844static inline HRESULT IDWriteRenderingParams2_QueryInterface(IDWriteRenderingParams2* This,REFIID riid,void **ppvObject) {
2845    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2846}
2847static inline ULONG IDWriteRenderingParams2_AddRef(IDWriteRenderingParams2* This) {
2848    return This->lpVtbl->AddRef(This);
2849}
2850static inline ULONG IDWriteRenderingParams2_Release(IDWriteRenderingParams2* This) {
2851    return This->lpVtbl->Release(This);
2852}
2853/*** IDWriteRenderingParams methods ***/
2854static inline FLOAT IDWriteRenderingParams2_GetGamma(IDWriteRenderingParams2* This) {
2855    return This->lpVtbl->GetGamma(This);
2856}
2857static inline FLOAT IDWriteRenderingParams2_GetEnhancedContrast(IDWriteRenderingParams2* This) {
2858    return This->lpVtbl->GetEnhancedContrast(This);
2859}
2860static inline FLOAT IDWriteRenderingParams2_GetClearTypeLevel(IDWriteRenderingParams2* This) {
2861    return This->lpVtbl->GetClearTypeLevel(This);
2862}
2863static inline DWRITE_PIXEL_GEOMETRY IDWriteRenderingParams2_GetPixelGeometry(IDWriteRenderingParams2* This) {
2864    return This->lpVtbl->GetPixelGeometry(This);
2865}
2866static inline DWRITE_RENDERING_MODE IDWriteRenderingParams2_GetRenderingMode(IDWriteRenderingParams2* This) {
2867    return This->lpVtbl->GetRenderingMode(This);
2868}
2869/*** IDWriteRenderingParams1 methods ***/
2870static inline FLOAT IDWriteRenderingParams2_GetGrayscaleEnhancedContrast(IDWriteRenderingParams2* This) {
2871    return This->lpVtbl->GetGrayscaleEnhancedContrast(This);
2872}
2873/*** IDWriteRenderingParams2 methods ***/
2874static 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
2891DEFINE_GUID(IID_IDWriteFactory2, 0x0439fc60, 0xca44, 0x4994, 0x8d,0xee, 0x3a,0x9a,0xf7,0xb7,0x32,0xec);
2892#if defined(__cplusplus) && !defined(CINTERFACE)
2893MIDL_INTERFACE("0439fc60-ca44-4994-8dee-3a9af7b732ec")
2894IDWriteFactory2 : 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
2938typedef 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
3151interface 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 ***/
3191static inline HRESULT IDWriteFactory2_QueryInterface(IDWriteFactory2* This,REFIID riid,void **ppvObject) {
3192    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3193}
3194static inline ULONG IDWriteFactory2_AddRef(IDWriteFactory2* This) {
3195    return This->lpVtbl->AddRef(This);
3196}
3197static inline ULONG IDWriteFactory2_Release(IDWriteFactory2* This) {
3198    return This->lpVtbl->Release(This);
3199}
3200/*** IDWriteFactory methods ***/
3201static inline HRESULT IDWriteFactory2_GetSystemFontCollection(IDWriteFactory2* This,IDWriteFontCollection **collection,WINBOOL check_for_updates) {
3202    return This->lpVtbl->GetSystemFontCollection(This,collection,check_for_updates);
3203}
3204static 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}
3207static inline HRESULT IDWriteFactory2_RegisterFontCollectionLoader(IDWriteFactory2* This,IDWriteFontCollectionLoader *loader) {
3208    return This->lpVtbl->RegisterFontCollectionLoader(This,loader);
3209}
3210static inline HRESULT IDWriteFactory2_UnregisterFontCollectionLoader(IDWriteFactory2* This,IDWriteFontCollectionLoader *loader) {
3211    return This->lpVtbl->UnregisterFontCollectionLoader(This,loader);
3212}
3213static 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}
3216static 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}
3219static 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}
3222static inline HRESULT IDWriteFactory2_CreateRenderingParams(IDWriteFactory2* This,IDWriteRenderingParams **params) {
3223    return This->lpVtbl->CreateRenderingParams(This,params);
3224}
3225static inline HRESULT IDWriteFactory2_CreateMonitorRenderingParams(IDWriteFactory2* This,HMONITOR monitor,IDWriteRenderingParams **params) {
3226    return This->lpVtbl->CreateMonitorRenderingParams(This,monitor,params);
3227}
3228static inline HRESULT IDWriteFactory2_RegisterFontFileLoader(IDWriteFactory2* This,IDWriteFontFileLoader *loader) {
3229    return This->lpVtbl->RegisterFontFileLoader(This,loader);
3230}
3231static inline HRESULT IDWriteFactory2_UnregisterFontFileLoader(IDWriteFactory2* This,IDWriteFontFileLoader *loader) {
3232    return This->lpVtbl->UnregisterFontFileLoader(This,loader);
3233}
3234static 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}
3237static inline HRESULT IDWriteFactory2_CreateTypography(IDWriteFactory2* This,IDWriteTypography **typography) {
3238    return This->lpVtbl->CreateTypography(This,typography);
3239}
3240static inline HRESULT IDWriteFactory2_GetGdiInterop(IDWriteFactory2* This,IDWriteGdiInterop **gdi_interop) {
3241    return This->lpVtbl->GetGdiInterop(This,gdi_interop);
3242}
3243static 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}
3246static 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}
3249static inline HRESULT IDWriteFactory2_CreateEllipsisTrimmingSign(IDWriteFactory2* This,IDWriteTextFormat *format,IDWriteInlineObject **trimming_sign) {
3250    return This->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign);
3251}
3252static inline HRESULT IDWriteFactory2_CreateTextAnalyzer(IDWriteFactory2* This,IDWriteTextAnalyzer **analyzer) {
3253    return This->lpVtbl->CreateTextAnalyzer(This,analyzer);
3254}
3255static 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 ***/
3259static 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 ***/
3263static inline HRESULT IDWriteFactory2_GetSystemFontFallback(IDWriteFactory2* This,IDWriteFontFallback **fallback) {
3264    return This->lpVtbl->GetSystemFontFallback(This,fallback);
3265}
3266static inline HRESULT IDWriteFactory2_CreateFontFallbackBuilder(IDWriteFactory2* This,IDWriteFontFallbackBuilder **fallbackbuilder) {
3267    return This->lpVtbl->CreateFontFallbackBuilder(This,fallbackbuilder);
3268}
3269static 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}
3272static 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}
3275static 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__ */