zig

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

dwrite.h (225946B) - Raw


      1 /*** Autogenerated by WIDL 10.4 from include/dwrite.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_h__
     17 #define __dwrite_h__
     18 
     19 /* Forward declarations */
     20 
     21 #ifndef __IDWriteFontFileStream_FWD_DEFINED__
     22 #define __IDWriteFontFileStream_FWD_DEFINED__
     23 typedef interface IDWriteFontFileStream IDWriteFontFileStream;
     24 #ifdef __cplusplus
     25 interface IDWriteFontFileStream;
     26 #endif /* __cplusplus */
     27 #endif
     28 
     29 #ifndef __IDWriteFontFileLoader_FWD_DEFINED__
     30 #define __IDWriteFontFileLoader_FWD_DEFINED__
     31 typedef interface IDWriteFontFileLoader IDWriteFontFileLoader;
     32 #ifdef __cplusplus
     33 interface IDWriteFontFileLoader;
     34 #endif /* __cplusplus */
     35 #endif
     36 
     37 #ifndef __IDWriteLocalFontFileLoader_FWD_DEFINED__
     38 #define __IDWriteLocalFontFileLoader_FWD_DEFINED__
     39 typedef interface IDWriteLocalFontFileLoader IDWriteLocalFontFileLoader;
     40 #ifdef __cplusplus
     41 interface IDWriteLocalFontFileLoader;
     42 #endif /* __cplusplus */
     43 #endif
     44 
     45 #ifndef __IDWriteFontFile_FWD_DEFINED__
     46 #define __IDWriteFontFile_FWD_DEFINED__
     47 typedef interface IDWriteFontFile IDWriteFontFile;
     48 #ifdef __cplusplus
     49 interface IDWriteFontFile;
     50 #endif /* __cplusplus */
     51 #endif
     52 
     53 #ifndef __IDWriteFontFileEnumerator_FWD_DEFINED__
     54 #define __IDWriteFontFileEnumerator_FWD_DEFINED__
     55 typedef interface IDWriteFontFileEnumerator IDWriteFontFileEnumerator;
     56 #ifdef __cplusplus
     57 interface IDWriteFontFileEnumerator;
     58 #endif /* __cplusplus */
     59 #endif
     60 
     61 #ifndef __IDWriteFontCollectionLoader_FWD_DEFINED__
     62 #define __IDWriteFontCollectionLoader_FWD_DEFINED__
     63 typedef interface IDWriteFontCollectionLoader IDWriteFontCollectionLoader;
     64 #ifdef __cplusplus
     65 interface IDWriteFontCollectionLoader;
     66 #endif /* __cplusplus */
     67 #endif
     68 
     69 #ifndef __IDWriteLocalizedStrings_FWD_DEFINED__
     70 #define __IDWriteLocalizedStrings_FWD_DEFINED__
     71 typedef interface IDWriteLocalizedStrings IDWriteLocalizedStrings;
     72 #ifdef __cplusplus
     73 interface IDWriteLocalizedStrings;
     74 #endif /* __cplusplus */
     75 #endif
     76 
     77 #ifndef __IDWriteRenderingParams_FWD_DEFINED__
     78 #define __IDWriteRenderingParams_FWD_DEFINED__
     79 typedef interface IDWriteRenderingParams IDWriteRenderingParams;
     80 #ifdef __cplusplus
     81 interface IDWriteRenderingParams;
     82 #endif /* __cplusplus */
     83 #endif
     84 
     85 #ifndef __IDWriteFontFace_FWD_DEFINED__
     86 #define __IDWriteFontFace_FWD_DEFINED__
     87 typedef interface IDWriteFontFace IDWriteFontFace;
     88 #ifdef __cplusplus
     89 interface IDWriteFontFace;
     90 #endif /* __cplusplus */
     91 #endif
     92 
     93 #ifndef __IDWriteFont_FWD_DEFINED__
     94 #define __IDWriteFont_FWD_DEFINED__
     95 typedef interface IDWriteFont IDWriteFont;
     96 #ifdef __cplusplus
     97 interface IDWriteFont;
     98 #endif /* __cplusplus */
     99 #endif
    100 
    101 #ifndef __IDWriteFontList_FWD_DEFINED__
    102 #define __IDWriteFontList_FWD_DEFINED__
    103 typedef interface IDWriteFontList IDWriteFontList;
    104 #ifdef __cplusplus
    105 interface IDWriteFontList;
    106 #endif /* __cplusplus */
    107 #endif
    108 
    109 #ifndef __IDWriteFontFamily_FWD_DEFINED__
    110 #define __IDWriteFontFamily_FWD_DEFINED__
    111 typedef interface IDWriteFontFamily IDWriteFontFamily;
    112 #ifdef __cplusplus
    113 interface IDWriteFontFamily;
    114 #endif /* __cplusplus */
    115 #endif
    116 
    117 #ifndef __IDWriteFontCollection_FWD_DEFINED__
    118 #define __IDWriteFontCollection_FWD_DEFINED__
    119 typedef interface IDWriteFontCollection IDWriteFontCollection;
    120 #ifdef __cplusplus
    121 interface IDWriteFontCollection;
    122 #endif /* __cplusplus */
    123 #endif
    124 
    125 #ifndef __IDWritePixelSnapping_FWD_DEFINED__
    126 #define __IDWritePixelSnapping_FWD_DEFINED__
    127 typedef interface IDWritePixelSnapping IDWritePixelSnapping;
    128 #ifdef __cplusplus
    129 interface IDWritePixelSnapping;
    130 #endif /* __cplusplus */
    131 #endif
    132 
    133 #ifndef __IDWriteTextRenderer_FWD_DEFINED__
    134 #define __IDWriteTextRenderer_FWD_DEFINED__
    135 typedef interface IDWriteTextRenderer IDWriteTextRenderer;
    136 #ifdef __cplusplus
    137 interface IDWriteTextRenderer;
    138 #endif /* __cplusplus */
    139 #endif
    140 
    141 #ifndef __IDWriteInlineObject_FWD_DEFINED__
    142 #define __IDWriteInlineObject_FWD_DEFINED__
    143 typedef interface IDWriteInlineObject IDWriteInlineObject;
    144 #ifdef __cplusplus
    145 interface IDWriteInlineObject;
    146 #endif /* __cplusplus */
    147 #endif
    148 
    149 #ifndef __IDWriteTextFormat_FWD_DEFINED__
    150 #define __IDWriteTextFormat_FWD_DEFINED__
    151 typedef interface IDWriteTextFormat IDWriteTextFormat;
    152 #ifdef __cplusplus
    153 interface IDWriteTextFormat;
    154 #endif /* __cplusplus */
    155 #endif
    156 
    157 #ifndef __IDWriteTypography_FWD_DEFINED__
    158 #define __IDWriteTypography_FWD_DEFINED__
    159 typedef interface IDWriteTypography IDWriteTypography;
    160 #ifdef __cplusplus
    161 interface IDWriteTypography;
    162 #endif /* __cplusplus */
    163 #endif
    164 
    165 #ifndef __IDWriteBitmapRenderTarget_FWD_DEFINED__
    166 #define __IDWriteBitmapRenderTarget_FWD_DEFINED__
    167 typedef interface IDWriteBitmapRenderTarget IDWriteBitmapRenderTarget;
    168 #ifdef __cplusplus
    169 interface IDWriteBitmapRenderTarget;
    170 #endif /* __cplusplus */
    171 #endif
    172 
    173 #ifndef __IDWriteGdiInterop_FWD_DEFINED__
    174 #define __IDWriteGdiInterop_FWD_DEFINED__
    175 typedef interface IDWriteGdiInterop IDWriteGdiInterop;
    176 #ifdef __cplusplus
    177 interface IDWriteGdiInterop;
    178 #endif /* __cplusplus */
    179 #endif
    180 
    181 #ifndef __IDWriteTextLayout_FWD_DEFINED__
    182 #define __IDWriteTextLayout_FWD_DEFINED__
    183 typedef interface IDWriteTextLayout IDWriteTextLayout;
    184 #ifdef __cplusplus
    185 interface IDWriteTextLayout;
    186 #endif /* __cplusplus */
    187 #endif
    188 
    189 #ifndef __IDWriteNumberSubstitution_FWD_DEFINED__
    190 #define __IDWriteNumberSubstitution_FWD_DEFINED__
    191 typedef interface IDWriteNumberSubstitution IDWriteNumberSubstitution;
    192 #ifdef __cplusplus
    193 interface IDWriteNumberSubstitution;
    194 #endif /* __cplusplus */
    195 #endif
    196 
    197 #ifndef __IDWriteTextAnalysisSource_FWD_DEFINED__
    198 #define __IDWriteTextAnalysisSource_FWD_DEFINED__
    199 typedef interface IDWriteTextAnalysisSource IDWriteTextAnalysisSource;
    200 #ifdef __cplusplus
    201 interface IDWriteTextAnalysisSource;
    202 #endif /* __cplusplus */
    203 #endif
    204 
    205 #ifndef __IDWriteTextAnalysisSink_FWD_DEFINED__
    206 #define __IDWriteTextAnalysisSink_FWD_DEFINED__
    207 typedef interface IDWriteTextAnalysisSink IDWriteTextAnalysisSink;
    208 #ifdef __cplusplus
    209 interface IDWriteTextAnalysisSink;
    210 #endif /* __cplusplus */
    211 #endif
    212 
    213 #ifndef __IDWriteTextAnalyzer_FWD_DEFINED__
    214 #define __IDWriteTextAnalyzer_FWD_DEFINED__
    215 typedef interface IDWriteTextAnalyzer IDWriteTextAnalyzer;
    216 #ifdef __cplusplus
    217 interface IDWriteTextAnalyzer;
    218 #endif /* __cplusplus */
    219 #endif
    220 
    221 #ifndef __IDWriteGlyphRunAnalysis_FWD_DEFINED__
    222 #define __IDWriteGlyphRunAnalysis_FWD_DEFINED__
    223 typedef interface IDWriteGlyphRunAnalysis IDWriteGlyphRunAnalysis;
    224 #ifdef __cplusplus
    225 interface IDWriteGlyphRunAnalysis;
    226 #endif /* __cplusplus */
    227 #endif
    228 
    229 #ifndef __IDWriteFactory_FWD_DEFINED__
    230 #define __IDWriteFactory_FWD_DEFINED__
    231 typedef interface IDWriteFactory IDWriteFactory;
    232 #ifdef __cplusplus
    233 interface IDWriteFactory;
    234 #endif /* __cplusplus */
    235 #endif
    236 
    237 /* Headers for imported files */
    238 
    239 #include <unknwn.h>
    240 #include <dcommon.h>
    241 
    242 #ifdef __cplusplus
    243 extern "C" {
    244 #endif
    245 
    246 #ifndef __IDWriteFactory_FWD_DEFINED__
    247 #define __IDWriteFactory_FWD_DEFINED__
    248 typedef interface IDWriteFactory IDWriteFactory;
    249 #ifdef __cplusplus
    250 interface IDWriteFactory;
    251 #endif /* __cplusplus */
    252 #endif
    253 
    254 #ifndef __IDWriteFontCollection_FWD_DEFINED__
    255 #define __IDWriteFontCollection_FWD_DEFINED__
    256 typedef interface IDWriteFontCollection IDWriteFontCollection;
    257 #ifdef __cplusplus
    258 interface IDWriteFontCollection;
    259 #endif /* __cplusplus */
    260 #endif
    261 
    262 #ifndef __IDWriteFontFamily_FWD_DEFINED__
    263 #define __IDWriteFontFamily_FWD_DEFINED__
    264 typedef interface IDWriteFontFamily IDWriteFontFamily;
    265 #ifdef __cplusplus
    266 interface IDWriteFontFamily;
    267 #endif /* __cplusplus */
    268 #endif
    269 
    270 #ifndef __IDWriteFontFace_FWD_DEFINED__
    271 #define __IDWriteFontFace_FWD_DEFINED__
    272 typedef interface IDWriteFontFace IDWriteFontFace;
    273 #ifdef __cplusplus
    274 interface IDWriteFontFace;
    275 #endif /* __cplusplus */
    276 #endif
    277 
    278 #ifndef __IDWriteInlineObject_FWD_DEFINED__
    279 #define __IDWriteInlineObject_FWD_DEFINED__
    280 typedef interface IDWriteInlineObject IDWriteInlineObject;
    281 #ifdef __cplusplus
    282 interface IDWriteInlineObject;
    283 #endif /* __cplusplus */
    284 #endif
    285 
    286 #ifndef __ID2D1SimplifiedGeometrySink_FWD_DEFINED__
    287 #define __ID2D1SimplifiedGeometrySink_FWD_DEFINED__
    288 typedef interface ID2D1SimplifiedGeometrySink ID2D1SimplifiedGeometrySink;
    289 #ifdef __cplusplus
    290 interface ID2D1SimplifiedGeometrySink;
    291 #endif /* __cplusplus */
    292 #endif
    293 
    294 typedef ID2D1SimplifiedGeometrySink IDWriteGeometrySink;
    295 #ifndef _WINDEF_
    296 typedef void *HMONITOR;
    297 #endif /* _WINDEF_ */
    298 #ifdef WINE_NO_UNICODE_MACROS
    299 #undef GetGlyphIndices
    300 #endif
    301 typedef enum DWRITE_FACTORY_TYPE {
    302     DWRITE_FACTORY_TYPE_SHARED = 0,
    303     DWRITE_FACTORY_TYPE_ISOLATED = 1
    304 } DWRITE_FACTORY_TYPE;
    305 typedef enum DWRITE_FONT_FILE_TYPE {
    306     DWRITE_FONT_FILE_TYPE_UNKNOWN = 0,
    307     DWRITE_FONT_FILE_TYPE_CFF = 1,
    308     DWRITE_FONT_FILE_TYPE_TRUETYPE = 2,
    309     DWRITE_FONT_FILE_TYPE_OPENTYPE_COLLECTION = 3,
    310     DWRITE_FONT_FILE_TYPE_TYPE1_PFM = 4,
    311     DWRITE_FONT_FILE_TYPE_TYPE1_PFB = 5,
    312     DWRITE_FONT_FILE_TYPE_VECTOR = 6,
    313     DWRITE_FONT_FILE_TYPE_BITMAP = 7,
    314     DWRITE_FONT_FILE_TYPE_TRUETYPE_COLLECTION = DWRITE_FONT_FILE_TYPE_OPENTYPE_COLLECTION
    315 } DWRITE_FONT_FILE_TYPE;
    316 typedef enum DWRITE_FONT_FACE_TYPE {
    317     DWRITE_FONT_FACE_TYPE_CFF = 0,
    318     DWRITE_FONT_FACE_TYPE_TRUETYPE = 1,
    319     DWRITE_FONT_FACE_TYPE_OPENTYPE_COLLECTION = 2,
    320     DWRITE_FONT_FACE_TYPE_TYPE1 = 3,
    321     DWRITE_FONT_FACE_TYPE_VECTOR = 4,
    322     DWRITE_FONT_FACE_TYPE_BITMAP = 5,
    323     DWRITE_FONT_FACE_TYPE_UNKNOWN = 6,
    324     DWRITE_FONT_FACE_TYPE_RAW_CFF = 7,
    325     DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION = DWRITE_FONT_FACE_TYPE_OPENTYPE_COLLECTION
    326 } DWRITE_FONT_FACE_TYPE;
    327 typedef enum DWRITE_FONT_WEIGHT {
    328     DWRITE_FONT_WEIGHT_THIN = 100,
    329     DWRITE_FONT_WEIGHT_EXTRA_LIGHT = 200,
    330     DWRITE_FONT_WEIGHT_ULTRA_LIGHT = 200,
    331     DWRITE_FONT_WEIGHT_LIGHT = 300,
    332     DWRITE_FONT_WEIGHT_SEMI_LIGHT = 350,
    333     DWRITE_FONT_WEIGHT_NORMAL = 400,
    334     DWRITE_FONT_WEIGHT_REGULAR = 400,
    335     DWRITE_FONT_WEIGHT_MEDIUM = 500,
    336     DWRITE_FONT_WEIGHT_DEMI_BOLD = 600,
    337     DWRITE_FONT_WEIGHT_SEMI_BOLD = 600,
    338     DWRITE_FONT_WEIGHT_BOLD = 700,
    339     DWRITE_FONT_WEIGHT_EXTRA_BOLD = 800,
    340     DWRITE_FONT_WEIGHT_ULTRA_BOLD = 800,
    341     DWRITE_FONT_WEIGHT_BLACK = 900,
    342     DWRITE_FONT_WEIGHT_HEAVY = 900,
    343     DWRITE_FONT_WEIGHT_EXTRA_BLACK = 950,
    344     DWRITE_FONT_WEIGHT_ULTRA_BLACK = 950
    345 } DWRITE_FONT_WEIGHT;
    346 typedef enum DWRITE_FONT_STRETCH {
    347     DWRITE_FONT_STRETCH_UNDEFINED = 0,
    348     DWRITE_FONT_STRETCH_ULTRA_CONDENSED = 1,
    349     DWRITE_FONT_STRETCH_EXTRA_CONDENSED = 2,
    350     DWRITE_FONT_STRETCH_CONDENSED = 3,
    351     DWRITE_FONT_STRETCH_SEMI_CONDENSED = 4,
    352     DWRITE_FONT_STRETCH_NORMAL = 5,
    353     DWRITE_FONT_STRETCH_MEDIUM = 5,
    354     DWRITE_FONT_STRETCH_SEMI_EXPANDED = 6,
    355     DWRITE_FONT_STRETCH_EXPANDED = 7,
    356     DWRITE_FONT_STRETCH_EXTRA_EXPANDED = 8,
    357     DWRITE_FONT_STRETCH_ULTRA_EXPANDED = 9
    358 } DWRITE_FONT_STRETCH;
    359 typedef enum DWRITE_FONT_STYLE {
    360     DWRITE_FONT_STYLE_NORMAL = 0,
    361     DWRITE_FONT_STYLE_OBLIQUE = 1,
    362     DWRITE_FONT_STYLE_ITALIC = 2
    363 } DWRITE_FONT_STYLE;
    364 typedef enum DWRITE_INFORMATIONAL_STRING_ID {
    365     DWRITE_INFORMATIONAL_STRING_NONE = 0,
    366     DWRITE_INFORMATIONAL_STRING_COPYRIGHT_NOTICE = 1,
    367     DWRITE_INFORMATIONAL_STRING_VERSION_STRINGS = 2,
    368     DWRITE_INFORMATIONAL_STRING_TRADEMARK = 3,
    369     DWRITE_INFORMATIONAL_STRING_MANUFACTURER = 4,
    370     DWRITE_INFORMATIONAL_STRING_DESIGNER = 5,
    371     DWRITE_INFORMATIONAL_STRING_DESIGNER_URL = 6,
    372     DWRITE_INFORMATIONAL_STRING_DESCRIPTION = 7,
    373     DWRITE_INFORMATIONAL_STRING_FONT_VENDOR_URL = 8,
    374     DWRITE_INFORMATIONAL_STRING_LICENSE_DESCRIPTION = 9,
    375     DWRITE_INFORMATIONAL_STRING_LICENSE_INFO_URL = 10,
    376     DWRITE_INFORMATIONAL_STRING_WIN32_FAMILY_NAMES = 11,
    377     DWRITE_INFORMATIONAL_STRING_WIN32_SUBFAMILY_NAMES = 12,
    378     DWRITE_INFORMATIONAL_STRING_TYPOGRAPHIC_FAMILY_NAMES = 13,
    379     DWRITE_INFORMATIONAL_STRING_TYPOGRAPHIC_SUBFAMILY_NAMES = 14,
    380     DWRITE_INFORMATIONAL_STRING_SAMPLE_TEXT = 15,
    381     DWRITE_INFORMATIONAL_STRING_FULL_NAME = 16,
    382     DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_NAME = 17,
    383     DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_CID_NAME = 18,
    384     DWRITE_INFORMATIONAL_STRING_WEIGHT_STRETCH_STYLE_FAMILY_NAME = 19,
    385     DWRITE_INFORMATIONAL_STRING_DESIGN_SCRIPT_LANGUAGE_TAG = 20,
    386     DWRITE_INFORMATIONAL_STRING_SUPPORTED_SCRIPT_LANGUAGE_TAG = 21,
    387     DWRITE_INFORMATIONAL_STRING_PREFERRED_FAMILY_NAMES = DWRITE_INFORMATIONAL_STRING_TYPOGRAPHIC_FAMILY_NAMES,
    388     DWRITE_INFORMATIONAL_STRING_PREFERRED_SUBFAMILY_NAMES = DWRITE_INFORMATIONAL_STRING_TYPOGRAPHIC_SUBFAMILY_NAMES,
    389     DWRITE_INFORMATIONAL_STRING_WWS_FAMILY_NAME = DWRITE_INFORMATIONAL_STRING_WEIGHT_STRETCH_STYLE_FAMILY_NAME
    390 } DWRITE_INFORMATIONAL_STRING_ID;
    391 typedef enum DWRITE_FONT_SIMULATIONS {
    392     DWRITE_FONT_SIMULATIONS_NONE = 0,
    393     DWRITE_FONT_SIMULATIONS_BOLD = 1,
    394     DWRITE_FONT_SIMULATIONS_OBLIQUE = 2
    395 } DWRITE_FONT_SIMULATIONS;
    396 DEFINE_ENUM_FLAG_OPERATORS(DWRITE_FONT_SIMULATIONS);
    397 typedef enum DWRITE_PIXEL_GEOMETRY {
    398     DWRITE_PIXEL_GEOMETRY_FLAT = 0,
    399     DWRITE_PIXEL_GEOMETRY_RGB = 1,
    400     DWRITE_PIXEL_GEOMETRY_BGR = 2
    401 } DWRITE_PIXEL_GEOMETRY;
    402 typedef enum DWRITE_RENDERING_MODE {
    403     DWRITE_RENDERING_MODE_DEFAULT = 0,
    404     DWRITE_RENDERING_MODE_ALIASED = 1,
    405     DWRITE_RENDERING_MODE_GDI_CLASSIC = 2,
    406     DWRITE_RENDERING_MODE_GDI_NATURAL = 3,
    407     DWRITE_RENDERING_MODE_NATURAL = 4,
    408     DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC = 5,
    409     DWRITE_RENDERING_MODE_OUTLINE = 6,
    410     DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC = DWRITE_RENDERING_MODE_GDI_CLASSIC,
    411     DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL = DWRITE_RENDERING_MODE_GDI_NATURAL,
    412     DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL = DWRITE_RENDERING_MODE_NATURAL,
    413     DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC = DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC
    414 } DWRITE_RENDERING_MODE;
    415 typedef enum DWRITE_TEXT_ALIGNMENT {
    416     DWRITE_TEXT_ALIGNMENT_LEADING = 0,
    417     DWRITE_TEXT_ALIGNMENT_TRAILING = 1,
    418     DWRITE_TEXT_ALIGNMENT_CENTER = 2,
    419     DWRITE_TEXT_ALIGNMENT_JUSTIFIED = 3
    420 } DWRITE_TEXT_ALIGNMENT;
    421 typedef enum DWRITE_PARAGRAPH_ALIGNMENT {
    422     DWRITE_PARAGRAPH_ALIGNMENT_NEAR = 0,
    423     DWRITE_PARAGRAPH_ALIGNMENT_FAR = 1,
    424     DWRITE_PARAGRAPH_ALIGNMENT_CENTER = 2
    425 } DWRITE_PARAGRAPH_ALIGNMENT;
    426 typedef enum DWRITE_WORD_WRAPPING {
    427     DWRITE_WORD_WRAPPING_WRAP = 0,
    428     DWRITE_WORD_WRAPPING_NO_WRAP = 1,
    429     DWRITE_WORD_WRAPPING_EMERGENCY_BREAK = 2,
    430     DWRITE_WORD_WRAPPING_WHOLE_WORD = 3,
    431     DWRITE_WORD_WRAPPING_CHARACTER = 4
    432 } DWRITE_WORD_WRAPPING;
    433 typedef enum DWRITE_READING_DIRECTION {
    434     DWRITE_READING_DIRECTION_LEFT_TO_RIGHT = 0,
    435     DWRITE_READING_DIRECTION_RIGHT_TO_LEFT = 1,
    436     DWRITE_READING_DIRECTION_TOP_TO_BOTTOM = 2,
    437     DWRITE_READING_DIRECTION_BOTTOM_TO_TOP = 3
    438 } DWRITE_READING_DIRECTION;
    439 typedef enum DWRITE_FLOW_DIRECTION {
    440     DWRITE_FLOW_DIRECTION_TOP_TO_BOTTOM = 0,
    441     DWRITE_FLOW_DIRECTION_BOTTOM_TO_TOP = 1,
    442     DWRITE_FLOW_DIRECTION_LEFT_TO_RIGHT = 2,
    443     DWRITE_FLOW_DIRECTION_RIGHT_TO_LEFT = 3
    444 } DWRITE_FLOW_DIRECTION;
    445 typedef enum DWRITE_TRIMMING_GRANULARITY {
    446     DWRITE_TRIMMING_GRANULARITY_NONE = 0,
    447     DWRITE_TRIMMING_GRANULARITY_CHARACTER = 1,
    448     DWRITE_TRIMMING_GRANULARITY_WORD = 2
    449 } DWRITE_TRIMMING_GRANULARITY;
    450 typedef enum DWRITE_BREAK_CONDITION {
    451     DWRITE_BREAK_CONDITION_NEUTRAL = 0,
    452     DWRITE_BREAK_CONDITION_CAN_BREAK = 1,
    453     DWRITE_BREAK_CONDITION_MAY_NOT_BREAK = 2,
    454     DWRITE_BREAK_CONDITION_MUST_BREAK = 3
    455 } DWRITE_BREAK_CONDITION;
    456 typedef enum DWRITE_LINE_SPACING_METHOD {
    457     DWRITE_LINE_SPACING_METHOD_DEFAULT = 0,
    458     DWRITE_LINE_SPACING_METHOD_UNIFORM = 1,
    459     DWRITE_LINE_SPACING_METHOD_PROPORTIONAL = 2
    460 } DWRITE_LINE_SPACING_METHOD;
    461 #define DWRITE_MAKE_OPENTYPE_TAG(a,b,c,d) ( \
    462     ((UINT32)(UINT8)(d) << 24) | \
    463     ((UINT32)(UINT8)(c) << 16) | \
    464     ((UINT32)(UINT8)(b) <<  8) | \
    465      (UINT32)(UINT8)(a))
    466 typedef enum DWRITE_FONT_FEATURE_TAG {
    467     DWRITE_FONT_FEATURE_TAG_ALTERNATIVE_FRACTIONS = 0x63726661,
    468     DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS_FROM_CAPITALS = 0x63703263,
    469     DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS_FROM_CAPITALS = 0x63733263,
    470     DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_ALTERNATES = 0x746c6163,
    471     DWRITE_FONT_FEATURE_TAG_CASE_SENSITIVE_FORMS = 0x65736163,
    472     DWRITE_FONT_FEATURE_TAG_GLYPH_COMPOSITION_DECOMPOSITION = 0x706d6363,
    473     DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_LIGATURES = 0x67696c63,
    474     DWRITE_FONT_FEATURE_TAG_CAPITAL_SPACING = 0x70737063,
    475     DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_SWASH = 0x68777363,
    476     DWRITE_FONT_FEATURE_TAG_CURSIVE_POSITIONING = 0x73727563,
    477     DWRITE_FONT_FEATURE_TAG_DEFAULT = 0x746c6664,
    478     DWRITE_FONT_FEATURE_TAG_DISCRETIONARY_LIGATURES = 0x67696c64,
    479     DWRITE_FONT_FEATURE_TAG_EXPERT_FORMS = 0x74707865,
    480     DWRITE_FONT_FEATURE_TAG_FRACTIONS = 0x63617266,
    481     DWRITE_FONT_FEATURE_TAG_FULL_WIDTH = 0x64697766,
    482     DWRITE_FONT_FEATURE_TAG_HALF_FORMS = 0x666c6168,
    483     DWRITE_FONT_FEATURE_TAG_HALANT_FORMS = 0x6e6c6168,
    484     DWRITE_FONT_FEATURE_TAG_ALTERNATE_HALF_WIDTH = 0x746c6168,
    485     DWRITE_FONT_FEATURE_TAG_HISTORICAL_FORMS = 0x74736968,
    486     DWRITE_FONT_FEATURE_TAG_HORIZONTAL_KANA_ALTERNATES = 0x616e6b68,
    487     DWRITE_FONT_FEATURE_TAG_HISTORICAL_LIGATURES = 0x67696c68,
    488     DWRITE_FONT_FEATURE_TAG_HALF_WIDTH = 0x64697768,
    489     DWRITE_FONT_FEATURE_TAG_HOJO_KANJI_FORMS = 0x6f6a6f68,
    490     DWRITE_FONT_FEATURE_TAG_JIS04_FORMS = 0x3430706a,
    491     DWRITE_FONT_FEATURE_TAG_JIS78_FORMS = 0x3837706a,
    492     DWRITE_FONT_FEATURE_TAG_JIS83_FORMS = 0x3338706a,
    493     DWRITE_FONT_FEATURE_TAG_JIS90_FORMS = 0x3039706a,
    494     DWRITE_FONT_FEATURE_TAG_KERNING = 0x6e72656b,
    495     DWRITE_FONT_FEATURE_TAG_STANDARD_LIGATURES = 0x6167696c,
    496     DWRITE_FONT_FEATURE_TAG_LINING_FIGURES = 0x6d756e6c,
    497     DWRITE_FONT_FEATURE_TAG_LOCALIZED_FORMS = 0x6c636f6c,
    498     DWRITE_FONT_FEATURE_TAG_MARK_POSITIONING = 0x6b72616d,
    499     DWRITE_FONT_FEATURE_TAG_MATHEMATICAL_GREEK = 0x6b72676d,
    500     DWRITE_FONT_FEATURE_TAG_MARK_TO_MARK_POSITIONING = 0x6b6d6b6d,
    501     DWRITE_FONT_FEATURE_TAG_ALTERNATE_ANNOTATION_FORMS = 0x746c616e,
    502     DWRITE_FONT_FEATURE_TAG_NLC_KANJI_FORMS = 0x6b636c6e,
    503     DWRITE_FONT_FEATURE_TAG_OLD_STYLE_FIGURES = 0x6d756e6f,
    504     DWRITE_FONT_FEATURE_TAG_ORDINALS = 0x6e64726f,
    505     DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_ALTERNATE_WIDTH = 0x746c6170,
    506     DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS = 0x70616370,
    507     DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_FIGURES = 0x6d756e70,
    508     DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_WIDTHS = 0x64697770,
    509     DWRITE_FONT_FEATURE_TAG_QUARTER_WIDTHS = 0x64697771,
    510     DWRITE_FONT_FEATURE_TAG_REQUIRED_LIGATURES = 0x67696c72,
    511     DWRITE_FONT_FEATURE_TAG_RUBY_NOTATION_FORMS = 0x79627572,
    512     DWRITE_FONT_FEATURE_TAG_STYLISTIC_ALTERNATES = 0x746c6173,
    513     DWRITE_FONT_FEATURE_TAG_SCIENTIFIC_INFERIORS = 0x666e6973,
    514     DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS = 0x70636d73,
    515     DWRITE_FONT_FEATURE_TAG_SIMPLIFIED_FORMS = 0x6c706d73,
    516     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_1 = 0x31307373,
    517     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_2 = 0x32307373,
    518     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_3 = 0x33307373,
    519     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_4 = 0x34307373,
    520     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_5 = 0x35307373,
    521     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_6 = 0x36307373,
    522     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_7 = 0x37307373,
    523     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_8 = 0x38307373,
    524     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_9 = 0x39307373,
    525     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_10 = 0x30317373,
    526     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_11 = 0x31317373,
    527     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_12 = 0x32317373,
    528     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_13 = 0x33317373,
    529     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_14 = 0x34317373,
    530     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_15 = 0x35317373,
    531     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_16 = 0x36317373,
    532     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_17 = 0x37317373,
    533     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_18 = 0x38317373,
    534     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_19 = 0x39317373,
    535     DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_20 = 0x30327373,
    536     DWRITE_FONT_FEATURE_TAG_SUBSCRIPT = 0x73627573,
    537     DWRITE_FONT_FEATURE_TAG_SUPERSCRIPT = 0x73707573,
    538     DWRITE_FONT_FEATURE_TAG_SWASH = 0x68737773,
    539     DWRITE_FONT_FEATURE_TAG_TITLING = 0x6c746974,
    540     DWRITE_FONT_FEATURE_TAG_TRADITIONAL_NAME_FORMS = 0x6d616e74,
    541     DWRITE_FONT_FEATURE_TAG_TABULAR_FIGURES = 0x6d756e74,
    542     DWRITE_FONT_FEATURE_TAG_TRADITIONAL_FORMS = 0x64617274,
    543     DWRITE_FONT_FEATURE_TAG_THIRD_WIDTHS = 0x64697774,
    544     DWRITE_FONT_FEATURE_TAG_UNICASE = 0x63696e75,
    545     DWRITE_FONT_FEATURE_TAG_VERTICAL_WRITING = 0x74726576,
    546     DWRITE_FONT_FEATURE_TAG_VERTICAL_ALTERNATES_AND_ROTATION = 0x32747276,
    547     DWRITE_FONT_FEATURE_TAG_SLASHED_ZERO = 0x6f72657a
    548 } DWRITE_FONT_FEATURE_TAG;
    549 typedef enum DWRITE_SCRIPT_SHAPES {
    550     DWRITE_SCRIPT_SHAPES_DEFAULT = 0,
    551     DWRITE_SCRIPT_SHAPES_NO_VISUAL = 1
    552 } DWRITE_SCRIPT_SHAPES;
    553 DEFINE_ENUM_FLAG_OPERATORS(DWRITE_SCRIPT_SHAPES);
    554 typedef enum DWRITE_NUMBER_SUBSTITUTION_METHOD {
    555     DWRITE_NUMBER_SUBSTITUTION_METHOD_FROM_CULTURE = 0,
    556     DWRITE_NUMBER_SUBSTITUTION_METHOD_CONTEXTUAL = 1,
    557     DWRITE_NUMBER_SUBSTITUTION_METHOD_NONE = 2,
    558     DWRITE_NUMBER_SUBSTITUTION_METHOD_NATIONAL = 3,
    559     DWRITE_NUMBER_SUBSTITUTION_METHOD_TRADITIONAL = 4
    560 } DWRITE_NUMBER_SUBSTITUTION_METHOD;
    561 #define DWRITE_ALPHA_MAX 255
    562 typedef enum DWRITE_TEXTURE_TYPE {
    563     DWRITE_TEXTURE_ALIASED_1x1 = 0,
    564     DWRITE_TEXTURE_CLEARTYPE_3x1 = 1
    565 } DWRITE_TEXTURE_TYPE;
    566 typedef struct DWRITE_FONT_METRICS {
    567     UINT16 designUnitsPerEm;
    568     UINT16 ascent;
    569     UINT16 descent;
    570     INT16 lineGap;
    571     UINT16 capHeight;
    572     UINT16 xHeight;
    573     INT16 underlinePosition;
    574     UINT16 underlineThickness;
    575     INT16 strikethroughPosition;
    576     UINT16 strikethroughThickness;
    577 } DWRITE_FONT_METRICS;
    578 typedef struct DWRITE_GLYPH_METRICS {
    579     INT32 leftSideBearing;
    580     UINT32 advanceWidth;
    581     INT32 rightSideBearing;
    582     INT32 topSideBearing;
    583     UINT32 advanceHeight;
    584     INT32 bottomSideBearing;
    585     INT32 verticalOriginY;
    586 } DWRITE_GLYPH_METRICS;
    587 typedef struct DWRITE_GLYPH_OFFSET {
    588     FLOAT advanceOffset;
    589     FLOAT ascenderOffset;
    590 } DWRITE_GLYPH_OFFSET;
    591 typedef struct DWRITE_MATRIX {
    592     FLOAT m11;
    593     FLOAT m12;
    594     FLOAT m21;
    595     FLOAT m22;
    596     FLOAT dx;
    597     FLOAT dy;
    598 } DWRITE_MATRIX;
    599 typedef struct DWRITE_TRIMMING {
    600     DWRITE_TRIMMING_GRANULARITY granularity;
    601     UINT32 delimiter;
    602     UINT32 delimiterCount;
    603 } DWRITE_TRIMMING;
    604 #ifndef __d2d1_h__
    605 typedef struct DWRITE_GLYPH_RUN DWRITE_GLYPH_RUN;
    606 #endif /* __d2d1_h__ */
    607 struct DWRITE_GLYPH_RUN {
    608     IDWriteFontFace *fontFace;
    609     FLOAT fontEmSize;
    610     UINT32 glyphCount;
    611     const UINT16 *glyphIndices;
    612     const FLOAT *glyphAdvances;
    613     const DWRITE_GLYPH_OFFSET *glyphOffsets;
    614     WINBOOL isSideways;
    615     UINT32 bidiLevel;
    616 };
    617 #ifndef __d2d1_1_h__
    618 typedef struct DWRITE_GLYPH_RUN_DESCRIPTION DWRITE_GLYPH_RUN_DESCRIPTION;
    619 #endif /* __d2d1_1_h__ */
    620 struct DWRITE_GLYPH_RUN_DESCRIPTION {
    621     const WCHAR *localeName;
    622     const WCHAR *string;
    623     UINT32 stringLength;
    624     const UINT16 *clusterMap;
    625     UINT32 textPosition;
    626 };
    627 typedef struct DWRITE_UNDERLINE {
    628     FLOAT width;
    629     FLOAT thickness;
    630     FLOAT offset;
    631     FLOAT runHeight;
    632     DWRITE_READING_DIRECTION readingDirection;
    633     DWRITE_FLOW_DIRECTION flowDirection;
    634     const WCHAR *localeName;
    635     DWRITE_MEASURING_MODE measuringMode;
    636 } DWRITE_UNDERLINE;
    637 typedef struct DWRITE_STRIKETHROUGH {
    638     FLOAT width;
    639     FLOAT thickness;
    640     FLOAT offset;
    641     DWRITE_READING_DIRECTION readingDirection;
    642     DWRITE_FLOW_DIRECTION flowDirection;
    643     const WCHAR *localeName;
    644     DWRITE_MEASURING_MODE measuringMode;
    645 } DWRITE_STRIKETHROUGH;
    646 typedef struct DWRITE_INLINE_OBJECT_METRICS {
    647     FLOAT width;
    648     FLOAT height;
    649     FLOAT baseline;
    650     WINBOOL supportsSideways;
    651 } DWRITE_INLINE_OBJECT_METRICS;
    652 typedef struct DWRITE_OVERHANG_METRICS {
    653     FLOAT left;
    654     FLOAT top;
    655     FLOAT right;
    656     FLOAT bottom;
    657 } DWRITE_OVERHANG_METRICS;
    658 typedef struct DWRITE_FONT_FEATURE {
    659     DWRITE_FONT_FEATURE_TAG nameTag;
    660     UINT32 parameter;
    661 } DWRITE_FONT_FEATURE;
    662 typedef struct DWRITE_TEXT_RANGE {
    663     UINT32 startPosition;
    664     UINT32 length;
    665 } DWRITE_TEXT_RANGE;
    666 typedef struct DWRITE_LINE_METRICS {
    667     UINT32 length;
    668     UINT32 trailingWhitespaceLength;
    669     UINT32 newlineLength;
    670     FLOAT height;
    671     FLOAT baseline;
    672     WINBOOL isTrimmed;
    673 } DWRITE_LINE_METRICS;
    674 typedef struct DWRITE_TEXT_METRICS {
    675     FLOAT left;
    676     FLOAT top;
    677     FLOAT width;
    678     FLOAT widthIncludingTrailingWhitespace;
    679     FLOAT height;
    680     FLOAT layoutWidth;
    681     FLOAT layoutHeight;
    682     UINT32 maxBidiReorderingDepth;
    683     UINT32 lineCount;
    684 } DWRITE_TEXT_METRICS;
    685 typedef struct DWRITE_CLUSTER_METRICS {
    686     FLOAT width;
    687     UINT16 length;
    688     UINT16 canWrapLineAfter : 1;
    689     UINT16 isWhitespace : 1;
    690     UINT16 isNewline : 1;
    691     UINT16 isSoftHyphen : 1;
    692     UINT16 isRightToLeft : 1;
    693     UINT16 padding : 11;
    694 } DWRITE_CLUSTER_METRICS;
    695 typedef struct DWRITE_HIT_TEST_METRICS {
    696     UINT32 textPosition;
    697     UINT32 length;
    698     FLOAT left;
    699     FLOAT top;
    700     FLOAT width;
    701     FLOAT height;
    702     UINT32 bidiLevel;
    703     WINBOOL isText;
    704     WINBOOL isTrimmed;
    705 } DWRITE_HIT_TEST_METRICS;
    706 typedef struct DWRITE_SCRIPT_ANALYSIS {
    707     UINT16 script;
    708     DWRITE_SCRIPT_SHAPES shapes;
    709 } DWRITE_SCRIPT_ANALYSIS;
    710 typedef struct DWRITE_LINE_BREAKPOINT {
    711     UINT8 breakConditionBefore : 2;
    712     UINT8 breakConditionAfter : 2;
    713     UINT8 isWhitespace : 1;
    714     UINT8 isSoftHyphen : 1;
    715     UINT8 padding : 2;
    716 } DWRITE_LINE_BREAKPOINT;
    717 typedef struct DWRITE_TYPOGRAPHIC_FEATURES {
    718     DWRITE_FONT_FEATURE *features;
    719     UINT32 featureCount;
    720 } DWRITE_TYPOGRAPHIC_FEATURES;
    721 typedef struct DWRITE_SHAPING_TEXT_PROPERTIES {
    722     UINT16 isShapedAlone : 1;
    723     UINT16 reserved1 : 1;
    724     UINT16 canBreakShapingAfter : 1;
    725     UINT16 reserved : 13;
    726 } DWRITE_SHAPING_TEXT_PROPERTIES;
    727 typedef struct DWRITE_SHAPING_GLYPH_PROPERTIES {
    728     UINT16 justification : 4;
    729     UINT16 isClusterStart : 1;
    730     UINT16 isDiacritic : 1;
    731     UINT16 isZeroWidthSpace : 1;
    732     UINT16 reserved : 9;
    733 } DWRITE_SHAPING_GLYPH_PROPERTIES;
    734 /*****************************************************************************
    735  * IDWriteFontFileStream interface
    736  */
    737 #ifndef __IDWriteFontFileStream_INTERFACE_DEFINED__
    738 #define __IDWriteFontFileStream_INTERFACE_DEFINED__
    739 
    740 DEFINE_GUID(IID_IDWriteFontFileStream, 0x6d4865fe, 0x0ab8, 0x4d91, 0x8f,0x62, 0x5d,0xd6,0xbe,0x34,0xa3,0xe0);
    741 #if defined(__cplusplus) && !defined(CINTERFACE)
    742 MIDL_INTERFACE("6d4865fe-0ab8-4d91-8f62-5dd6be34a3e0")
    743 IDWriteFontFileStream : public IUnknown
    744 {
    745     virtual HRESULT STDMETHODCALLTYPE ReadFileFragment(
    746         const void **fragment_start,
    747         UINT64 offset,
    748         UINT64 fragment_size,
    749         void **fragment_context) = 0;
    750 
    751     virtual void STDMETHODCALLTYPE ReleaseFileFragment(
    752         void *fragment_context) = 0;
    753 
    754     virtual HRESULT STDMETHODCALLTYPE GetFileSize(
    755         UINT64 *size) = 0;
    756 
    757     virtual HRESULT STDMETHODCALLTYPE GetLastWriteTime(
    758         UINT64 *last_writetime) = 0;
    759 
    760 };
    761 #ifdef __CRT_UUID_DECL
    762 __CRT_UUID_DECL(IDWriteFontFileStream, 0x6d4865fe, 0x0ab8, 0x4d91, 0x8f,0x62, 0x5d,0xd6,0xbe,0x34,0xa3,0xe0)
    763 #endif
    764 #else
    765 typedef struct IDWriteFontFileStreamVtbl {
    766     BEGIN_INTERFACE
    767 
    768     /*** IUnknown methods ***/
    769     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    770         IDWriteFontFileStream *This,
    771         REFIID riid,
    772         void **ppvObject);
    773 
    774     ULONG (STDMETHODCALLTYPE *AddRef)(
    775         IDWriteFontFileStream *This);
    776 
    777     ULONG (STDMETHODCALLTYPE *Release)(
    778         IDWriteFontFileStream *This);
    779 
    780     /*** IDWriteFontFileStream methods ***/
    781     HRESULT (STDMETHODCALLTYPE *ReadFileFragment)(
    782         IDWriteFontFileStream *This,
    783         const void **fragment_start,
    784         UINT64 offset,
    785         UINT64 fragment_size,
    786         void **fragment_context);
    787 
    788     void (STDMETHODCALLTYPE *ReleaseFileFragment)(
    789         IDWriteFontFileStream *This,
    790         void *fragment_context);
    791 
    792     HRESULT (STDMETHODCALLTYPE *GetFileSize)(
    793         IDWriteFontFileStream *This,
    794         UINT64 *size);
    795 
    796     HRESULT (STDMETHODCALLTYPE *GetLastWriteTime)(
    797         IDWriteFontFileStream *This,
    798         UINT64 *last_writetime);
    799 
    800     END_INTERFACE
    801 } IDWriteFontFileStreamVtbl;
    802 
    803 interface IDWriteFontFileStream {
    804     CONST_VTBL IDWriteFontFileStreamVtbl* lpVtbl;
    805 };
    806 
    807 #ifdef COBJMACROS
    808 #ifndef WIDL_C_INLINE_WRAPPERS
    809 /*** IUnknown methods ***/
    810 #define IDWriteFontFileStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    811 #define IDWriteFontFileStream_AddRef(This) (This)->lpVtbl->AddRef(This)
    812 #define IDWriteFontFileStream_Release(This) (This)->lpVtbl->Release(This)
    813 /*** IDWriteFontFileStream methods ***/
    814 #define IDWriteFontFileStream_ReadFileFragment(This,fragment_start,offset,fragment_size,fragment_context) (This)->lpVtbl->ReadFileFragment(This,fragment_start,offset,fragment_size,fragment_context)
    815 #define IDWriteFontFileStream_ReleaseFileFragment(This,fragment_context) (This)->lpVtbl->ReleaseFileFragment(This,fragment_context)
    816 #define IDWriteFontFileStream_GetFileSize(This,size) (This)->lpVtbl->GetFileSize(This,size)
    817 #define IDWriteFontFileStream_GetLastWriteTime(This,last_writetime) (This)->lpVtbl->GetLastWriteTime(This,last_writetime)
    818 #else
    819 /*** IUnknown methods ***/
    820 static inline HRESULT IDWriteFontFileStream_QueryInterface(IDWriteFontFileStream* This,REFIID riid,void **ppvObject) {
    821     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    822 }
    823 static inline ULONG IDWriteFontFileStream_AddRef(IDWriteFontFileStream* This) {
    824     return This->lpVtbl->AddRef(This);
    825 }
    826 static inline ULONG IDWriteFontFileStream_Release(IDWriteFontFileStream* This) {
    827     return This->lpVtbl->Release(This);
    828 }
    829 /*** IDWriteFontFileStream methods ***/
    830 static inline HRESULT IDWriteFontFileStream_ReadFileFragment(IDWriteFontFileStream* This,const void **fragment_start,UINT64 offset,UINT64 fragment_size,void **fragment_context) {
    831     return This->lpVtbl->ReadFileFragment(This,fragment_start,offset,fragment_size,fragment_context);
    832 }
    833 static inline void IDWriteFontFileStream_ReleaseFileFragment(IDWriteFontFileStream* This,void *fragment_context) {
    834     This->lpVtbl->ReleaseFileFragment(This,fragment_context);
    835 }
    836 static inline HRESULT IDWriteFontFileStream_GetFileSize(IDWriteFontFileStream* This,UINT64 *size) {
    837     return This->lpVtbl->GetFileSize(This,size);
    838 }
    839 static inline HRESULT IDWriteFontFileStream_GetLastWriteTime(IDWriteFontFileStream* This,UINT64 *last_writetime) {
    840     return This->lpVtbl->GetLastWriteTime(This,last_writetime);
    841 }
    842 #endif
    843 #endif
    844 
    845 #endif
    846 
    847 
    848 #endif  /* __IDWriteFontFileStream_INTERFACE_DEFINED__ */
    849 
    850 /*****************************************************************************
    851  * IDWriteFontFileLoader interface
    852  */
    853 #ifndef __IDWriteFontFileLoader_INTERFACE_DEFINED__
    854 #define __IDWriteFontFileLoader_INTERFACE_DEFINED__
    855 
    856 DEFINE_GUID(IID_IDWriteFontFileLoader, 0x727cad4e, 0xd6af, 0x4c9e, 0x8a,0x08, 0xd6,0x95,0xb1,0x1c,0xaa,0x49);
    857 #if defined(__cplusplus) && !defined(CINTERFACE)
    858 MIDL_INTERFACE("727cad4e-d6af-4c9e-8a08-d695b11caa49")
    859 IDWriteFontFileLoader : public IUnknown
    860 {
    861     virtual HRESULT STDMETHODCALLTYPE CreateStreamFromKey(
    862         const void *key,
    863         UINT32 key_size,
    864         IDWriteFontFileStream **stream) = 0;
    865 
    866 };
    867 #ifdef __CRT_UUID_DECL
    868 __CRT_UUID_DECL(IDWriteFontFileLoader, 0x727cad4e, 0xd6af, 0x4c9e, 0x8a,0x08, 0xd6,0x95,0xb1,0x1c,0xaa,0x49)
    869 #endif
    870 #else
    871 typedef struct IDWriteFontFileLoaderVtbl {
    872     BEGIN_INTERFACE
    873 
    874     /*** IUnknown methods ***/
    875     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    876         IDWriteFontFileLoader *This,
    877         REFIID riid,
    878         void **ppvObject);
    879 
    880     ULONG (STDMETHODCALLTYPE *AddRef)(
    881         IDWriteFontFileLoader *This);
    882 
    883     ULONG (STDMETHODCALLTYPE *Release)(
    884         IDWriteFontFileLoader *This);
    885 
    886     /*** IDWriteFontFileLoader methods ***/
    887     HRESULT (STDMETHODCALLTYPE *CreateStreamFromKey)(
    888         IDWriteFontFileLoader *This,
    889         const void *key,
    890         UINT32 key_size,
    891         IDWriteFontFileStream **stream);
    892 
    893     END_INTERFACE
    894 } IDWriteFontFileLoaderVtbl;
    895 
    896 interface IDWriteFontFileLoader {
    897     CONST_VTBL IDWriteFontFileLoaderVtbl* lpVtbl;
    898 };
    899 
    900 #ifdef COBJMACROS
    901 #ifndef WIDL_C_INLINE_WRAPPERS
    902 /*** IUnknown methods ***/
    903 #define IDWriteFontFileLoader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    904 #define IDWriteFontFileLoader_AddRef(This) (This)->lpVtbl->AddRef(This)
    905 #define IDWriteFontFileLoader_Release(This) (This)->lpVtbl->Release(This)
    906 /*** IDWriteFontFileLoader methods ***/
    907 #define IDWriteFontFileLoader_CreateStreamFromKey(This,key,key_size,stream) (This)->lpVtbl->CreateStreamFromKey(This,key,key_size,stream)
    908 #else
    909 /*** IUnknown methods ***/
    910 static inline HRESULT IDWriteFontFileLoader_QueryInterface(IDWriteFontFileLoader* This,REFIID riid,void **ppvObject) {
    911     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    912 }
    913 static inline ULONG IDWriteFontFileLoader_AddRef(IDWriteFontFileLoader* This) {
    914     return This->lpVtbl->AddRef(This);
    915 }
    916 static inline ULONG IDWriteFontFileLoader_Release(IDWriteFontFileLoader* This) {
    917     return This->lpVtbl->Release(This);
    918 }
    919 /*** IDWriteFontFileLoader methods ***/
    920 static inline HRESULT IDWriteFontFileLoader_CreateStreamFromKey(IDWriteFontFileLoader* This,const void *key,UINT32 key_size,IDWriteFontFileStream **stream) {
    921     return This->lpVtbl->CreateStreamFromKey(This,key,key_size,stream);
    922 }
    923 #endif
    924 #endif
    925 
    926 #endif
    927 
    928 
    929 #endif  /* __IDWriteFontFileLoader_INTERFACE_DEFINED__ */
    930 
    931 /*****************************************************************************
    932  * IDWriteLocalFontFileLoader interface
    933  */
    934 #ifndef __IDWriteLocalFontFileLoader_INTERFACE_DEFINED__
    935 #define __IDWriteLocalFontFileLoader_INTERFACE_DEFINED__
    936 
    937 DEFINE_GUID(IID_IDWriteLocalFontFileLoader, 0xb2d9f3ec, 0xc9fe, 0x4a11, 0xa2,0xec, 0xd8,0x62,0x08,0xf7,0xc0,0xa2);
    938 #if defined(__cplusplus) && !defined(CINTERFACE)
    939 MIDL_INTERFACE("b2d9f3ec-c9fe-4a11-a2ec-d86208f7c0a2")
    940 IDWriteLocalFontFileLoader : public IDWriteFontFileLoader
    941 {
    942     virtual HRESULT STDMETHODCALLTYPE GetFilePathLengthFromKey(
    943         const void *key,
    944         UINT32 key_size,
    945         UINT32 *length) = 0;
    946 
    947     virtual HRESULT STDMETHODCALLTYPE GetFilePathFromKey(
    948         const void *key,
    949         UINT32 key_size,
    950         WCHAR *path,
    951         UINT32 length) = 0;
    952 
    953     virtual HRESULT STDMETHODCALLTYPE GetLastWriteTimeFromKey(
    954         const void *key,
    955         UINT32 key_size,
    956         FILETIME *writetime) = 0;
    957 
    958 };
    959 #ifdef __CRT_UUID_DECL
    960 __CRT_UUID_DECL(IDWriteLocalFontFileLoader, 0xb2d9f3ec, 0xc9fe, 0x4a11, 0xa2,0xec, 0xd8,0x62,0x08,0xf7,0xc0,0xa2)
    961 #endif
    962 #else
    963 typedef struct IDWriteLocalFontFileLoaderVtbl {
    964     BEGIN_INTERFACE
    965 
    966     /*** IUnknown methods ***/
    967     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    968         IDWriteLocalFontFileLoader *This,
    969         REFIID riid,
    970         void **ppvObject);
    971 
    972     ULONG (STDMETHODCALLTYPE *AddRef)(
    973         IDWriteLocalFontFileLoader *This);
    974 
    975     ULONG (STDMETHODCALLTYPE *Release)(
    976         IDWriteLocalFontFileLoader *This);
    977 
    978     /*** IDWriteFontFileLoader methods ***/
    979     HRESULT (STDMETHODCALLTYPE *CreateStreamFromKey)(
    980         IDWriteLocalFontFileLoader *This,
    981         const void *key,
    982         UINT32 key_size,
    983         IDWriteFontFileStream **stream);
    984 
    985     /*** IDWriteLocalFontFileLoader methods ***/
    986     HRESULT (STDMETHODCALLTYPE *GetFilePathLengthFromKey)(
    987         IDWriteLocalFontFileLoader *This,
    988         const void *key,
    989         UINT32 key_size,
    990         UINT32 *length);
    991 
    992     HRESULT (STDMETHODCALLTYPE *GetFilePathFromKey)(
    993         IDWriteLocalFontFileLoader *This,
    994         const void *key,
    995         UINT32 key_size,
    996         WCHAR *path,
    997         UINT32 length);
    998 
    999     HRESULT (STDMETHODCALLTYPE *GetLastWriteTimeFromKey)(
   1000         IDWriteLocalFontFileLoader *This,
   1001         const void *key,
   1002         UINT32 key_size,
   1003         FILETIME *writetime);
   1004 
   1005     END_INTERFACE
   1006 } IDWriteLocalFontFileLoaderVtbl;
   1007 
   1008 interface IDWriteLocalFontFileLoader {
   1009     CONST_VTBL IDWriteLocalFontFileLoaderVtbl* lpVtbl;
   1010 };
   1011 
   1012 #ifdef COBJMACROS
   1013 #ifndef WIDL_C_INLINE_WRAPPERS
   1014 /*** IUnknown methods ***/
   1015 #define IDWriteLocalFontFileLoader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1016 #define IDWriteLocalFontFileLoader_AddRef(This) (This)->lpVtbl->AddRef(This)
   1017 #define IDWriteLocalFontFileLoader_Release(This) (This)->lpVtbl->Release(This)
   1018 /*** IDWriteFontFileLoader methods ***/
   1019 #define IDWriteLocalFontFileLoader_CreateStreamFromKey(This,key,key_size,stream) (This)->lpVtbl->CreateStreamFromKey(This,key,key_size,stream)
   1020 /*** IDWriteLocalFontFileLoader methods ***/
   1021 #define IDWriteLocalFontFileLoader_GetFilePathLengthFromKey(This,key,key_size,length) (This)->lpVtbl->GetFilePathLengthFromKey(This,key,key_size,length)
   1022 #define IDWriteLocalFontFileLoader_GetFilePathFromKey(This,key,key_size,path,length) (This)->lpVtbl->GetFilePathFromKey(This,key,key_size,path,length)
   1023 #define IDWriteLocalFontFileLoader_GetLastWriteTimeFromKey(This,key,key_size,writetime) (This)->lpVtbl->GetLastWriteTimeFromKey(This,key,key_size,writetime)
   1024 #else
   1025 /*** IUnknown methods ***/
   1026 static inline HRESULT IDWriteLocalFontFileLoader_QueryInterface(IDWriteLocalFontFileLoader* This,REFIID riid,void **ppvObject) {
   1027     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1028 }
   1029 static inline ULONG IDWriteLocalFontFileLoader_AddRef(IDWriteLocalFontFileLoader* This) {
   1030     return This->lpVtbl->AddRef(This);
   1031 }
   1032 static inline ULONG IDWriteLocalFontFileLoader_Release(IDWriteLocalFontFileLoader* This) {
   1033     return This->lpVtbl->Release(This);
   1034 }
   1035 /*** IDWriteFontFileLoader methods ***/
   1036 static inline HRESULT IDWriteLocalFontFileLoader_CreateStreamFromKey(IDWriteLocalFontFileLoader* This,const void *key,UINT32 key_size,IDWriteFontFileStream **stream) {
   1037     return This->lpVtbl->CreateStreamFromKey(This,key,key_size,stream);
   1038 }
   1039 /*** IDWriteLocalFontFileLoader methods ***/
   1040 static inline HRESULT IDWriteLocalFontFileLoader_GetFilePathLengthFromKey(IDWriteLocalFontFileLoader* This,const void *key,UINT32 key_size,UINT32 *length) {
   1041     return This->lpVtbl->GetFilePathLengthFromKey(This,key,key_size,length);
   1042 }
   1043 static inline HRESULT IDWriteLocalFontFileLoader_GetFilePathFromKey(IDWriteLocalFontFileLoader* This,const void *key,UINT32 key_size,WCHAR *path,UINT32 length) {
   1044     return This->lpVtbl->GetFilePathFromKey(This,key,key_size,path,length);
   1045 }
   1046 static inline HRESULT IDWriteLocalFontFileLoader_GetLastWriteTimeFromKey(IDWriteLocalFontFileLoader* This,const void *key,UINT32 key_size,FILETIME *writetime) {
   1047     return This->lpVtbl->GetLastWriteTimeFromKey(This,key,key_size,writetime);
   1048 }
   1049 #endif
   1050 #endif
   1051 
   1052 #endif
   1053 
   1054 
   1055 #endif  /* __IDWriteLocalFontFileLoader_INTERFACE_DEFINED__ */
   1056 
   1057 /*****************************************************************************
   1058  * IDWriteFontFile interface
   1059  */
   1060 #ifndef __IDWriteFontFile_INTERFACE_DEFINED__
   1061 #define __IDWriteFontFile_INTERFACE_DEFINED__
   1062 
   1063 DEFINE_GUID(IID_IDWriteFontFile, 0x739d886a, 0xcef5, 0x47dc, 0x87,0x69, 0x1a,0x8b,0x41,0xbe,0xbb,0xb0);
   1064 #if defined(__cplusplus) && !defined(CINTERFACE)
   1065 MIDL_INTERFACE("739d886a-cef5-47dc-8769-1a8b41bebbb0")
   1066 IDWriteFontFile : public IUnknown
   1067 {
   1068     virtual HRESULT STDMETHODCALLTYPE GetReferenceKey(
   1069         const void **key,
   1070         UINT32 *key_size) = 0;
   1071 
   1072     virtual HRESULT STDMETHODCALLTYPE GetLoader(
   1073         IDWriteFontFileLoader **loader) = 0;
   1074 
   1075     virtual HRESULT STDMETHODCALLTYPE Analyze(
   1076         WINBOOL *is_supported_fonttype,
   1077         DWRITE_FONT_FILE_TYPE *file_type,
   1078         DWRITE_FONT_FACE_TYPE *face_type,
   1079         UINT32 *faces_num) = 0;
   1080 
   1081 };
   1082 #ifdef __CRT_UUID_DECL
   1083 __CRT_UUID_DECL(IDWriteFontFile, 0x739d886a, 0xcef5, 0x47dc, 0x87,0x69, 0x1a,0x8b,0x41,0xbe,0xbb,0xb0)
   1084 #endif
   1085 #else
   1086 typedef struct IDWriteFontFileVtbl {
   1087     BEGIN_INTERFACE
   1088 
   1089     /*** IUnknown methods ***/
   1090     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1091         IDWriteFontFile *This,
   1092         REFIID riid,
   1093         void **ppvObject);
   1094 
   1095     ULONG (STDMETHODCALLTYPE *AddRef)(
   1096         IDWriteFontFile *This);
   1097 
   1098     ULONG (STDMETHODCALLTYPE *Release)(
   1099         IDWriteFontFile *This);
   1100 
   1101     /*** IDWriteFontFile methods ***/
   1102     HRESULT (STDMETHODCALLTYPE *GetReferenceKey)(
   1103         IDWriteFontFile *This,
   1104         const void **key,
   1105         UINT32 *key_size);
   1106 
   1107     HRESULT (STDMETHODCALLTYPE *GetLoader)(
   1108         IDWriteFontFile *This,
   1109         IDWriteFontFileLoader **loader);
   1110 
   1111     HRESULT (STDMETHODCALLTYPE *Analyze)(
   1112         IDWriteFontFile *This,
   1113         WINBOOL *is_supported_fonttype,
   1114         DWRITE_FONT_FILE_TYPE *file_type,
   1115         DWRITE_FONT_FACE_TYPE *face_type,
   1116         UINT32 *faces_num);
   1117 
   1118     END_INTERFACE
   1119 } IDWriteFontFileVtbl;
   1120 
   1121 interface IDWriteFontFile {
   1122     CONST_VTBL IDWriteFontFileVtbl* lpVtbl;
   1123 };
   1124 
   1125 #ifdef COBJMACROS
   1126 #ifndef WIDL_C_INLINE_WRAPPERS
   1127 /*** IUnknown methods ***/
   1128 #define IDWriteFontFile_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1129 #define IDWriteFontFile_AddRef(This) (This)->lpVtbl->AddRef(This)
   1130 #define IDWriteFontFile_Release(This) (This)->lpVtbl->Release(This)
   1131 /*** IDWriteFontFile methods ***/
   1132 #define IDWriteFontFile_GetReferenceKey(This,key,key_size) (This)->lpVtbl->GetReferenceKey(This,key,key_size)
   1133 #define IDWriteFontFile_GetLoader(This,loader) (This)->lpVtbl->GetLoader(This,loader)
   1134 #define IDWriteFontFile_Analyze(This,is_supported_fonttype,file_type,face_type,faces_num) (This)->lpVtbl->Analyze(This,is_supported_fonttype,file_type,face_type,faces_num)
   1135 #else
   1136 /*** IUnknown methods ***/
   1137 static inline HRESULT IDWriteFontFile_QueryInterface(IDWriteFontFile* This,REFIID riid,void **ppvObject) {
   1138     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1139 }
   1140 static inline ULONG IDWriteFontFile_AddRef(IDWriteFontFile* This) {
   1141     return This->lpVtbl->AddRef(This);
   1142 }
   1143 static inline ULONG IDWriteFontFile_Release(IDWriteFontFile* This) {
   1144     return This->lpVtbl->Release(This);
   1145 }
   1146 /*** IDWriteFontFile methods ***/
   1147 static inline HRESULT IDWriteFontFile_GetReferenceKey(IDWriteFontFile* This,const void **key,UINT32 *key_size) {
   1148     return This->lpVtbl->GetReferenceKey(This,key,key_size);
   1149 }
   1150 static inline HRESULT IDWriteFontFile_GetLoader(IDWriteFontFile* This,IDWriteFontFileLoader **loader) {
   1151     return This->lpVtbl->GetLoader(This,loader);
   1152 }
   1153 static inline HRESULT IDWriteFontFile_Analyze(IDWriteFontFile* This,WINBOOL *is_supported_fonttype,DWRITE_FONT_FILE_TYPE *file_type,DWRITE_FONT_FACE_TYPE *face_type,UINT32 *faces_num) {
   1154     return This->lpVtbl->Analyze(This,is_supported_fonttype,file_type,face_type,faces_num);
   1155 }
   1156 #endif
   1157 #endif
   1158 
   1159 #endif
   1160 
   1161 
   1162 #endif  /* __IDWriteFontFile_INTERFACE_DEFINED__ */
   1163 
   1164 /*****************************************************************************
   1165  * IDWriteFontFileEnumerator interface
   1166  */
   1167 #ifndef __IDWriteFontFileEnumerator_INTERFACE_DEFINED__
   1168 #define __IDWriteFontFileEnumerator_INTERFACE_DEFINED__
   1169 
   1170 DEFINE_GUID(IID_IDWriteFontFileEnumerator, 0x72755049, 0x5ff7, 0x435d, 0x83,0x48, 0x4b,0xe9,0x7c,0xfa,0x6c,0x7c);
   1171 #if defined(__cplusplus) && !defined(CINTERFACE)
   1172 MIDL_INTERFACE("72755049-5ff7-435d-8348-4be97cfa6c7c")
   1173 IDWriteFontFileEnumerator : public IUnknown
   1174 {
   1175     virtual HRESULT STDMETHODCALLTYPE MoveNext(
   1176         WINBOOL *has_current_file) = 0;
   1177 
   1178     virtual HRESULT STDMETHODCALLTYPE GetCurrentFontFile(
   1179         IDWriteFontFile **font_file) = 0;
   1180 
   1181 };
   1182 #ifdef __CRT_UUID_DECL
   1183 __CRT_UUID_DECL(IDWriteFontFileEnumerator, 0x72755049, 0x5ff7, 0x435d, 0x83,0x48, 0x4b,0xe9,0x7c,0xfa,0x6c,0x7c)
   1184 #endif
   1185 #else
   1186 typedef struct IDWriteFontFileEnumeratorVtbl {
   1187     BEGIN_INTERFACE
   1188 
   1189     /*** IUnknown methods ***/
   1190     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1191         IDWriteFontFileEnumerator *This,
   1192         REFIID riid,
   1193         void **ppvObject);
   1194 
   1195     ULONG (STDMETHODCALLTYPE *AddRef)(
   1196         IDWriteFontFileEnumerator *This);
   1197 
   1198     ULONG (STDMETHODCALLTYPE *Release)(
   1199         IDWriteFontFileEnumerator *This);
   1200 
   1201     /*** IDWriteFontFileEnumerator methods ***/
   1202     HRESULT (STDMETHODCALLTYPE *MoveNext)(
   1203         IDWriteFontFileEnumerator *This,
   1204         WINBOOL *has_current_file);
   1205 
   1206     HRESULT (STDMETHODCALLTYPE *GetCurrentFontFile)(
   1207         IDWriteFontFileEnumerator *This,
   1208         IDWriteFontFile **font_file);
   1209 
   1210     END_INTERFACE
   1211 } IDWriteFontFileEnumeratorVtbl;
   1212 
   1213 interface IDWriteFontFileEnumerator {
   1214     CONST_VTBL IDWriteFontFileEnumeratorVtbl* lpVtbl;
   1215 };
   1216 
   1217 #ifdef COBJMACROS
   1218 #ifndef WIDL_C_INLINE_WRAPPERS
   1219 /*** IUnknown methods ***/
   1220 #define IDWriteFontFileEnumerator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1221 #define IDWriteFontFileEnumerator_AddRef(This) (This)->lpVtbl->AddRef(This)
   1222 #define IDWriteFontFileEnumerator_Release(This) (This)->lpVtbl->Release(This)
   1223 /*** IDWriteFontFileEnumerator methods ***/
   1224 #define IDWriteFontFileEnumerator_MoveNext(This,has_current_file) (This)->lpVtbl->MoveNext(This,has_current_file)
   1225 #define IDWriteFontFileEnumerator_GetCurrentFontFile(This,font_file) (This)->lpVtbl->GetCurrentFontFile(This,font_file)
   1226 #else
   1227 /*** IUnknown methods ***/
   1228 static inline HRESULT IDWriteFontFileEnumerator_QueryInterface(IDWriteFontFileEnumerator* This,REFIID riid,void **ppvObject) {
   1229     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1230 }
   1231 static inline ULONG IDWriteFontFileEnumerator_AddRef(IDWriteFontFileEnumerator* This) {
   1232     return This->lpVtbl->AddRef(This);
   1233 }
   1234 static inline ULONG IDWriteFontFileEnumerator_Release(IDWriteFontFileEnumerator* This) {
   1235     return This->lpVtbl->Release(This);
   1236 }
   1237 /*** IDWriteFontFileEnumerator methods ***/
   1238 static inline HRESULT IDWriteFontFileEnumerator_MoveNext(IDWriteFontFileEnumerator* This,WINBOOL *has_current_file) {
   1239     return This->lpVtbl->MoveNext(This,has_current_file);
   1240 }
   1241 static inline HRESULT IDWriteFontFileEnumerator_GetCurrentFontFile(IDWriteFontFileEnumerator* This,IDWriteFontFile **font_file) {
   1242     return This->lpVtbl->GetCurrentFontFile(This,font_file);
   1243 }
   1244 #endif
   1245 #endif
   1246 
   1247 #endif
   1248 
   1249 
   1250 #endif  /* __IDWriteFontFileEnumerator_INTERFACE_DEFINED__ */
   1251 
   1252 /*****************************************************************************
   1253  * IDWriteFontCollectionLoader interface
   1254  */
   1255 #ifndef __IDWriteFontCollectionLoader_INTERFACE_DEFINED__
   1256 #define __IDWriteFontCollectionLoader_INTERFACE_DEFINED__
   1257 
   1258 DEFINE_GUID(IID_IDWriteFontCollectionLoader, 0xcca920e4, 0x52f0, 0x492b, 0xbf,0xa8, 0x29,0xc7,0x2e,0xe0,0xa4,0x68);
   1259 #if defined(__cplusplus) && !defined(CINTERFACE)
   1260 MIDL_INTERFACE("cca920e4-52f0-492b-bfa8-29c72ee0a468")
   1261 IDWriteFontCollectionLoader : public IUnknown
   1262 {
   1263     virtual HRESULT STDMETHODCALLTYPE CreateEnumeratorFromKey(
   1264         IDWriteFactory *factory,
   1265         const void *key,
   1266         UINT32 key_size,
   1267         IDWriteFontFileEnumerator **enumerator) = 0;
   1268 
   1269 };
   1270 #ifdef __CRT_UUID_DECL
   1271 __CRT_UUID_DECL(IDWriteFontCollectionLoader, 0xcca920e4, 0x52f0, 0x492b, 0xbf,0xa8, 0x29,0xc7,0x2e,0xe0,0xa4,0x68)
   1272 #endif
   1273 #else
   1274 typedef struct IDWriteFontCollectionLoaderVtbl {
   1275     BEGIN_INTERFACE
   1276 
   1277     /*** IUnknown methods ***/
   1278     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1279         IDWriteFontCollectionLoader *This,
   1280         REFIID riid,
   1281         void **ppvObject);
   1282 
   1283     ULONG (STDMETHODCALLTYPE *AddRef)(
   1284         IDWriteFontCollectionLoader *This);
   1285 
   1286     ULONG (STDMETHODCALLTYPE *Release)(
   1287         IDWriteFontCollectionLoader *This);
   1288 
   1289     /*** IDWriteFontCollectionLoader methods ***/
   1290     HRESULT (STDMETHODCALLTYPE *CreateEnumeratorFromKey)(
   1291         IDWriteFontCollectionLoader *This,
   1292         IDWriteFactory *factory,
   1293         const void *key,
   1294         UINT32 key_size,
   1295         IDWriteFontFileEnumerator **enumerator);
   1296 
   1297     END_INTERFACE
   1298 } IDWriteFontCollectionLoaderVtbl;
   1299 
   1300 interface IDWriteFontCollectionLoader {
   1301     CONST_VTBL IDWriteFontCollectionLoaderVtbl* lpVtbl;
   1302 };
   1303 
   1304 #ifdef COBJMACROS
   1305 #ifndef WIDL_C_INLINE_WRAPPERS
   1306 /*** IUnknown methods ***/
   1307 #define IDWriteFontCollectionLoader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1308 #define IDWriteFontCollectionLoader_AddRef(This) (This)->lpVtbl->AddRef(This)
   1309 #define IDWriteFontCollectionLoader_Release(This) (This)->lpVtbl->Release(This)
   1310 /*** IDWriteFontCollectionLoader methods ***/
   1311 #define IDWriteFontCollectionLoader_CreateEnumeratorFromKey(This,factory,key,key_size,enumerator) (This)->lpVtbl->CreateEnumeratorFromKey(This,factory,key,key_size,enumerator)
   1312 #else
   1313 /*** IUnknown methods ***/
   1314 static inline HRESULT IDWriteFontCollectionLoader_QueryInterface(IDWriteFontCollectionLoader* This,REFIID riid,void **ppvObject) {
   1315     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1316 }
   1317 static inline ULONG IDWriteFontCollectionLoader_AddRef(IDWriteFontCollectionLoader* This) {
   1318     return This->lpVtbl->AddRef(This);
   1319 }
   1320 static inline ULONG IDWriteFontCollectionLoader_Release(IDWriteFontCollectionLoader* This) {
   1321     return This->lpVtbl->Release(This);
   1322 }
   1323 /*** IDWriteFontCollectionLoader methods ***/
   1324 static inline HRESULT IDWriteFontCollectionLoader_CreateEnumeratorFromKey(IDWriteFontCollectionLoader* This,IDWriteFactory *factory,const void *key,UINT32 key_size,IDWriteFontFileEnumerator **enumerator) {
   1325     return This->lpVtbl->CreateEnumeratorFromKey(This,factory,key,key_size,enumerator);
   1326 }
   1327 #endif
   1328 #endif
   1329 
   1330 #endif
   1331 
   1332 
   1333 #endif  /* __IDWriteFontCollectionLoader_INTERFACE_DEFINED__ */
   1334 
   1335 /*****************************************************************************
   1336  * IDWriteLocalizedStrings interface
   1337  */
   1338 #ifndef __IDWriteLocalizedStrings_INTERFACE_DEFINED__
   1339 #define __IDWriteLocalizedStrings_INTERFACE_DEFINED__
   1340 
   1341 DEFINE_GUID(IID_IDWriteLocalizedStrings, 0x08256209, 0x099a, 0x4b34, 0xb8,0x6d, 0xc2,0x2b,0x11,0x0e,0x77,0x71);
   1342 #if defined(__cplusplus) && !defined(CINTERFACE)
   1343 MIDL_INTERFACE("08256209-099a-4b34-b86d-c22b110e7771")
   1344 IDWriteLocalizedStrings : public IUnknown
   1345 {
   1346     virtual UINT32 STDMETHODCALLTYPE GetCount(
   1347         ) = 0;
   1348 
   1349     virtual HRESULT STDMETHODCALLTYPE FindLocaleName(
   1350         const WCHAR *locale_name,
   1351         UINT32 *index,
   1352         WINBOOL *exists) = 0;
   1353 
   1354     virtual HRESULT STDMETHODCALLTYPE GetLocaleNameLength(
   1355         UINT32 index,
   1356         UINT32 *length) = 0;
   1357 
   1358     virtual HRESULT STDMETHODCALLTYPE GetLocaleName(
   1359         UINT32 index,
   1360         WCHAR *locale_name,
   1361         UINT32 size) = 0;
   1362 
   1363     virtual HRESULT STDMETHODCALLTYPE GetStringLength(
   1364         UINT32 index,
   1365         UINT32 *length) = 0;
   1366 
   1367     virtual HRESULT STDMETHODCALLTYPE GetString(
   1368         UINT32 index,
   1369         WCHAR *buffer,
   1370         UINT32 size) = 0;
   1371 
   1372 };
   1373 #ifdef __CRT_UUID_DECL
   1374 __CRT_UUID_DECL(IDWriteLocalizedStrings, 0x08256209, 0x099a, 0x4b34, 0xb8,0x6d, 0xc2,0x2b,0x11,0x0e,0x77,0x71)
   1375 #endif
   1376 #else
   1377 typedef struct IDWriteLocalizedStringsVtbl {
   1378     BEGIN_INTERFACE
   1379 
   1380     /*** IUnknown methods ***/
   1381     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1382         IDWriteLocalizedStrings *This,
   1383         REFIID riid,
   1384         void **ppvObject);
   1385 
   1386     ULONG (STDMETHODCALLTYPE *AddRef)(
   1387         IDWriteLocalizedStrings *This);
   1388 
   1389     ULONG (STDMETHODCALLTYPE *Release)(
   1390         IDWriteLocalizedStrings *This);
   1391 
   1392     /*** IDWriteLocalizedStrings methods ***/
   1393     UINT32 (STDMETHODCALLTYPE *GetCount)(
   1394         IDWriteLocalizedStrings *This);
   1395 
   1396     HRESULT (STDMETHODCALLTYPE *FindLocaleName)(
   1397         IDWriteLocalizedStrings *This,
   1398         const WCHAR *locale_name,
   1399         UINT32 *index,
   1400         WINBOOL *exists);
   1401 
   1402     HRESULT (STDMETHODCALLTYPE *GetLocaleNameLength)(
   1403         IDWriteLocalizedStrings *This,
   1404         UINT32 index,
   1405         UINT32 *length);
   1406 
   1407     HRESULT (STDMETHODCALLTYPE *GetLocaleName)(
   1408         IDWriteLocalizedStrings *This,
   1409         UINT32 index,
   1410         WCHAR *locale_name,
   1411         UINT32 size);
   1412 
   1413     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
   1414         IDWriteLocalizedStrings *This,
   1415         UINT32 index,
   1416         UINT32 *length);
   1417 
   1418     HRESULT (STDMETHODCALLTYPE *GetString)(
   1419         IDWriteLocalizedStrings *This,
   1420         UINT32 index,
   1421         WCHAR *buffer,
   1422         UINT32 size);
   1423 
   1424     END_INTERFACE
   1425 } IDWriteLocalizedStringsVtbl;
   1426 
   1427 interface IDWriteLocalizedStrings {
   1428     CONST_VTBL IDWriteLocalizedStringsVtbl* lpVtbl;
   1429 };
   1430 
   1431 #ifdef COBJMACROS
   1432 #ifndef WIDL_C_INLINE_WRAPPERS
   1433 /*** IUnknown methods ***/
   1434 #define IDWriteLocalizedStrings_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1435 #define IDWriteLocalizedStrings_AddRef(This) (This)->lpVtbl->AddRef(This)
   1436 #define IDWriteLocalizedStrings_Release(This) (This)->lpVtbl->Release(This)
   1437 /*** IDWriteLocalizedStrings methods ***/
   1438 #define IDWriteLocalizedStrings_GetCount(This) (This)->lpVtbl->GetCount(This)
   1439 #define IDWriteLocalizedStrings_FindLocaleName(This,locale_name,index,exists) (This)->lpVtbl->FindLocaleName(This,locale_name,index,exists)
   1440 #define IDWriteLocalizedStrings_GetLocaleNameLength(This,index,length) (This)->lpVtbl->GetLocaleNameLength(This,index,length)
   1441 #define IDWriteLocalizedStrings_GetLocaleName(This,index,locale_name,size) (This)->lpVtbl->GetLocaleName(This,index,locale_name,size)
   1442 #define IDWriteLocalizedStrings_GetStringLength(This,index,length) (This)->lpVtbl->GetStringLength(This,index,length)
   1443 #define IDWriteLocalizedStrings_GetString(This,index,buffer,size) (This)->lpVtbl->GetString(This,index,buffer,size)
   1444 #else
   1445 /*** IUnknown methods ***/
   1446 static inline HRESULT IDWriteLocalizedStrings_QueryInterface(IDWriteLocalizedStrings* This,REFIID riid,void **ppvObject) {
   1447     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1448 }
   1449 static inline ULONG IDWriteLocalizedStrings_AddRef(IDWriteLocalizedStrings* This) {
   1450     return This->lpVtbl->AddRef(This);
   1451 }
   1452 static inline ULONG IDWriteLocalizedStrings_Release(IDWriteLocalizedStrings* This) {
   1453     return This->lpVtbl->Release(This);
   1454 }
   1455 /*** IDWriteLocalizedStrings methods ***/
   1456 static inline UINT32 IDWriteLocalizedStrings_GetCount(IDWriteLocalizedStrings* This) {
   1457     return This->lpVtbl->GetCount(This);
   1458 }
   1459 static inline HRESULT IDWriteLocalizedStrings_FindLocaleName(IDWriteLocalizedStrings* This,const WCHAR *locale_name,UINT32 *index,WINBOOL *exists) {
   1460     return This->lpVtbl->FindLocaleName(This,locale_name,index,exists);
   1461 }
   1462 static inline HRESULT IDWriteLocalizedStrings_GetLocaleNameLength(IDWriteLocalizedStrings* This,UINT32 index,UINT32 *length) {
   1463     return This->lpVtbl->GetLocaleNameLength(This,index,length);
   1464 }
   1465 static inline HRESULT IDWriteLocalizedStrings_GetLocaleName(IDWriteLocalizedStrings* This,UINT32 index,WCHAR *locale_name,UINT32 size) {
   1466     return This->lpVtbl->GetLocaleName(This,index,locale_name,size);
   1467 }
   1468 static inline HRESULT IDWriteLocalizedStrings_GetStringLength(IDWriteLocalizedStrings* This,UINT32 index,UINT32 *length) {
   1469     return This->lpVtbl->GetStringLength(This,index,length);
   1470 }
   1471 static inline HRESULT IDWriteLocalizedStrings_GetString(IDWriteLocalizedStrings* This,UINT32 index,WCHAR *buffer,UINT32 size) {
   1472     return This->lpVtbl->GetString(This,index,buffer,size);
   1473 }
   1474 #endif
   1475 #endif
   1476 
   1477 #endif
   1478 
   1479 
   1480 #endif  /* __IDWriteLocalizedStrings_INTERFACE_DEFINED__ */
   1481 
   1482 /*****************************************************************************
   1483  * IDWriteRenderingParams interface
   1484  */
   1485 #ifndef __IDWriteRenderingParams_INTERFACE_DEFINED__
   1486 #define __IDWriteRenderingParams_INTERFACE_DEFINED__
   1487 
   1488 DEFINE_GUID(IID_IDWriteRenderingParams, 0x2f0da53a, 0x2add, 0x47cd, 0x82,0xee, 0xd9,0xec,0x34,0x68,0x8e,0x75);
   1489 #if defined(__cplusplus) && !defined(CINTERFACE)
   1490 MIDL_INTERFACE("2f0da53a-2add-47cd-82ee-d9ec34688e75")
   1491 IDWriteRenderingParams : public IUnknown
   1492 {
   1493     virtual FLOAT STDMETHODCALLTYPE GetGamma(
   1494         ) = 0;
   1495 
   1496     virtual FLOAT STDMETHODCALLTYPE GetEnhancedContrast(
   1497         ) = 0;
   1498 
   1499     virtual FLOAT STDMETHODCALLTYPE GetClearTypeLevel(
   1500         ) = 0;
   1501 
   1502     virtual DWRITE_PIXEL_GEOMETRY STDMETHODCALLTYPE GetPixelGeometry(
   1503         ) = 0;
   1504 
   1505     virtual DWRITE_RENDERING_MODE STDMETHODCALLTYPE GetRenderingMode(
   1506         ) = 0;
   1507 
   1508 };
   1509 #ifdef __CRT_UUID_DECL
   1510 __CRT_UUID_DECL(IDWriteRenderingParams, 0x2f0da53a, 0x2add, 0x47cd, 0x82,0xee, 0xd9,0xec,0x34,0x68,0x8e,0x75)
   1511 #endif
   1512 #else
   1513 typedef struct IDWriteRenderingParamsVtbl {
   1514     BEGIN_INTERFACE
   1515 
   1516     /*** IUnknown methods ***/
   1517     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1518         IDWriteRenderingParams *This,
   1519         REFIID riid,
   1520         void **ppvObject);
   1521 
   1522     ULONG (STDMETHODCALLTYPE *AddRef)(
   1523         IDWriteRenderingParams *This);
   1524 
   1525     ULONG (STDMETHODCALLTYPE *Release)(
   1526         IDWriteRenderingParams *This);
   1527 
   1528     /*** IDWriteRenderingParams methods ***/
   1529     FLOAT (STDMETHODCALLTYPE *GetGamma)(
   1530         IDWriteRenderingParams *This);
   1531 
   1532     FLOAT (STDMETHODCALLTYPE *GetEnhancedContrast)(
   1533         IDWriteRenderingParams *This);
   1534 
   1535     FLOAT (STDMETHODCALLTYPE *GetClearTypeLevel)(
   1536         IDWriteRenderingParams *This);
   1537 
   1538     DWRITE_PIXEL_GEOMETRY (STDMETHODCALLTYPE *GetPixelGeometry)(
   1539         IDWriteRenderingParams *This);
   1540 
   1541     DWRITE_RENDERING_MODE (STDMETHODCALLTYPE *GetRenderingMode)(
   1542         IDWriteRenderingParams *This);
   1543 
   1544     END_INTERFACE
   1545 } IDWriteRenderingParamsVtbl;
   1546 
   1547 interface IDWriteRenderingParams {
   1548     CONST_VTBL IDWriteRenderingParamsVtbl* lpVtbl;
   1549 };
   1550 
   1551 #ifdef COBJMACROS
   1552 #ifndef WIDL_C_INLINE_WRAPPERS
   1553 /*** IUnknown methods ***/
   1554 #define IDWriteRenderingParams_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1555 #define IDWriteRenderingParams_AddRef(This) (This)->lpVtbl->AddRef(This)
   1556 #define IDWriteRenderingParams_Release(This) (This)->lpVtbl->Release(This)
   1557 /*** IDWriteRenderingParams methods ***/
   1558 #define IDWriteRenderingParams_GetGamma(This) (This)->lpVtbl->GetGamma(This)
   1559 #define IDWriteRenderingParams_GetEnhancedContrast(This) (This)->lpVtbl->GetEnhancedContrast(This)
   1560 #define IDWriteRenderingParams_GetClearTypeLevel(This) (This)->lpVtbl->GetClearTypeLevel(This)
   1561 #define IDWriteRenderingParams_GetPixelGeometry(This) (This)->lpVtbl->GetPixelGeometry(This)
   1562 #define IDWriteRenderingParams_GetRenderingMode(This) (This)->lpVtbl->GetRenderingMode(This)
   1563 #else
   1564 /*** IUnknown methods ***/
   1565 static inline HRESULT IDWriteRenderingParams_QueryInterface(IDWriteRenderingParams* This,REFIID riid,void **ppvObject) {
   1566     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1567 }
   1568 static inline ULONG IDWriteRenderingParams_AddRef(IDWriteRenderingParams* This) {
   1569     return This->lpVtbl->AddRef(This);
   1570 }
   1571 static inline ULONG IDWriteRenderingParams_Release(IDWriteRenderingParams* This) {
   1572     return This->lpVtbl->Release(This);
   1573 }
   1574 /*** IDWriteRenderingParams methods ***/
   1575 static inline FLOAT IDWriteRenderingParams_GetGamma(IDWriteRenderingParams* This) {
   1576     return This->lpVtbl->GetGamma(This);
   1577 }
   1578 static inline FLOAT IDWriteRenderingParams_GetEnhancedContrast(IDWriteRenderingParams* This) {
   1579     return This->lpVtbl->GetEnhancedContrast(This);
   1580 }
   1581 static inline FLOAT IDWriteRenderingParams_GetClearTypeLevel(IDWriteRenderingParams* This) {
   1582     return This->lpVtbl->GetClearTypeLevel(This);
   1583 }
   1584 static inline DWRITE_PIXEL_GEOMETRY IDWriteRenderingParams_GetPixelGeometry(IDWriteRenderingParams* This) {
   1585     return This->lpVtbl->GetPixelGeometry(This);
   1586 }
   1587 static inline DWRITE_RENDERING_MODE IDWriteRenderingParams_GetRenderingMode(IDWriteRenderingParams* This) {
   1588     return This->lpVtbl->GetRenderingMode(This);
   1589 }
   1590 #endif
   1591 #endif
   1592 
   1593 #endif
   1594 
   1595 
   1596 #endif  /* __IDWriteRenderingParams_INTERFACE_DEFINED__ */
   1597 
   1598 /*****************************************************************************
   1599  * IDWriteFontFace interface
   1600  */
   1601 #ifndef __IDWriteFontFace_INTERFACE_DEFINED__
   1602 #define __IDWriteFontFace_INTERFACE_DEFINED__
   1603 
   1604 DEFINE_GUID(IID_IDWriteFontFace, 0x5f49804d, 0x7024, 0x4d43, 0xbf,0xa9, 0xd2,0x59,0x84,0xf5,0x38,0x49);
   1605 #if defined(__cplusplus) && !defined(CINTERFACE)
   1606 MIDL_INTERFACE("5f49804d-7024-4d43-bfa9-d25984f53849")
   1607 IDWriteFontFace : public IUnknown
   1608 {
   1609     virtual DWRITE_FONT_FACE_TYPE STDMETHODCALLTYPE GetType(
   1610         ) = 0;
   1611 
   1612     virtual HRESULT STDMETHODCALLTYPE GetFiles(
   1613         UINT32 *number_of_files,
   1614         IDWriteFontFile **fontfiles) = 0;
   1615 
   1616     virtual UINT32 STDMETHODCALLTYPE GetIndex(
   1617         ) = 0;
   1618 
   1619     virtual DWRITE_FONT_SIMULATIONS STDMETHODCALLTYPE GetSimulations(
   1620         ) = 0;
   1621 
   1622     virtual WINBOOL STDMETHODCALLTYPE IsSymbolFont(
   1623         ) = 0;
   1624 
   1625     virtual void STDMETHODCALLTYPE GetMetrics(
   1626         DWRITE_FONT_METRICS *metrics) = 0;
   1627 
   1628     virtual UINT16 STDMETHODCALLTYPE GetGlyphCount(
   1629         ) = 0;
   1630 
   1631     virtual HRESULT STDMETHODCALLTYPE GetDesignGlyphMetrics(
   1632         const UINT16 *glyph_indices,
   1633         UINT32 glyph_count,
   1634         DWRITE_GLYPH_METRICS *metrics,
   1635         WINBOOL is_sideways = FALSE) = 0;
   1636 
   1637     virtual HRESULT STDMETHODCALLTYPE GetGlyphIndices(
   1638         const UINT32 *codepoints,
   1639         UINT32 count,
   1640         UINT16 *glyph_indices) = 0;
   1641 
   1642     virtual HRESULT STDMETHODCALLTYPE TryGetFontTable(
   1643         UINT32 table_tag,
   1644         const void **table_data,
   1645         UINT32 *table_size,
   1646         void **context,
   1647         WINBOOL *exists) = 0;
   1648 
   1649     virtual void STDMETHODCALLTYPE ReleaseFontTable(
   1650         void *table_context) = 0;
   1651 
   1652     virtual HRESULT STDMETHODCALLTYPE GetGlyphRunOutline(
   1653         FLOAT emSize,
   1654         const UINT16 *glyph_indices,
   1655         const FLOAT *glyph_advances,
   1656         const DWRITE_GLYPH_OFFSET *glyph_offsets,
   1657         UINT32 glyph_count,
   1658         WINBOOL is_sideways,
   1659         WINBOOL is_rtl,
   1660         IDWriteGeometrySink *geometrysink) = 0;
   1661 
   1662     virtual HRESULT STDMETHODCALLTYPE GetRecommendedRenderingMode(
   1663         FLOAT emSize,
   1664         FLOAT pixels_per_dip,
   1665         DWRITE_MEASURING_MODE mode,
   1666         IDWriteRenderingParams *params,
   1667         DWRITE_RENDERING_MODE *rendering_mode) = 0;
   1668 
   1669     virtual HRESULT STDMETHODCALLTYPE GetGdiCompatibleMetrics(
   1670         FLOAT emSize,
   1671         FLOAT pixels_per_dip,
   1672         const DWRITE_MATRIX *transform,
   1673         DWRITE_FONT_METRICS *metrics) = 0;
   1674 
   1675     virtual HRESULT STDMETHODCALLTYPE GetGdiCompatibleGlyphMetrics(
   1676         FLOAT emSize,
   1677         FLOAT pixels_per_dip,
   1678         const DWRITE_MATRIX *transform,
   1679         WINBOOL use_gdi_natural,
   1680         const UINT16 *glyph_indices,
   1681         UINT32 glyph_count,
   1682         DWRITE_GLYPH_METRICS *metrics,
   1683         WINBOOL is_sideways = FALSE) = 0;
   1684 
   1685 };
   1686 #ifdef __CRT_UUID_DECL
   1687 __CRT_UUID_DECL(IDWriteFontFace, 0x5f49804d, 0x7024, 0x4d43, 0xbf,0xa9, 0xd2,0x59,0x84,0xf5,0x38,0x49)
   1688 #endif
   1689 #else
   1690 typedef struct IDWriteFontFaceVtbl {
   1691     BEGIN_INTERFACE
   1692 
   1693     /*** IUnknown methods ***/
   1694     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1695         IDWriteFontFace *This,
   1696         REFIID riid,
   1697         void **ppvObject);
   1698 
   1699     ULONG (STDMETHODCALLTYPE *AddRef)(
   1700         IDWriteFontFace *This);
   1701 
   1702     ULONG (STDMETHODCALLTYPE *Release)(
   1703         IDWriteFontFace *This);
   1704 
   1705     /*** IDWriteFontFace methods ***/
   1706     DWRITE_FONT_FACE_TYPE (STDMETHODCALLTYPE *GetType)(
   1707         IDWriteFontFace *This);
   1708 
   1709     HRESULT (STDMETHODCALLTYPE *GetFiles)(
   1710         IDWriteFontFace *This,
   1711         UINT32 *number_of_files,
   1712         IDWriteFontFile **fontfiles);
   1713 
   1714     UINT32 (STDMETHODCALLTYPE *GetIndex)(
   1715         IDWriteFontFace *This);
   1716 
   1717     DWRITE_FONT_SIMULATIONS (STDMETHODCALLTYPE *GetSimulations)(
   1718         IDWriteFontFace *This);
   1719 
   1720     WINBOOL (STDMETHODCALLTYPE *IsSymbolFont)(
   1721         IDWriteFontFace *This);
   1722 
   1723     void (STDMETHODCALLTYPE *GetMetrics)(
   1724         IDWriteFontFace *This,
   1725         DWRITE_FONT_METRICS *metrics);
   1726 
   1727     UINT16 (STDMETHODCALLTYPE *GetGlyphCount)(
   1728         IDWriteFontFace *This);
   1729 
   1730     HRESULT (STDMETHODCALLTYPE *GetDesignGlyphMetrics)(
   1731         IDWriteFontFace *This,
   1732         const UINT16 *glyph_indices,
   1733         UINT32 glyph_count,
   1734         DWRITE_GLYPH_METRICS *metrics,
   1735         WINBOOL is_sideways);
   1736 
   1737     HRESULT (STDMETHODCALLTYPE *GetGlyphIndices)(
   1738         IDWriteFontFace *This,
   1739         const UINT32 *codepoints,
   1740         UINT32 count,
   1741         UINT16 *glyph_indices);
   1742 
   1743     HRESULT (STDMETHODCALLTYPE *TryGetFontTable)(
   1744         IDWriteFontFace *This,
   1745         UINT32 table_tag,
   1746         const void **table_data,
   1747         UINT32 *table_size,
   1748         void **context,
   1749         WINBOOL *exists);
   1750 
   1751     void (STDMETHODCALLTYPE *ReleaseFontTable)(
   1752         IDWriteFontFace *This,
   1753         void *table_context);
   1754 
   1755     HRESULT (STDMETHODCALLTYPE *GetGlyphRunOutline)(
   1756         IDWriteFontFace *This,
   1757         FLOAT emSize,
   1758         const UINT16 *glyph_indices,
   1759         const FLOAT *glyph_advances,
   1760         const DWRITE_GLYPH_OFFSET *glyph_offsets,
   1761         UINT32 glyph_count,
   1762         WINBOOL is_sideways,
   1763         WINBOOL is_rtl,
   1764         IDWriteGeometrySink *geometrysink);
   1765 
   1766     HRESULT (STDMETHODCALLTYPE *GetRecommendedRenderingMode)(
   1767         IDWriteFontFace *This,
   1768         FLOAT emSize,
   1769         FLOAT pixels_per_dip,
   1770         DWRITE_MEASURING_MODE mode,
   1771         IDWriteRenderingParams *params,
   1772         DWRITE_RENDERING_MODE *rendering_mode);
   1773 
   1774     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleMetrics)(
   1775         IDWriteFontFace *This,
   1776         FLOAT emSize,
   1777         FLOAT pixels_per_dip,
   1778         const DWRITE_MATRIX *transform,
   1779         DWRITE_FONT_METRICS *metrics);
   1780 
   1781     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleGlyphMetrics)(
   1782         IDWriteFontFace *This,
   1783         FLOAT emSize,
   1784         FLOAT pixels_per_dip,
   1785         const DWRITE_MATRIX *transform,
   1786         WINBOOL use_gdi_natural,
   1787         const UINT16 *glyph_indices,
   1788         UINT32 glyph_count,
   1789         DWRITE_GLYPH_METRICS *metrics,
   1790         WINBOOL is_sideways);
   1791 
   1792     END_INTERFACE
   1793 } IDWriteFontFaceVtbl;
   1794 
   1795 interface IDWriteFontFace {
   1796     CONST_VTBL IDWriteFontFaceVtbl* lpVtbl;
   1797 };
   1798 
   1799 #ifdef COBJMACROS
   1800 #ifndef WIDL_C_INLINE_WRAPPERS
   1801 /*** IUnknown methods ***/
   1802 #define IDWriteFontFace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1803 #define IDWriteFontFace_AddRef(This) (This)->lpVtbl->AddRef(This)
   1804 #define IDWriteFontFace_Release(This) (This)->lpVtbl->Release(This)
   1805 /*** IDWriteFontFace methods ***/
   1806 #define IDWriteFontFace_GetType(This) (This)->lpVtbl->GetType(This)
   1807 #define IDWriteFontFace_GetFiles(This,number_of_files,fontfiles) (This)->lpVtbl->GetFiles(This,number_of_files,fontfiles)
   1808 #define IDWriteFontFace_GetIndex(This) (This)->lpVtbl->GetIndex(This)
   1809 #define IDWriteFontFace_GetSimulations(This) (This)->lpVtbl->GetSimulations(This)
   1810 #define IDWriteFontFace_IsSymbolFont(This) (This)->lpVtbl->IsSymbolFont(This)
   1811 #define IDWriteFontFace_GetMetrics(This,metrics) (This)->lpVtbl->GetMetrics(This,metrics)
   1812 #define IDWriteFontFace_GetGlyphCount(This) (This)->lpVtbl->GetGlyphCount(This)
   1813 #define IDWriteFontFace_GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways) (This)->lpVtbl->GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways)
   1814 #define IDWriteFontFace_GetGlyphIndices(This,codepoints,count,glyph_indices) (This)->lpVtbl->GetGlyphIndices(This,codepoints,count,glyph_indices)
   1815 #define IDWriteFontFace_TryGetFontTable(This,table_tag,table_data,table_size,context,exists) (This)->lpVtbl->TryGetFontTable(This,table_tag,table_data,table_size,context,exists)
   1816 #define IDWriteFontFace_ReleaseFontTable(This,table_context) (This)->lpVtbl->ReleaseFontTable(This,table_context)
   1817 #define IDWriteFontFace_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)
   1818 #define IDWriteFontFace_GetRecommendedRenderingMode(This,emSize,pixels_per_dip,mode,params,rendering_mode) (This)->lpVtbl->GetRecommendedRenderingMode(This,emSize,pixels_per_dip,mode,params,rendering_mode)
   1819 #define IDWriteFontFace_GetGdiCompatibleMetrics(This,emSize,pixels_per_dip,transform,metrics) (This)->lpVtbl->GetGdiCompatibleMetrics(This,emSize,pixels_per_dip,transform,metrics)
   1820 #define IDWriteFontFace_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)
   1821 #else
   1822 /*** IUnknown methods ***/
   1823 static inline HRESULT IDWriteFontFace_QueryInterface(IDWriteFontFace* This,REFIID riid,void **ppvObject) {
   1824     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1825 }
   1826 static inline ULONG IDWriteFontFace_AddRef(IDWriteFontFace* This) {
   1827     return This->lpVtbl->AddRef(This);
   1828 }
   1829 static inline ULONG IDWriteFontFace_Release(IDWriteFontFace* This) {
   1830     return This->lpVtbl->Release(This);
   1831 }
   1832 /*** IDWriteFontFace methods ***/
   1833 static inline DWRITE_FONT_FACE_TYPE IDWriteFontFace_GetType(IDWriteFontFace* This) {
   1834     return This->lpVtbl->GetType(This);
   1835 }
   1836 static inline HRESULT IDWriteFontFace_GetFiles(IDWriteFontFace* This,UINT32 *number_of_files,IDWriteFontFile **fontfiles) {
   1837     return This->lpVtbl->GetFiles(This,number_of_files,fontfiles);
   1838 }
   1839 static inline UINT32 IDWriteFontFace_GetIndex(IDWriteFontFace* This) {
   1840     return This->lpVtbl->GetIndex(This);
   1841 }
   1842 static inline DWRITE_FONT_SIMULATIONS IDWriteFontFace_GetSimulations(IDWriteFontFace* This) {
   1843     return This->lpVtbl->GetSimulations(This);
   1844 }
   1845 static inline WINBOOL IDWriteFontFace_IsSymbolFont(IDWriteFontFace* This) {
   1846     return This->lpVtbl->IsSymbolFont(This);
   1847 }
   1848 static inline void IDWriteFontFace_GetMetrics(IDWriteFontFace* This,DWRITE_FONT_METRICS *metrics) {
   1849     This->lpVtbl->GetMetrics(This,metrics);
   1850 }
   1851 static inline UINT16 IDWriteFontFace_GetGlyphCount(IDWriteFontFace* This) {
   1852     return This->lpVtbl->GetGlyphCount(This);
   1853 }
   1854 static inline HRESULT IDWriteFontFace_GetDesignGlyphMetrics(IDWriteFontFace* This,const UINT16 *glyph_indices,UINT32 glyph_count,DWRITE_GLYPH_METRICS *metrics,WINBOOL is_sideways) {
   1855     return This->lpVtbl->GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways);
   1856 }
   1857 static inline HRESULT IDWriteFontFace_GetGlyphIndices(IDWriteFontFace* This,const UINT32 *codepoints,UINT32 count,UINT16 *glyph_indices) {
   1858     return This->lpVtbl->GetGlyphIndices(This,codepoints,count,glyph_indices);
   1859 }
   1860 static inline HRESULT IDWriteFontFace_TryGetFontTable(IDWriteFontFace* This,UINT32 table_tag,const void **table_data,UINT32 *table_size,void **context,WINBOOL *exists) {
   1861     return This->lpVtbl->TryGetFontTable(This,table_tag,table_data,table_size,context,exists);
   1862 }
   1863 static inline void IDWriteFontFace_ReleaseFontTable(IDWriteFontFace* This,void *table_context) {
   1864     This->lpVtbl->ReleaseFontTable(This,table_context);
   1865 }
   1866 static inline HRESULT IDWriteFontFace_GetGlyphRunOutline(IDWriteFontFace* 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) {
   1867     return This->lpVtbl->GetGlyphRunOutline(This,emSize,glyph_indices,glyph_advances,glyph_offsets,glyph_count,is_sideways,is_rtl,geometrysink);
   1868 }
   1869 static inline HRESULT IDWriteFontFace_GetRecommendedRenderingMode(IDWriteFontFace* This,FLOAT emSize,FLOAT pixels_per_dip,DWRITE_MEASURING_MODE mode,IDWriteRenderingParams *params,DWRITE_RENDERING_MODE *rendering_mode) {
   1870     return This->lpVtbl->GetRecommendedRenderingMode(This,emSize,pixels_per_dip,mode,params,rendering_mode);
   1871 }
   1872 static inline HRESULT IDWriteFontFace_GetGdiCompatibleMetrics(IDWriteFontFace* This,FLOAT emSize,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,DWRITE_FONT_METRICS *metrics) {
   1873     return This->lpVtbl->GetGdiCompatibleMetrics(This,emSize,pixels_per_dip,transform,metrics);
   1874 }
   1875 static inline HRESULT IDWriteFontFace_GetGdiCompatibleGlyphMetrics(IDWriteFontFace* 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) {
   1876     return This->lpVtbl->GetGdiCompatibleGlyphMetrics(This,emSize,pixels_per_dip,transform,use_gdi_natural,glyph_indices,glyph_count,metrics,is_sideways);
   1877 }
   1878 #endif
   1879 #endif
   1880 
   1881 #endif
   1882 
   1883 
   1884 #endif  /* __IDWriteFontFace_INTERFACE_DEFINED__ */
   1885 
   1886 /*****************************************************************************
   1887  * IDWriteFont interface
   1888  */
   1889 #ifndef __IDWriteFont_INTERFACE_DEFINED__
   1890 #define __IDWriteFont_INTERFACE_DEFINED__
   1891 
   1892 DEFINE_GUID(IID_IDWriteFont, 0xacd16696, 0x8c14, 0x4f5d, 0x87,0x7e, 0xfe,0x3f,0xc1,0xd3,0x27,0x37);
   1893 #if defined(__cplusplus) && !defined(CINTERFACE)
   1894 MIDL_INTERFACE("acd16696-8c14-4f5d-877e-fe3fc1d32737")
   1895 IDWriteFont : public IUnknown
   1896 {
   1897     virtual HRESULT STDMETHODCALLTYPE GetFontFamily(
   1898         IDWriteFontFamily **family) = 0;
   1899 
   1900     virtual DWRITE_FONT_WEIGHT STDMETHODCALLTYPE GetWeight(
   1901         ) = 0;
   1902 
   1903     virtual DWRITE_FONT_STRETCH STDMETHODCALLTYPE GetStretch(
   1904         ) = 0;
   1905 
   1906     virtual DWRITE_FONT_STYLE STDMETHODCALLTYPE GetStyle(
   1907         ) = 0;
   1908 
   1909     virtual WINBOOL STDMETHODCALLTYPE IsSymbolFont(
   1910         ) = 0;
   1911 
   1912     virtual HRESULT STDMETHODCALLTYPE GetFaceNames(
   1913         IDWriteLocalizedStrings **names) = 0;
   1914 
   1915     virtual HRESULT STDMETHODCALLTYPE GetInformationalStrings(
   1916         DWRITE_INFORMATIONAL_STRING_ID stringid,
   1917         IDWriteLocalizedStrings **strings,
   1918         WINBOOL *exists) = 0;
   1919 
   1920     virtual DWRITE_FONT_SIMULATIONS STDMETHODCALLTYPE GetSimulations(
   1921         ) = 0;
   1922 
   1923     virtual void STDMETHODCALLTYPE GetMetrics(
   1924         DWRITE_FONT_METRICS *metrics) = 0;
   1925 
   1926     virtual HRESULT STDMETHODCALLTYPE HasCharacter(
   1927         UINT32 value,
   1928         WINBOOL *exists) = 0;
   1929 
   1930     virtual HRESULT STDMETHODCALLTYPE CreateFontFace(
   1931         IDWriteFontFace **face) = 0;
   1932 
   1933 };
   1934 #ifdef __CRT_UUID_DECL
   1935 __CRT_UUID_DECL(IDWriteFont, 0xacd16696, 0x8c14, 0x4f5d, 0x87,0x7e, 0xfe,0x3f,0xc1,0xd3,0x27,0x37)
   1936 #endif
   1937 #else
   1938 typedef struct IDWriteFontVtbl {
   1939     BEGIN_INTERFACE
   1940 
   1941     /*** IUnknown methods ***/
   1942     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1943         IDWriteFont *This,
   1944         REFIID riid,
   1945         void **ppvObject);
   1946 
   1947     ULONG (STDMETHODCALLTYPE *AddRef)(
   1948         IDWriteFont *This);
   1949 
   1950     ULONG (STDMETHODCALLTYPE *Release)(
   1951         IDWriteFont *This);
   1952 
   1953     /*** IDWriteFont methods ***/
   1954     HRESULT (STDMETHODCALLTYPE *GetFontFamily)(
   1955         IDWriteFont *This,
   1956         IDWriteFontFamily **family);
   1957 
   1958     DWRITE_FONT_WEIGHT (STDMETHODCALLTYPE *GetWeight)(
   1959         IDWriteFont *This);
   1960 
   1961     DWRITE_FONT_STRETCH (STDMETHODCALLTYPE *GetStretch)(
   1962         IDWriteFont *This);
   1963 
   1964     DWRITE_FONT_STYLE (STDMETHODCALLTYPE *GetStyle)(
   1965         IDWriteFont *This);
   1966 
   1967     WINBOOL (STDMETHODCALLTYPE *IsSymbolFont)(
   1968         IDWriteFont *This);
   1969 
   1970     HRESULT (STDMETHODCALLTYPE *GetFaceNames)(
   1971         IDWriteFont *This,
   1972         IDWriteLocalizedStrings **names);
   1973 
   1974     HRESULT (STDMETHODCALLTYPE *GetInformationalStrings)(
   1975         IDWriteFont *This,
   1976         DWRITE_INFORMATIONAL_STRING_ID stringid,
   1977         IDWriteLocalizedStrings **strings,
   1978         WINBOOL *exists);
   1979 
   1980     DWRITE_FONT_SIMULATIONS (STDMETHODCALLTYPE *GetSimulations)(
   1981         IDWriteFont *This);
   1982 
   1983     void (STDMETHODCALLTYPE *GetMetrics)(
   1984         IDWriteFont *This,
   1985         DWRITE_FONT_METRICS *metrics);
   1986 
   1987     HRESULT (STDMETHODCALLTYPE *HasCharacter)(
   1988         IDWriteFont *This,
   1989         UINT32 value,
   1990         WINBOOL *exists);
   1991 
   1992     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
   1993         IDWriteFont *This,
   1994         IDWriteFontFace **face);
   1995 
   1996     END_INTERFACE
   1997 } IDWriteFontVtbl;
   1998 
   1999 interface IDWriteFont {
   2000     CONST_VTBL IDWriteFontVtbl* lpVtbl;
   2001 };
   2002 
   2003 #ifdef COBJMACROS
   2004 #ifndef WIDL_C_INLINE_WRAPPERS
   2005 /*** IUnknown methods ***/
   2006 #define IDWriteFont_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2007 #define IDWriteFont_AddRef(This) (This)->lpVtbl->AddRef(This)
   2008 #define IDWriteFont_Release(This) (This)->lpVtbl->Release(This)
   2009 /*** IDWriteFont methods ***/
   2010 #define IDWriteFont_GetFontFamily(This,family) (This)->lpVtbl->GetFontFamily(This,family)
   2011 #define IDWriteFont_GetWeight(This) (This)->lpVtbl->GetWeight(This)
   2012 #define IDWriteFont_GetStretch(This) (This)->lpVtbl->GetStretch(This)
   2013 #define IDWriteFont_GetStyle(This) (This)->lpVtbl->GetStyle(This)
   2014 #define IDWriteFont_IsSymbolFont(This) (This)->lpVtbl->IsSymbolFont(This)
   2015 #define IDWriteFont_GetFaceNames(This,names) (This)->lpVtbl->GetFaceNames(This,names)
   2016 #define IDWriteFont_GetInformationalStrings(This,stringid,strings,exists) (This)->lpVtbl->GetInformationalStrings(This,stringid,strings,exists)
   2017 #define IDWriteFont_GetSimulations(This) (This)->lpVtbl->GetSimulations(This)
   2018 #define IDWriteFont_GetMetrics(This,metrics) (This)->lpVtbl->GetMetrics(This,metrics)
   2019 #define IDWriteFont_HasCharacter(This,value,exists) (This)->lpVtbl->HasCharacter(This,value,exists)
   2020 #define IDWriteFont_CreateFontFace(This,face) (This)->lpVtbl->CreateFontFace(This,face)
   2021 #else
   2022 /*** IUnknown methods ***/
   2023 static inline HRESULT IDWriteFont_QueryInterface(IDWriteFont* This,REFIID riid,void **ppvObject) {
   2024     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2025 }
   2026 static inline ULONG IDWriteFont_AddRef(IDWriteFont* This) {
   2027     return This->lpVtbl->AddRef(This);
   2028 }
   2029 static inline ULONG IDWriteFont_Release(IDWriteFont* This) {
   2030     return This->lpVtbl->Release(This);
   2031 }
   2032 /*** IDWriteFont methods ***/
   2033 static inline HRESULT IDWriteFont_GetFontFamily(IDWriteFont* This,IDWriteFontFamily **family) {
   2034     return This->lpVtbl->GetFontFamily(This,family);
   2035 }
   2036 static inline DWRITE_FONT_WEIGHT IDWriteFont_GetWeight(IDWriteFont* This) {
   2037     return This->lpVtbl->GetWeight(This);
   2038 }
   2039 static inline DWRITE_FONT_STRETCH IDWriteFont_GetStretch(IDWriteFont* This) {
   2040     return This->lpVtbl->GetStretch(This);
   2041 }
   2042 static inline DWRITE_FONT_STYLE IDWriteFont_GetStyle(IDWriteFont* This) {
   2043     return This->lpVtbl->GetStyle(This);
   2044 }
   2045 static inline WINBOOL IDWriteFont_IsSymbolFont(IDWriteFont* This) {
   2046     return This->lpVtbl->IsSymbolFont(This);
   2047 }
   2048 static inline HRESULT IDWriteFont_GetFaceNames(IDWriteFont* This,IDWriteLocalizedStrings **names) {
   2049     return This->lpVtbl->GetFaceNames(This,names);
   2050 }
   2051 static inline HRESULT IDWriteFont_GetInformationalStrings(IDWriteFont* This,DWRITE_INFORMATIONAL_STRING_ID stringid,IDWriteLocalizedStrings **strings,WINBOOL *exists) {
   2052     return This->lpVtbl->GetInformationalStrings(This,stringid,strings,exists);
   2053 }
   2054 static inline DWRITE_FONT_SIMULATIONS IDWriteFont_GetSimulations(IDWriteFont* This) {
   2055     return This->lpVtbl->GetSimulations(This);
   2056 }
   2057 static inline void IDWriteFont_GetMetrics(IDWriteFont* This,DWRITE_FONT_METRICS *metrics) {
   2058     This->lpVtbl->GetMetrics(This,metrics);
   2059 }
   2060 static inline HRESULT IDWriteFont_HasCharacter(IDWriteFont* This,UINT32 value,WINBOOL *exists) {
   2061     return This->lpVtbl->HasCharacter(This,value,exists);
   2062 }
   2063 static inline HRESULT IDWriteFont_CreateFontFace(IDWriteFont* This,IDWriteFontFace **face) {
   2064     return This->lpVtbl->CreateFontFace(This,face);
   2065 }
   2066 #endif
   2067 #endif
   2068 
   2069 #endif
   2070 
   2071 
   2072 #endif  /* __IDWriteFont_INTERFACE_DEFINED__ */
   2073 
   2074 /*****************************************************************************
   2075  * IDWriteFontList interface
   2076  */
   2077 #ifndef __IDWriteFontList_INTERFACE_DEFINED__
   2078 #define __IDWriteFontList_INTERFACE_DEFINED__
   2079 
   2080 DEFINE_GUID(IID_IDWriteFontList, 0x1a0d8438, 0x1d97, 0x4ec1, 0xae,0xf9, 0xa2,0xfb,0x86,0xed,0x6a,0xcb);
   2081 #if defined(__cplusplus) && !defined(CINTERFACE)
   2082 MIDL_INTERFACE("1a0d8438-1d97-4ec1-aef9-a2fb86ed6acb")
   2083 IDWriteFontList : public IUnknown
   2084 {
   2085     virtual HRESULT STDMETHODCALLTYPE GetFontCollection(
   2086         IDWriteFontCollection **collection) = 0;
   2087 
   2088     virtual UINT32 STDMETHODCALLTYPE GetFontCount(
   2089         ) = 0;
   2090 
   2091     virtual HRESULT STDMETHODCALLTYPE GetFont(
   2092         UINT32 index,
   2093         IDWriteFont **font) = 0;
   2094 
   2095 };
   2096 #ifdef __CRT_UUID_DECL
   2097 __CRT_UUID_DECL(IDWriteFontList, 0x1a0d8438, 0x1d97, 0x4ec1, 0xae,0xf9, 0xa2,0xfb,0x86,0xed,0x6a,0xcb)
   2098 #endif
   2099 #else
   2100 typedef struct IDWriteFontListVtbl {
   2101     BEGIN_INTERFACE
   2102 
   2103     /*** IUnknown methods ***/
   2104     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2105         IDWriteFontList *This,
   2106         REFIID riid,
   2107         void **ppvObject);
   2108 
   2109     ULONG (STDMETHODCALLTYPE *AddRef)(
   2110         IDWriteFontList *This);
   2111 
   2112     ULONG (STDMETHODCALLTYPE *Release)(
   2113         IDWriteFontList *This);
   2114 
   2115     /*** IDWriteFontList methods ***/
   2116     HRESULT (STDMETHODCALLTYPE *GetFontCollection)(
   2117         IDWriteFontList *This,
   2118         IDWriteFontCollection **collection);
   2119 
   2120     UINT32 (STDMETHODCALLTYPE *GetFontCount)(
   2121         IDWriteFontList *This);
   2122 
   2123     HRESULT (STDMETHODCALLTYPE *GetFont)(
   2124         IDWriteFontList *This,
   2125         UINT32 index,
   2126         IDWriteFont **font);
   2127 
   2128     END_INTERFACE
   2129 } IDWriteFontListVtbl;
   2130 
   2131 interface IDWriteFontList {
   2132     CONST_VTBL IDWriteFontListVtbl* lpVtbl;
   2133 };
   2134 
   2135 #ifdef COBJMACROS
   2136 #ifndef WIDL_C_INLINE_WRAPPERS
   2137 /*** IUnknown methods ***/
   2138 #define IDWriteFontList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2139 #define IDWriteFontList_AddRef(This) (This)->lpVtbl->AddRef(This)
   2140 #define IDWriteFontList_Release(This) (This)->lpVtbl->Release(This)
   2141 /*** IDWriteFontList methods ***/
   2142 #define IDWriteFontList_GetFontCollection(This,collection) (This)->lpVtbl->GetFontCollection(This,collection)
   2143 #define IDWriteFontList_GetFontCount(This) (This)->lpVtbl->GetFontCount(This)
   2144 #define IDWriteFontList_GetFont(This,index,font) (This)->lpVtbl->GetFont(This,index,font)
   2145 #else
   2146 /*** IUnknown methods ***/
   2147 static inline HRESULT IDWriteFontList_QueryInterface(IDWriteFontList* This,REFIID riid,void **ppvObject) {
   2148     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2149 }
   2150 static inline ULONG IDWriteFontList_AddRef(IDWriteFontList* This) {
   2151     return This->lpVtbl->AddRef(This);
   2152 }
   2153 static inline ULONG IDWriteFontList_Release(IDWriteFontList* This) {
   2154     return This->lpVtbl->Release(This);
   2155 }
   2156 /*** IDWriteFontList methods ***/
   2157 static inline HRESULT IDWriteFontList_GetFontCollection(IDWriteFontList* This,IDWriteFontCollection **collection) {
   2158     return This->lpVtbl->GetFontCollection(This,collection);
   2159 }
   2160 static inline UINT32 IDWriteFontList_GetFontCount(IDWriteFontList* This) {
   2161     return This->lpVtbl->GetFontCount(This);
   2162 }
   2163 static inline HRESULT IDWriteFontList_GetFont(IDWriteFontList* This,UINT32 index,IDWriteFont **font) {
   2164     return This->lpVtbl->GetFont(This,index,font);
   2165 }
   2166 #endif
   2167 #endif
   2168 
   2169 #endif
   2170 
   2171 
   2172 #endif  /* __IDWriteFontList_INTERFACE_DEFINED__ */
   2173 
   2174 /*****************************************************************************
   2175  * IDWriteFontFamily interface
   2176  */
   2177 #ifndef __IDWriteFontFamily_INTERFACE_DEFINED__
   2178 #define __IDWriteFontFamily_INTERFACE_DEFINED__
   2179 
   2180 DEFINE_GUID(IID_IDWriteFontFamily, 0xda20d8ef, 0x812a, 0x4c43, 0x98,0x02, 0x62,0xec,0x4a,0xbd,0x7a,0xdd);
   2181 #if defined(__cplusplus) && !defined(CINTERFACE)
   2182 MIDL_INTERFACE("da20d8ef-812a-4c43-9802-62ec4abd7add")
   2183 IDWriteFontFamily : public IDWriteFontList
   2184 {
   2185     virtual HRESULT STDMETHODCALLTYPE GetFamilyNames(
   2186         IDWriteLocalizedStrings **names) = 0;
   2187 
   2188     virtual HRESULT STDMETHODCALLTYPE GetFirstMatchingFont(
   2189         DWRITE_FONT_WEIGHT weight,
   2190         DWRITE_FONT_STRETCH stretch,
   2191         DWRITE_FONT_STYLE style,
   2192         IDWriteFont **font) = 0;
   2193 
   2194     virtual HRESULT STDMETHODCALLTYPE GetMatchingFonts(
   2195         DWRITE_FONT_WEIGHT weight,
   2196         DWRITE_FONT_STRETCH stretch,
   2197         DWRITE_FONT_STYLE style,
   2198         IDWriteFontList **fonts) = 0;
   2199 
   2200 };
   2201 #ifdef __CRT_UUID_DECL
   2202 __CRT_UUID_DECL(IDWriteFontFamily, 0xda20d8ef, 0x812a, 0x4c43, 0x98,0x02, 0x62,0xec,0x4a,0xbd,0x7a,0xdd)
   2203 #endif
   2204 #else
   2205 typedef struct IDWriteFontFamilyVtbl {
   2206     BEGIN_INTERFACE
   2207 
   2208     /*** IUnknown methods ***/
   2209     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2210         IDWriteFontFamily *This,
   2211         REFIID riid,
   2212         void **ppvObject);
   2213 
   2214     ULONG (STDMETHODCALLTYPE *AddRef)(
   2215         IDWriteFontFamily *This);
   2216 
   2217     ULONG (STDMETHODCALLTYPE *Release)(
   2218         IDWriteFontFamily *This);
   2219 
   2220     /*** IDWriteFontList methods ***/
   2221     HRESULT (STDMETHODCALLTYPE *GetFontCollection)(
   2222         IDWriteFontFamily *This,
   2223         IDWriteFontCollection **collection);
   2224 
   2225     UINT32 (STDMETHODCALLTYPE *GetFontCount)(
   2226         IDWriteFontFamily *This);
   2227 
   2228     HRESULT (STDMETHODCALLTYPE *GetFont)(
   2229         IDWriteFontFamily *This,
   2230         UINT32 index,
   2231         IDWriteFont **font);
   2232 
   2233     /*** IDWriteFontFamily methods ***/
   2234     HRESULT (STDMETHODCALLTYPE *GetFamilyNames)(
   2235         IDWriteFontFamily *This,
   2236         IDWriteLocalizedStrings **names);
   2237 
   2238     HRESULT (STDMETHODCALLTYPE *GetFirstMatchingFont)(
   2239         IDWriteFontFamily *This,
   2240         DWRITE_FONT_WEIGHT weight,
   2241         DWRITE_FONT_STRETCH stretch,
   2242         DWRITE_FONT_STYLE style,
   2243         IDWriteFont **font);
   2244 
   2245     HRESULT (STDMETHODCALLTYPE *GetMatchingFonts)(
   2246         IDWriteFontFamily *This,
   2247         DWRITE_FONT_WEIGHT weight,
   2248         DWRITE_FONT_STRETCH stretch,
   2249         DWRITE_FONT_STYLE style,
   2250         IDWriteFontList **fonts);
   2251 
   2252     END_INTERFACE
   2253 } IDWriteFontFamilyVtbl;
   2254 
   2255 interface IDWriteFontFamily {
   2256     CONST_VTBL IDWriteFontFamilyVtbl* lpVtbl;
   2257 };
   2258 
   2259 #ifdef COBJMACROS
   2260 #ifndef WIDL_C_INLINE_WRAPPERS
   2261 /*** IUnknown methods ***/
   2262 #define IDWriteFontFamily_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2263 #define IDWriteFontFamily_AddRef(This) (This)->lpVtbl->AddRef(This)
   2264 #define IDWriteFontFamily_Release(This) (This)->lpVtbl->Release(This)
   2265 /*** IDWriteFontList methods ***/
   2266 #define IDWriteFontFamily_GetFontCollection(This,collection) (This)->lpVtbl->GetFontCollection(This,collection)
   2267 #define IDWriteFontFamily_GetFontCount(This) (This)->lpVtbl->GetFontCount(This)
   2268 #define IDWriteFontFamily_GetFont(This,index,font) (This)->lpVtbl->GetFont(This,index,font)
   2269 /*** IDWriteFontFamily methods ***/
   2270 #define IDWriteFontFamily_GetFamilyNames(This,names) (This)->lpVtbl->GetFamilyNames(This,names)
   2271 #define IDWriteFontFamily_GetFirstMatchingFont(This,weight,stretch,style,font) (This)->lpVtbl->GetFirstMatchingFont(This,weight,stretch,style,font)
   2272 #define IDWriteFontFamily_GetMatchingFonts(This,weight,stretch,style,fonts) (This)->lpVtbl->GetMatchingFonts(This,weight,stretch,style,fonts)
   2273 #else
   2274 /*** IUnknown methods ***/
   2275 static inline HRESULT IDWriteFontFamily_QueryInterface(IDWriteFontFamily* This,REFIID riid,void **ppvObject) {
   2276     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2277 }
   2278 static inline ULONG IDWriteFontFamily_AddRef(IDWriteFontFamily* This) {
   2279     return This->lpVtbl->AddRef(This);
   2280 }
   2281 static inline ULONG IDWriteFontFamily_Release(IDWriteFontFamily* This) {
   2282     return This->lpVtbl->Release(This);
   2283 }
   2284 /*** IDWriteFontList methods ***/
   2285 static inline HRESULT IDWriteFontFamily_GetFontCollection(IDWriteFontFamily* This,IDWriteFontCollection **collection) {
   2286     return This->lpVtbl->GetFontCollection(This,collection);
   2287 }
   2288 static inline UINT32 IDWriteFontFamily_GetFontCount(IDWriteFontFamily* This) {
   2289     return This->lpVtbl->GetFontCount(This);
   2290 }
   2291 static inline HRESULT IDWriteFontFamily_GetFont(IDWriteFontFamily* This,UINT32 index,IDWriteFont **font) {
   2292     return This->lpVtbl->GetFont(This,index,font);
   2293 }
   2294 /*** IDWriteFontFamily methods ***/
   2295 static inline HRESULT IDWriteFontFamily_GetFamilyNames(IDWriteFontFamily* This,IDWriteLocalizedStrings **names) {
   2296     return This->lpVtbl->GetFamilyNames(This,names);
   2297 }
   2298 static inline HRESULT IDWriteFontFamily_GetFirstMatchingFont(IDWriteFontFamily* This,DWRITE_FONT_WEIGHT weight,DWRITE_FONT_STRETCH stretch,DWRITE_FONT_STYLE style,IDWriteFont **font) {
   2299     return This->lpVtbl->GetFirstMatchingFont(This,weight,stretch,style,font);
   2300 }
   2301 static inline HRESULT IDWriteFontFamily_GetMatchingFonts(IDWriteFontFamily* This,DWRITE_FONT_WEIGHT weight,DWRITE_FONT_STRETCH stretch,DWRITE_FONT_STYLE style,IDWriteFontList **fonts) {
   2302     return This->lpVtbl->GetMatchingFonts(This,weight,stretch,style,fonts);
   2303 }
   2304 #endif
   2305 #endif
   2306 
   2307 #endif
   2308 
   2309 
   2310 #endif  /* __IDWriteFontFamily_INTERFACE_DEFINED__ */
   2311 
   2312 /*****************************************************************************
   2313  * IDWriteFontCollection interface
   2314  */
   2315 #ifndef __IDWriteFontCollection_INTERFACE_DEFINED__
   2316 #define __IDWriteFontCollection_INTERFACE_DEFINED__
   2317 
   2318 DEFINE_GUID(IID_IDWriteFontCollection, 0xa84cee02, 0x3eea, 0x4eee, 0xa8,0x27, 0x87,0xc1,0xa0,0x2a,0x0f,0xcc);
   2319 #if defined(__cplusplus) && !defined(CINTERFACE)
   2320 MIDL_INTERFACE("a84cee02-3eea-4eee-a827-87c1a02a0fcc")
   2321 IDWriteFontCollection : public IUnknown
   2322 {
   2323     virtual UINT32 STDMETHODCALLTYPE GetFontFamilyCount(
   2324         ) = 0;
   2325 
   2326     virtual HRESULT STDMETHODCALLTYPE GetFontFamily(
   2327         UINT32 index,
   2328         IDWriteFontFamily **family) = 0;
   2329 
   2330     virtual HRESULT STDMETHODCALLTYPE FindFamilyName(
   2331         const WCHAR *name,
   2332         UINT32 *index,
   2333         WINBOOL *exists) = 0;
   2334 
   2335     virtual HRESULT STDMETHODCALLTYPE GetFontFromFontFace(
   2336         IDWriteFontFace *face,
   2337         IDWriteFont **font) = 0;
   2338 
   2339 };
   2340 #ifdef __CRT_UUID_DECL
   2341 __CRT_UUID_DECL(IDWriteFontCollection, 0xa84cee02, 0x3eea, 0x4eee, 0xa8,0x27, 0x87,0xc1,0xa0,0x2a,0x0f,0xcc)
   2342 #endif
   2343 #else
   2344 typedef struct IDWriteFontCollectionVtbl {
   2345     BEGIN_INTERFACE
   2346 
   2347     /*** IUnknown methods ***/
   2348     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2349         IDWriteFontCollection *This,
   2350         REFIID riid,
   2351         void **ppvObject);
   2352 
   2353     ULONG (STDMETHODCALLTYPE *AddRef)(
   2354         IDWriteFontCollection *This);
   2355 
   2356     ULONG (STDMETHODCALLTYPE *Release)(
   2357         IDWriteFontCollection *This);
   2358 
   2359     /*** IDWriteFontCollection methods ***/
   2360     UINT32 (STDMETHODCALLTYPE *GetFontFamilyCount)(
   2361         IDWriteFontCollection *This);
   2362 
   2363     HRESULT (STDMETHODCALLTYPE *GetFontFamily)(
   2364         IDWriteFontCollection *This,
   2365         UINT32 index,
   2366         IDWriteFontFamily **family);
   2367 
   2368     HRESULT (STDMETHODCALLTYPE *FindFamilyName)(
   2369         IDWriteFontCollection *This,
   2370         const WCHAR *name,
   2371         UINT32 *index,
   2372         WINBOOL *exists);
   2373 
   2374     HRESULT (STDMETHODCALLTYPE *GetFontFromFontFace)(
   2375         IDWriteFontCollection *This,
   2376         IDWriteFontFace *face,
   2377         IDWriteFont **font);
   2378 
   2379     END_INTERFACE
   2380 } IDWriteFontCollectionVtbl;
   2381 
   2382 interface IDWriteFontCollection {
   2383     CONST_VTBL IDWriteFontCollectionVtbl* lpVtbl;
   2384 };
   2385 
   2386 #ifdef COBJMACROS
   2387 #ifndef WIDL_C_INLINE_WRAPPERS
   2388 /*** IUnknown methods ***/
   2389 #define IDWriteFontCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2390 #define IDWriteFontCollection_AddRef(This) (This)->lpVtbl->AddRef(This)
   2391 #define IDWriteFontCollection_Release(This) (This)->lpVtbl->Release(This)
   2392 /*** IDWriteFontCollection methods ***/
   2393 #define IDWriteFontCollection_GetFontFamilyCount(This) (This)->lpVtbl->GetFontFamilyCount(This)
   2394 #define IDWriteFontCollection_GetFontFamily(This,index,family) (This)->lpVtbl->GetFontFamily(This,index,family)
   2395 #define IDWriteFontCollection_FindFamilyName(This,name,index,exists) (This)->lpVtbl->FindFamilyName(This,name,index,exists)
   2396 #define IDWriteFontCollection_GetFontFromFontFace(This,face,font) (This)->lpVtbl->GetFontFromFontFace(This,face,font)
   2397 #else
   2398 /*** IUnknown methods ***/
   2399 static inline HRESULT IDWriteFontCollection_QueryInterface(IDWriteFontCollection* This,REFIID riid,void **ppvObject) {
   2400     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2401 }
   2402 static inline ULONG IDWriteFontCollection_AddRef(IDWriteFontCollection* This) {
   2403     return This->lpVtbl->AddRef(This);
   2404 }
   2405 static inline ULONG IDWriteFontCollection_Release(IDWriteFontCollection* This) {
   2406     return This->lpVtbl->Release(This);
   2407 }
   2408 /*** IDWriteFontCollection methods ***/
   2409 static inline UINT32 IDWriteFontCollection_GetFontFamilyCount(IDWriteFontCollection* This) {
   2410     return This->lpVtbl->GetFontFamilyCount(This);
   2411 }
   2412 static inline HRESULT IDWriteFontCollection_GetFontFamily(IDWriteFontCollection* This,UINT32 index,IDWriteFontFamily **family) {
   2413     return This->lpVtbl->GetFontFamily(This,index,family);
   2414 }
   2415 static inline HRESULT IDWriteFontCollection_FindFamilyName(IDWriteFontCollection* This,const WCHAR *name,UINT32 *index,WINBOOL *exists) {
   2416     return This->lpVtbl->FindFamilyName(This,name,index,exists);
   2417 }
   2418 static inline HRESULT IDWriteFontCollection_GetFontFromFontFace(IDWriteFontCollection* This,IDWriteFontFace *face,IDWriteFont **font) {
   2419     return This->lpVtbl->GetFontFromFontFace(This,face,font);
   2420 }
   2421 #endif
   2422 #endif
   2423 
   2424 #endif
   2425 
   2426 
   2427 #endif  /* __IDWriteFontCollection_INTERFACE_DEFINED__ */
   2428 
   2429 /*****************************************************************************
   2430  * IDWritePixelSnapping interface
   2431  */
   2432 #ifndef __IDWritePixelSnapping_INTERFACE_DEFINED__
   2433 #define __IDWritePixelSnapping_INTERFACE_DEFINED__
   2434 
   2435 DEFINE_GUID(IID_IDWritePixelSnapping, 0xeaf3a2da, 0xecf4, 0x4d24, 0xb6,0x44, 0xb3,0x4f,0x68,0x42,0x02,0x4b);
   2436 #if defined(__cplusplus) && !defined(CINTERFACE)
   2437 MIDL_INTERFACE("eaf3a2da-ecf4-4d24-b644-b34f6842024b")
   2438 IDWritePixelSnapping : public IUnknown
   2439 {
   2440     virtual HRESULT STDMETHODCALLTYPE IsPixelSnappingDisabled(
   2441         void *client_drawingcontext,
   2442         WINBOOL *disabled) = 0;
   2443 
   2444     virtual HRESULT STDMETHODCALLTYPE GetCurrentTransform(
   2445         void *client_drawingcontext,
   2446         DWRITE_MATRIX *transform) = 0;
   2447 
   2448     virtual HRESULT STDMETHODCALLTYPE GetPixelsPerDip(
   2449         void *client_drawingcontext,
   2450         FLOAT *pixels_per_dip) = 0;
   2451 
   2452 };
   2453 #ifdef __CRT_UUID_DECL
   2454 __CRT_UUID_DECL(IDWritePixelSnapping, 0xeaf3a2da, 0xecf4, 0x4d24, 0xb6,0x44, 0xb3,0x4f,0x68,0x42,0x02,0x4b)
   2455 #endif
   2456 #else
   2457 typedef struct IDWritePixelSnappingVtbl {
   2458     BEGIN_INTERFACE
   2459 
   2460     /*** IUnknown methods ***/
   2461     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2462         IDWritePixelSnapping *This,
   2463         REFIID riid,
   2464         void **ppvObject);
   2465 
   2466     ULONG (STDMETHODCALLTYPE *AddRef)(
   2467         IDWritePixelSnapping *This);
   2468 
   2469     ULONG (STDMETHODCALLTYPE *Release)(
   2470         IDWritePixelSnapping *This);
   2471 
   2472     /*** IDWritePixelSnapping methods ***/
   2473     HRESULT (STDMETHODCALLTYPE *IsPixelSnappingDisabled)(
   2474         IDWritePixelSnapping *This,
   2475         void *client_drawingcontext,
   2476         WINBOOL *disabled);
   2477 
   2478     HRESULT (STDMETHODCALLTYPE *GetCurrentTransform)(
   2479         IDWritePixelSnapping *This,
   2480         void *client_drawingcontext,
   2481         DWRITE_MATRIX *transform);
   2482 
   2483     HRESULT (STDMETHODCALLTYPE *GetPixelsPerDip)(
   2484         IDWritePixelSnapping *This,
   2485         void *client_drawingcontext,
   2486         FLOAT *pixels_per_dip);
   2487 
   2488     END_INTERFACE
   2489 } IDWritePixelSnappingVtbl;
   2490 
   2491 interface IDWritePixelSnapping {
   2492     CONST_VTBL IDWritePixelSnappingVtbl* lpVtbl;
   2493 };
   2494 
   2495 #ifdef COBJMACROS
   2496 #ifndef WIDL_C_INLINE_WRAPPERS
   2497 /*** IUnknown methods ***/
   2498 #define IDWritePixelSnapping_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2499 #define IDWritePixelSnapping_AddRef(This) (This)->lpVtbl->AddRef(This)
   2500 #define IDWritePixelSnapping_Release(This) (This)->lpVtbl->Release(This)
   2501 /*** IDWritePixelSnapping methods ***/
   2502 #define IDWritePixelSnapping_IsPixelSnappingDisabled(This,client_drawingcontext,disabled) (This)->lpVtbl->IsPixelSnappingDisabled(This,client_drawingcontext,disabled)
   2503 #define IDWritePixelSnapping_GetCurrentTransform(This,client_drawingcontext,transform) (This)->lpVtbl->GetCurrentTransform(This,client_drawingcontext,transform)
   2504 #define IDWritePixelSnapping_GetPixelsPerDip(This,client_drawingcontext,pixels_per_dip) (This)->lpVtbl->GetPixelsPerDip(This,client_drawingcontext,pixels_per_dip)
   2505 #else
   2506 /*** IUnknown methods ***/
   2507 static inline HRESULT IDWritePixelSnapping_QueryInterface(IDWritePixelSnapping* This,REFIID riid,void **ppvObject) {
   2508     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2509 }
   2510 static inline ULONG IDWritePixelSnapping_AddRef(IDWritePixelSnapping* This) {
   2511     return This->lpVtbl->AddRef(This);
   2512 }
   2513 static inline ULONG IDWritePixelSnapping_Release(IDWritePixelSnapping* This) {
   2514     return This->lpVtbl->Release(This);
   2515 }
   2516 /*** IDWritePixelSnapping methods ***/
   2517 static inline HRESULT IDWritePixelSnapping_IsPixelSnappingDisabled(IDWritePixelSnapping* This,void *client_drawingcontext,WINBOOL *disabled) {
   2518     return This->lpVtbl->IsPixelSnappingDisabled(This,client_drawingcontext,disabled);
   2519 }
   2520 static inline HRESULT IDWritePixelSnapping_GetCurrentTransform(IDWritePixelSnapping* This,void *client_drawingcontext,DWRITE_MATRIX *transform) {
   2521     return This->lpVtbl->GetCurrentTransform(This,client_drawingcontext,transform);
   2522 }
   2523 static inline HRESULT IDWritePixelSnapping_GetPixelsPerDip(IDWritePixelSnapping* This,void *client_drawingcontext,FLOAT *pixels_per_dip) {
   2524     return This->lpVtbl->GetPixelsPerDip(This,client_drawingcontext,pixels_per_dip);
   2525 }
   2526 #endif
   2527 #endif
   2528 
   2529 #endif
   2530 
   2531 
   2532 #endif  /* __IDWritePixelSnapping_INTERFACE_DEFINED__ */
   2533 
   2534 /*****************************************************************************
   2535  * IDWriteTextRenderer interface
   2536  */
   2537 #ifndef __IDWriteTextRenderer_INTERFACE_DEFINED__
   2538 #define __IDWriteTextRenderer_INTERFACE_DEFINED__
   2539 
   2540 DEFINE_GUID(IID_IDWriteTextRenderer, 0xef8a8135, 0x5cc6, 0x45fe, 0x88,0x25, 0xc5,0xa0,0x72,0x4e,0xb8,0x19);
   2541 #if defined(__cplusplus) && !defined(CINTERFACE)
   2542 MIDL_INTERFACE("ef8a8135-5cc6-45fe-8825-c5a0724eb819")
   2543 IDWriteTextRenderer : public IDWritePixelSnapping
   2544 {
   2545     virtual HRESULT STDMETHODCALLTYPE DrawGlyphRun(
   2546         void *client_drawingcontext,
   2547         FLOAT baselineOriginX,
   2548         FLOAT baselineOriginY,
   2549         DWRITE_MEASURING_MODE mode,
   2550         const DWRITE_GLYPH_RUN *glyph_run,
   2551         const DWRITE_GLYPH_RUN_DESCRIPTION *run_descr,
   2552         IUnknown *drawing_effect) = 0;
   2553 
   2554     virtual HRESULT STDMETHODCALLTYPE DrawUnderline(
   2555         void *client_drawingcontext,
   2556         FLOAT baselineOriginX,
   2557         FLOAT baselineOriginY,
   2558         const DWRITE_UNDERLINE *underline,
   2559         IUnknown *drawing_effect) = 0;
   2560 
   2561     virtual HRESULT STDMETHODCALLTYPE DrawStrikethrough(
   2562         void *client_drawingcontext,
   2563         FLOAT baselineOriginX,
   2564         FLOAT baselineOriginY,
   2565         const DWRITE_STRIKETHROUGH *strikethrough,
   2566         IUnknown *drawing_effect) = 0;
   2567 
   2568     virtual HRESULT STDMETHODCALLTYPE DrawInlineObject(
   2569         void *client_drawingcontext,
   2570         FLOAT originX,
   2571         FLOAT originY,
   2572         IDWriteInlineObject *object,
   2573         WINBOOL is_sideways,
   2574         WINBOOL is_rtl,
   2575         IUnknown *drawing_effect) = 0;
   2576 
   2577 };
   2578 #ifdef __CRT_UUID_DECL
   2579 __CRT_UUID_DECL(IDWriteTextRenderer, 0xef8a8135, 0x5cc6, 0x45fe, 0x88,0x25, 0xc5,0xa0,0x72,0x4e,0xb8,0x19)
   2580 #endif
   2581 #else
   2582 typedef struct IDWriteTextRendererVtbl {
   2583     BEGIN_INTERFACE
   2584 
   2585     /*** IUnknown methods ***/
   2586     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2587         IDWriteTextRenderer *This,
   2588         REFIID riid,
   2589         void **ppvObject);
   2590 
   2591     ULONG (STDMETHODCALLTYPE *AddRef)(
   2592         IDWriteTextRenderer *This);
   2593 
   2594     ULONG (STDMETHODCALLTYPE *Release)(
   2595         IDWriteTextRenderer *This);
   2596 
   2597     /*** IDWritePixelSnapping methods ***/
   2598     HRESULT (STDMETHODCALLTYPE *IsPixelSnappingDisabled)(
   2599         IDWriteTextRenderer *This,
   2600         void *client_drawingcontext,
   2601         WINBOOL *disabled);
   2602 
   2603     HRESULT (STDMETHODCALLTYPE *GetCurrentTransform)(
   2604         IDWriteTextRenderer *This,
   2605         void *client_drawingcontext,
   2606         DWRITE_MATRIX *transform);
   2607 
   2608     HRESULT (STDMETHODCALLTYPE *GetPixelsPerDip)(
   2609         IDWriteTextRenderer *This,
   2610         void *client_drawingcontext,
   2611         FLOAT *pixels_per_dip);
   2612 
   2613     /*** IDWriteTextRenderer methods ***/
   2614     HRESULT (STDMETHODCALLTYPE *DrawGlyphRun)(
   2615         IDWriteTextRenderer *This,
   2616         void *client_drawingcontext,
   2617         FLOAT baselineOriginX,
   2618         FLOAT baselineOriginY,
   2619         DWRITE_MEASURING_MODE mode,
   2620         const DWRITE_GLYPH_RUN *glyph_run,
   2621         const DWRITE_GLYPH_RUN_DESCRIPTION *run_descr,
   2622         IUnknown *drawing_effect);
   2623 
   2624     HRESULT (STDMETHODCALLTYPE *DrawUnderline)(
   2625         IDWriteTextRenderer *This,
   2626         void *client_drawingcontext,
   2627         FLOAT baselineOriginX,
   2628         FLOAT baselineOriginY,
   2629         const DWRITE_UNDERLINE *underline,
   2630         IUnknown *drawing_effect);
   2631 
   2632     HRESULT (STDMETHODCALLTYPE *DrawStrikethrough)(
   2633         IDWriteTextRenderer *This,
   2634         void *client_drawingcontext,
   2635         FLOAT baselineOriginX,
   2636         FLOAT baselineOriginY,
   2637         const DWRITE_STRIKETHROUGH *strikethrough,
   2638         IUnknown *drawing_effect);
   2639 
   2640     HRESULT (STDMETHODCALLTYPE *DrawInlineObject)(
   2641         IDWriteTextRenderer *This,
   2642         void *client_drawingcontext,
   2643         FLOAT originX,
   2644         FLOAT originY,
   2645         IDWriteInlineObject *object,
   2646         WINBOOL is_sideways,
   2647         WINBOOL is_rtl,
   2648         IUnknown *drawing_effect);
   2649 
   2650     END_INTERFACE
   2651 } IDWriteTextRendererVtbl;
   2652 
   2653 interface IDWriteTextRenderer {
   2654     CONST_VTBL IDWriteTextRendererVtbl* lpVtbl;
   2655 };
   2656 
   2657 #ifdef COBJMACROS
   2658 #ifndef WIDL_C_INLINE_WRAPPERS
   2659 /*** IUnknown methods ***/
   2660 #define IDWriteTextRenderer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2661 #define IDWriteTextRenderer_AddRef(This) (This)->lpVtbl->AddRef(This)
   2662 #define IDWriteTextRenderer_Release(This) (This)->lpVtbl->Release(This)
   2663 /*** IDWritePixelSnapping methods ***/
   2664 #define IDWriteTextRenderer_IsPixelSnappingDisabled(This,client_drawingcontext,disabled) (This)->lpVtbl->IsPixelSnappingDisabled(This,client_drawingcontext,disabled)
   2665 #define IDWriteTextRenderer_GetCurrentTransform(This,client_drawingcontext,transform) (This)->lpVtbl->GetCurrentTransform(This,client_drawingcontext,transform)
   2666 #define IDWriteTextRenderer_GetPixelsPerDip(This,client_drawingcontext,pixels_per_dip) (This)->lpVtbl->GetPixelsPerDip(This,client_drawingcontext,pixels_per_dip)
   2667 /*** IDWriteTextRenderer methods ***/
   2668 #define IDWriteTextRenderer_DrawGlyphRun(This,client_drawingcontext,baselineOriginX,baselineOriginY,mode,glyph_run,run_descr,drawing_effect) (This)->lpVtbl->DrawGlyphRun(This,client_drawingcontext,baselineOriginX,baselineOriginY,mode,glyph_run,run_descr,drawing_effect)
   2669 #define IDWriteTextRenderer_DrawUnderline(This,client_drawingcontext,baselineOriginX,baselineOriginY,underline,drawing_effect) (This)->lpVtbl->DrawUnderline(This,client_drawingcontext,baselineOriginX,baselineOriginY,underline,drawing_effect)
   2670 #define IDWriteTextRenderer_DrawStrikethrough(This,client_drawingcontext,baselineOriginX,baselineOriginY,strikethrough,drawing_effect) (This)->lpVtbl->DrawStrikethrough(This,client_drawingcontext,baselineOriginX,baselineOriginY,strikethrough,drawing_effect)
   2671 #define IDWriteTextRenderer_DrawInlineObject(This,client_drawingcontext,originX,originY,object,is_sideways,is_rtl,drawing_effect) (This)->lpVtbl->DrawInlineObject(This,client_drawingcontext,originX,originY,object,is_sideways,is_rtl,drawing_effect)
   2672 #else
   2673 /*** IUnknown methods ***/
   2674 static inline HRESULT IDWriteTextRenderer_QueryInterface(IDWriteTextRenderer* This,REFIID riid,void **ppvObject) {
   2675     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2676 }
   2677 static inline ULONG IDWriteTextRenderer_AddRef(IDWriteTextRenderer* This) {
   2678     return This->lpVtbl->AddRef(This);
   2679 }
   2680 static inline ULONG IDWriteTextRenderer_Release(IDWriteTextRenderer* This) {
   2681     return This->lpVtbl->Release(This);
   2682 }
   2683 /*** IDWritePixelSnapping methods ***/
   2684 static inline HRESULT IDWriteTextRenderer_IsPixelSnappingDisabled(IDWriteTextRenderer* This,void *client_drawingcontext,WINBOOL *disabled) {
   2685     return This->lpVtbl->IsPixelSnappingDisabled(This,client_drawingcontext,disabled);
   2686 }
   2687 static inline HRESULT IDWriteTextRenderer_GetCurrentTransform(IDWriteTextRenderer* This,void *client_drawingcontext,DWRITE_MATRIX *transform) {
   2688     return This->lpVtbl->GetCurrentTransform(This,client_drawingcontext,transform);
   2689 }
   2690 static inline HRESULT IDWriteTextRenderer_GetPixelsPerDip(IDWriteTextRenderer* This,void *client_drawingcontext,FLOAT *pixels_per_dip) {
   2691     return This->lpVtbl->GetPixelsPerDip(This,client_drawingcontext,pixels_per_dip);
   2692 }
   2693 /*** IDWriteTextRenderer methods ***/
   2694 static inline HRESULT IDWriteTextRenderer_DrawGlyphRun(IDWriteTextRenderer* This,void *client_drawingcontext,FLOAT baselineOriginX,FLOAT baselineOriginY,DWRITE_MEASURING_MODE mode,const DWRITE_GLYPH_RUN *glyph_run,const DWRITE_GLYPH_RUN_DESCRIPTION *run_descr,IUnknown *drawing_effect) {
   2695     return This->lpVtbl->DrawGlyphRun(This,client_drawingcontext,baselineOriginX,baselineOriginY,mode,glyph_run,run_descr,drawing_effect);
   2696 }
   2697 static inline HRESULT IDWriteTextRenderer_DrawUnderline(IDWriteTextRenderer* This,void *client_drawingcontext,FLOAT baselineOriginX,FLOAT baselineOriginY,const DWRITE_UNDERLINE *underline,IUnknown *drawing_effect) {
   2698     return This->lpVtbl->DrawUnderline(This,client_drawingcontext,baselineOriginX,baselineOriginY,underline,drawing_effect);
   2699 }
   2700 static inline HRESULT IDWriteTextRenderer_DrawStrikethrough(IDWriteTextRenderer* This,void *client_drawingcontext,FLOAT baselineOriginX,FLOAT baselineOriginY,const DWRITE_STRIKETHROUGH *strikethrough,IUnknown *drawing_effect) {
   2701     return This->lpVtbl->DrawStrikethrough(This,client_drawingcontext,baselineOriginX,baselineOriginY,strikethrough,drawing_effect);
   2702 }
   2703 static inline HRESULT IDWriteTextRenderer_DrawInlineObject(IDWriteTextRenderer* This,void *client_drawingcontext,FLOAT originX,FLOAT originY,IDWriteInlineObject *object,WINBOOL is_sideways,WINBOOL is_rtl,IUnknown *drawing_effect) {
   2704     return This->lpVtbl->DrawInlineObject(This,client_drawingcontext,originX,originY,object,is_sideways,is_rtl,drawing_effect);
   2705 }
   2706 #endif
   2707 #endif
   2708 
   2709 #endif
   2710 
   2711 
   2712 #endif  /* __IDWriteTextRenderer_INTERFACE_DEFINED__ */
   2713 
   2714 /*****************************************************************************
   2715  * IDWriteInlineObject interface
   2716  */
   2717 #ifndef __IDWriteInlineObject_INTERFACE_DEFINED__
   2718 #define __IDWriteInlineObject_INTERFACE_DEFINED__
   2719 
   2720 DEFINE_GUID(IID_IDWriteInlineObject, 0x8339fde3, 0x106f, 0x47ab, 0x83,0x73, 0x1c,0x62,0x95,0xeb,0x10,0xb3);
   2721 #if defined(__cplusplus) && !defined(CINTERFACE)
   2722 MIDL_INTERFACE("8339fde3-106f-47ab-8373-1c6295eb10b3")
   2723 IDWriteInlineObject : public IUnknown
   2724 {
   2725     virtual HRESULT STDMETHODCALLTYPE Draw(
   2726         void *client_drawingontext,
   2727         IDWriteTextRenderer *renderer,
   2728         FLOAT originX,
   2729         FLOAT originY,
   2730         WINBOOL is_sideways,
   2731         WINBOOL is_rtl,
   2732         IUnknown *drawing_effect) = 0;
   2733 
   2734     virtual HRESULT STDMETHODCALLTYPE GetMetrics(
   2735         DWRITE_INLINE_OBJECT_METRICS *metrics) = 0;
   2736 
   2737     virtual HRESULT STDMETHODCALLTYPE GetOverhangMetrics(
   2738         DWRITE_OVERHANG_METRICS *overhangs) = 0;
   2739 
   2740     virtual HRESULT STDMETHODCALLTYPE GetBreakConditions(
   2741         DWRITE_BREAK_CONDITION *condition_before,
   2742         DWRITE_BREAK_CONDITION *condition_after) = 0;
   2743 
   2744 };
   2745 #ifdef __CRT_UUID_DECL
   2746 __CRT_UUID_DECL(IDWriteInlineObject, 0x8339fde3, 0x106f, 0x47ab, 0x83,0x73, 0x1c,0x62,0x95,0xeb,0x10,0xb3)
   2747 #endif
   2748 #else
   2749 typedef struct IDWriteInlineObjectVtbl {
   2750     BEGIN_INTERFACE
   2751 
   2752     /*** IUnknown methods ***/
   2753     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2754         IDWriteInlineObject *This,
   2755         REFIID riid,
   2756         void **ppvObject);
   2757 
   2758     ULONG (STDMETHODCALLTYPE *AddRef)(
   2759         IDWriteInlineObject *This);
   2760 
   2761     ULONG (STDMETHODCALLTYPE *Release)(
   2762         IDWriteInlineObject *This);
   2763 
   2764     /*** IDWriteInlineObject methods ***/
   2765     HRESULT (STDMETHODCALLTYPE *Draw)(
   2766         IDWriteInlineObject *This,
   2767         void *client_drawingontext,
   2768         IDWriteTextRenderer *renderer,
   2769         FLOAT originX,
   2770         FLOAT originY,
   2771         WINBOOL is_sideways,
   2772         WINBOOL is_rtl,
   2773         IUnknown *drawing_effect);
   2774 
   2775     HRESULT (STDMETHODCALLTYPE *GetMetrics)(
   2776         IDWriteInlineObject *This,
   2777         DWRITE_INLINE_OBJECT_METRICS *metrics);
   2778 
   2779     HRESULT (STDMETHODCALLTYPE *GetOverhangMetrics)(
   2780         IDWriteInlineObject *This,
   2781         DWRITE_OVERHANG_METRICS *overhangs);
   2782 
   2783     HRESULT (STDMETHODCALLTYPE *GetBreakConditions)(
   2784         IDWriteInlineObject *This,
   2785         DWRITE_BREAK_CONDITION *condition_before,
   2786         DWRITE_BREAK_CONDITION *condition_after);
   2787 
   2788     END_INTERFACE
   2789 } IDWriteInlineObjectVtbl;
   2790 
   2791 interface IDWriteInlineObject {
   2792     CONST_VTBL IDWriteInlineObjectVtbl* lpVtbl;
   2793 };
   2794 
   2795 #ifdef COBJMACROS
   2796 #ifndef WIDL_C_INLINE_WRAPPERS
   2797 /*** IUnknown methods ***/
   2798 #define IDWriteInlineObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2799 #define IDWriteInlineObject_AddRef(This) (This)->lpVtbl->AddRef(This)
   2800 #define IDWriteInlineObject_Release(This) (This)->lpVtbl->Release(This)
   2801 /*** IDWriteInlineObject methods ***/
   2802 #define IDWriteInlineObject_Draw(This,client_drawingontext,renderer,originX,originY,is_sideways,is_rtl,drawing_effect) (This)->lpVtbl->Draw(This,client_drawingontext,renderer,originX,originY,is_sideways,is_rtl,drawing_effect)
   2803 #define IDWriteInlineObject_GetMetrics(This,metrics) (This)->lpVtbl->GetMetrics(This,metrics)
   2804 #define IDWriteInlineObject_GetOverhangMetrics(This,overhangs) (This)->lpVtbl->GetOverhangMetrics(This,overhangs)
   2805 #define IDWriteInlineObject_GetBreakConditions(This,condition_before,condition_after) (This)->lpVtbl->GetBreakConditions(This,condition_before,condition_after)
   2806 #else
   2807 /*** IUnknown methods ***/
   2808 static inline HRESULT IDWriteInlineObject_QueryInterface(IDWriteInlineObject* This,REFIID riid,void **ppvObject) {
   2809     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2810 }
   2811 static inline ULONG IDWriteInlineObject_AddRef(IDWriteInlineObject* This) {
   2812     return This->lpVtbl->AddRef(This);
   2813 }
   2814 static inline ULONG IDWriteInlineObject_Release(IDWriteInlineObject* This) {
   2815     return This->lpVtbl->Release(This);
   2816 }
   2817 /*** IDWriteInlineObject methods ***/
   2818 static inline HRESULT IDWriteInlineObject_Draw(IDWriteInlineObject* This,void *client_drawingontext,IDWriteTextRenderer *renderer,FLOAT originX,FLOAT originY,WINBOOL is_sideways,WINBOOL is_rtl,IUnknown *drawing_effect) {
   2819     return This->lpVtbl->Draw(This,client_drawingontext,renderer,originX,originY,is_sideways,is_rtl,drawing_effect);
   2820 }
   2821 static inline HRESULT IDWriteInlineObject_GetMetrics(IDWriteInlineObject* This,DWRITE_INLINE_OBJECT_METRICS *metrics) {
   2822     return This->lpVtbl->GetMetrics(This,metrics);
   2823 }
   2824 static inline HRESULT IDWriteInlineObject_GetOverhangMetrics(IDWriteInlineObject* This,DWRITE_OVERHANG_METRICS *overhangs) {
   2825     return This->lpVtbl->GetOverhangMetrics(This,overhangs);
   2826 }
   2827 static inline HRESULT IDWriteInlineObject_GetBreakConditions(IDWriteInlineObject* This,DWRITE_BREAK_CONDITION *condition_before,DWRITE_BREAK_CONDITION *condition_after) {
   2828     return This->lpVtbl->GetBreakConditions(This,condition_before,condition_after);
   2829 }
   2830 #endif
   2831 #endif
   2832 
   2833 #endif
   2834 
   2835 
   2836 #endif  /* __IDWriteInlineObject_INTERFACE_DEFINED__ */
   2837 
   2838 /*****************************************************************************
   2839  * IDWriteTextFormat interface
   2840  */
   2841 #ifndef __IDWriteTextFormat_INTERFACE_DEFINED__
   2842 #define __IDWriteTextFormat_INTERFACE_DEFINED__
   2843 
   2844 DEFINE_GUID(IID_IDWriteTextFormat, 0x9c906818, 0x31d7, 0x4fd3, 0xa1,0x51, 0x7c,0x5e,0x22,0x5d,0xb5,0x5a);
   2845 #if defined(__cplusplus) && !defined(CINTERFACE)
   2846 MIDL_INTERFACE("9c906818-31d7-4fd3-a151-7c5e225db55a")
   2847 IDWriteTextFormat : public IUnknown
   2848 {
   2849     virtual HRESULT STDMETHODCALLTYPE SetTextAlignment(
   2850         DWRITE_TEXT_ALIGNMENT alignment) = 0;
   2851 
   2852     virtual HRESULT STDMETHODCALLTYPE SetParagraphAlignment(
   2853         DWRITE_PARAGRAPH_ALIGNMENT alignment) = 0;
   2854 
   2855     virtual HRESULT STDMETHODCALLTYPE SetWordWrapping(
   2856         DWRITE_WORD_WRAPPING wrapping) = 0;
   2857 
   2858     virtual HRESULT STDMETHODCALLTYPE SetReadingDirection(
   2859         DWRITE_READING_DIRECTION direction) = 0;
   2860 
   2861     virtual HRESULT STDMETHODCALLTYPE SetFlowDirection(
   2862         DWRITE_FLOW_DIRECTION direction) = 0;
   2863 
   2864     virtual HRESULT STDMETHODCALLTYPE SetIncrementalTabStop(
   2865         FLOAT tabstop) = 0;
   2866 
   2867     virtual HRESULT STDMETHODCALLTYPE SetTrimming(
   2868         const DWRITE_TRIMMING *trimming,
   2869         IDWriteInlineObject *trimming_sign) = 0;
   2870 
   2871     virtual HRESULT STDMETHODCALLTYPE SetLineSpacing(
   2872         DWRITE_LINE_SPACING_METHOD spacing,
   2873         FLOAT line_spacing,
   2874         FLOAT baseline) = 0;
   2875 
   2876     virtual DWRITE_TEXT_ALIGNMENT STDMETHODCALLTYPE GetTextAlignment(
   2877         ) = 0;
   2878 
   2879     virtual DWRITE_PARAGRAPH_ALIGNMENT STDMETHODCALLTYPE GetParagraphAlignment(
   2880         ) = 0;
   2881 
   2882     virtual DWRITE_WORD_WRAPPING STDMETHODCALLTYPE GetWordWrapping(
   2883         ) = 0;
   2884 
   2885     virtual DWRITE_READING_DIRECTION STDMETHODCALLTYPE GetReadingDirection(
   2886         ) = 0;
   2887 
   2888     virtual DWRITE_FLOW_DIRECTION STDMETHODCALLTYPE GetFlowDirection(
   2889         ) = 0;
   2890 
   2891     virtual FLOAT STDMETHODCALLTYPE GetIncrementalTabStop(
   2892         ) = 0;
   2893 
   2894     virtual HRESULT STDMETHODCALLTYPE GetTrimming(
   2895         DWRITE_TRIMMING *options,
   2896         IDWriteInlineObject **trimming_sign) = 0;
   2897 
   2898     virtual HRESULT STDMETHODCALLTYPE GetLineSpacing(
   2899         DWRITE_LINE_SPACING_METHOD *method,
   2900         FLOAT *spacing,
   2901         FLOAT *baseline) = 0;
   2902 
   2903     virtual HRESULT STDMETHODCALLTYPE GetFontCollection(
   2904         IDWriteFontCollection **collection) = 0;
   2905 
   2906     virtual UINT32 STDMETHODCALLTYPE GetFontFamilyNameLength(
   2907         ) = 0;
   2908 
   2909     virtual HRESULT STDMETHODCALLTYPE GetFontFamilyName(
   2910         WCHAR *name,
   2911         UINT32 size) = 0;
   2912 
   2913     virtual DWRITE_FONT_WEIGHT STDMETHODCALLTYPE GetFontWeight(
   2914         ) = 0;
   2915 
   2916     virtual DWRITE_FONT_STYLE STDMETHODCALLTYPE GetFontStyle(
   2917         ) = 0;
   2918 
   2919     virtual DWRITE_FONT_STRETCH STDMETHODCALLTYPE GetFontStretch(
   2920         ) = 0;
   2921 
   2922     virtual FLOAT STDMETHODCALLTYPE GetFontSize(
   2923         ) = 0;
   2924 
   2925     virtual UINT32 STDMETHODCALLTYPE GetLocaleNameLength(
   2926         ) = 0;
   2927 
   2928     virtual HRESULT STDMETHODCALLTYPE GetLocaleName(
   2929         WCHAR *name,
   2930         UINT32 size) = 0;
   2931 
   2932 };
   2933 #ifdef __CRT_UUID_DECL
   2934 __CRT_UUID_DECL(IDWriteTextFormat, 0x9c906818, 0x31d7, 0x4fd3, 0xa1,0x51, 0x7c,0x5e,0x22,0x5d,0xb5,0x5a)
   2935 #endif
   2936 #else
   2937 typedef struct IDWriteTextFormatVtbl {
   2938     BEGIN_INTERFACE
   2939 
   2940     /*** IUnknown methods ***/
   2941     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2942         IDWriteTextFormat *This,
   2943         REFIID riid,
   2944         void **ppvObject);
   2945 
   2946     ULONG (STDMETHODCALLTYPE *AddRef)(
   2947         IDWriteTextFormat *This);
   2948 
   2949     ULONG (STDMETHODCALLTYPE *Release)(
   2950         IDWriteTextFormat *This);
   2951 
   2952     /*** IDWriteTextFormat methods ***/
   2953     HRESULT (STDMETHODCALLTYPE *SetTextAlignment)(
   2954         IDWriteTextFormat *This,
   2955         DWRITE_TEXT_ALIGNMENT alignment);
   2956 
   2957     HRESULT (STDMETHODCALLTYPE *SetParagraphAlignment)(
   2958         IDWriteTextFormat *This,
   2959         DWRITE_PARAGRAPH_ALIGNMENT alignment);
   2960 
   2961     HRESULT (STDMETHODCALLTYPE *SetWordWrapping)(
   2962         IDWriteTextFormat *This,
   2963         DWRITE_WORD_WRAPPING wrapping);
   2964 
   2965     HRESULT (STDMETHODCALLTYPE *SetReadingDirection)(
   2966         IDWriteTextFormat *This,
   2967         DWRITE_READING_DIRECTION direction);
   2968 
   2969     HRESULT (STDMETHODCALLTYPE *SetFlowDirection)(
   2970         IDWriteTextFormat *This,
   2971         DWRITE_FLOW_DIRECTION direction);
   2972 
   2973     HRESULT (STDMETHODCALLTYPE *SetIncrementalTabStop)(
   2974         IDWriteTextFormat *This,
   2975         FLOAT tabstop);
   2976 
   2977     HRESULT (STDMETHODCALLTYPE *SetTrimming)(
   2978         IDWriteTextFormat *This,
   2979         const DWRITE_TRIMMING *trimming,
   2980         IDWriteInlineObject *trimming_sign);
   2981 
   2982     HRESULT (STDMETHODCALLTYPE *SetLineSpacing)(
   2983         IDWriteTextFormat *This,
   2984         DWRITE_LINE_SPACING_METHOD spacing,
   2985         FLOAT line_spacing,
   2986         FLOAT baseline);
   2987 
   2988     DWRITE_TEXT_ALIGNMENT (STDMETHODCALLTYPE *GetTextAlignment)(
   2989         IDWriteTextFormat *This);
   2990 
   2991     DWRITE_PARAGRAPH_ALIGNMENT (STDMETHODCALLTYPE *GetParagraphAlignment)(
   2992         IDWriteTextFormat *This);
   2993 
   2994     DWRITE_WORD_WRAPPING (STDMETHODCALLTYPE *GetWordWrapping)(
   2995         IDWriteTextFormat *This);
   2996 
   2997     DWRITE_READING_DIRECTION (STDMETHODCALLTYPE *GetReadingDirection)(
   2998         IDWriteTextFormat *This);
   2999 
   3000     DWRITE_FLOW_DIRECTION (STDMETHODCALLTYPE *GetFlowDirection)(
   3001         IDWriteTextFormat *This);
   3002 
   3003     FLOAT (STDMETHODCALLTYPE *GetIncrementalTabStop)(
   3004         IDWriteTextFormat *This);
   3005 
   3006     HRESULT (STDMETHODCALLTYPE *GetTrimming)(
   3007         IDWriteTextFormat *This,
   3008         DWRITE_TRIMMING *options,
   3009         IDWriteInlineObject **trimming_sign);
   3010 
   3011     HRESULT (STDMETHODCALLTYPE *GetLineSpacing)(
   3012         IDWriteTextFormat *This,
   3013         DWRITE_LINE_SPACING_METHOD *method,
   3014         FLOAT *spacing,
   3015         FLOAT *baseline);
   3016 
   3017     HRESULT (STDMETHODCALLTYPE *GetFontCollection)(
   3018         IDWriteTextFormat *This,
   3019         IDWriteFontCollection **collection);
   3020 
   3021     UINT32 (STDMETHODCALLTYPE *GetFontFamilyNameLength)(
   3022         IDWriteTextFormat *This);
   3023 
   3024     HRESULT (STDMETHODCALLTYPE *GetFontFamilyName)(
   3025         IDWriteTextFormat *This,
   3026         WCHAR *name,
   3027         UINT32 size);
   3028 
   3029     DWRITE_FONT_WEIGHT (STDMETHODCALLTYPE *GetFontWeight)(
   3030         IDWriteTextFormat *This);
   3031 
   3032     DWRITE_FONT_STYLE (STDMETHODCALLTYPE *GetFontStyle)(
   3033         IDWriteTextFormat *This);
   3034 
   3035     DWRITE_FONT_STRETCH (STDMETHODCALLTYPE *GetFontStretch)(
   3036         IDWriteTextFormat *This);
   3037 
   3038     FLOAT (STDMETHODCALLTYPE *GetFontSize)(
   3039         IDWriteTextFormat *This);
   3040 
   3041     UINT32 (STDMETHODCALLTYPE *GetLocaleNameLength)(
   3042         IDWriteTextFormat *This);
   3043 
   3044     HRESULT (STDMETHODCALLTYPE *GetLocaleName)(
   3045         IDWriteTextFormat *This,
   3046         WCHAR *name,
   3047         UINT32 size);
   3048 
   3049     END_INTERFACE
   3050 } IDWriteTextFormatVtbl;
   3051 
   3052 interface IDWriteTextFormat {
   3053     CONST_VTBL IDWriteTextFormatVtbl* lpVtbl;
   3054 };
   3055 
   3056 #ifdef COBJMACROS
   3057 #ifndef WIDL_C_INLINE_WRAPPERS
   3058 /*** IUnknown methods ***/
   3059 #define IDWriteTextFormat_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3060 #define IDWriteTextFormat_AddRef(This) (This)->lpVtbl->AddRef(This)
   3061 #define IDWriteTextFormat_Release(This) (This)->lpVtbl->Release(This)
   3062 /*** IDWriteTextFormat methods ***/
   3063 #define IDWriteTextFormat_SetTextAlignment(This,alignment) (This)->lpVtbl->SetTextAlignment(This,alignment)
   3064 #define IDWriteTextFormat_SetParagraphAlignment(This,alignment) (This)->lpVtbl->SetParagraphAlignment(This,alignment)
   3065 #define IDWriteTextFormat_SetWordWrapping(This,wrapping) (This)->lpVtbl->SetWordWrapping(This,wrapping)
   3066 #define IDWriteTextFormat_SetReadingDirection(This,direction) (This)->lpVtbl->SetReadingDirection(This,direction)
   3067 #define IDWriteTextFormat_SetFlowDirection(This,direction) (This)->lpVtbl->SetFlowDirection(This,direction)
   3068 #define IDWriteTextFormat_SetIncrementalTabStop(This,tabstop) (This)->lpVtbl->SetIncrementalTabStop(This,tabstop)
   3069 #define IDWriteTextFormat_SetTrimming(This,trimming,trimming_sign) (This)->lpVtbl->SetTrimming(This,trimming,trimming_sign)
   3070 #define IDWriteTextFormat_SetLineSpacing(This,spacing,line_spacing,baseline) (This)->lpVtbl->SetLineSpacing(This,spacing,line_spacing,baseline)
   3071 #define IDWriteTextFormat_GetTextAlignment(This) (This)->lpVtbl->GetTextAlignment(This)
   3072 #define IDWriteTextFormat_GetParagraphAlignment(This) (This)->lpVtbl->GetParagraphAlignment(This)
   3073 #define IDWriteTextFormat_GetWordWrapping(This) (This)->lpVtbl->GetWordWrapping(This)
   3074 #define IDWriteTextFormat_GetReadingDirection(This) (This)->lpVtbl->GetReadingDirection(This)
   3075 #define IDWriteTextFormat_GetFlowDirection(This) (This)->lpVtbl->GetFlowDirection(This)
   3076 #define IDWriteTextFormat_GetIncrementalTabStop(This) (This)->lpVtbl->GetIncrementalTabStop(This)
   3077 #define IDWriteTextFormat_GetTrimming(This,options,trimming_sign) (This)->lpVtbl->GetTrimming(This,options,trimming_sign)
   3078 #define IDWriteTextFormat_GetLineSpacing(This,method,spacing,baseline) (This)->lpVtbl->GetLineSpacing(This,method,spacing,baseline)
   3079 #define IDWriteTextFormat_GetFontCollection(This,collection) (This)->lpVtbl->GetFontCollection(This,collection)
   3080 #define IDWriteTextFormat_GetFontFamilyNameLength(This) (This)->lpVtbl->GetFontFamilyNameLength(This)
   3081 #define IDWriteTextFormat_GetFontFamilyName(This,name,size) (This)->lpVtbl->GetFontFamilyName(This,name,size)
   3082 #define IDWriteTextFormat_GetFontWeight(This) (This)->lpVtbl->GetFontWeight(This)
   3083 #define IDWriteTextFormat_GetFontStyle(This) (This)->lpVtbl->GetFontStyle(This)
   3084 #define IDWriteTextFormat_GetFontStretch(This) (This)->lpVtbl->GetFontStretch(This)
   3085 #define IDWriteTextFormat_GetFontSize(This) (This)->lpVtbl->GetFontSize(This)
   3086 #define IDWriteTextFormat_GetLocaleNameLength(This) (This)->lpVtbl->GetLocaleNameLength(This)
   3087 #define IDWriteTextFormat_GetLocaleName(This,name,size) (This)->lpVtbl->GetLocaleName(This,name,size)
   3088 #else
   3089 /*** IUnknown methods ***/
   3090 static inline HRESULT IDWriteTextFormat_QueryInterface(IDWriteTextFormat* This,REFIID riid,void **ppvObject) {
   3091     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3092 }
   3093 static inline ULONG IDWriteTextFormat_AddRef(IDWriteTextFormat* This) {
   3094     return This->lpVtbl->AddRef(This);
   3095 }
   3096 static inline ULONG IDWriteTextFormat_Release(IDWriteTextFormat* This) {
   3097     return This->lpVtbl->Release(This);
   3098 }
   3099 /*** IDWriteTextFormat methods ***/
   3100 static inline HRESULT IDWriteTextFormat_SetTextAlignment(IDWriteTextFormat* This,DWRITE_TEXT_ALIGNMENT alignment) {
   3101     return This->lpVtbl->SetTextAlignment(This,alignment);
   3102 }
   3103 static inline HRESULT IDWriteTextFormat_SetParagraphAlignment(IDWriteTextFormat* This,DWRITE_PARAGRAPH_ALIGNMENT alignment) {
   3104     return This->lpVtbl->SetParagraphAlignment(This,alignment);
   3105 }
   3106 static inline HRESULT IDWriteTextFormat_SetWordWrapping(IDWriteTextFormat* This,DWRITE_WORD_WRAPPING wrapping) {
   3107     return This->lpVtbl->SetWordWrapping(This,wrapping);
   3108 }
   3109 static inline HRESULT IDWriteTextFormat_SetReadingDirection(IDWriteTextFormat* This,DWRITE_READING_DIRECTION direction) {
   3110     return This->lpVtbl->SetReadingDirection(This,direction);
   3111 }
   3112 static inline HRESULT IDWriteTextFormat_SetFlowDirection(IDWriteTextFormat* This,DWRITE_FLOW_DIRECTION direction) {
   3113     return This->lpVtbl->SetFlowDirection(This,direction);
   3114 }
   3115 static inline HRESULT IDWriteTextFormat_SetIncrementalTabStop(IDWriteTextFormat* This,FLOAT tabstop) {
   3116     return This->lpVtbl->SetIncrementalTabStop(This,tabstop);
   3117 }
   3118 static inline HRESULT IDWriteTextFormat_SetTrimming(IDWriteTextFormat* This,const DWRITE_TRIMMING *trimming,IDWriteInlineObject *trimming_sign) {
   3119     return This->lpVtbl->SetTrimming(This,trimming,trimming_sign);
   3120 }
   3121 static inline HRESULT IDWriteTextFormat_SetLineSpacing(IDWriteTextFormat* This,DWRITE_LINE_SPACING_METHOD spacing,FLOAT line_spacing,FLOAT baseline) {
   3122     return This->lpVtbl->SetLineSpacing(This,spacing,line_spacing,baseline);
   3123 }
   3124 static inline DWRITE_TEXT_ALIGNMENT IDWriteTextFormat_GetTextAlignment(IDWriteTextFormat* This) {
   3125     return This->lpVtbl->GetTextAlignment(This);
   3126 }
   3127 static inline DWRITE_PARAGRAPH_ALIGNMENT IDWriteTextFormat_GetParagraphAlignment(IDWriteTextFormat* This) {
   3128     return This->lpVtbl->GetParagraphAlignment(This);
   3129 }
   3130 static inline DWRITE_WORD_WRAPPING IDWriteTextFormat_GetWordWrapping(IDWriteTextFormat* This) {
   3131     return This->lpVtbl->GetWordWrapping(This);
   3132 }
   3133 static inline DWRITE_READING_DIRECTION IDWriteTextFormat_GetReadingDirection(IDWriteTextFormat* This) {
   3134     return This->lpVtbl->GetReadingDirection(This);
   3135 }
   3136 static inline DWRITE_FLOW_DIRECTION IDWriteTextFormat_GetFlowDirection(IDWriteTextFormat* This) {
   3137     return This->lpVtbl->GetFlowDirection(This);
   3138 }
   3139 static inline FLOAT IDWriteTextFormat_GetIncrementalTabStop(IDWriteTextFormat* This) {
   3140     return This->lpVtbl->GetIncrementalTabStop(This);
   3141 }
   3142 static inline HRESULT IDWriteTextFormat_GetTrimming(IDWriteTextFormat* This,DWRITE_TRIMMING *options,IDWriteInlineObject **trimming_sign) {
   3143     return This->lpVtbl->GetTrimming(This,options,trimming_sign);
   3144 }
   3145 static inline HRESULT IDWriteTextFormat_GetLineSpacing(IDWriteTextFormat* This,DWRITE_LINE_SPACING_METHOD *method,FLOAT *spacing,FLOAT *baseline) {
   3146     return This->lpVtbl->GetLineSpacing(This,method,spacing,baseline);
   3147 }
   3148 static inline HRESULT IDWriteTextFormat_GetFontCollection(IDWriteTextFormat* This,IDWriteFontCollection **collection) {
   3149     return This->lpVtbl->GetFontCollection(This,collection);
   3150 }
   3151 static inline UINT32 IDWriteTextFormat_GetFontFamilyNameLength(IDWriteTextFormat* This) {
   3152     return This->lpVtbl->GetFontFamilyNameLength(This);
   3153 }
   3154 static inline HRESULT IDWriteTextFormat_GetFontFamilyName(IDWriteTextFormat* This,WCHAR *name,UINT32 size) {
   3155     return This->lpVtbl->GetFontFamilyName(This,name,size);
   3156 }
   3157 static inline DWRITE_FONT_WEIGHT IDWriteTextFormat_GetFontWeight(IDWriteTextFormat* This) {
   3158     return This->lpVtbl->GetFontWeight(This);
   3159 }
   3160 static inline DWRITE_FONT_STYLE IDWriteTextFormat_GetFontStyle(IDWriteTextFormat* This) {
   3161     return This->lpVtbl->GetFontStyle(This);
   3162 }
   3163 static inline DWRITE_FONT_STRETCH IDWriteTextFormat_GetFontStretch(IDWriteTextFormat* This) {
   3164     return This->lpVtbl->GetFontStretch(This);
   3165 }
   3166 static inline FLOAT IDWriteTextFormat_GetFontSize(IDWriteTextFormat* This) {
   3167     return This->lpVtbl->GetFontSize(This);
   3168 }
   3169 static inline UINT32 IDWriteTextFormat_GetLocaleNameLength(IDWriteTextFormat* This) {
   3170     return This->lpVtbl->GetLocaleNameLength(This);
   3171 }
   3172 static inline HRESULT IDWriteTextFormat_GetLocaleName(IDWriteTextFormat* This,WCHAR *name,UINT32 size) {
   3173     return This->lpVtbl->GetLocaleName(This,name,size);
   3174 }
   3175 #endif
   3176 #endif
   3177 
   3178 #endif
   3179 
   3180 
   3181 #endif  /* __IDWriteTextFormat_INTERFACE_DEFINED__ */
   3182 
   3183 /*****************************************************************************
   3184  * IDWriteTypography interface
   3185  */
   3186 #ifndef __IDWriteTypography_INTERFACE_DEFINED__
   3187 #define __IDWriteTypography_INTERFACE_DEFINED__
   3188 
   3189 DEFINE_GUID(IID_IDWriteTypography, 0x55f1112b, 0x1dc2, 0x4b3c, 0x95,0x41, 0xf4,0x68,0x94,0xed,0x85,0xb6);
   3190 #if defined(__cplusplus) && !defined(CINTERFACE)
   3191 MIDL_INTERFACE("55f1112b-1dc2-4b3c-9541-f46894ed85b6")
   3192 IDWriteTypography : public IUnknown
   3193 {
   3194     virtual HRESULT STDMETHODCALLTYPE AddFontFeature(
   3195         DWRITE_FONT_FEATURE feature) = 0;
   3196 
   3197     virtual UINT32 STDMETHODCALLTYPE GetFontFeatureCount(
   3198         ) = 0;
   3199 
   3200     virtual HRESULT STDMETHODCALLTYPE GetFontFeature(
   3201         UINT32 index,
   3202         DWRITE_FONT_FEATURE *feature) = 0;
   3203 
   3204 };
   3205 #ifdef __CRT_UUID_DECL
   3206 __CRT_UUID_DECL(IDWriteTypography, 0x55f1112b, 0x1dc2, 0x4b3c, 0x95,0x41, 0xf4,0x68,0x94,0xed,0x85,0xb6)
   3207 #endif
   3208 #else
   3209 typedef struct IDWriteTypographyVtbl {
   3210     BEGIN_INTERFACE
   3211 
   3212     /*** IUnknown methods ***/
   3213     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3214         IDWriteTypography *This,
   3215         REFIID riid,
   3216         void **ppvObject);
   3217 
   3218     ULONG (STDMETHODCALLTYPE *AddRef)(
   3219         IDWriteTypography *This);
   3220 
   3221     ULONG (STDMETHODCALLTYPE *Release)(
   3222         IDWriteTypography *This);
   3223 
   3224     /*** IDWriteTypography methods ***/
   3225     HRESULT (STDMETHODCALLTYPE *AddFontFeature)(
   3226         IDWriteTypography *This,
   3227         DWRITE_FONT_FEATURE feature);
   3228 
   3229     UINT32 (STDMETHODCALLTYPE *GetFontFeatureCount)(
   3230         IDWriteTypography *This);
   3231 
   3232     HRESULT (STDMETHODCALLTYPE *GetFontFeature)(
   3233         IDWriteTypography *This,
   3234         UINT32 index,
   3235         DWRITE_FONT_FEATURE *feature);
   3236 
   3237     END_INTERFACE
   3238 } IDWriteTypographyVtbl;
   3239 
   3240 interface IDWriteTypography {
   3241     CONST_VTBL IDWriteTypographyVtbl* lpVtbl;
   3242 };
   3243 
   3244 #ifdef COBJMACROS
   3245 #ifndef WIDL_C_INLINE_WRAPPERS
   3246 /*** IUnknown methods ***/
   3247 #define IDWriteTypography_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3248 #define IDWriteTypography_AddRef(This) (This)->lpVtbl->AddRef(This)
   3249 #define IDWriteTypography_Release(This) (This)->lpVtbl->Release(This)
   3250 /*** IDWriteTypography methods ***/
   3251 #define IDWriteTypography_AddFontFeature(This,feature) (This)->lpVtbl->AddFontFeature(This,feature)
   3252 #define IDWriteTypography_GetFontFeatureCount(This) (This)->lpVtbl->GetFontFeatureCount(This)
   3253 #define IDWriteTypography_GetFontFeature(This,index,feature) (This)->lpVtbl->GetFontFeature(This,index,feature)
   3254 #else
   3255 /*** IUnknown methods ***/
   3256 static inline HRESULT IDWriteTypography_QueryInterface(IDWriteTypography* This,REFIID riid,void **ppvObject) {
   3257     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3258 }
   3259 static inline ULONG IDWriteTypography_AddRef(IDWriteTypography* This) {
   3260     return This->lpVtbl->AddRef(This);
   3261 }
   3262 static inline ULONG IDWriteTypography_Release(IDWriteTypography* This) {
   3263     return This->lpVtbl->Release(This);
   3264 }
   3265 /*** IDWriteTypography methods ***/
   3266 static inline HRESULT IDWriteTypography_AddFontFeature(IDWriteTypography* This,DWRITE_FONT_FEATURE feature) {
   3267     return This->lpVtbl->AddFontFeature(This,feature);
   3268 }
   3269 static inline UINT32 IDWriteTypography_GetFontFeatureCount(IDWriteTypography* This) {
   3270     return This->lpVtbl->GetFontFeatureCount(This);
   3271 }
   3272 static inline HRESULT IDWriteTypography_GetFontFeature(IDWriteTypography* This,UINT32 index,DWRITE_FONT_FEATURE *feature) {
   3273     return This->lpVtbl->GetFontFeature(This,index,feature);
   3274 }
   3275 #endif
   3276 #endif
   3277 
   3278 #endif
   3279 
   3280 
   3281 #endif  /* __IDWriteTypography_INTERFACE_DEFINED__ */
   3282 
   3283 /*****************************************************************************
   3284  * IDWriteBitmapRenderTarget interface
   3285  */
   3286 #ifndef __IDWriteBitmapRenderTarget_INTERFACE_DEFINED__
   3287 #define __IDWriteBitmapRenderTarget_INTERFACE_DEFINED__
   3288 
   3289 DEFINE_GUID(IID_IDWriteBitmapRenderTarget, 0x5e5a32a3, 0x8dff, 0x4773, 0x9f,0xf6, 0x06,0x96,0xea,0xb7,0x72,0x67);
   3290 #if defined(__cplusplus) && !defined(CINTERFACE)
   3291 MIDL_INTERFACE("5e5a32a3-8dff-4773-9ff6-0696eab77267")
   3292 IDWriteBitmapRenderTarget : public IUnknown
   3293 {
   3294     virtual HRESULT STDMETHODCALLTYPE DrawGlyphRun(
   3295         FLOAT baselineOriginX,
   3296         FLOAT baselineOriginY,
   3297         DWRITE_MEASURING_MODE measuring_mode,
   3298         const DWRITE_GLYPH_RUN *glyph_run,
   3299         IDWriteRenderingParams *params,
   3300         COLORREF textColor,
   3301         RECT *blackbox_rect = 0) = 0;
   3302 
   3303     virtual HDC STDMETHODCALLTYPE GetMemoryDC(
   3304         ) = 0;
   3305 
   3306     virtual FLOAT STDMETHODCALLTYPE GetPixelsPerDip(
   3307         ) = 0;
   3308 
   3309     virtual HRESULT STDMETHODCALLTYPE SetPixelsPerDip(
   3310         FLOAT pixels_per_dip) = 0;
   3311 
   3312     virtual HRESULT STDMETHODCALLTYPE GetCurrentTransform(
   3313         DWRITE_MATRIX *transform) = 0;
   3314 
   3315     virtual HRESULT STDMETHODCALLTYPE SetCurrentTransform(
   3316         const DWRITE_MATRIX *transform) = 0;
   3317 
   3318     virtual HRESULT STDMETHODCALLTYPE GetSize(
   3319         SIZE *size) = 0;
   3320 
   3321     virtual HRESULT STDMETHODCALLTYPE Resize(
   3322         UINT32 width,
   3323         UINT32 height) = 0;
   3324 
   3325 };
   3326 #ifdef __CRT_UUID_DECL
   3327 __CRT_UUID_DECL(IDWriteBitmapRenderTarget, 0x5e5a32a3, 0x8dff, 0x4773, 0x9f,0xf6, 0x06,0x96,0xea,0xb7,0x72,0x67)
   3328 #endif
   3329 #else
   3330 typedef struct IDWriteBitmapRenderTargetVtbl {
   3331     BEGIN_INTERFACE
   3332 
   3333     /*** IUnknown methods ***/
   3334     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3335         IDWriteBitmapRenderTarget *This,
   3336         REFIID riid,
   3337         void **ppvObject);
   3338 
   3339     ULONG (STDMETHODCALLTYPE *AddRef)(
   3340         IDWriteBitmapRenderTarget *This);
   3341 
   3342     ULONG (STDMETHODCALLTYPE *Release)(
   3343         IDWriteBitmapRenderTarget *This);
   3344 
   3345     /*** IDWriteBitmapRenderTarget methods ***/
   3346     HRESULT (STDMETHODCALLTYPE *DrawGlyphRun)(
   3347         IDWriteBitmapRenderTarget *This,
   3348         FLOAT baselineOriginX,
   3349         FLOAT baselineOriginY,
   3350         DWRITE_MEASURING_MODE measuring_mode,
   3351         const DWRITE_GLYPH_RUN *glyph_run,
   3352         IDWriteRenderingParams *params,
   3353         COLORREF textColor,
   3354         RECT *blackbox_rect);
   3355 
   3356     HDC (STDMETHODCALLTYPE *GetMemoryDC)(
   3357         IDWriteBitmapRenderTarget *This);
   3358 
   3359     FLOAT (STDMETHODCALLTYPE *GetPixelsPerDip)(
   3360         IDWriteBitmapRenderTarget *This);
   3361 
   3362     HRESULT (STDMETHODCALLTYPE *SetPixelsPerDip)(
   3363         IDWriteBitmapRenderTarget *This,
   3364         FLOAT pixels_per_dip);
   3365 
   3366     HRESULT (STDMETHODCALLTYPE *GetCurrentTransform)(
   3367         IDWriteBitmapRenderTarget *This,
   3368         DWRITE_MATRIX *transform);
   3369 
   3370     HRESULT (STDMETHODCALLTYPE *SetCurrentTransform)(
   3371         IDWriteBitmapRenderTarget *This,
   3372         const DWRITE_MATRIX *transform);
   3373 
   3374     HRESULT (STDMETHODCALLTYPE *GetSize)(
   3375         IDWriteBitmapRenderTarget *This,
   3376         SIZE *size);
   3377 
   3378     HRESULT (STDMETHODCALLTYPE *Resize)(
   3379         IDWriteBitmapRenderTarget *This,
   3380         UINT32 width,
   3381         UINT32 height);
   3382 
   3383     END_INTERFACE
   3384 } IDWriteBitmapRenderTargetVtbl;
   3385 
   3386 interface IDWriteBitmapRenderTarget {
   3387     CONST_VTBL IDWriteBitmapRenderTargetVtbl* lpVtbl;
   3388 };
   3389 
   3390 #ifdef COBJMACROS
   3391 #ifndef WIDL_C_INLINE_WRAPPERS
   3392 /*** IUnknown methods ***/
   3393 #define IDWriteBitmapRenderTarget_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3394 #define IDWriteBitmapRenderTarget_AddRef(This) (This)->lpVtbl->AddRef(This)
   3395 #define IDWriteBitmapRenderTarget_Release(This) (This)->lpVtbl->Release(This)
   3396 /*** IDWriteBitmapRenderTarget methods ***/
   3397 #define IDWriteBitmapRenderTarget_DrawGlyphRun(This,baselineOriginX,baselineOriginY,measuring_mode,glyph_run,params,textColor,blackbox_rect) (This)->lpVtbl->DrawGlyphRun(This,baselineOriginX,baselineOriginY,measuring_mode,glyph_run,params,textColor,blackbox_rect)
   3398 #define IDWriteBitmapRenderTarget_GetMemoryDC(This) (This)->lpVtbl->GetMemoryDC(This)
   3399 #define IDWriteBitmapRenderTarget_GetPixelsPerDip(This) (This)->lpVtbl->GetPixelsPerDip(This)
   3400 #define IDWriteBitmapRenderTarget_SetPixelsPerDip(This,pixels_per_dip) (This)->lpVtbl->SetPixelsPerDip(This,pixels_per_dip)
   3401 #define IDWriteBitmapRenderTarget_GetCurrentTransform(This,transform) (This)->lpVtbl->GetCurrentTransform(This,transform)
   3402 #define IDWriteBitmapRenderTarget_SetCurrentTransform(This,transform) (This)->lpVtbl->SetCurrentTransform(This,transform)
   3403 #define IDWriteBitmapRenderTarget_GetSize(This,size) (This)->lpVtbl->GetSize(This,size)
   3404 #define IDWriteBitmapRenderTarget_Resize(This,width,height) (This)->lpVtbl->Resize(This,width,height)
   3405 #else
   3406 /*** IUnknown methods ***/
   3407 static inline HRESULT IDWriteBitmapRenderTarget_QueryInterface(IDWriteBitmapRenderTarget* This,REFIID riid,void **ppvObject) {
   3408     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3409 }
   3410 static inline ULONG IDWriteBitmapRenderTarget_AddRef(IDWriteBitmapRenderTarget* This) {
   3411     return This->lpVtbl->AddRef(This);
   3412 }
   3413 static inline ULONG IDWriteBitmapRenderTarget_Release(IDWriteBitmapRenderTarget* This) {
   3414     return This->lpVtbl->Release(This);
   3415 }
   3416 /*** IDWriteBitmapRenderTarget methods ***/
   3417 static inline HRESULT IDWriteBitmapRenderTarget_DrawGlyphRun(IDWriteBitmapRenderTarget* This,FLOAT baselineOriginX,FLOAT baselineOriginY,DWRITE_MEASURING_MODE measuring_mode,const DWRITE_GLYPH_RUN *glyph_run,IDWriteRenderingParams *params,COLORREF textColor,RECT *blackbox_rect) {
   3418     return This->lpVtbl->DrawGlyphRun(This,baselineOriginX,baselineOriginY,measuring_mode,glyph_run,params,textColor,blackbox_rect);
   3419 }
   3420 static inline HDC IDWriteBitmapRenderTarget_GetMemoryDC(IDWriteBitmapRenderTarget* This) {
   3421     return This->lpVtbl->GetMemoryDC(This);
   3422 }
   3423 static inline FLOAT IDWriteBitmapRenderTarget_GetPixelsPerDip(IDWriteBitmapRenderTarget* This) {
   3424     return This->lpVtbl->GetPixelsPerDip(This);
   3425 }
   3426 static inline HRESULT IDWriteBitmapRenderTarget_SetPixelsPerDip(IDWriteBitmapRenderTarget* This,FLOAT pixels_per_dip) {
   3427     return This->lpVtbl->SetPixelsPerDip(This,pixels_per_dip);
   3428 }
   3429 static inline HRESULT IDWriteBitmapRenderTarget_GetCurrentTransform(IDWriteBitmapRenderTarget* This,DWRITE_MATRIX *transform) {
   3430     return This->lpVtbl->GetCurrentTransform(This,transform);
   3431 }
   3432 static inline HRESULT IDWriteBitmapRenderTarget_SetCurrentTransform(IDWriteBitmapRenderTarget* This,const DWRITE_MATRIX *transform) {
   3433     return This->lpVtbl->SetCurrentTransform(This,transform);
   3434 }
   3435 static inline HRESULT IDWriteBitmapRenderTarget_GetSize(IDWriteBitmapRenderTarget* This,SIZE *size) {
   3436     return This->lpVtbl->GetSize(This,size);
   3437 }
   3438 static inline HRESULT IDWriteBitmapRenderTarget_Resize(IDWriteBitmapRenderTarget* This,UINT32 width,UINT32 height) {
   3439     return This->lpVtbl->Resize(This,width,height);
   3440 }
   3441 #endif
   3442 #endif
   3443 
   3444 #endif
   3445 
   3446 
   3447 #endif  /* __IDWriteBitmapRenderTarget_INTERFACE_DEFINED__ */
   3448 
   3449 #ifndef _WINGDI_
   3450 typedef struct tagLOGFONTW {
   3451     LONG lfHeight;
   3452     LONG lfWidth;
   3453     LONG lfEscapement;
   3454     LONG lfOrientation;
   3455     LONG lfWeight;
   3456     BYTE lfItalic;
   3457     BYTE lfUnderline;
   3458     BYTE lfStrikeOut;
   3459     BYTE lfCharSet;
   3460     BYTE lfOutPrecision;
   3461     BYTE lfClipPrecision;
   3462     BYTE lfQuality;
   3463     BYTE lfPitchAndFamily;
   3464     WCHAR lfFaceName[32];
   3465 } LOGFONTW;
   3466 typedef struct tagLOGFONTW *PLOGFONTW;
   3467 typedef struct tagLOGFONTW *LPLOGFONTW;
   3468 #endif /* _WINGDI_ */
   3469 /*****************************************************************************
   3470  * IDWriteGdiInterop interface
   3471  */
   3472 #ifndef __IDWriteGdiInterop_INTERFACE_DEFINED__
   3473 #define __IDWriteGdiInterop_INTERFACE_DEFINED__
   3474 
   3475 DEFINE_GUID(IID_IDWriteGdiInterop, 0x1edd9491, 0x9853, 0x4299, 0x89,0x8f, 0x64,0x32,0x98,0x3b,0x6f,0x3a);
   3476 #if defined(__cplusplus) && !defined(CINTERFACE)
   3477 MIDL_INTERFACE("1edd9491-9853-4299-898f-6432983b6f3a")
   3478 IDWriteGdiInterop : public IUnknown
   3479 {
   3480     virtual HRESULT STDMETHODCALLTYPE CreateFontFromLOGFONT(
   3481         const LOGFONTW *logfont,
   3482         IDWriteFont **font) = 0;
   3483 
   3484     virtual HRESULT STDMETHODCALLTYPE ConvertFontToLOGFONT(
   3485         IDWriteFont *font,
   3486         LOGFONTW *logfont,
   3487         WINBOOL *is_systemfont) = 0;
   3488 
   3489     virtual HRESULT STDMETHODCALLTYPE ConvertFontFaceToLOGFONT(
   3490         IDWriteFontFace *font,
   3491         LOGFONTW *logfont) = 0;
   3492 
   3493     virtual HRESULT STDMETHODCALLTYPE CreateFontFaceFromHdc(
   3494         HDC hdc,
   3495         IDWriteFontFace **fontface) = 0;
   3496 
   3497     virtual HRESULT STDMETHODCALLTYPE CreateBitmapRenderTarget(
   3498         HDC hdc,
   3499         UINT32 width,
   3500         UINT32 height,
   3501         IDWriteBitmapRenderTarget **target) = 0;
   3502 
   3503 };
   3504 #ifdef __CRT_UUID_DECL
   3505 __CRT_UUID_DECL(IDWriteGdiInterop, 0x1edd9491, 0x9853, 0x4299, 0x89,0x8f, 0x64,0x32,0x98,0x3b,0x6f,0x3a)
   3506 #endif
   3507 #else
   3508 typedef struct IDWriteGdiInteropVtbl {
   3509     BEGIN_INTERFACE
   3510 
   3511     /*** IUnknown methods ***/
   3512     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3513         IDWriteGdiInterop *This,
   3514         REFIID riid,
   3515         void **ppvObject);
   3516 
   3517     ULONG (STDMETHODCALLTYPE *AddRef)(
   3518         IDWriteGdiInterop *This);
   3519 
   3520     ULONG (STDMETHODCALLTYPE *Release)(
   3521         IDWriteGdiInterop *This);
   3522 
   3523     /*** IDWriteGdiInterop methods ***/
   3524     HRESULT (STDMETHODCALLTYPE *CreateFontFromLOGFONT)(
   3525         IDWriteGdiInterop *This,
   3526         const LOGFONTW *logfont,
   3527         IDWriteFont **font);
   3528 
   3529     HRESULT (STDMETHODCALLTYPE *ConvertFontToLOGFONT)(
   3530         IDWriteGdiInterop *This,
   3531         IDWriteFont *font,
   3532         LOGFONTW *logfont,
   3533         WINBOOL *is_systemfont);
   3534 
   3535     HRESULT (STDMETHODCALLTYPE *ConvertFontFaceToLOGFONT)(
   3536         IDWriteGdiInterop *This,
   3537         IDWriteFontFace *font,
   3538         LOGFONTW *logfont);
   3539 
   3540     HRESULT (STDMETHODCALLTYPE *CreateFontFaceFromHdc)(
   3541         IDWriteGdiInterop *This,
   3542         HDC hdc,
   3543         IDWriteFontFace **fontface);
   3544 
   3545     HRESULT (STDMETHODCALLTYPE *CreateBitmapRenderTarget)(
   3546         IDWriteGdiInterop *This,
   3547         HDC hdc,
   3548         UINT32 width,
   3549         UINT32 height,
   3550         IDWriteBitmapRenderTarget **target);
   3551 
   3552     END_INTERFACE
   3553 } IDWriteGdiInteropVtbl;
   3554 
   3555 interface IDWriteGdiInterop {
   3556     CONST_VTBL IDWriteGdiInteropVtbl* lpVtbl;
   3557 };
   3558 
   3559 #ifdef COBJMACROS
   3560 #ifndef WIDL_C_INLINE_WRAPPERS
   3561 /*** IUnknown methods ***/
   3562 #define IDWriteGdiInterop_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3563 #define IDWriteGdiInterop_AddRef(This) (This)->lpVtbl->AddRef(This)
   3564 #define IDWriteGdiInterop_Release(This) (This)->lpVtbl->Release(This)
   3565 /*** IDWriteGdiInterop methods ***/
   3566 #define IDWriteGdiInterop_CreateFontFromLOGFONT(This,logfont,font) (This)->lpVtbl->CreateFontFromLOGFONT(This,logfont,font)
   3567 #define IDWriteGdiInterop_ConvertFontToLOGFONT(This,font,logfont,is_systemfont) (This)->lpVtbl->ConvertFontToLOGFONT(This,font,logfont,is_systemfont)
   3568 #define IDWriteGdiInterop_ConvertFontFaceToLOGFONT(This,font,logfont) (This)->lpVtbl->ConvertFontFaceToLOGFONT(This,font,logfont)
   3569 #define IDWriteGdiInterop_CreateFontFaceFromHdc(This,hdc,fontface) (This)->lpVtbl->CreateFontFaceFromHdc(This,hdc,fontface)
   3570 #define IDWriteGdiInterop_CreateBitmapRenderTarget(This,hdc,width,height,target) (This)->lpVtbl->CreateBitmapRenderTarget(This,hdc,width,height,target)
   3571 #else
   3572 /*** IUnknown methods ***/
   3573 static inline HRESULT IDWriteGdiInterop_QueryInterface(IDWriteGdiInterop* This,REFIID riid,void **ppvObject) {
   3574     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3575 }
   3576 static inline ULONG IDWriteGdiInterop_AddRef(IDWriteGdiInterop* This) {
   3577     return This->lpVtbl->AddRef(This);
   3578 }
   3579 static inline ULONG IDWriteGdiInterop_Release(IDWriteGdiInterop* This) {
   3580     return This->lpVtbl->Release(This);
   3581 }
   3582 /*** IDWriteGdiInterop methods ***/
   3583 static inline HRESULT IDWriteGdiInterop_CreateFontFromLOGFONT(IDWriteGdiInterop* This,const LOGFONTW *logfont,IDWriteFont **font) {
   3584     return This->lpVtbl->CreateFontFromLOGFONT(This,logfont,font);
   3585 }
   3586 static inline HRESULT IDWriteGdiInterop_ConvertFontToLOGFONT(IDWriteGdiInterop* This,IDWriteFont *font,LOGFONTW *logfont,WINBOOL *is_systemfont) {
   3587     return This->lpVtbl->ConvertFontToLOGFONT(This,font,logfont,is_systemfont);
   3588 }
   3589 static inline HRESULT IDWriteGdiInterop_ConvertFontFaceToLOGFONT(IDWriteGdiInterop* This,IDWriteFontFace *font,LOGFONTW *logfont) {
   3590     return This->lpVtbl->ConvertFontFaceToLOGFONT(This,font,logfont);
   3591 }
   3592 static inline HRESULT IDWriteGdiInterop_CreateFontFaceFromHdc(IDWriteGdiInterop* This,HDC hdc,IDWriteFontFace **fontface) {
   3593     return This->lpVtbl->CreateFontFaceFromHdc(This,hdc,fontface);
   3594 }
   3595 static inline HRESULT IDWriteGdiInterop_CreateBitmapRenderTarget(IDWriteGdiInterop* This,HDC hdc,UINT32 width,UINT32 height,IDWriteBitmapRenderTarget **target) {
   3596     return This->lpVtbl->CreateBitmapRenderTarget(This,hdc,width,height,target);
   3597 }
   3598 #endif
   3599 #endif
   3600 
   3601 #endif
   3602 
   3603 
   3604 #endif  /* __IDWriteGdiInterop_INTERFACE_DEFINED__ */
   3605 
   3606 /*****************************************************************************
   3607  * IDWriteTextLayout interface
   3608  */
   3609 #ifndef __IDWriteTextLayout_INTERFACE_DEFINED__
   3610 #define __IDWriteTextLayout_INTERFACE_DEFINED__
   3611 
   3612 DEFINE_GUID(IID_IDWriteTextLayout, 0x53737037, 0x6d14, 0x410b, 0x9b,0xfe, 0x0b,0x18,0x2b,0xb7,0x09,0x61);
   3613 #if defined(__cplusplus) && !defined(CINTERFACE)
   3614 MIDL_INTERFACE("53737037-6d14-410b-9bfe-0b182bb70961")
   3615 IDWriteTextLayout : public IDWriteTextFormat
   3616 {
   3617     virtual HRESULT STDMETHODCALLTYPE SetMaxWidth(
   3618         FLOAT maxWidth) = 0;
   3619 
   3620     virtual HRESULT STDMETHODCALLTYPE SetMaxHeight(
   3621         FLOAT maxHeight) = 0;
   3622 
   3623     virtual HRESULT STDMETHODCALLTYPE SetFontCollection(
   3624         IDWriteFontCollection *collection,
   3625         DWRITE_TEXT_RANGE range) = 0;
   3626 
   3627     virtual HRESULT STDMETHODCALLTYPE SetFontFamilyName(
   3628         const WCHAR *name,
   3629         DWRITE_TEXT_RANGE range) = 0;
   3630 
   3631     virtual HRESULT STDMETHODCALLTYPE SetFontWeight(
   3632         DWRITE_FONT_WEIGHT weight,
   3633         DWRITE_TEXT_RANGE range) = 0;
   3634 
   3635     virtual HRESULT STDMETHODCALLTYPE SetFontStyle(
   3636         DWRITE_FONT_STYLE style,
   3637         DWRITE_TEXT_RANGE range) = 0;
   3638 
   3639     virtual HRESULT STDMETHODCALLTYPE SetFontStretch(
   3640         DWRITE_FONT_STRETCH stretch,
   3641         DWRITE_TEXT_RANGE range) = 0;
   3642 
   3643     virtual HRESULT STDMETHODCALLTYPE SetFontSize(
   3644         FLOAT size,
   3645         DWRITE_TEXT_RANGE range) = 0;
   3646 
   3647     virtual HRESULT STDMETHODCALLTYPE SetUnderline(
   3648         WINBOOL underline,
   3649         DWRITE_TEXT_RANGE range) = 0;
   3650 
   3651     virtual HRESULT STDMETHODCALLTYPE SetStrikethrough(
   3652         WINBOOL strikethrough,
   3653         DWRITE_TEXT_RANGE range) = 0;
   3654 
   3655     virtual HRESULT STDMETHODCALLTYPE SetDrawingEffect(
   3656         IUnknown *effect,
   3657         DWRITE_TEXT_RANGE range) = 0;
   3658 
   3659     virtual HRESULT STDMETHODCALLTYPE SetInlineObject(
   3660         IDWriteInlineObject *object,
   3661         DWRITE_TEXT_RANGE range) = 0;
   3662 
   3663     virtual HRESULT STDMETHODCALLTYPE SetTypography(
   3664         IDWriteTypography *typography,
   3665         DWRITE_TEXT_RANGE range) = 0;
   3666 
   3667     virtual HRESULT STDMETHODCALLTYPE SetLocaleName(
   3668         const WCHAR *locale,
   3669         DWRITE_TEXT_RANGE range) = 0;
   3670 
   3671     virtual FLOAT STDMETHODCALLTYPE GetMaxWidth(
   3672         ) = 0;
   3673 
   3674     virtual FLOAT STDMETHODCALLTYPE GetMaxHeight(
   3675         ) = 0;
   3676 
   3677     virtual HRESULT STDMETHODCALLTYPE GetFontCollection(
   3678         UINT32 pos,
   3679         IDWriteFontCollection **collection,
   3680         DWRITE_TEXT_RANGE *range = 0) = 0;
   3681 
   3682     virtual HRESULT STDMETHODCALLTYPE GetFontFamilyNameLength(
   3683         UINT32 pos,
   3684         UINT32 *len,
   3685         DWRITE_TEXT_RANGE *range = 0) = 0;
   3686 
   3687     virtual HRESULT STDMETHODCALLTYPE GetFontFamilyName(
   3688         UINT32 position,
   3689         WCHAR *name,
   3690         UINT32 name_size,
   3691         DWRITE_TEXT_RANGE *range = 0) = 0;
   3692 
   3693     virtual HRESULT STDMETHODCALLTYPE GetFontWeight(
   3694         UINT32 position,
   3695         DWRITE_FONT_WEIGHT *weight,
   3696         DWRITE_TEXT_RANGE *range = 0) = 0;
   3697 
   3698     virtual HRESULT STDMETHODCALLTYPE GetFontStyle(
   3699         UINT32 currentPosition,
   3700         DWRITE_FONT_STYLE *style,
   3701         DWRITE_TEXT_RANGE *range = 0) = 0;
   3702 
   3703     virtual HRESULT STDMETHODCALLTYPE GetFontStretch(
   3704         UINT32 position,
   3705         DWRITE_FONT_STRETCH *stretch,
   3706         DWRITE_TEXT_RANGE *range = 0) = 0;
   3707 
   3708     virtual HRESULT STDMETHODCALLTYPE GetFontSize(
   3709         UINT32 position,
   3710         FLOAT *size,
   3711         DWRITE_TEXT_RANGE *range = 0) = 0;
   3712 
   3713     virtual HRESULT STDMETHODCALLTYPE GetUnderline(
   3714         UINT32 position,
   3715         WINBOOL *has_underline,
   3716         DWRITE_TEXT_RANGE *range = 0) = 0;
   3717 
   3718     virtual HRESULT STDMETHODCALLTYPE GetStrikethrough(
   3719         UINT32 position,
   3720         WINBOOL *has_strikethrough,
   3721         DWRITE_TEXT_RANGE *range = 0) = 0;
   3722 
   3723     virtual HRESULT STDMETHODCALLTYPE GetDrawingEffect(
   3724         UINT32 position,
   3725         IUnknown **effect,
   3726         DWRITE_TEXT_RANGE *range = 0) = 0;
   3727 
   3728     virtual HRESULT STDMETHODCALLTYPE GetInlineObject(
   3729         UINT32 position,
   3730         IDWriteInlineObject **object,
   3731         DWRITE_TEXT_RANGE *range = 0) = 0;
   3732 
   3733     virtual HRESULT STDMETHODCALLTYPE GetTypography(
   3734         UINT32 position,
   3735         IDWriteTypography **typography,
   3736         DWRITE_TEXT_RANGE *range = 0) = 0;
   3737 
   3738     virtual HRESULT STDMETHODCALLTYPE GetLocaleNameLength(
   3739         UINT32 position,
   3740         UINT32 *length,
   3741         DWRITE_TEXT_RANGE *range = 0) = 0;
   3742 
   3743     virtual HRESULT STDMETHODCALLTYPE GetLocaleName(
   3744         UINT32 position,
   3745         WCHAR *name,
   3746         UINT32 name_size,
   3747         DWRITE_TEXT_RANGE *range = 0) = 0;
   3748 
   3749     virtual HRESULT STDMETHODCALLTYPE Draw(
   3750         void *context,
   3751         IDWriteTextRenderer *renderer,
   3752         FLOAT originX,
   3753         FLOAT originY) = 0;
   3754 
   3755     virtual HRESULT STDMETHODCALLTYPE GetLineMetrics(
   3756         DWRITE_LINE_METRICS *metrics,
   3757         UINT32 max_count,
   3758         UINT32 *actual_count) = 0;
   3759 
   3760     virtual HRESULT STDMETHODCALLTYPE GetMetrics(
   3761         DWRITE_TEXT_METRICS *metrics) = 0;
   3762 
   3763     virtual HRESULT STDMETHODCALLTYPE GetOverhangMetrics(
   3764         DWRITE_OVERHANG_METRICS *overhangs) = 0;
   3765 
   3766     virtual HRESULT STDMETHODCALLTYPE GetClusterMetrics(
   3767         DWRITE_CLUSTER_METRICS *metrics,
   3768         UINT32 max_count,
   3769         UINT32 *act_count) = 0;
   3770 
   3771     virtual HRESULT STDMETHODCALLTYPE DetermineMinWidth(
   3772         FLOAT *min_width) = 0;
   3773 
   3774     virtual HRESULT STDMETHODCALLTYPE HitTestPoint(
   3775         FLOAT pointX,
   3776         FLOAT pointY,
   3777         WINBOOL *is_trailinghit,
   3778         WINBOOL *is_inside,
   3779         DWRITE_HIT_TEST_METRICS *metrics) = 0;
   3780 
   3781     virtual HRESULT STDMETHODCALLTYPE HitTestTextPosition(
   3782         UINT32 textPosition,
   3783         WINBOOL is_trailinghit,
   3784         FLOAT *pointX,
   3785         FLOAT *pointY,
   3786         DWRITE_HIT_TEST_METRICS *metrics) = 0;
   3787 
   3788     virtual HRESULT STDMETHODCALLTYPE HitTestTextRange(
   3789         UINT32 textPosition,
   3790         UINT32 textLength,
   3791         FLOAT originX,
   3792         FLOAT originY,
   3793         DWRITE_HIT_TEST_METRICS *metrics,
   3794         UINT32 max_metricscount,
   3795         UINT32 *actual_metricscount) = 0;
   3796 
   3797 };
   3798 #ifdef __CRT_UUID_DECL
   3799 __CRT_UUID_DECL(IDWriteTextLayout, 0x53737037, 0x6d14, 0x410b, 0x9b,0xfe, 0x0b,0x18,0x2b,0xb7,0x09,0x61)
   3800 #endif
   3801 #else
   3802 typedef struct IDWriteTextLayoutVtbl {
   3803     BEGIN_INTERFACE
   3804 
   3805     /*** IUnknown methods ***/
   3806     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3807         IDWriteTextLayout *This,
   3808         REFIID riid,
   3809         void **ppvObject);
   3810 
   3811     ULONG (STDMETHODCALLTYPE *AddRef)(
   3812         IDWriteTextLayout *This);
   3813 
   3814     ULONG (STDMETHODCALLTYPE *Release)(
   3815         IDWriteTextLayout *This);
   3816 
   3817     /*** IDWriteTextFormat methods ***/
   3818     HRESULT (STDMETHODCALLTYPE *SetTextAlignment)(
   3819         IDWriteTextLayout *This,
   3820         DWRITE_TEXT_ALIGNMENT alignment);
   3821 
   3822     HRESULT (STDMETHODCALLTYPE *SetParagraphAlignment)(
   3823         IDWriteTextLayout *This,
   3824         DWRITE_PARAGRAPH_ALIGNMENT alignment);
   3825 
   3826     HRESULT (STDMETHODCALLTYPE *SetWordWrapping)(
   3827         IDWriteTextLayout *This,
   3828         DWRITE_WORD_WRAPPING wrapping);
   3829 
   3830     HRESULT (STDMETHODCALLTYPE *SetReadingDirection)(
   3831         IDWriteTextLayout *This,
   3832         DWRITE_READING_DIRECTION direction);
   3833 
   3834     HRESULT (STDMETHODCALLTYPE *SetFlowDirection)(
   3835         IDWriteTextLayout *This,
   3836         DWRITE_FLOW_DIRECTION direction);
   3837 
   3838     HRESULT (STDMETHODCALLTYPE *SetIncrementalTabStop)(
   3839         IDWriteTextLayout *This,
   3840         FLOAT tabstop);
   3841 
   3842     HRESULT (STDMETHODCALLTYPE *SetTrimming)(
   3843         IDWriteTextLayout *This,
   3844         const DWRITE_TRIMMING *trimming,
   3845         IDWriteInlineObject *trimming_sign);
   3846 
   3847     HRESULT (STDMETHODCALLTYPE *SetLineSpacing)(
   3848         IDWriteTextLayout *This,
   3849         DWRITE_LINE_SPACING_METHOD spacing,
   3850         FLOAT line_spacing,
   3851         FLOAT baseline);
   3852 
   3853     DWRITE_TEXT_ALIGNMENT (STDMETHODCALLTYPE *GetTextAlignment)(
   3854         IDWriteTextLayout *This);
   3855 
   3856     DWRITE_PARAGRAPH_ALIGNMENT (STDMETHODCALLTYPE *GetParagraphAlignment)(
   3857         IDWriteTextLayout *This);
   3858 
   3859     DWRITE_WORD_WRAPPING (STDMETHODCALLTYPE *GetWordWrapping)(
   3860         IDWriteTextLayout *This);
   3861 
   3862     DWRITE_READING_DIRECTION (STDMETHODCALLTYPE *GetReadingDirection)(
   3863         IDWriteTextLayout *This);
   3864 
   3865     DWRITE_FLOW_DIRECTION (STDMETHODCALLTYPE *GetFlowDirection)(
   3866         IDWriteTextLayout *This);
   3867 
   3868     FLOAT (STDMETHODCALLTYPE *GetIncrementalTabStop)(
   3869         IDWriteTextLayout *This);
   3870 
   3871     HRESULT (STDMETHODCALLTYPE *GetTrimming)(
   3872         IDWriteTextLayout *This,
   3873         DWRITE_TRIMMING *options,
   3874         IDWriteInlineObject **trimming_sign);
   3875 
   3876     HRESULT (STDMETHODCALLTYPE *GetLineSpacing)(
   3877         IDWriteTextLayout *This,
   3878         DWRITE_LINE_SPACING_METHOD *method,
   3879         FLOAT *spacing,
   3880         FLOAT *baseline);
   3881 
   3882     HRESULT (STDMETHODCALLTYPE *GetFontCollection)(
   3883         IDWriteTextLayout *This,
   3884         IDWriteFontCollection **collection);
   3885 
   3886     UINT32 (STDMETHODCALLTYPE *GetFontFamilyNameLength)(
   3887         IDWriteTextLayout *This);
   3888 
   3889     HRESULT (STDMETHODCALLTYPE *GetFontFamilyName)(
   3890         IDWriteTextLayout *This,
   3891         WCHAR *name,
   3892         UINT32 size);
   3893 
   3894     DWRITE_FONT_WEIGHT (STDMETHODCALLTYPE *GetFontWeight)(
   3895         IDWriteTextLayout *This);
   3896 
   3897     DWRITE_FONT_STYLE (STDMETHODCALLTYPE *GetFontStyle)(
   3898         IDWriteTextLayout *This);
   3899 
   3900     DWRITE_FONT_STRETCH (STDMETHODCALLTYPE *GetFontStretch)(
   3901         IDWriteTextLayout *This);
   3902 
   3903     FLOAT (STDMETHODCALLTYPE *GetFontSize)(
   3904         IDWriteTextLayout *This);
   3905 
   3906     UINT32 (STDMETHODCALLTYPE *GetLocaleNameLength)(
   3907         IDWriteTextLayout *This);
   3908 
   3909     HRESULT (STDMETHODCALLTYPE *GetLocaleName)(
   3910         IDWriteTextLayout *This,
   3911         WCHAR *name,
   3912         UINT32 size);
   3913 
   3914     /*** IDWriteTextLayout methods ***/
   3915     HRESULT (STDMETHODCALLTYPE *SetMaxWidth)(
   3916         IDWriteTextLayout *This,
   3917         FLOAT maxWidth);
   3918 
   3919     HRESULT (STDMETHODCALLTYPE *SetMaxHeight)(
   3920         IDWriteTextLayout *This,
   3921         FLOAT maxHeight);
   3922 
   3923     HRESULT (STDMETHODCALLTYPE *SetFontCollection)(
   3924         IDWriteTextLayout *This,
   3925         IDWriteFontCollection *collection,
   3926         DWRITE_TEXT_RANGE range);
   3927 
   3928     HRESULT (STDMETHODCALLTYPE *SetFontFamilyName)(
   3929         IDWriteTextLayout *This,
   3930         const WCHAR *name,
   3931         DWRITE_TEXT_RANGE range);
   3932 
   3933     HRESULT (STDMETHODCALLTYPE *SetFontWeight)(
   3934         IDWriteTextLayout *This,
   3935         DWRITE_FONT_WEIGHT weight,
   3936         DWRITE_TEXT_RANGE range);
   3937 
   3938     HRESULT (STDMETHODCALLTYPE *SetFontStyle)(
   3939         IDWriteTextLayout *This,
   3940         DWRITE_FONT_STYLE style,
   3941         DWRITE_TEXT_RANGE range);
   3942 
   3943     HRESULT (STDMETHODCALLTYPE *SetFontStretch)(
   3944         IDWriteTextLayout *This,
   3945         DWRITE_FONT_STRETCH stretch,
   3946         DWRITE_TEXT_RANGE range);
   3947 
   3948     HRESULT (STDMETHODCALLTYPE *SetFontSize)(
   3949         IDWriteTextLayout *This,
   3950         FLOAT size,
   3951         DWRITE_TEXT_RANGE range);
   3952 
   3953     HRESULT (STDMETHODCALLTYPE *SetUnderline)(
   3954         IDWriteTextLayout *This,
   3955         WINBOOL underline,
   3956         DWRITE_TEXT_RANGE range);
   3957 
   3958     HRESULT (STDMETHODCALLTYPE *SetStrikethrough)(
   3959         IDWriteTextLayout *This,
   3960         WINBOOL strikethrough,
   3961         DWRITE_TEXT_RANGE range);
   3962 
   3963     HRESULT (STDMETHODCALLTYPE *SetDrawingEffect)(
   3964         IDWriteTextLayout *This,
   3965         IUnknown *effect,
   3966         DWRITE_TEXT_RANGE range);
   3967 
   3968     HRESULT (STDMETHODCALLTYPE *SetInlineObject)(
   3969         IDWriteTextLayout *This,
   3970         IDWriteInlineObject *object,
   3971         DWRITE_TEXT_RANGE range);
   3972 
   3973     HRESULT (STDMETHODCALLTYPE *SetTypography)(
   3974         IDWriteTextLayout *This,
   3975         IDWriteTypography *typography,
   3976         DWRITE_TEXT_RANGE range);
   3977 
   3978     HRESULT (STDMETHODCALLTYPE *SetLocaleName)(
   3979         IDWriteTextLayout *This,
   3980         const WCHAR *locale,
   3981         DWRITE_TEXT_RANGE range);
   3982 
   3983     FLOAT (STDMETHODCALLTYPE *GetMaxWidth)(
   3984         IDWriteTextLayout *This);
   3985 
   3986     FLOAT (STDMETHODCALLTYPE *GetMaxHeight)(
   3987         IDWriteTextLayout *This);
   3988 
   3989     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontCollection)(
   3990         IDWriteTextLayout *This,
   3991         UINT32 pos,
   3992         IDWriteFontCollection **collection,
   3993         DWRITE_TEXT_RANGE *range);
   3994 
   3995     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontFamilyNameLength)(
   3996         IDWriteTextLayout *This,
   3997         UINT32 pos,
   3998         UINT32 *len,
   3999         DWRITE_TEXT_RANGE *range);
   4000 
   4001     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontFamilyName)(
   4002         IDWriteTextLayout *This,
   4003         UINT32 position,
   4004         WCHAR *name,
   4005         UINT32 name_size,
   4006         DWRITE_TEXT_RANGE *range);
   4007 
   4008     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontWeight)(
   4009         IDWriteTextLayout *This,
   4010         UINT32 position,
   4011         DWRITE_FONT_WEIGHT *weight,
   4012         DWRITE_TEXT_RANGE *range);
   4013 
   4014     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontStyle)(
   4015         IDWriteTextLayout *This,
   4016         UINT32 currentPosition,
   4017         DWRITE_FONT_STYLE *style,
   4018         DWRITE_TEXT_RANGE *range);
   4019 
   4020     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontStretch)(
   4021         IDWriteTextLayout *This,
   4022         UINT32 position,
   4023         DWRITE_FONT_STRETCH *stretch,
   4024         DWRITE_TEXT_RANGE *range);
   4025 
   4026     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontSize)(
   4027         IDWriteTextLayout *This,
   4028         UINT32 position,
   4029         FLOAT *size,
   4030         DWRITE_TEXT_RANGE *range);
   4031 
   4032     HRESULT (STDMETHODCALLTYPE *GetUnderline)(
   4033         IDWriteTextLayout *This,
   4034         UINT32 position,
   4035         WINBOOL *has_underline,
   4036         DWRITE_TEXT_RANGE *range);
   4037 
   4038     HRESULT (STDMETHODCALLTYPE *GetStrikethrough)(
   4039         IDWriteTextLayout *This,
   4040         UINT32 position,
   4041         WINBOOL *has_strikethrough,
   4042         DWRITE_TEXT_RANGE *range);
   4043 
   4044     HRESULT (STDMETHODCALLTYPE *GetDrawingEffect)(
   4045         IDWriteTextLayout *This,
   4046         UINT32 position,
   4047         IUnknown **effect,
   4048         DWRITE_TEXT_RANGE *range);
   4049 
   4050     HRESULT (STDMETHODCALLTYPE *GetInlineObject)(
   4051         IDWriteTextLayout *This,
   4052         UINT32 position,
   4053         IDWriteInlineObject **object,
   4054         DWRITE_TEXT_RANGE *range);
   4055 
   4056     HRESULT (STDMETHODCALLTYPE *GetTypography)(
   4057         IDWriteTextLayout *This,
   4058         UINT32 position,
   4059         IDWriteTypography **typography,
   4060         DWRITE_TEXT_RANGE *range);
   4061 
   4062     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetLocaleNameLength)(
   4063         IDWriteTextLayout *This,
   4064         UINT32 position,
   4065         UINT32 *length,
   4066         DWRITE_TEXT_RANGE *range);
   4067 
   4068     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetLocaleName)(
   4069         IDWriteTextLayout *This,
   4070         UINT32 position,
   4071         WCHAR *name,
   4072         UINT32 name_size,
   4073         DWRITE_TEXT_RANGE *range);
   4074 
   4075     HRESULT (STDMETHODCALLTYPE *Draw)(
   4076         IDWriteTextLayout *This,
   4077         void *context,
   4078         IDWriteTextRenderer *renderer,
   4079         FLOAT originX,
   4080         FLOAT originY);
   4081 
   4082     HRESULT (STDMETHODCALLTYPE *GetLineMetrics)(
   4083         IDWriteTextLayout *This,
   4084         DWRITE_LINE_METRICS *metrics,
   4085         UINT32 max_count,
   4086         UINT32 *actual_count);
   4087 
   4088     HRESULT (STDMETHODCALLTYPE *GetMetrics)(
   4089         IDWriteTextLayout *This,
   4090         DWRITE_TEXT_METRICS *metrics);
   4091 
   4092     HRESULT (STDMETHODCALLTYPE *GetOverhangMetrics)(
   4093         IDWriteTextLayout *This,
   4094         DWRITE_OVERHANG_METRICS *overhangs);
   4095 
   4096     HRESULT (STDMETHODCALLTYPE *GetClusterMetrics)(
   4097         IDWriteTextLayout *This,
   4098         DWRITE_CLUSTER_METRICS *metrics,
   4099         UINT32 max_count,
   4100         UINT32 *act_count);
   4101 
   4102     HRESULT (STDMETHODCALLTYPE *DetermineMinWidth)(
   4103         IDWriteTextLayout *This,
   4104         FLOAT *min_width);
   4105 
   4106     HRESULT (STDMETHODCALLTYPE *HitTestPoint)(
   4107         IDWriteTextLayout *This,
   4108         FLOAT pointX,
   4109         FLOAT pointY,
   4110         WINBOOL *is_trailinghit,
   4111         WINBOOL *is_inside,
   4112         DWRITE_HIT_TEST_METRICS *metrics);
   4113 
   4114     HRESULT (STDMETHODCALLTYPE *HitTestTextPosition)(
   4115         IDWriteTextLayout *This,
   4116         UINT32 textPosition,
   4117         WINBOOL is_trailinghit,
   4118         FLOAT *pointX,
   4119         FLOAT *pointY,
   4120         DWRITE_HIT_TEST_METRICS *metrics);
   4121 
   4122     HRESULT (STDMETHODCALLTYPE *HitTestTextRange)(
   4123         IDWriteTextLayout *This,
   4124         UINT32 textPosition,
   4125         UINT32 textLength,
   4126         FLOAT originX,
   4127         FLOAT originY,
   4128         DWRITE_HIT_TEST_METRICS *metrics,
   4129         UINT32 max_metricscount,
   4130         UINT32 *actual_metricscount);
   4131 
   4132     END_INTERFACE
   4133 } IDWriteTextLayoutVtbl;
   4134 
   4135 interface IDWriteTextLayout {
   4136     CONST_VTBL IDWriteTextLayoutVtbl* lpVtbl;
   4137 };
   4138 
   4139 #ifdef COBJMACROS
   4140 #ifndef WIDL_C_INLINE_WRAPPERS
   4141 /*** IUnknown methods ***/
   4142 #define IDWriteTextLayout_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   4143 #define IDWriteTextLayout_AddRef(This) (This)->lpVtbl->AddRef(This)
   4144 #define IDWriteTextLayout_Release(This) (This)->lpVtbl->Release(This)
   4145 /*** IDWriteTextFormat methods ***/
   4146 #define IDWriteTextLayout_SetTextAlignment(This,alignment) (This)->lpVtbl->SetTextAlignment(This,alignment)
   4147 #define IDWriteTextLayout_SetParagraphAlignment(This,alignment) (This)->lpVtbl->SetParagraphAlignment(This,alignment)
   4148 #define IDWriteTextLayout_SetWordWrapping(This,wrapping) (This)->lpVtbl->SetWordWrapping(This,wrapping)
   4149 #define IDWriteTextLayout_SetReadingDirection(This,direction) (This)->lpVtbl->SetReadingDirection(This,direction)
   4150 #define IDWriteTextLayout_SetFlowDirection(This,direction) (This)->lpVtbl->SetFlowDirection(This,direction)
   4151 #define IDWriteTextLayout_SetIncrementalTabStop(This,tabstop) (This)->lpVtbl->SetIncrementalTabStop(This,tabstop)
   4152 #define IDWriteTextLayout_SetTrimming(This,trimming,trimming_sign) (This)->lpVtbl->SetTrimming(This,trimming,trimming_sign)
   4153 #define IDWriteTextLayout_SetLineSpacing(This,spacing,line_spacing,baseline) (This)->lpVtbl->SetLineSpacing(This,spacing,line_spacing,baseline)
   4154 #define IDWriteTextLayout_GetTextAlignment(This) (This)->lpVtbl->GetTextAlignment(This)
   4155 #define IDWriteTextLayout_GetParagraphAlignment(This) (This)->lpVtbl->GetParagraphAlignment(This)
   4156 #define IDWriteTextLayout_GetWordWrapping(This) (This)->lpVtbl->GetWordWrapping(This)
   4157 #define IDWriteTextLayout_GetReadingDirection(This) (This)->lpVtbl->GetReadingDirection(This)
   4158 #define IDWriteTextLayout_GetFlowDirection(This) (This)->lpVtbl->GetFlowDirection(This)
   4159 #define IDWriteTextLayout_GetIncrementalTabStop(This) (This)->lpVtbl->GetIncrementalTabStop(This)
   4160 #define IDWriteTextLayout_GetTrimming(This,options,trimming_sign) (This)->lpVtbl->GetTrimming(This,options,trimming_sign)
   4161 #define IDWriteTextLayout_GetLineSpacing(This,method,spacing,baseline) (This)->lpVtbl->GetLineSpacing(This,method,spacing,baseline)
   4162 /*** IDWriteTextLayout methods ***/
   4163 #define IDWriteTextLayout_SetMaxWidth(This,maxWidth) (This)->lpVtbl->SetMaxWidth(This,maxWidth)
   4164 #define IDWriteTextLayout_SetMaxHeight(This,maxHeight) (This)->lpVtbl->SetMaxHeight(This,maxHeight)
   4165 #define IDWriteTextLayout_SetFontCollection(This,collection,range) (This)->lpVtbl->SetFontCollection(This,collection,range)
   4166 #define IDWriteTextLayout_SetFontFamilyName(This,name,range) (This)->lpVtbl->SetFontFamilyName(This,name,range)
   4167 #define IDWriteTextLayout_SetFontWeight(This,weight,range) (This)->lpVtbl->SetFontWeight(This,weight,range)
   4168 #define IDWriteTextLayout_SetFontStyle(This,style,range) (This)->lpVtbl->SetFontStyle(This,style,range)
   4169 #define IDWriteTextLayout_SetFontStretch(This,stretch,range) (This)->lpVtbl->SetFontStretch(This,stretch,range)
   4170 #define IDWriteTextLayout_SetFontSize(This,size,range) (This)->lpVtbl->SetFontSize(This,size,range)
   4171 #define IDWriteTextLayout_SetUnderline(This,underline,range) (This)->lpVtbl->SetUnderline(This,underline,range)
   4172 #define IDWriteTextLayout_SetStrikethrough(This,strikethrough,range) (This)->lpVtbl->SetStrikethrough(This,strikethrough,range)
   4173 #define IDWriteTextLayout_SetDrawingEffect(This,effect,range) (This)->lpVtbl->SetDrawingEffect(This,effect,range)
   4174 #define IDWriteTextLayout_SetInlineObject(This,object,range) (This)->lpVtbl->SetInlineObject(This,object,range)
   4175 #define IDWriteTextLayout_SetTypography(This,typography,range) (This)->lpVtbl->SetTypography(This,typography,range)
   4176 #define IDWriteTextLayout_SetLocaleName(This,locale,range) (This)->lpVtbl->SetLocaleName(This,locale,range)
   4177 #define IDWriteTextLayout_GetMaxWidth(This) (This)->lpVtbl->GetMaxWidth(This)
   4178 #define IDWriteTextLayout_GetMaxHeight(This) (This)->lpVtbl->GetMaxHeight(This)
   4179 #define IDWriteTextLayout_GetFontCollection(This,pos,collection,range) (This)->lpVtbl->IDWriteTextLayout_GetFontCollection(This,pos,collection,range)
   4180 #define IDWriteTextLayout_GetFontFamilyNameLength(This,pos,len,range) (This)->lpVtbl->IDWriteTextLayout_GetFontFamilyNameLength(This,pos,len,range)
   4181 #define IDWriteTextLayout_GetFontFamilyName(This,position,name,name_size,range) (This)->lpVtbl->IDWriteTextLayout_GetFontFamilyName(This,position,name,name_size,range)
   4182 #define IDWriteTextLayout_GetFontWeight(This,position,weight,range) (This)->lpVtbl->IDWriteTextLayout_GetFontWeight(This,position,weight,range)
   4183 #define IDWriteTextLayout_GetFontStyle(This,currentPosition,style,range) (This)->lpVtbl->IDWriteTextLayout_GetFontStyle(This,currentPosition,style,range)
   4184 #define IDWriteTextLayout_GetFontStretch(This,position,stretch,range) (This)->lpVtbl->IDWriteTextLayout_GetFontStretch(This,position,stretch,range)
   4185 #define IDWriteTextLayout_GetFontSize(This,position,size,range) (This)->lpVtbl->IDWriteTextLayout_GetFontSize(This,position,size,range)
   4186 #define IDWriteTextLayout_GetUnderline(This,position,has_underline,range) (This)->lpVtbl->GetUnderline(This,position,has_underline,range)
   4187 #define IDWriteTextLayout_GetStrikethrough(This,position,has_strikethrough,range) (This)->lpVtbl->GetStrikethrough(This,position,has_strikethrough,range)
   4188 #define IDWriteTextLayout_GetDrawingEffect(This,position,effect,range) (This)->lpVtbl->GetDrawingEffect(This,position,effect,range)
   4189 #define IDWriteTextLayout_GetInlineObject(This,position,object,range) (This)->lpVtbl->GetInlineObject(This,position,object,range)
   4190 #define IDWriteTextLayout_GetTypography(This,position,typography,range) (This)->lpVtbl->GetTypography(This,position,typography,range)
   4191 #define IDWriteTextLayout_GetLocaleNameLength(This,position,length,range) (This)->lpVtbl->IDWriteTextLayout_GetLocaleNameLength(This,position,length,range)
   4192 #define IDWriteTextLayout_GetLocaleName(This,position,name,name_size,range) (This)->lpVtbl->IDWriteTextLayout_GetLocaleName(This,position,name,name_size,range)
   4193 #define IDWriteTextLayout_Draw(This,context,renderer,originX,originY) (This)->lpVtbl->Draw(This,context,renderer,originX,originY)
   4194 #define IDWriteTextLayout_GetLineMetrics(This,metrics,max_count,actual_count) (This)->lpVtbl->GetLineMetrics(This,metrics,max_count,actual_count)
   4195 #define IDWriteTextLayout_GetMetrics(This,metrics) (This)->lpVtbl->GetMetrics(This,metrics)
   4196 #define IDWriteTextLayout_GetOverhangMetrics(This,overhangs) (This)->lpVtbl->GetOverhangMetrics(This,overhangs)
   4197 #define IDWriteTextLayout_GetClusterMetrics(This,metrics,max_count,act_count) (This)->lpVtbl->GetClusterMetrics(This,metrics,max_count,act_count)
   4198 #define IDWriteTextLayout_DetermineMinWidth(This,min_width) (This)->lpVtbl->DetermineMinWidth(This,min_width)
   4199 #define IDWriteTextLayout_HitTestPoint(This,pointX,pointY,is_trailinghit,is_inside,metrics) (This)->lpVtbl->HitTestPoint(This,pointX,pointY,is_trailinghit,is_inside,metrics)
   4200 #define IDWriteTextLayout_HitTestTextPosition(This,textPosition,is_trailinghit,pointX,pointY,metrics) (This)->lpVtbl->HitTestTextPosition(This,textPosition,is_trailinghit,pointX,pointY,metrics)
   4201 #define IDWriteTextLayout_HitTestTextRange(This,textPosition,textLength,originX,originY,metrics,max_metricscount,actual_metricscount) (This)->lpVtbl->HitTestTextRange(This,textPosition,textLength,originX,originY,metrics,max_metricscount,actual_metricscount)
   4202 #else
   4203 /*** IUnknown methods ***/
   4204 static inline HRESULT IDWriteTextLayout_QueryInterface(IDWriteTextLayout* This,REFIID riid,void **ppvObject) {
   4205     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4206 }
   4207 static inline ULONG IDWriteTextLayout_AddRef(IDWriteTextLayout* This) {
   4208     return This->lpVtbl->AddRef(This);
   4209 }
   4210 static inline ULONG IDWriteTextLayout_Release(IDWriteTextLayout* This) {
   4211     return This->lpVtbl->Release(This);
   4212 }
   4213 /*** IDWriteTextFormat methods ***/
   4214 static inline HRESULT IDWriteTextLayout_SetTextAlignment(IDWriteTextLayout* This,DWRITE_TEXT_ALIGNMENT alignment) {
   4215     return This->lpVtbl->SetTextAlignment(This,alignment);
   4216 }
   4217 static inline HRESULT IDWriteTextLayout_SetParagraphAlignment(IDWriteTextLayout* This,DWRITE_PARAGRAPH_ALIGNMENT alignment) {
   4218     return This->lpVtbl->SetParagraphAlignment(This,alignment);
   4219 }
   4220 static inline HRESULT IDWriteTextLayout_SetWordWrapping(IDWriteTextLayout* This,DWRITE_WORD_WRAPPING wrapping) {
   4221     return This->lpVtbl->SetWordWrapping(This,wrapping);
   4222 }
   4223 static inline HRESULT IDWriteTextLayout_SetReadingDirection(IDWriteTextLayout* This,DWRITE_READING_DIRECTION direction) {
   4224     return This->lpVtbl->SetReadingDirection(This,direction);
   4225 }
   4226 static inline HRESULT IDWriteTextLayout_SetFlowDirection(IDWriteTextLayout* This,DWRITE_FLOW_DIRECTION direction) {
   4227     return This->lpVtbl->SetFlowDirection(This,direction);
   4228 }
   4229 static inline HRESULT IDWriteTextLayout_SetIncrementalTabStop(IDWriteTextLayout* This,FLOAT tabstop) {
   4230     return This->lpVtbl->SetIncrementalTabStop(This,tabstop);
   4231 }
   4232 static inline HRESULT IDWriteTextLayout_SetTrimming(IDWriteTextLayout* This,const DWRITE_TRIMMING *trimming,IDWriteInlineObject *trimming_sign) {
   4233     return This->lpVtbl->SetTrimming(This,trimming,trimming_sign);
   4234 }
   4235 static inline HRESULT IDWriteTextLayout_SetLineSpacing(IDWriteTextLayout* This,DWRITE_LINE_SPACING_METHOD spacing,FLOAT line_spacing,FLOAT baseline) {
   4236     return This->lpVtbl->SetLineSpacing(This,spacing,line_spacing,baseline);
   4237 }
   4238 static inline DWRITE_TEXT_ALIGNMENT IDWriteTextLayout_GetTextAlignment(IDWriteTextLayout* This) {
   4239     return This->lpVtbl->GetTextAlignment(This);
   4240 }
   4241 static inline DWRITE_PARAGRAPH_ALIGNMENT IDWriteTextLayout_GetParagraphAlignment(IDWriteTextLayout* This) {
   4242     return This->lpVtbl->GetParagraphAlignment(This);
   4243 }
   4244 static inline DWRITE_WORD_WRAPPING IDWriteTextLayout_GetWordWrapping(IDWriteTextLayout* This) {
   4245     return This->lpVtbl->GetWordWrapping(This);
   4246 }
   4247 static inline DWRITE_READING_DIRECTION IDWriteTextLayout_GetReadingDirection(IDWriteTextLayout* This) {
   4248     return This->lpVtbl->GetReadingDirection(This);
   4249 }
   4250 static inline DWRITE_FLOW_DIRECTION IDWriteTextLayout_GetFlowDirection(IDWriteTextLayout* This) {
   4251     return This->lpVtbl->GetFlowDirection(This);
   4252 }
   4253 static inline FLOAT IDWriteTextLayout_GetIncrementalTabStop(IDWriteTextLayout* This) {
   4254     return This->lpVtbl->GetIncrementalTabStop(This);
   4255 }
   4256 static inline HRESULT IDWriteTextLayout_GetTrimming(IDWriteTextLayout* This,DWRITE_TRIMMING *options,IDWriteInlineObject **trimming_sign) {
   4257     return This->lpVtbl->GetTrimming(This,options,trimming_sign);
   4258 }
   4259 static inline HRESULT IDWriteTextLayout_GetLineSpacing(IDWriteTextLayout* This,DWRITE_LINE_SPACING_METHOD *method,FLOAT *spacing,FLOAT *baseline) {
   4260     return This->lpVtbl->GetLineSpacing(This,method,spacing,baseline);
   4261 }
   4262 /*** IDWriteTextLayout methods ***/
   4263 static inline HRESULT IDWriteTextLayout_SetMaxWidth(IDWriteTextLayout* This,FLOAT maxWidth) {
   4264     return This->lpVtbl->SetMaxWidth(This,maxWidth);
   4265 }
   4266 static inline HRESULT IDWriteTextLayout_SetMaxHeight(IDWriteTextLayout* This,FLOAT maxHeight) {
   4267     return This->lpVtbl->SetMaxHeight(This,maxHeight);
   4268 }
   4269 static inline HRESULT IDWriteTextLayout_SetFontCollection(IDWriteTextLayout* This,IDWriteFontCollection *collection,DWRITE_TEXT_RANGE range) {
   4270     return This->lpVtbl->SetFontCollection(This,collection,range);
   4271 }
   4272 static inline HRESULT IDWriteTextLayout_SetFontFamilyName(IDWriteTextLayout* This,const WCHAR *name,DWRITE_TEXT_RANGE range) {
   4273     return This->lpVtbl->SetFontFamilyName(This,name,range);
   4274 }
   4275 static inline HRESULT IDWriteTextLayout_SetFontWeight(IDWriteTextLayout* This,DWRITE_FONT_WEIGHT weight,DWRITE_TEXT_RANGE range) {
   4276     return This->lpVtbl->SetFontWeight(This,weight,range);
   4277 }
   4278 static inline HRESULT IDWriteTextLayout_SetFontStyle(IDWriteTextLayout* This,DWRITE_FONT_STYLE style,DWRITE_TEXT_RANGE range) {
   4279     return This->lpVtbl->SetFontStyle(This,style,range);
   4280 }
   4281 static inline HRESULT IDWriteTextLayout_SetFontStretch(IDWriteTextLayout* This,DWRITE_FONT_STRETCH stretch,DWRITE_TEXT_RANGE range) {
   4282     return This->lpVtbl->SetFontStretch(This,stretch,range);
   4283 }
   4284 static inline HRESULT IDWriteTextLayout_SetFontSize(IDWriteTextLayout* This,FLOAT size,DWRITE_TEXT_RANGE range) {
   4285     return This->lpVtbl->SetFontSize(This,size,range);
   4286 }
   4287 static inline HRESULT IDWriteTextLayout_SetUnderline(IDWriteTextLayout* This,WINBOOL underline,DWRITE_TEXT_RANGE range) {
   4288     return This->lpVtbl->SetUnderline(This,underline,range);
   4289 }
   4290 static inline HRESULT IDWriteTextLayout_SetStrikethrough(IDWriteTextLayout* This,WINBOOL strikethrough,DWRITE_TEXT_RANGE range) {
   4291     return This->lpVtbl->SetStrikethrough(This,strikethrough,range);
   4292 }
   4293 static inline HRESULT IDWriteTextLayout_SetDrawingEffect(IDWriteTextLayout* This,IUnknown *effect,DWRITE_TEXT_RANGE range) {
   4294     return This->lpVtbl->SetDrawingEffect(This,effect,range);
   4295 }
   4296 static inline HRESULT IDWriteTextLayout_SetInlineObject(IDWriteTextLayout* This,IDWriteInlineObject *object,DWRITE_TEXT_RANGE range) {
   4297     return This->lpVtbl->SetInlineObject(This,object,range);
   4298 }
   4299 static inline HRESULT IDWriteTextLayout_SetTypography(IDWriteTextLayout* This,IDWriteTypography *typography,DWRITE_TEXT_RANGE range) {
   4300     return This->lpVtbl->SetTypography(This,typography,range);
   4301 }
   4302 static inline HRESULT IDWriteTextLayout_SetLocaleName(IDWriteTextLayout* This,const WCHAR *locale,DWRITE_TEXT_RANGE range) {
   4303     return This->lpVtbl->SetLocaleName(This,locale,range);
   4304 }
   4305 static inline FLOAT IDWriteTextLayout_GetMaxWidth(IDWriteTextLayout* This) {
   4306     return This->lpVtbl->GetMaxWidth(This);
   4307 }
   4308 static inline FLOAT IDWriteTextLayout_GetMaxHeight(IDWriteTextLayout* This) {
   4309     return This->lpVtbl->GetMaxHeight(This);
   4310 }
   4311 static inline HRESULT IDWriteTextLayout_GetFontCollection(IDWriteTextLayout* This,UINT32 pos,IDWriteFontCollection **collection,DWRITE_TEXT_RANGE *range) {
   4312     return This->lpVtbl->IDWriteTextLayout_GetFontCollection(This,pos,collection,range);
   4313 }
   4314 static inline HRESULT IDWriteTextLayout_GetFontFamilyNameLength(IDWriteTextLayout* This,UINT32 pos,UINT32 *len,DWRITE_TEXT_RANGE *range) {
   4315     return This->lpVtbl->IDWriteTextLayout_GetFontFamilyNameLength(This,pos,len,range);
   4316 }
   4317 static inline HRESULT IDWriteTextLayout_GetFontFamilyName(IDWriteTextLayout* This,UINT32 position,WCHAR *name,UINT32 name_size,DWRITE_TEXT_RANGE *range) {
   4318     return This->lpVtbl->IDWriteTextLayout_GetFontFamilyName(This,position,name,name_size,range);
   4319 }
   4320 static inline HRESULT IDWriteTextLayout_GetFontWeight(IDWriteTextLayout* This,UINT32 position,DWRITE_FONT_WEIGHT *weight,DWRITE_TEXT_RANGE *range) {
   4321     return This->lpVtbl->IDWriteTextLayout_GetFontWeight(This,position,weight,range);
   4322 }
   4323 static inline HRESULT IDWriteTextLayout_GetFontStyle(IDWriteTextLayout* This,UINT32 currentPosition,DWRITE_FONT_STYLE *style,DWRITE_TEXT_RANGE *range) {
   4324     return This->lpVtbl->IDWriteTextLayout_GetFontStyle(This,currentPosition,style,range);
   4325 }
   4326 static inline HRESULT IDWriteTextLayout_GetFontStretch(IDWriteTextLayout* This,UINT32 position,DWRITE_FONT_STRETCH *stretch,DWRITE_TEXT_RANGE *range) {
   4327     return This->lpVtbl->IDWriteTextLayout_GetFontStretch(This,position,stretch,range);
   4328 }
   4329 static inline HRESULT IDWriteTextLayout_GetFontSize(IDWriteTextLayout* This,UINT32 position,FLOAT *size,DWRITE_TEXT_RANGE *range) {
   4330     return This->lpVtbl->IDWriteTextLayout_GetFontSize(This,position,size,range);
   4331 }
   4332 static inline HRESULT IDWriteTextLayout_GetUnderline(IDWriteTextLayout* This,UINT32 position,WINBOOL *has_underline,DWRITE_TEXT_RANGE *range) {
   4333     return This->lpVtbl->GetUnderline(This,position,has_underline,range);
   4334 }
   4335 static inline HRESULT IDWriteTextLayout_GetStrikethrough(IDWriteTextLayout* This,UINT32 position,WINBOOL *has_strikethrough,DWRITE_TEXT_RANGE *range) {
   4336     return This->lpVtbl->GetStrikethrough(This,position,has_strikethrough,range);
   4337 }
   4338 static inline HRESULT IDWriteTextLayout_GetDrawingEffect(IDWriteTextLayout* This,UINT32 position,IUnknown **effect,DWRITE_TEXT_RANGE *range) {
   4339     return This->lpVtbl->GetDrawingEffect(This,position,effect,range);
   4340 }
   4341 static inline HRESULT IDWriteTextLayout_GetInlineObject(IDWriteTextLayout* This,UINT32 position,IDWriteInlineObject **object,DWRITE_TEXT_RANGE *range) {
   4342     return This->lpVtbl->GetInlineObject(This,position,object,range);
   4343 }
   4344 static inline HRESULT IDWriteTextLayout_GetTypography(IDWriteTextLayout* This,UINT32 position,IDWriteTypography **typography,DWRITE_TEXT_RANGE *range) {
   4345     return This->lpVtbl->GetTypography(This,position,typography,range);
   4346 }
   4347 static inline HRESULT IDWriteTextLayout_GetLocaleNameLength(IDWriteTextLayout* This,UINT32 position,UINT32 *length,DWRITE_TEXT_RANGE *range) {
   4348     return This->lpVtbl->IDWriteTextLayout_GetLocaleNameLength(This,position,length,range);
   4349 }
   4350 static inline HRESULT IDWriteTextLayout_GetLocaleName(IDWriteTextLayout* This,UINT32 position,WCHAR *name,UINT32 name_size,DWRITE_TEXT_RANGE *range) {
   4351     return This->lpVtbl->IDWriteTextLayout_GetLocaleName(This,position,name,name_size,range);
   4352 }
   4353 static inline HRESULT IDWriteTextLayout_Draw(IDWriteTextLayout* This,void *context,IDWriteTextRenderer *renderer,FLOAT originX,FLOAT originY) {
   4354     return This->lpVtbl->Draw(This,context,renderer,originX,originY);
   4355 }
   4356 static inline HRESULT IDWriteTextLayout_GetLineMetrics(IDWriteTextLayout* This,DWRITE_LINE_METRICS *metrics,UINT32 max_count,UINT32 *actual_count) {
   4357     return This->lpVtbl->GetLineMetrics(This,metrics,max_count,actual_count);
   4358 }
   4359 static inline HRESULT IDWriteTextLayout_GetMetrics(IDWriteTextLayout* This,DWRITE_TEXT_METRICS *metrics) {
   4360     return This->lpVtbl->GetMetrics(This,metrics);
   4361 }
   4362 static inline HRESULT IDWriteTextLayout_GetOverhangMetrics(IDWriteTextLayout* This,DWRITE_OVERHANG_METRICS *overhangs) {
   4363     return This->lpVtbl->GetOverhangMetrics(This,overhangs);
   4364 }
   4365 static inline HRESULT IDWriteTextLayout_GetClusterMetrics(IDWriteTextLayout* This,DWRITE_CLUSTER_METRICS *metrics,UINT32 max_count,UINT32 *act_count) {
   4366     return This->lpVtbl->GetClusterMetrics(This,metrics,max_count,act_count);
   4367 }
   4368 static inline HRESULT IDWriteTextLayout_DetermineMinWidth(IDWriteTextLayout* This,FLOAT *min_width) {
   4369     return This->lpVtbl->DetermineMinWidth(This,min_width);
   4370 }
   4371 static inline HRESULT IDWriteTextLayout_HitTestPoint(IDWriteTextLayout* This,FLOAT pointX,FLOAT pointY,WINBOOL *is_trailinghit,WINBOOL *is_inside,DWRITE_HIT_TEST_METRICS *metrics) {
   4372     return This->lpVtbl->HitTestPoint(This,pointX,pointY,is_trailinghit,is_inside,metrics);
   4373 }
   4374 static inline HRESULT IDWriteTextLayout_HitTestTextPosition(IDWriteTextLayout* This,UINT32 textPosition,WINBOOL is_trailinghit,FLOAT *pointX,FLOAT *pointY,DWRITE_HIT_TEST_METRICS *metrics) {
   4375     return This->lpVtbl->HitTestTextPosition(This,textPosition,is_trailinghit,pointX,pointY,metrics);
   4376 }
   4377 static inline HRESULT IDWriteTextLayout_HitTestTextRange(IDWriteTextLayout* This,UINT32 textPosition,UINT32 textLength,FLOAT originX,FLOAT originY,DWRITE_HIT_TEST_METRICS *metrics,UINT32 max_metricscount,UINT32 *actual_metricscount) {
   4378     return This->lpVtbl->HitTestTextRange(This,textPosition,textLength,originX,originY,metrics,max_metricscount,actual_metricscount);
   4379 }
   4380 #endif
   4381 #endif
   4382 
   4383 #endif
   4384 
   4385 
   4386 #endif  /* __IDWriteTextLayout_INTERFACE_DEFINED__ */
   4387 
   4388 /*****************************************************************************
   4389  * IDWriteNumberSubstitution interface
   4390  */
   4391 #ifndef __IDWriteNumberSubstitution_INTERFACE_DEFINED__
   4392 #define __IDWriteNumberSubstitution_INTERFACE_DEFINED__
   4393 
   4394 DEFINE_GUID(IID_IDWriteNumberSubstitution, 0x14885cc9, 0xbab0, 0x4f90, 0xb6,0xed, 0x5c,0x36,0x6a,0x2c,0xd0,0x3d);
   4395 #if defined(__cplusplus) && !defined(CINTERFACE)
   4396 MIDL_INTERFACE("14885cc9-bab0-4f90-b6ed-5c366a2cd03d")
   4397 IDWriteNumberSubstitution : public IUnknown
   4398 {
   4399 };
   4400 #ifdef __CRT_UUID_DECL
   4401 __CRT_UUID_DECL(IDWriteNumberSubstitution, 0x14885cc9, 0xbab0, 0x4f90, 0xb6,0xed, 0x5c,0x36,0x6a,0x2c,0xd0,0x3d)
   4402 #endif
   4403 #else
   4404 typedef struct IDWriteNumberSubstitutionVtbl {
   4405     BEGIN_INTERFACE
   4406 
   4407     /*** IUnknown methods ***/
   4408     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   4409         IDWriteNumberSubstitution *This,
   4410         REFIID riid,
   4411         void **ppvObject);
   4412 
   4413     ULONG (STDMETHODCALLTYPE *AddRef)(
   4414         IDWriteNumberSubstitution *This);
   4415 
   4416     ULONG (STDMETHODCALLTYPE *Release)(
   4417         IDWriteNumberSubstitution *This);
   4418 
   4419     END_INTERFACE
   4420 } IDWriteNumberSubstitutionVtbl;
   4421 
   4422 interface IDWriteNumberSubstitution {
   4423     CONST_VTBL IDWriteNumberSubstitutionVtbl* lpVtbl;
   4424 };
   4425 
   4426 #ifdef COBJMACROS
   4427 #ifndef WIDL_C_INLINE_WRAPPERS
   4428 /*** IUnknown methods ***/
   4429 #define IDWriteNumberSubstitution_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   4430 #define IDWriteNumberSubstitution_AddRef(This) (This)->lpVtbl->AddRef(This)
   4431 #define IDWriteNumberSubstitution_Release(This) (This)->lpVtbl->Release(This)
   4432 #else
   4433 /*** IUnknown methods ***/
   4434 static inline HRESULT IDWriteNumberSubstitution_QueryInterface(IDWriteNumberSubstitution* This,REFIID riid,void **ppvObject) {
   4435     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4436 }
   4437 static inline ULONG IDWriteNumberSubstitution_AddRef(IDWriteNumberSubstitution* This) {
   4438     return This->lpVtbl->AddRef(This);
   4439 }
   4440 static inline ULONG IDWriteNumberSubstitution_Release(IDWriteNumberSubstitution* This) {
   4441     return This->lpVtbl->Release(This);
   4442 }
   4443 #endif
   4444 #endif
   4445 
   4446 #endif
   4447 
   4448 
   4449 #endif  /* __IDWriteNumberSubstitution_INTERFACE_DEFINED__ */
   4450 
   4451 /*****************************************************************************
   4452  * IDWriteTextAnalysisSource interface
   4453  */
   4454 #ifndef __IDWriteTextAnalysisSource_INTERFACE_DEFINED__
   4455 #define __IDWriteTextAnalysisSource_INTERFACE_DEFINED__
   4456 
   4457 DEFINE_GUID(IID_IDWriteTextAnalysisSource, 0x688e1a58, 0x5094, 0x47c8, 0xad,0xc8, 0xfb,0xce,0xa6,0x0a,0xe9,0x2b);
   4458 #if defined(__cplusplus) && !defined(CINTERFACE)
   4459 MIDL_INTERFACE("688e1a58-5094-47c8-adc8-fbcea60ae92b")
   4460 IDWriteTextAnalysisSource : public IUnknown
   4461 {
   4462     virtual HRESULT STDMETHODCALLTYPE GetTextAtPosition(
   4463         UINT32 position,
   4464         const WCHAR **text,
   4465         UINT32 *text_len) = 0;
   4466 
   4467     virtual HRESULT STDMETHODCALLTYPE GetTextBeforePosition(
   4468         UINT32 position,
   4469         const WCHAR **text,
   4470         UINT32 *text_len) = 0;
   4471 
   4472     virtual DWRITE_READING_DIRECTION STDMETHODCALLTYPE GetParagraphReadingDirection(
   4473         ) = 0;
   4474 
   4475     virtual HRESULT STDMETHODCALLTYPE GetLocaleName(
   4476         UINT32 position,
   4477         UINT32 *text_len,
   4478         const WCHAR **locale) = 0;
   4479 
   4480     virtual HRESULT STDMETHODCALLTYPE GetNumberSubstitution(
   4481         UINT32 position,
   4482         UINT32 *text_len,
   4483         IDWriteNumberSubstitution **substitution) = 0;
   4484 
   4485 };
   4486 #ifdef __CRT_UUID_DECL
   4487 __CRT_UUID_DECL(IDWriteTextAnalysisSource, 0x688e1a58, 0x5094, 0x47c8, 0xad,0xc8, 0xfb,0xce,0xa6,0x0a,0xe9,0x2b)
   4488 #endif
   4489 #else
   4490 typedef struct IDWriteTextAnalysisSourceVtbl {
   4491     BEGIN_INTERFACE
   4492 
   4493     /*** IUnknown methods ***/
   4494     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   4495         IDWriteTextAnalysisSource *This,
   4496         REFIID riid,
   4497         void **ppvObject);
   4498 
   4499     ULONG (STDMETHODCALLTYPE *AddRef)(
   4500         IDWriteTextAnalysisSource *This);
   4501 
   4502     ULONG (STDMETHODCALLTYPE *Release)(
   4503         IDWriteTextAnalysisSource *This);
   4504 
   4505     /*** IDWriteTextAnalysisSource methods ***/
   4506     HRESULT (STDMETHODCALLTYPE *GetTextAtPosition)(
   4507         IDWriteTextAnalysisSource *This,
   4508         UINT32 position,
   4509         const WCHAR **text,
   4510         UINT32 *text_len);
   4511 
   4512     HRESULT (STDMETHODCALLTYPE *GetTextBeforePosition)(
   4513         IDWriteTextAnalysisSource *This,
   4514         UINT32 position,
   4515         const WCHAR **text,
   4516         UINT32 *text_len);
   4517 
   4518     DWRITE_READING_DIRECTION (STDMETHODCALLTYPE *GetParagraphReadingDirection)(
   4519         IDWriteTextAnalysisSource *This);
   4520 
   4521     HRESULT (STDMETHODCALLTYPE *GetLocaleName)(
   4522         IDWriteTextAnalysisSource *This,
   4523         UINT32 position,
   4524         UINT32 *text_len,
   4525         const WCHAR **locale);
   4526 
   4527     HRESULT (STDMETHODCALLTYPE *GetNumberSubstitution)(
   4528         IDWriteTextAnalysisSource *This,
   4529         UINT32 position,
   4530         UINT32 *text_len,
   4531         IDWriteNumberSubstitution **substitution);
   4532 
   4533     END_INTERFACE
   4534 } IDWriteTextAnalysisSourceVtbl;
   4535 
   4536 interface IDWriteTextAnalysisSource {
   4537     CONST_VTBL IDWriteTextAnalysisSourceVtbl* lpVtbl;
   4538 };
   4539 
   4540 #ifdef COBJMACROS
   4541 #ifndef WIDL_C_INLINE_WRAPPERS
   4542 /*** IUnknown methods ***/
   4543 #define IDWriteTextAnalysisSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   4544 #define IDWriteTextAnalysisSource_AddRef(This) (This)->lpVtbl->AddRef(This)
   4545 #define IDWriteTextAnalysisSource_Release(This) (This)->lpVtbl->Release(This)
   4546 /*** IDWriteTextAnalysisSource methods ***/
   4547 #define IDWriteTextAnalysisSource_GetTextAtPosition(This,position,text,text_len) (This)->lpVtbl->GetTextAtPosition(This,position,text,text_len)
   4548 #define IDWriteTextAnalysisSource_GetTextBeforePosition(This,position,text,text_len) (This)->lpVtbl->GetTextBeforePosition(This,position,text,text_len)
   4549 #define IDWriteTextAnalysisSource_GetParagraphReadingDirection(This) (This)->lpVtbl->GetParagraphReadingDirection(This)
   4550 #define IDWriteTextAnalysisSource_GetLocaleName(This,position,text_len,locale) (This)->lpVtbl->GetLocaleName(This,position,text_len,locale)
   4551 #define IDWriteTextAnalysisSource_GetNumberSubstitution(This,position,text_len,substitution) (This)->lpVtbl->GetNumberSubstitution(This,position,text_len,substitution)
   4552 #else
   4553 /*** IUnknown methods ***/
   4554 static inline HRESULT IDWriteTextAnalysisSource_QueryInterface(IDWriteTextAnalysisSource* This,REFIID riid,void **ppvObject) {
   4555     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4556 }
   4557 static inline ULONG IDWriteTextAnalysisSource_AddRef(IDWriteTextAnalysisSource* This) {
   4558     return This->lpVtbl->AddRef(This);
   4559 }
   4560 static inline ULONG IDWriteTextAnalysisSource_Release(IDWriteTextAnalysisSource* This) {
   4561     return This->lpVtbl->Release(This);
   4562 }
   4563 /*** IDWriteTextAnalysisSource methods ***/
   4564 static inline HRESULT IDWriteTextAnalysisSource_GetTextAtPosition(IDWriteTextAnalysisSource* This,UINT32 position,const WCHAR **text,UINT32 *text_len) {
   4565     return This->lpVtbl->GetTextAtPosition(This,position,text,text_len);
   4566 }
   4567 static inline HRESULT IDWriteTextAnalysisSource_GetTextBeforePosition(IDWriteTextAnalysisSource* This,UINT32 position,const WCHAR **text,UINT32 *text_len) {
   4568     return This->lpVtbl->GetTextBeforePosition(This,position,text,text_len);
   4569 }
   4570 static inline DWRITE_READING_DIRECTION IDWriteTextAnalysisSource_GetParagraphReadingDirection(IDWriteTextAnalysisSource* This) {
   4571     return This->lpVtbl->GetParagraphReadingDirection(This);
   4572 }
   4573 static inline HRESULT IDWriteTextAnalysisSource_GetLocaleName(IDWriteTextAnalysisSource* This,UINT32 position,UINT32 *text_len,const WCHAR **locale) {
   4574     return This->lpVtbl->GetLocaleName(This,position,text_len,locale);
   4575 }
   4576 static inline HRESULT IDWriteTextAnalysisSource_GetNumberSubstitution(IDWriteTextAnalysisSource* This,UINT32 position,UINT32 *text_len,IDWriteNumberSubstitution **substitution) {
   4577     return This->lpVtbl->GetNumberSubstitution(This,position,text_len,substitution);
   4578 }
   4579 #endif
   4580 #endif
   4581 
   4582 #endif
   4583 
   4584 
   4585 #endif  /* __IDWriteTextAnalysisSource_INTERFACE_DEFINED__ */
   4586 
   4587 /*****************************************************************************
   4588  * IDWriteTextAnalysisSink interface
   4589  */
   4590 #ifndef __IDWriteTextAnalysisSink_INTERFACE_DEFINED__
   4591 #define __IDWriteTextAnalysisSink_INTERFACE_DEFINED__
   4592 
   4593 DEFINE_GUID(IID_IDWriteTextAnalysisSink, 0x5810cd44, 0x0ca0, 0x4701, 0xb3,0xfa, 0xbe,0xc5,0x18,0x2a,0xe4,0xf6);
   4594 #if defined(__cplusplus) && !defined(CINTERFACE)
   4595 MIDL_INTERFACE("5810cd44-0ca0-4701-b3fa-bec5182ae4f6")
   4596 IDWriteTextAnalysisSink : public IUnknown
   4597 {
   4598     virtual HRESULT STDMETHODCALLTYPE SetScriptAnalysis(
   4599         UINT32 position,
   4600         UINT32 length,
   4601         const DWRITE_SCRIPT_ANALYSIS *scriptanalysis) = 0;
   4602 
   4603     virtual HRESULT STDMETHODCALLTYPE SetLineBreakpoints(
   4604         UINT32 position,
   4605         UINT32 length,
   4606         const DWRITE_LINE_BREAKPOINT *breakpoints) = 0;
   4607 
   4608     virtual HRESULT STDMETHODCALLTYPE SetBidiLevel(
   4609         UINT32 position,
   4610         UINT32 length,
   4611         UINT8 explicitLevel,
   4612         UINT8 resolvedLevel) = 0;
   4613 
   4614     virtual HRESULT STDMETHODCALLTYPE SetNumberSubstitution(
   4615         UINT32 position,
   4616         UINT32 length,
   4617         IDWriteNumberSubstitution *substitution) = 0;
   4618 
   4619 };
   4620 #ifdef __CRT_UUID_DECL
   4621 __CRT_UUID_DECL(IDWriteTextAnalysisSink, 0x5810cd44, 0x0ca0, 0x4701, 0xb3,0xfa, 0xbe,0xc5,0x18,0x2a,0xe4,0xf6)
   4622 #endif
   4623 #else
   4624 typedef struct IDWriteTextAnalysisSinkVtbl {
   4625     BEGIN_INTERFACE
   4626 
   4627     /*** IUnknown methods ***/
   4628     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   4629         IDWriteTextAnalysisSink *This,
   4630         REFIID riid,
   4631         void **ppvObject);
   4632 
   4633     ULONG (STDMETHODCALLTYPE *AddRef)(
   4634         IDWriteTextAnalysisSink *This);
   4635 
   4636     ULONG (STDMETHODCALLTYPE *Release)(
   4637         IDWriteTextAnalysisSink *This);
   4638 
   4639     /*** IDWriteTextAnalysisSink methods ***/
   4640     HRESULT (STDMETHODCALLTYPE *SetScriptAnalysis)(
   4641         IDWriteTextAnalysisSink *This,
   4642         UINT32 position,
   4643         UINT32 length,
   4644         const DWRITE_SCRIPT_ANALYSIS *scriptanalysis);
   4645 
   4646     HRESULT (STDMETHODCALLTYPE *SetLineBreakpoints)(
   4647         IDWriteTextAnalysisSink *This,
   4648         UINT32 position,
   4649         UINT32 length,
   4650         const DWRITE_LINE_BREAKPOINT *breakpoints);
   4651 
   4652     HRESULT (STDMETHODCALLTYPE *SetBidiLevel)(
   4653         IDWriteTextAnalysisSink *This,
   4654         UINT32 position,
   4655         UINT32 length,
   4656         UINT8 explicitLevel,
   4657         UINT8 resolvedLevel);
   4658 
   4659     HRESULT (STDMETHODCALLTYPE *SetNumberSubstitution)(
   4660         IDWriteTextAnalysisSink *This,
   4661         UINT32 position,
   4662         UINT32 length,
   4663         IDWriteNumberSubstitution *substitution);
   4664 
   4665     END_INTERFACE
   4666 } IDWriteTextAnalysisSinkVtbl;
   4667 
   4668 interface IDWriteTextAnalysisSink {
   4669     CONST_VTBL IDWriteTextAnalysisSinkVtbl* lpVtbl;
   4670 };
   4671 
   4672 #ifdef COBJMACROS
   4673 #ifndef WIDL_C_INLINE_WRAPPERS
   4674 /*** IUnknown methods ***/
   4675 #define IDWriteTextAnalysisSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   4676 #define IDWriteTextAnalysisSink_AddRef(This) (This)->lpVtbl->AddRef(This)
   4677 #define IDWriteTextAnalysisSink_Release(This) (This)->lpVtbl->Release(This)
   4678 /*** IDWriteTextAnalysisSink methods ***/
   4679 #define IDWriteTextAnalysisSink_SetScriptAnalysis(This,position,length,scriptanalysis) (This)->lpVtbl->SetScriptAnalysis(This,position,length,scriptanalysis)
   4680 #define IDWriteTextAnalysisSink_SetLineBreakpoints(This,position,length,breakpoints) (This)->lpVtbl->SetLineBreakpoints(This,position,length,breakpoints)
   4681 #define IDWriteTextAnalysisSink_SetBidiLevel(This,position,length,explicitLevel,resolvedLevel) (This)->lpVtbl->SetBidiLevel(This,position,length,explicitLevel,resolvedLevel)
   4682 #define IDWriteTextAnalysisSink_SetNumberSubstitution(This,position,length,substitution) (This)->lpVtbl->SetNumberSubstitution(This,position,length,substitution)
   4683 #else
   4684 /*** IUnknown methods ***/
   4685 static inline HRESULT IDWriteTextAnalysisSink_QueryInterface(IDWriteTextAnalysisSink* This,REFIID riid,void **ppvObject) {
   4686     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4687 }
   4688 static inline ULONG IDWriteTextAnalysisSink_AddRef(IDWriteTextAnalysisSink* This) {
   4689     return This->lpVtbl->AddRef(This);
   4690 }
   4691 static inline ULONG IDWriteTextAnalysisSink_Release(IDWriteTextAnalysisSink* This) {
   4692     return This->lpVtbl->Release(This);
   4693 }
   4694 /*** IDWriteTextAnalysisSink methods ***/
   4695 static inline HRESULT IDWriteTextAnalysisSink_SetScriptAnalysis(IDWriteTextAnalysisSink* This,UINT32 position,UINT32 length,const DWRITE_SCRIPT_ANALYSIS *scriptanalysis) {
   4696     return This->lpVtbl->SetScriptAnalysis(This,position,length,scriptanalysis);
   4697 }
   4698 static inline HRESULT IDWriteTextAnalysisSink_SetLineBreakpoints(IDWriteTextAnalysisSink* This,UINT32 position,UINT32 length,const DWRITE_LINE_BREAKPOINT *breakpoints) {
   4699     return This->lpVtbl->SetLineBreakpoints(This,position,length,breakpoints);
   4700 }
   4701 static inline HRESULT IDWriteTextAnalysisSink_SetBidiLevel(IDWriteTextAnalysisSink* This,UINT32 position,UINT32 length,UINT8 explicitLevel,UINT8 resolvedLevel) {
   4702     return This->lpVtbl->SetBidiLevel(This,position,length,explicitLevel,resolvedLevel);
   4703 }
   4704 static inline HRESULT IDWriteTextAnalysisSink_SetNumberSubstitution(IDWriteTextAnalysisSink* This,UINT32 position,UINT32 length,IDWriteNumberSubstitution *substitution) {
   4705     return This->lpVtbl->SetNumberSubstitution(This,position,length,substitution);
   4706 }
   4707 #endif
   4708 #endif
   4709 
   4710 #endif
   4711 
   4712 
   4713 #endif  /* __IDWriteTextAnalysisSink_INTERFACE_DEFINED__ */
   4714 
   4715 /*****************************************************************************
   4716  * IDWriteTextAnalyzer interface
   4717  */
   4718 #ifndef __IDWriteTextAnalyzer_INTERFACE_DEFINED__
   4719 #define __IDWriteTextAnalyzer_INTERFACE_DEFINED__
   4720 
   4721 DEFINE_GUID(IID_IDWriteTextAnalyzer, 0xb7e6163e, 0x7f46, 0x43b4, 0x84,0xb3, 0xe4,0xe6,0x24,0x9c,0x36,0x5d);
   4722 #if defined(__cplusplus) && !defined(CINTERFACE)
   4723 MIDL_INTERFACE("b7e6163e-7f46-43b4-84b3-e4e6249c365d")
   4724 IDWriteTextAnalyzer : public IUnknown
   4725 {
   4726     virtual HRESULT STDMETHODCALLTYPE AnalyzeScript(
   4727         IDWriteTextAnalysisSource *source,
   4728         UINT32 position,
   4729         UINT32 length,
   4730         IDWriteTextAnalysisSink *sink) = 0;
   4731 
   4732     virtual HRESULT STDMETHODCALLTYPE AnalyzeBidi(
   4733         IDWriteTextAnalysisSource *source,
   4734         UINT32 position,
   4735         UINT32 length,
   4736         IDWriteTextAnalysisSink *sink) = 0;
   4737 
   4738     virtual HRESULT STDMETHODCALLTYPE AnalyzeNumberSubstitution(
   4739         IDWriteTextAnalysisSource *source,
   4740         UINT32 position,
   4741         UINT32 length,
   4742         IDWriteTextAnalysisSink *sink) = 0;
   4743 
   4744     virtual HRESULT STDMETHODCALLTYPE AnalyzeLineBreakpoints(
   4745         IDWriteTextAnalysisSource *source,
   4746         UINT32 position,
   4747         UINT32 length,
   4748         IDWriteTextAnalysisSink *sink) = 0;
   4749 
   4750     virtual HRESULT STDMETHODCALLTYPE GetGlyphs(
   4751         const WCHAR *text,
   4752         UINT32 length,
   4753         IDWriteFontFace *font_face,
   4754         WINBOOL is_sideways,
   4755         WINBOOL is_rtl,
   4756         const DWRITE_SCRIPT_ANALYSIS *analysis,
   4757         const WCHAR *locale,
   4758         IDWriteNumberSubstitution *substitution,
   4759         const DWRITE_TYPOGRAPHIC_FEATURES **features,
   4760         const UINT32 *feature_range_len,
   4761         UINT32 feature_ranges,
   4762         UINT32 max_glyph_count,
   4763         UINT16 *clustermap,
   4764         DWRITE_SHAPING_TEXT_PROPERTIES *text_props,
   4765         UINT16 *glyph_indices,
   4766         DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,
   4767         UINT32 *actual_glyph_count) = 0;
   4768 
   4769     virtual HRESULT STDMETHODCALLTYPE GetGlyphPlacements(
   4770         const WCHAR *text,
   4771         const UINT16 *clustermap,
   4772         DWRITE_SHAPING_TEXT_PROPERTIES *props,
   4773         UINT32 text_len,
   4774         const UINT16 *glyph_indices,
   4775         const DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,
   4776         UINT32 glyph_count,
   4777         IDWriteFontFace *font_face,
   4778         FLOAT fontEmSize,
   4779         WINBOOL is_sideways,
   4780         WINBOOL is_rtl,
   4781         const DWRITE_SCRIPT_ANALYSIS *analysis,
   4782         const WCHAR *locale,
   4783         const DWRITE_TYPOGRAPHIC_FEATURES **features,
   4784         const UINT32 *feature_range_len,
   4785         UINT32 feature_ranges,
   4786         FLOAT *glyph_advances,
   4787         DWRITE_GLYPH_OFFSET *glyph_offsets) = 0;
   4788 
   4789     virtual HRESULT STDMETHODCALLTYPE GetGdiCompatibleGlyphPlacements(
   4790         const WCHAR *text,
   4791         const UINT16 *clustermap,
   4792         DWRITE_SHAPING_TEXT_PROPERTIES *props,
   4793         UINT32 text_len,
   4794         const UINT16 *glyph_indices,
   4795         const DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,
   4796         UINT32 glyph_count,
   4797         IDWriteFontFace *font_face,
   4798         FLOAT fontEmSize,
   4799         FLOAT pixels_per_dip,
   4800         const DWRITE_MATRIX *transform,
   4801         WINBOOL use_gdi_natural,
   4802         WINBOOL is_sideways,
   4803         WINBOOL is_rtl,
   4804         const DWRITE_SCRIPT_ANALYSIS *analysis,
   4805         const WCHAR *locale,
   4806         const DWRITE_TYPOGRAPHIC_FEATURES **features,
   4807         const UINT32 *feature_range_lengths,
   4808         UINT32 feature_ranges,
   4809         FLOAT *glyph_advances,
   4810         DWRITE_GLYPH_OFFSET *glyph_offsets) = 0;
   4811 
   4812 };
   4813 #ifdef __CRT_UUID_DECL
   4814 __CRT_UUID_DECL(IDWriteTextAnalyzer, 0xb7e6163e, 0x7f46, 0x43b4, 0x84,0xb3, 0xe4,0xe6,0x24,0x9c,0x36,0x5d)
   4815 #endif
   4816 #else
   4817 typedef struct IDWriteTextAnalyzerVtbl {
   4818     BEGIN_INTERFACE
   4819 
   4820     /*** IUnknown methods ***/
   4821     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   4822         IDWriteTextAnalyzer *This,
   4823         REFIID riid,
   4824         void **ppvObject);
   4825 
   4826     ULONG (STDMETHODCALLTYPE *AddRef)(
   4827         IDWriteTextAnalyzer *This);
   4828 
   4829     ULONG (STDMETHODCALLTYPE *Release)(
   4830         IDWriteTextAnalyzer *This);
   4831 
   4832     /*** IDWriteTextAnalyzer methods ***/
   4833     HRESULT (STDMETHODCALLTYPE *AnalyzeScript)(
   4834         IDWriteTextAnalyzer *This,
   4835         IDWriteTextAnalysisSource *source,
   4836         UINT32 position,
   4837         UINT32 length,
   4838         IDWriteTextAnalysisSink *sink);
   4839 
   4840     HRESULT (STDMETHODCALLTYPE *AnalyzeBidi)(
   4841         IDWriteTextAnalyzer *This,
   4842         IDWriteTextAnalysisSource *source,
   4843         UINT32 position,
   4844         UINT32 length,
   4845         IDWriteTextAnalysisSink *sink);
   4846 
   4847     HRESULT (STDMETHODCALLTYPE *AnalyzeNumberSubstitution)(
   4848         IDWriteTextAnalyzer *This,
   4849         IDWriteTextAnalysisSource *source,
   4850         UINT32 position,
   4851         UINT32 length,
   4852         IDWriteTextAnalysisSink *sink);
   4853 
   4854     HRESULT (STDMETHODCALLTYPE *AnalyzeLineBreakpoints)(
   4855         IDWriteTextAnalyzer *This,
   4856         IDWriteTextAnalysisSource *source,
   4857         UINT32 position,
   4858         UINT32 length,
   4859         IDWriteTextAnalysisSink *sink);
   4860 
   4861     HRESULT (STDMETHODCALLTYPE *GetGlyphs)(
   4862         IDWriteTextAnalyzer *This,
   4863         const WCHAR *text,
   4864         UINT32 length,
   4865         IDWriteFontFace *font_face,
   4866         WINBOOL is_sideways,
   4867         WINBOOL is_rtl,
   4868         const DWRITE_SCRIPT_ANALYSIS *analysis,
   4869         const WCHAR *locale,
   4870         IDWriteNumberSubstitution *substitution,
   4871         const DWRITE_TYPOGRAPHIC_FEATURES **features,
   4872         const UINT32 *feature_range_len,
   4873         UINT32 feature_ranges,
   4874         UINT32 max_glyph_count,
   4875         UINT16 *clustermap,
   4876         DWRITE_SHAPING_TEXT_PROPERTIES *text_props,
   4877         UINT16 *glyph_indices,
   4878         DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,
   4879         UINT32 *actual_glyph_count);
   4880 
   4881     HRESULT (STDMETHODCALLTYPE *GetGlyphPlacements)(
   4882         IDWriteTextAnalyzer *This,
   4883         const WCHAR *text,
   4884         const UINT16 *clustermap,
   4885         DWRITE_SHAPING_TEXT_PROPERTIES *props,
   4886         UINT32 text_len,
   4887         const UINT16 *glyph_indices,
   4888         const DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,
   4889         UINT32 glyph_count,
   4890         IDWriteFontFace *font_face,
   4891         FLOAT fontEmSize,
   4892         WINBOOL is_sideways,
   4893         WINBOOL is_rtl,
   4894         const DWRITE_SCRIPT_ANALYSIS *analysis,
   4895         const WCHAR *locale,
   4896         const DWRITE_TYPOGRAPHIC_FEATURES **features,
   4897         const UINT32 *feature_range_len,
   4898         UINT32 feature_ranges,
   4899         FLOAT *glyph_advances,
   4900         DWRITE_GLYPH_OFFSET *glyph_offsets);
   4901 
   4902     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleGlyphPlacements)(
   4903         IDWriteTextAnalyzer *This,
   4904         const WCHAR *text,
   4905         const UINT16 *clustermap,
   4906         DWRITE_SHAPING_TEXT_PROPERTIES *props,
   4907         UINT32 text_len,
   4908         const UINT16 *glyph_indices,
   4909         const DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,
   4910         UINT32 glyph_count,
   4911         IDWriteFontFace *font_face,
   4912         FLOAT fontEmSize,
   4913         FLOAT pixels_per_dip,
   4914         const DWRITE_MATRIX *transform,
   4915         WINBOOL use_gdi_natural,
   4916         WINBOOL is_sideways,
   4917         WINBOOL is_rtl,
   4918         const DWRITE_SCRIPT_ANALYSIS *analysis,
   4919         const WCHAR *locale,
   4920         const DWRITE_TYPOGRAPHIC_FEATURES **features,
   4921         const UINT32 *feature_range_lengths,
   4922         UINT32 feature_ranges,
   4923         FLOAT *glyph_advances,
   4924         DWRITE_GLYPH_OFFSET *glyph_offsets);
   4925 
   4926     END_INTERFACE
   4927 } IDWriteTextAnalyzerVtbl;
   4928 
   4929 interface IDWriteTextAnalyzer {
   4930     CONST_VTBL IDWriteTextAnalyzerVtbl* lpVtbl;
   4931 };
   4932 
   4933 #ifdef COBJMACROS
   4934 #ifndef WIDL_C_INLINE_WRAPPERS
   4935 /*** IUnknown methods ***/
   4936 #define IDWriteTextAnalyzer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   4937 #define IDWriteTextAnalyzer_AddRef(This) (This)->lpVtbl->AddRef(This)
   4938 #define IDWriteTextAnalyzer_Release(This) (This)->lpVtbl->Release(This)
   4939 /*** IDWriteTextAnalyzer methods ***/
   4940 #define IDWriteTextAnalyzer_AnalyzeScript(This,source,position,length,sink) (This)->lpVtbl->AnalyzeScript(This,source,position,length,sink)
   4941 #define IDWriteTextAnalyzer_AnalyzeBidi(This,source,position,length,sink) (This)->lpVtbl->AnalyzeBidi(This,source,position,length,sink)
   4942 #define IDWriteTextAnalyzer_AnalyzeNumberSubstitution(This,source,position,length,sink) (This)->lpVtbl->AnalyzeNumberSubstitution(This,source,position,length,sink)
   4943 #define IDWriteTextAnalyzer_AnalyzeLineBreakpoints(This,source,position,length,sink) (This)->lpVtbl->AnalyzeLineBreakpoints(This,source,position,length,sink)
   4944 #define IDWriteTextAnalyzer_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)
   4945 #define IDWriteTextAnalyzer_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)
   4946 #define IDWriteTextAnalyzer_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)
   4947 #else
   4948 /*** IUnknown methods ***/
   4949 static inline HRESULT IDWriteTextAnalyzer_QueryInterface(IDWriteTextAnalyzer* This,REFIID riid,void **ppvObject) {
   4950     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4951 }
   4952 static inline ULONG IDWriteTextAnalyzer_AddRef(IDWriteTextAnalyzer* This) {
   4953     return This->lpVtbl->AddRef(This);
   4954 }
   4955 static inline ULONG IDWriteTextAnalyzer_Release(IDWriteTextAnalyzer* This) {
   4956     return This->lpVtbl->Release(This);
   4957 }
   4958 /*** IDWriteTextAnalyzer methods ***/
   4959 static inline HRESULT IDWriteTextAnalyzer_AnalyzeScript(IDWriteTextAnalyzer* This,IDWriteTextAnalysisSource *source,UINT32 position,UINT32 length,IDWriteTextAnalysisSink *sink) {
   4960     return This->lpVtbl->AnalyzeScript(This,source,position,length,sink);
   4961 }
   4962 static inline HRESULT IDWriteTextAnalyzer_AnalyzeBidi(IDWriteTextAnalyzer* This,IDWriteTextAnalysisSource *source,UINT32 position,UINT32 length,IDWriteTextAnalysisSink *sink) {
   4963     return This->lpVtbl->AnalyzeBidi(This,source,position,length,sink);
   4964 }
   4965 static inline HRESULT IDWriteTextAnalyzer_AnalyzeNumberSubstitution(IDWriteTextAnalyzer* This,IDWriteTextAnalysisSource *source,UINT32 position,UINT32 length,IDWriteTextAnalysisSink *sink) {
   4966     return This->lpVtbl->AnalyzeNumberSubstitution(This,source,position,length,sink);
   4967 }
   4968 static inline HRESULT IDWriteTextAnalyzer_AnalyzeLineBreakpoints(IDWriteTextAnalyzer* This,IDWriteTextAnalysisSource *source,UINT32 position,UINT32 length,IDWriteTextAnalysisSink *sink) {
   4969     return This->lpVtbl->AnalyzeLineBreakpoints(This,source,position,length,sink);
   4970 }
   4971 static inline HRESULT IDWriteTextAnalyzer_GetGlyphs(IDWriteTextAnalyzer* 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) {
   4972     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);
   4973 }
   4974 static inline HRESULT IDWriteTextAnalyzer_GetGlyphPlacements(IDWriteTextAnalyzer* 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) {
   4975     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);
   4976 }
   4977 static inline HRESULT IDWriteTextAnalyzer_GetGdiCompatibleGlyphPlacements(IDWriteTextAnalyzer* 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) {
   4978     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);
   4979 }
   4980 #endif
   4981 #endif
   4982 
   4983 #endif
   4984 
   4985 
   4986 #endif  /* __IDWriteTextAnalyzer_INTERFACE_DEFINED__ */
   4987 
   4988 /*****************************************************************************
   4989  * IDWriteGlyphRunAnalysis interface
   4990  */
   4991 #ifndef __IDWriteGlyphRunAnalysis_INTERFACE_DEFINED__
   4992 #define __IDWriteGlyphRunAnalysis_INTERFACE_DEFINED__
   4993 
   4994 DEFINE_GUID(IID_IDWriteGlyphRunAnalysis, 0x7d97dbf7, 0xe085, 0x42d4, 0x81,0xe3, 0x6a,0x88,0x3b,0xde,0xd1,0x18);
   4995 #if defined(__cplusplus) && !defined(CINTERFACE)
   4996 MIDL_INTERFACE("7d97dbf7-e085-42d4-81e3-6a883bded118")
   4997 IDWriteGlyphRunAnalysis : public IUnknown
   4998 {
   4999     virtual HRESULT STDMETHODCALLTYPE GetAlphaTextureBounds(
   5000         DWRITE_TEXTURE_TYPE type,
   5001         RECT *bounds) = 0;
   5002 
   5003     virtual HRESULT STDMETHODCALLTYPE CreateAlphaTexture(
   5004         DWRITE_TEXTURE_TYPE type,
   5005         const RECT *bounds,
   5006         BYTE *alphaValues,
   5007         UINT32 bufferSize) = 0;
   5008 
   5009     virtual HRESULT STDMETHODCALLTYPE GetAlphaBlendParams(
   5010         IDWriteRenderingParams *renderingParams,
   5011         FLOAT *blendGamma,
   5012         FLOAT *blendEnhancedContrast,
   5013         FLOAT *blendClearTypeLevel) = 0;
   5014 
   5015 };
   5016 #ifdef __CRT_UUID_DECL
   5017 __CRT_UUID_DECL(IDWriteGlyphRunAnalysis, 0x7d97dbf7, 0xe085, 0x42d4, 0x81,0xe3, 0x6a,0x88,0x3b,0xde,0xd1,0x18)
   5018 #endif
   5019 #else
   5020 typedef struct IDWriteGlyphRunAnalysisVtbl {
   5021     BEGIN_INTERFACE
   5022 
   5023     /*** IUnknown methods ***/
   5024     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   5025         IDWriteGlyphRunAnalysis *This,
   5026         REFIID riid,
   5027         void **ppvObject);
   5028 
   5029     ULONG (STDMETHODCALLTYPE *AddRef)(
   5030         IDWriteGlyphRunAnalysis *This);
   5031 
   5032     ULONG (STDMETHODCALLTYPE *Release)(
   5033         IDWriteGlyphRunAnalysis *This);
   5034 
   5035     /*** IDWriteGlyphRunAnalysis methods ***/
   5036     HRESULT (STDMETHODCALLTYPE *GetAlphaTextureBounds)(
   5037         IDWriteGlyphRunAnalysis *This,
   5038         DWRITE_TEXTURE_TYPE type,
   5039         RECT *bounds);
   5040 
   5041     HRESULT (STDMETHODCALLTYPE *CreateAlphaTexture)(
   5042         IDWriteGlyphRunAnalysis *This,
   5043         DWRITE_TEXTURE_TYPE type,
   5044         const RECT *bounds,
   5045         BYTE *alphaValues,
   5046         UINT32 bufferSize);
   5047 
   5048     HRESULT (STDMETHODCALLTYPE *GetAlphaBlendParams)(
   5049         IDWriteGlyphRunAnalysis *This,
   5050         IDWriteRenderingParams *renderingParams,
   5051         FLOAT *blendGamma,
   5052         FLOAT *blendEnhancedContrast,
   5053         FLOAT *blendClearTypeLevel);
   5054 
   5055     END_INTERFACE
   5056 } IDWriteGlyphRunAnalysisVtbl;
   5057 
   5058 interface IDWriteGlyphRunAnalysis {
   5059     CONST_VTBL IDWriteGlyphRunAnalysisVtbl* lpVtbl;
   5060 };
   5061 
   5062 #ifdef COBJMACROS
   5063 #ifndef WIDL_C_INLINE_WRAPPERS
   5064 /*** IUnknown methods ***/
   5065 #define IDWriteGlyphRunAnalysis_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   5066 #define IDWriteGlyphRunAnalysis_AddRef(This) (This)->lpVtbl->AddRef(This)
   5067 #define IDWriteGlyphRunAnalysis_Release(This) (This)->lpVtbl->Release(This)
   5068 /*** IDWriteGlyphRunAnalysis methods ***/
   5069 #define IDWriteGlyphRunAnalysis_GetAlphaTextureBounds(This,type,bounds) (This)->lpVtbl->GetAlphaTextureBounds(This,type,bounds)
   5070 #define IDWriteGlyphRunAnalysis_CreateAlphaTexture(This,type,bounds,alphaValues,bufferSize) (This)->lpVtbl->CreateAlphaTexture(This,type,bounds,alphaValues,bufferSize)
   5071 #define IDWriteGlyphRunAnalysis_GetAlphaBlendParams(This,renderingParams,blendGamma,blendEnhancedContrast,blendClearTypeLevel) (This)->lpVtbl->GetAlphaBlendParams(This,renderingParams,blendGamma,blendEnhancedContrast,blendClearTypeLevel)
   5072 #else
   5073 /*** IUnknown methods ***/
   5074 static inline HRESULT IDWriteGlyphRunAnalysis_QueryInterface(IDWriteGlyphRunAnalysis* This,REFIID riid,void **ppvObject) {
   5075     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   5076 }
   5077 static inline ULONG IDWriteGlyphRunAnalysis_AddRef(IDWriteGlyphRunAnalysis* This) {
   5078     return This->lpVtbl->AddRef(This);
   5079 }
   5080 static inline ULONG IDWriteGlyphRunAnalysis_Release(IDWriteGlyphRunAnalysis* This) {
   5081     return This->lpVtbl->Release(This);
   5082 }
   5083 /*** IDWriteGlyphRunAnalysis methods ***/
   5084 static inline HRESULT IDWriteGlyphRunAnalysis_GetAlphaTextureBounds(IDWriteGlyphRunAnalysis* This,DWRITE_TEXTURE_TYPE type,RECT *bounds) {
   5085     return This->lpVtbl->GetAlphaTextureBounds(This,type,bounds);
   5086 }
   5087 static inline HRESULT IDWriteGlyphRunAnalysis_CreateAlphaTexture(IDWriteGlyphRunAnalysis* This,DWRITE_TEXTURE_TYPE type,const RECT *bounds,BYTE *alphaValues,UINT32 bufferSize) {
   5088     return This->lpVtbl->CreateAlphaTexture(This,type,bounds,alphaValues,bufferSize);
   5089 }
   5090 static inline HRESULT IDWriteGlyphRunAnalysis_GetAlphaBlendParams(IDWriteGlyphRunAnalysis* This,IDWriteRenderingParams *renderingParams,FLOAT *blendGamma,FLOAT *blendEnhancedContrast,FLOAT *blendClearTypeLevel) {
   5091     return This->lpVtbl->GetAlphaBlendParams(This,renderingParams,blendGamma,blendEnhancedContrast,blendClearTypeLevel);
   5092 }
   5093 #endif
   5094 #endif
   5095 
   5096 #endif
   5097 
   5098 
   5099 #endif  /* __IDWriteGlyphRunAnalysis_INTERFACE_DEFINED__ */
   5100 
   5101 /*****************************************************************************
   5102  * IDWriteFactory interface
   5103  */
   5104 #ifndef __IDWriteFactory_INTERFACE_DEFINED__
   5105 #define __IDWriteFactory_INTERFACE_DEFINED__
   5106 
   5107 DEFINE_GUID(IID_IDWriteFactory, 0xb859ee5a, 0xd838, 0x4b5b, 0xa2,0xe8, 0x1a,0xdc,0x7d,0x93,0xdb,0x48);
   5108 #if defined(__cplusplus) && !defined(CINTERFACE)
   5109 MIDL_INTERFACE("b859ee5a-d838-4b5b-a2e8-1adc7d93db48")
   5110 IDWriteFactory : public IUnknown
   5111 {
   5112     virtual HRESULT STDMETHODCALLTYPE GetSystemFontCollection(
   5113         IDWriteFontCollection **collection,
   5114         WINBOOL check_for_updates = FALSE) = 0;
   5115 
   5116     virtual HRESULT STDMETHODCALLTYPE CreateCustomFontCollection(
   5117         IDWriteFontCollectionLoader *loader,
   5118         const void *key,
   5119         UINT32 key_size,
   5120         IDWriteFontCollection **collection) = 0;
   5121 
   5122     virtual HRESULT STDMETHODCALLTYPE RegisterFontCollectionLoader(
   5123         IDWriteFontCollectionLoader *loader) = 0;
   5124 
   5125     virtual HRESULT STDMETHODCALLTYPE UnregisterFontCollectionLoader(
   5126         IDWriteFontCollectionLoader *loader) = 0;
   5127 
   5128     virtual HRESULT STDMETHODCALLTYPE CreateFontFileReference(
   5129         const WCHAR *path,
   5130         const FILETIME *writetime,
   5131         IDWriteFontFile **font_file) = 0;
   5132 
   5133     virtual HRESULT STDMETHODCALLTYPE CreateCustomFontFileReference(
   5134         const void *reference_key,
   5135         UINT32 key_size,
   5136         IDWriteFontFileLoader *loader,
   5137         IDWriteFontFile **font_file) = 0;
   5138 
   5139     virtual HRESULT STDMETHODCALLTYPE CreateFontFace(
   5140         DWRITE_FONT_FACE_TYPE facetype,
   5141         UINT32 files_number,
   5142         IDWriteFontFile *const *font_files,
   5143         UINT32 index,
   5144         DWRITE_FONT_SIMULATIONS sim_flags,
   5145         IDWriteFontFace **font_face) = 0;
   5146 
   5147     virtual HRESULT STDMETHODCALLTYPE CreateRenderingParams(
   5148         IDWriteRenderingParams **params) = 0;
   5149 
   5150     virtual HRESULT STDMETHODCALLTYPE CreateMonitorRenderingParams(
   5151         HMONITOR monitor,
   5152         IDWriteRenderingParams **params) = 0;
   5153 
   5154     virtual HRESULT STDMETHODCALLTYPE CreateCustomRenderingParams(
   5155         FLOAT gamma,
   5156         FLOAT enhancedContrast,
   5157         FLOAT cleartype_level,
   5158         DWRITE_PIXEL_GEOMETRY geometry,
   5159         DWRITE_RENDERING_MODE mode,
   5160         IDWriteRenderingParams **params) = 0;
   5161 
   5162     virtual HRESULT STDMETHODCALLTYPE RegisterFontFileLoader(
   5163         IDWriteFontFileLoader *loader) = 0;
   5164 
   5165     virtual HRESULT STDMETHODCALLTYPE UnregisterFontFileLoader(
   5166         IDWriteFontFileLoader *loader) = 0;
   5167 
   5168     virtual HRESULT STDMETHODCALLTYPE CreateTextFormat(
   5169         const WCHAR *family_name,
   5170         IDWriteFontCollection *collection,
   5171         DWRITE_FONT_WEIGHT weight,
   5172         DWRITE_FONT_STYLE style,
   5173         DWRITE_FONT_STRETCH stretch,
   5174         FLOAT size,
   5175         const WCHAR *locale,
   5176         IDWriteTextFormat **format) = 0;
   5177 
   5178     virtual HRESULT STDMETHODCALLTYPE CreateTypography(
   5179         IDWriteTypography **typography) = 0;
   5180 
   5181     virtual HRESULT STDMETHODCALLTYPE GetGdiInterop(
   5182         IDWriteGdiInterop **gdi_interop) = 0;
   5183 
   5184     virtual HRESULT STDMETHODCALLTYPE CreateTextLayout(
   5185         const WCHAR *string,
   5186         UINT32 len,
   5187         IDWriteTextFormat *format,
   5188         FLOAT max_width,
   5189         FLOAT max_height,
   5190         IDWriteTextLayout **layout) = 0;
   5191 
   5192     virtual HRESULT STDMETHODCALLTYPE CreateGdiCompatibleTextLayout(
   5193         const WCHAR *string,
   5194         UINT32 len,
   5195         IDWriteTextFormat *format,
   5196         FLOAT layout_width,
   5197         FLOAT layout_height,
   5198         FLOAT pixels_per_dip,
   5199         const DWRITE_MATRIX *transform,
   5200         WINBOOL use_gdi_natural,
   5201         IDWriteTextLayout **layout) = 0;
   5202 
   5203     virtual HRESULT STDMETHODCALLTYPE CreateEllipsisTrimmingSign(
   5204         IDWriteTextFormat *format,
   5205         IDWriteInlineObject **trimming_sign) = 0;
   5206 
   5207     virtual HRESULT STDMETHODCALLTYPE CreateTextAnalyzer(
   5208         IDWriteTextAnalyzer **analyzer) = 0;
   5209 
   5210     virtual HRESULT STDMETHODCALLTYPE CreateNumberSubstitution(
   5211         DWRITE_NUMBER_SUBSTITUTION_METHOD method,
   5212         const WCHAR *locale,
   5213         WINBOOL ignore_user_override,
   5214         IDWriteNumberSubstitution **substitution) = 0;
   5215 
   5216     virtual HRESULT STDMETHODCALLTYPE CreateGlyphRunAnalysis(
   5217         const DWRITE_GLYPH_RUN *glyph_run,
   5218         FLOAT pixels_per_dip,
   5219         const DWRITE_MATRIX *transform,
   5220         DWRITE_RENDERING_MODE rendering_mode,
   5221         DWRITE_MEASURING_MODE measuring_mode,
   5222         FLOAT baseline_x,
   5223         FLOAT baseline_y,
   5224         IDWriteGlyphRunAnalysis **analysis) = 0;
   5225 
   5226 };
   5227 #ifdef __CRT_UUID_DECL
   5228 __CRT_UUID_DECL(IDWriteFactory, 0xb859ee5a, 0xd838, 0x4b5b, 0xa2,0xe8, 0x1a,0xdc,0x7d,0x93,0xdb,0x48)
   5229 #endif
   5230 #else
   5231 typedef struct IDWriteFactoryVtbl {
   5232     BEGIN_INTERFACE
   5233 
   5234     /*** IUnknown methods ***/
   5235     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   5236         IDWriteFactory *This,
   5237         REFIID riid,
   5238         void **ppvObject);
   5239 
   5240     ULONG (STDMETHODCALLTYPE *AddRef)(
   5241         IDWriteFactory *This);
   5242 
   5243     ULONG (STDMETHODCALLTYPE *Release)(
   5244         IDWriteFactory *This);
   5245 
   5246     /*** IDWriteFactory methods ***/
   5247     HRESULT (STDMETHODCALLTYPE *GetSystemFontCollection)(
   5248         IDWriteFactory *This,
   5249         IDWriteFontCollection **collection,
   5250         WINBOOL check_for_updates);
   5251 
   5252     HRESULT (STDMETHODCALLTYPE *CreateCustomFontCollection)(
   5253         IDWriteFactory *This,
   5254         IDWriteFontCollectionLoader *loader,
   5255         const void *key,
   5256         UINT32 key_size,
   5257         IDWriteFontCollection **collection);
   5258 
   5259     HRESULT (STDMETHODCALLTYPE *RegisterFontCollectionLoader)(
   5260         IDWriteFactory *This,
   5261         IDWriteFontCollectionLoader *loader);
   5262 
   5263     HRESULT (STDMETHODCALLTYPE *UnregisterFontCollectionLoader)(
   5264         IDWriteFactory *This,
   5265         IDWriteFontCollectionLoader *loader);
   5266 
   5267     HRESULT (STDMETHODCALLTYPE *CreateFontFileReference)(
   5268         IDWriteFactory *This,
   5269         const WCHAR *path,
   5270         const FILETIME *writetime,
   5271         IDWriteFontFile **font_file);
   5272 
   5273     HRESULT (STDMETHODCALLTYPE *CreateCustomFontFileReference)(
   5274         IDWriteFactory *This,
   5275         const void *reference_key,
   5276         UINT32 key_size,
   5277         IDWriteFontFileLoader *loader,
   5278         IDWriteFontFile **font_file);
   5279 
   5280     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
   5281         IDWriteFactory *This,
   5282         DWRITE_FONT_FACE_TYPE facetype,
   5283         UINT32 files_number,
   5284         IDWriteFontFile *const *font_files,
   5285         UINT32 index,
   5286         DWRITE_FONT_SIMULATIONS sim_flags,
   5287         IDWriteFontFace **font_face);
   5288 
   5289     HRESULT (STDMETHODCALLTYPE *CreateRenderingParams)(
   5290         IDWriteFactory *This,
   5291         IDWriteRenderingParams **params);
   5292 
   5293     HRESULT (STDMETHODCALLTYPE *CreateMonitorRenderingParams)(
   5294         IDWriteFactory *This,
   5295         HMONITOR monitor,
   5296         IDWriteRenderingParams **params);
   5297 
   5298     HRESULT (STDMETHODCALLTYPE *CreateCustomRenderingParams)(
   5299         IDWriteFactory *This,
   5300         FLOAT gamma,
   5301         FLOAT enhancedContrast,
   5302         FLOAT cleartype_level,
   5303         DWRITE_PIXEL_GEOMETRY geometry,
   5304         DWRITE_RENDERING_MODE mode,
   5305         IDWriteRenderingParams **params);
   5306 
   5307     HRESULT (STDMETHODCALLTYPE *RegisterFontFileLoader)(
   5308         IDWriteFactory *This,
   5309         IDWriteFontFileLoader *loader);
   5310 
   5311     HRESULT (STDMETHODCALLTYPE *UnregisterFontFileLoader)(
   5312         IDWriteFactory *This,
   5313         IDWriteFontFileLoader *loader);
   5314 
   5315     HRESULT (STDMETHODCALLTYPE *CreateTextFormat)(
   5316         IDWriteFactory *This,
   5317         const WCHAR *family_name,
   5318         IDWriteFontCollection *collection,
   5319         DWRITE_FONT_WEIGHT weight,
   5320         DWRITE_FONT_STYLE style,
   5321         DWRITE_FONT_STRETCH stretch,
   5322         FLOAT size,
   5323         const WCHAR *locale,
   5324         IDWriteTextFormat **format);
   5325 
   5326     HRESULT (STDMETHODCALLTYPE *CreateTypography)(
   5327         IDWriteFactory *This,
   5328         IDWriteTypography **typography);
   5329 
   5330     HRESULT (STDMETHODCALLTYPE *GetGdiInterop)(
   5331         IDWriteFactory *This,
   5332         IDWriteGdiInterop **gdi_interop);
   5333 
   5334     HRESULT (STDMETHODCALLTYPE *CreateTextLayout)(
   5335         IDWriteFactory *This,
   5336         const WCHAR *string,
   5337         UINT32 len,
   5338         IDWriteTextFormat *format,
   5339         FLOAT max_width,
   5340         FLOAT max_height,
   5341         IDWriteTextLayout **layout);
   5342 
   5343     HRESULT (STDMETHODCALLTYPE *CreateGdiCompatibleTextLayout)(
   5344         IDWriteFactory *This,
   5345         const WCHAR *string,
   5346         UINT32 len,
   5347         IDWriteTextFormat *format,
   5348         FLOAT layout_width,
   5349         FLOAT layout_height,
   5350         FLOAT pixels_per_dip,
   5351         const DWRITE_MATRIX *transform,
   5352         WINBOOL use_gdi_natural,
   5353         IDWriteTextLayout **layout);
   5354 
   5355     HRESULT (STDMETHODCALLTYPE *CreateEllipsisTrimmingSign)(
   5356         IDWriteFactory *This,
   5357         IDWriteTextFormat *format,
   5358         IDWriteInlineObject **trimming_sign);
   5359 
   5360     HRESULT (STDMETHODCALLTYPE *CreateTextAnalyzer)(
   5361         IDWriteFactory *This,
   5362         IDWriteTextAnalyzer **analyzer);
   5363 
   5364     HRESULT (STDMETHODCALLTYPE *CreateNumberSubstitution)(
   5365         IDWriteFactory *This,
   5366         DWRITE_NUMBER_SUBSTITUTION_METHOD method,
   5367         const WCHAR *locale,
   5368         WINBOOL ignore_user_override,
   5369         IDWriteNumberSubstitution **substitution);
   5370 
   5371     HRESULT (STDMETHODCALLTYPE *CreateGlyphRunAnalysis)(
   5372         IDWriteFactory *This,
   5373         const DWRITE_GLYPH_RUN *glyph_run,
   5374         FLOAT pixels_per_dip,
   5375         const DWRITE_MATRIX *transform,
   5376         DWRITE_RENDERING_MODE rendering_mode,
   5377         DWRITE_MEASURING_MODE measuring_mode,
   5378         FLOAT baseline_x,
   5379         FLOAT baseline_y,
   5380         IDWriteGlyphRunAnalysis **analysis);
   5381 
   5382     END_INTERFACE
   5383 } IDWriteFactoryVtbl;
   5384 
   5385 interface IDWriteFactory {
   5386     CONST_VTBL IDWriteFactoryVtbl* lpVtbl;
   5387 };
   5388 
   5389 #ifdef COBJMACROS
   5390 #ifndef WIDL_C_INLINE_WRAPPERS
   5391 /*** IUnknown methods ***/
   5392 #define IDWriteFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   5393 #define IDWriteFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
   5394 #define IDWriteFactory_Release(This) (This)->lpVtbl->Release(This)
   5395 /*** IDWriteFactory methods ***/
   5396 #define IDWriteFactory_GetSystemFontCollection(This,collection,check_for_updates) (This)->lpVtbl->GetSystemFontCollection(This,collection,check_for_updates)
   5397 #define IDWriteFactory_CreateCustomFontCollection(This,loader,key,key_size,collection) (This)->lpVtbl->CreateCustomFontCollection(This,loader,key,key_size,collection)
   5398 #define IDWriteFactory_RegisterFontCollectionLoader(This,loader) (This)->lpVtbl->RegisterFontCollectionLoader(This,loader)
   5399 #define IDWriteFactory_UnregisterFontCollectionLoader(This,loader) (This)->lpVtbl->UnregisterFontCollectionLoader(This,loader)
   5400 #define IDWriteFactory_CreateFontFileReference(This,path,writetime,font_file) (This)->lpVtbl->CreateFontFileReference(This,path,writetime,font_file)
   5401 #define IDWriteFactory_CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file) (This)->lpVtbl->CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file)
   5402 #define IDWriteFactory_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)
   5403 #define IDWriteFactory_CreateRenderingParams(This,params) (This)->lpVtbl->CreateRenderingParams(This,params)
   5404 #define IDWriteFactory_CreateMonitorRenderingParams(This,monitor,params) (This)->lpVtbl->CreateMonitorRenderingParams(This,monitor,params)
   5405 #define IDWriteFactory_CreateCustomRenderingParams(This,gamma,enhancedContrast,cleartype_level,geometry,mode,params) (This)->lpVtbl->CreateCustomRenderingParams(This,gamma,enhancedContrast,cleartype_level,geometry,mode,params)
   5406 #define IDWriteFactory_RegisterFontFileLoader(This,loader) (This)->lpVtbl->RegisterFontFileLoader(This,loader)
   5407 #define IDWriteFactory_UnregisterFontFileLoader(This,loader) (This)->lpVtbl->UnregisterFontFileLoader(This,loader)
   5408 #define IDWriteFactory_CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format) (This)->lpVtbl->CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format)
   5409 #define IDWriteFactory_CreateTypography(This,typography) (This)->lpVtbl->CreateTypography(This,typography)
   5410 #define IDWriteFactory_GetGdiInterop(This,gdi_interop) (This)->lpVtbl->GetGdiInterop(This,gdi_interop)
   5411 #define IDWriteFactory_CreateTextLayout(This,string,len,format,max_width,max_height,layout) (This)->lpVtbl->CreateTextLayout(This,string,len,format,max_width,max_height,layout)
   5412 #define IDWriteFactory_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)
   5413 #define IDWriteFactory_CreateEllipsisTrimmingSign(This,format,trimming_sign) (This)->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign)
   5414 #define IDWriteFactory_CreateTextAnalyzer(This,analyzer) (This)->lpVtbl->CreateTextAnalyzer(This,analyzer)
   5415 #define IDWriteFactory_CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution) (This)->lpVtbl->CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution)
   5416 #define IDWriteFactory_CreateGlyphRunAnalysis(This,glyph_run,pixels_per_dip,transform,rendering_mode,measuring_mode,baseline_x,baseline_y,analysis) (This)->lpVtbl->CreateGlyphRunAnalysis(This,glyph_run,pixels_per_dip,transform,rendering_mode,measuring_mode,baseline_x,baseline_y,analysis)
   5417 #else
   5418 /*** IUnknown methods ***/
   5419 static inline HRESULT IDWriteFactory_QueryInterface(IDWriteFactory* This,REFIID riid,void **ppvObject) {
   5420     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   5421 }
   5422 static inline ULONG IDWriteFactory_AddRef(IDWriteFactory* This) {
   5423     return This->lpVtbl->AddRef(This);
   5424 }
   5425 static inline ULONG IDWriteFactory_Release(IDWriteFactory* This) {
   5426     return This->lpVtbl->Release(This);
   5427 }
   5428 /*** IDWriteFactory methods ***/
   5429 static inline HRESULT IDWriteFactory_GetSystemFontCollection(IDWriteFactory* This,IDWriteFontCollection **collection,WINBOOL check_for_updates) {
   5430     return This->lpVtbl->GetSystemFontCollection(This,collection,check_for_updates);
   5431 }
   5432 static inline HRESULT IDWriteFactory_CreateCustomFontCollection(IDWriteFactory* This,IDWriteFontCollectionLoader *loader,const void *key,UINT32 key_size,IDWriteFontCollection **collection) {
   5433     return This->lpVtbl->CreateCustomFontCollection(This,loader,key,key_size,collection);
   5434 }
   5435 static inline HRESULT IDWriteFactory_RegisterFontCollectionLoader(IDWriteFactory* This,IDWriteFontCollectionLoader *loader) {
   5436     return This->lpVtbl->RegisterFontCollectionLoader(This,loader);
   5437 }
   5438 static inline HRESULT IDWriteFactory_UnregisterFontCollectionLoader(IDWriteFactory* This,IDWriteFontCollectionLoader *loader) {
   5439     return This->lpVtbl->UnregisterFontCollectionLoader(This,loader);
   5440 }
   5441 static inline HRESULT IDWriteFactory_CreateFontFileReference(IDWriteFactory* This,const WCHAR *path,const FILETIME *writetime,IDWriteFontFile **font_file) {
   5442     return This->lpVtbl->CreateFontFileReference(This,path,writetime,font_file);
   5443 }
   5444 static inline HRESULT IDWriteFactory_CreateCustomFontFileReference(IDWriteFactory* This,const void *reference_key,UINT32 key_size,IDWriteFontFileLoader *loader,IDWriteFontFile **font_file) {
   5445     return This->lpVtbl->CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file);
   5446 }
   5447 static inline HRESULT IDWriteFactory_CreateFontFace(IDWriteFactory* This,DWRITE_FONT_FACE_TYPE facetype,UINT32 files_number,IDWriteFontFile *const *font_files,UINT32 index,DWRITE_FONT_SIMULATIONS sim_flags,IDWriteFontFace **font_face) {
   5448     return This->lpVtbl->CreateFontFace(This,facetype,files_number,font_files,index,sim_flags,font_face);
   5449 }
   5450 static inline HRESULT IDWriteFactory_CreateRenderingParams(IDWriteFactory* This,IDWriteRenderingParams **params) {
   5451     return This->lpVtbl->CreateRenderingParams(This,params);
   5452 }
   5453 static inline HRESULT IDWriteFactory_CreateMonitorRenderingParams(IDWriteFactory* This,HMONITOR monitor,IDWriteRenderingParams **params) {
   5454     return This->lpVtbl->CreateMonitorRenderingParams(This,monitor,params);
   5455 }
   5456 static inline HRESULT IDWriteFactory_CreateCustomRenderingParams(IDWriteFactory* This,FLOAT gamma,FLOAT enhancedContrast,FLOAT cleartype_level,DWRITE_PIXEL_GEOMETRY geometry,DWRITE_RENDERING_MODE mode,IDWriteRenderingParams **params) {
   5457     return This->lpVtbl->CreateCustomRenderingParams(This,gamma,enhancedContrast,cleartype_level,geometry,mode,params);
   5458 }
   5459 static inline HRESULT IDWriteFactory_RegisterFontFileLoader(IDWriteFactory* This,IDWriteFontFileLoader *loader) {
   5460     return This->lpVtbl->RegisterFontFileLoader(This,loader);
   5461 }
   5462 static inline HRESULT IDWriteFactory_UnregisterFontFileLoader(IDWriteFactory* This,IDWriteFontFileLoader *loader) {
   5463     return This->lpVtbl->UnregisterFontFileLoader(This,loader);
   5464 }
   5465 static inline HRESULT IDWriteFactory_CreateTextFormat(IDWriteFactory* 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) {
   5466     return This->lpVtbl->CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format);
   5467 }
   5468 static inline HRESULT IDWriteFactory_CreateTypography(IDWriteFactory* This,IDWriteTypography **typography) {
   5469     return This->lpVtbl->CreateTypography(This,typography);
   5470 }
   5471 static inline HRESULT IDWriteFactory_GetGdiInterop(IDWriteFactory* This,IDWriteGdiInterop **gdi_interop) {
   5472     return This->lpVtbl->GetGdiInterop(This,gdi_interop);
   5473 }
   5474 static inline HRESULT IDWriteFactory_CreateTextLayout(IDWriteFactory* This,const WCHAR *string,UINT32 len,IDWriteTextFormat *format,FLOAT max_width,FLOAT max_height,IDWriteTextLayout **layout) {
   5475     return This->lpVtbl->CreateTextLayout(This,string,len,format,max_width,max_height,layout);
   5476 }
   5477 static inline HRESULT IDWriteFactory_CreateGdiCompatibleTextLayout(IDWriteFactory* 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) {
   5478     return This->lpVtbl->CreateGdiCompatibleTextLayout(This,string,len,format,layout_width,layout_height,pixels_per_dip,transform,use_gdi_natural,layout);
   5479 }
   5480 static inline HRESULT IDWriteFactory_CreateEllipsisTrimmingSign(IDWriteFactory* This,IDWriteTextFormat *format,IDWriteInlineObject **trimming_sign) {
   5481     return This->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign);
   5482 }
   5483 static inline HRESULT IDWriteFactory_CreateTextAnalyzer(IDWriteFactory* This,IDWriteTextAnalyzer **analyzer) {
   5484     return This->lpVtbl->CreateTextAnalyzer(This,analyzer);
   5485 }
   5486 static inline HRESULT IDWriteFactory_CreateNumberSubstitution(IDWriteFactory* This,DWRITE_NUMBER_SUBSTITUTION_METHOD method,const WCHAR *locale,WINBOOL ignore_user_override,IDWriteNumberSubstitution **substitution) {
   5487     return This->lpVtbl->CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution);
   5488 }
   5489 static inline HRESULT IDWriteFactory_CreateGlyphRunAnalysis(IDWriteFactory* This,const DWRITE_GLYPH_RUN *glyph_run,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,DWRITE_RENDERING_MODE rendering_mode,DWRITE_MEASURING_MODE measuring_mode,FLOAT baseline_x,FLOAT baseline_y,IDWriteGlyphRunAnalysis **analysis) {
   5490     return This->lpVtbl->CreateGlyphRunAnalysis(This,glyph_run,pixels_per_dip,transform,rendering_mode,measuring_mode,baseline_x,baseline_y,analysis);
   5491 }
   5492 #endif
   5493 #endif
   5494 
   5495 #endif
   5496 
   5497 
   5498 #endif  /* __IDWriteFactory_INTERFACE_DEFINED__ */
   5499 
   5500 HRESULT WINAPI DWriteCreateFactory(DWRITE_FACTORY_TYPE,REFIID,IUnknown**);
   5501 #define FACILITY_DWRITE 0x898
   5502 #define DWRITE_ERR_BASE 0x5000
   5503 #define MAKE_DWRITE_HR(severity, code) MAKE_HRESULT(severity, FACILITY_DWRITE, (DWRITE_ERR_BASE + code))
   5504 #define MAKE_DWRITE_HR_ERR(code) MAKE_DWRITE_HR(SEVERITY_ERROR, code)
   5505 /* Begin additional prototypes for all interfaces */
   5506 
   5507 
   5508 /* End additional prototypes */
   5509 
   5510 #ifdef __cplusplus
   5511 }
   5512 #endif
   5513 
   5514 #endif /* __dwrite_h__ */