Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef __INC_DWRITE__
      7 #define __INC_DWRITE__
      8 
      9 #define DWRITEAPI DECLSPEC_IMPORT
     10 
     11 #ifdef __MINGW_USE_BROKEN_INTERFACE
     12 #define __MINGW_POISON_NAME(__IFACE) __IFACE
     13 #else
     14 #define __MINGW_POISON_NAME(__IFACE)\
     15   __IFACE##_layout_has_not_been_verified_and_its_declaration_is_most_likely_incorrect
     16 #endif
     17 
     18 #include <unknwn.h>
     19 
     20 #ifndef __IDWriteBitmapRenderTarget_FWD_DEFINED__
     21 #define __IDWriteBitmapRenderTarget_FWD_DEFINED__
     22 typedef struct IDWriteBitmapRenderTarget IDWriteBitmapRenderTarget;
     23 #endif
     24 
     25 #ifndef __IDWriteFactory_FWD_DEFINED__
     26 #define __IDWriteFactory_FWD_DEFINED__
     27 typedef struct IDWriteFactory IDWriteFactory;
     28 #endif
     29 
     30 #ifndef __IDWriteFont_FWD_DEFINED__
     31 #define __IDWriteFont_FWD_DEFINED__
     32 typedef struct IDWriteFont IDWriteFont;
     33 #endif
     34 
     35 #ifndef __IDWriteFontCollection_FWD_DEFINED__
     36 #define __IDWriteFontCollection_FWD_DEFINED__
     37 typedef struct IDWriteFontCollection IDWriteFontCollection;
     38 #endif
     39 
     40 #ifndef __IDWriteFontFace_FWD_DEFINED__
     41 #define __IDWriteFontFace_FWD_DEFINED__
     42 typedef struct IDWriteFontFace IDWriteFontFace;
     43 #endif
     44 
     45 #ifndef __IDWriteFontFamily_FWD_DEFINED__
     46 #define __IDWriteFontFamily_FWD_DEFINED__
     47 typedef struct IDWriteFontFamily IDWriteFontFamily;
     48 #endif
     49 
     50 #ifndef __IDWriteFontList_FWD_DEFINED__
     51 #define __IDWriteFontList_FWD_DEFINED__
     52 typedef struct IDWriteFontList IDWriteFontList;
     53 #endif
     54 
     55 #ifndef __IDWriteFontFile_FWD_DEFINED__
     56 #define __IDWriteFontFile_FWD_DEFINED__
     57 typedef struct IDWriteFontFile IDWriteFontFile;
     58 #endif
     59 
     60 #ifndef __IDWriteFontFileLoader_FWD_DEFINED__
     61 #define __IDWriteFontFileLoader_FWD_DEFINED__
     62 typedef struct IDWriteFontFileLoader IDWriteFontFileLoader;
     63 #endif
     64 
     65 #ifndef __IDWriteFontFileStream_FWD_DEFINED__
     66 #define __IDWriteFontFileStream_FWD_DEFINED__
     67 typedef struct IDWriteFontFileStream IDWriteFontFileStream;
     68 #endif
     69 
     70 #ifndef __IDWriteFontCollectionLoader_FWD_DEFINED__
     71 #define __IDWriteFontCollectionLoader_FWD_DEFINED__
     72 typedef struct IDWriteFontCollectionLoader IDWriteFontCollectionLoader;
     73 #endif
     74 
     75 #ifndef __IDWriteFontFileEnumerator_FWD_DEFINED__
     76 #define __IDWriteFontFileEnumerator_FWD_DEFINED__
     77 typedef struct IDWriteFontFileEnumerator IDWriteFontFileEnumerator;
     78 #endif
     79 
     80 #ifndef __IDWriteGdiInterop_FWD_DEFINED__
     81 #define __IDWriteGdiInterop_FWD_DEFINED__
     82 typedef struct IDWriteGdiInterop IDWriteGdiInterop;
     83 #endif
     84 
     85 /* Fixme: MSDN says its a typedef, needs verification */
     86 /* http://msdn.microsoft.com/en-us/library/dd756614%28v=VS.85%29.aspx */
     87 #ifndef __IDWriteGeometrySink_FWD_DEFINED__
     88 #define __IDWriteGeometrySink_FWD_DEFINED__
     89 typedef struct ID2D1SimplifiedGeometrySink IDWriteGeometrySink;
     90 #endif
     91 
     92 #ifndef __IDWriteGlyphRunAnalysis_FWD_DEFINED__
     93 #define __IDWriteGlyphRunAnalysis_FWD_DEFINED__
     94 typedef struct IDWriteGlyphRunAnalysis IDWriteGlyphRunAnalysis;
     95 #endif
     96 
     97 #ifndef __IDWriteInlineObject_FWD_DEFINED__
     98 #define __IDWriteInlineObject_FWD_DEFINED__
     99 typedef struct IDWriteInlineObject IDWriteInlineObject;
    100 #endif
    101 
    102 #ifndef __IDWriteLocalFontFileLoader_FWD_DEFINED__
    103 #define __IDWriteLocalFontFileLoader_FWD_DEFINED__
    104 typedef struct IDWriteLocalFontFileLoader IDWriteLocalFontFileLoader;
    105 #endif
    106 
    107 #ifndef __IDWriteLocalizedStrings_FWD_DEFINED__
    108 #define __IDWriteLocalizedStrings_FWD_DEFINED__
    109 typedef struct IDWriteLocalizedStrings IDWriteLocalizedStrings;
    110 #endif
    111 
    112 #ifndef __IDWriteNumberSubstitution_FWD_DEFINED__
    113 #define __IDWriteNumberSubstitution_FWD_DEFINED__
    114 typedef struct IDWriteNumberSubstitution IDWriteNumberSubstitution;
    115 #endif
    116 
    117 #ifndef __IDWritePixelSnapping_FWD_DEFINED__
    118 #define __IDWritePixelSnapping_FWD_DEFINED__
    119 typedef struct IDWritePixelSnapping IDWritePixelSnapping;
    120 #endif
    121 
    122 #ifndef __IDWriteRenderingParams_FWD_DEFINED__
    123 #define __IDWriteRenderingParams_FWD_DEFINED__
    124 typedef struct IDWriteRenderingParams IDWriteRenderingParams;
    125 #endif
    126 
    127 #ifndef __IDWriteTextAnalysisSink_FWD_DEFINED__
    128 #define __IDWriteTextAnalysisSink_FWD_DEFINED__
    129 typedef struct IDWriteTextAnalysisSink IDWriteTextAnalysisSink;
    130 #endif
    131 
    132 #ifndef __IDWriteTextAnalysisSource_FWD_DEFINED__
    133 #define __IDWriteTextAnalysisSource_FWD_DEFINED__
    134 typedef struct IDWriteTextAnalysisSource IDWriteTextAnalysisSource;
    135 #endif
    136 
    137 #ifndef __IDWriteTextAnalyzer_FWD_DEFINED__
    138 #define __IDWriteTextAnalyzer_FWD_DEFINED__
    139 typedef struct IDWriteTextAnalyzer IDWriteTextAnalyzer;
    140 #endif
    141 
    142 #ifndef __IDWriteTextFormat_FWD_DEFINED__
    143 #define __IDWriteTextFormat_FWD_DEFINED__
    144 typedef struct IDWriteTextFormat IDWriteTextFormat;
    145 #endif
    146 
    147 #ifndef __IDWriteTextLayout_FWD_DEFINED__
    148 #define __IDWriteTextLayout_FWD_DEFINED__
    149 typedef struct IDWriteTextLayout IDWriteTextLayout;
    150 #endif
    151 
    152 #ifndef __IDWriteTextRenderer_FWD_DEFINED__
    153 #define __IDWriteTextRenderer_FWD_DEFINED__
    154 typedef struct IDWriteTextRenderer IDWriteTextRenderer;
    155 #endif
    156 
    157 #ifndef __IDWriteTypography_FWD_DEFINED__
    158 #define __IDWriteTypography_FWD_DEFINED__
    159 typedef struct IDWriteTypography IDWriteTypography;
    160 #endif
    161 
    162 #include <dcommon.h>
    163 
    164 typedef enum DWRITE_INFORMATIONAL_STRING_ID {
    165   DWRITE_INFORMATIONAL_STRING_NONE = 0,
    166   DWRITE_INFORMATIONAL_STRING_COPYRIGHT_NOTICE,
    167   DWRITE_INFORMATIONAL_STRING_VERSION_STRINGS,
    168   DWRITE_INFORMATIONAL_STRING_TRADEMARK,
    169   DWRITE_INFORMATIONAL_STRING_MANUFACTURER,
    170   DWRITE_INFORMATIONAL_STRING_DESIGNER,
    171   DWRITE_INFORMATIONAL_STRING_DESIGNER_URL,
    172   DWRITE_INFORMATIONAL_STRING_DESCRIPTION,
    173   DWRITE_INFORMATIONAL_STRING_FONT_VENDOR_URL,
    174   DWRITE_INFORMATIONAL_STRING_LICENSE_DESCRIPTION,
    175   DWRITE_INFORMATIONAL_STRING_LICENSE_INFO_URL,
    176   DWRITE_INFORMATIONAL_STRING_WIN32_FAMILY_NAMES,
    177   DWRITE_INFORMATIONAL_STRING_WIN32_SUBFAMILY_NAMES,
    178   DWRITE_INFORMATIONAL_STRING_PREFERRED_FAMILY_NAMES,
    179   DWRITE_INFORMATIONAL_STRING_PREFERRED_SUBFAMILY_NAMES,
    180   DWRITE_INFORMATIONAL_STRING_SAMPLE_TEXT,
    181   DWRITE_INFORMATIONAL_STRING_FULL_NAME,
    182   DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_NAME,
    183   DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_CID_NAME
    184 } DWRITE_INFORMATIONAL_STRING_ID;
    185 
    186 typedef enum DWRITE_BREAK_CONDITION {
    187   DWRITE_BREAK_CONDITION_NEUTRAL         = 0,
    188   DWRITE_BREAK_CONDITION_CAN_BREAK       = 1,
    189   DWRITE_BREAK_CONDITION_MAY_NOT_BREAK   = 2,
    190   DWRITE_BREAK_CONDITION_MUST_BREAK      = 3
    191 } DWRITE_BREAK_CONDITION;
    192 
    193 typedef enum DWRITE_FACTORY_TYPE {
    194   DWRITE_FACTORY_TYPE_SHARED = 0,
    195   DWRITE_FACTORY_TYPE_ISOLATED
    196 } DWRITE_FACTORY_TYPE;
    197 
    198 typedef enum DWRITE_FLOW_DIRECTION {
    199   DWRITE_FLOW_DIRECTION_TOP_TO_BOTTOM
    200 } DWRITE_FLOW_DIRECTION;
    201 
    202 typedef enum DWRITE_FONT_FACE_TYPE {
    203   DWRITE_FONT_FACE_TYPE_CFF = 0,
    204   DWRITE_FONT_FACE_TYPE_TRUETYPE,
    205   DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION,
    206   DWRITE_FONT_FACE_TYPE_TYPE1,
    207   DWRITE_FONT_FACE_TYPE_VECTOR,
    208   DWRITE_FONT_FACE_TYPE_BITMAP,
    209   DWRITE_FONT_FACE_TYPE_UNKNOWN
    210 } DWRITE_FONT_FACE_TYPE;
    211 
    212 typedef enum DWRITE_FONT_FEATURE_TAG {
    213   DWRITE_FONT_FEATURE_TAG_ALTERNATIVE_FRACTIONS             = 0x63726661,
    214   DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS_FROM_CAPITALS     = 0x63703263,
    215   DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS_FROM_CAPITALS      = 0x63733263,
    216   DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_ALTERNATES             = 0x746c6163,
    217   DWRITE_FONT_FEATURE_TAG_CASE_SENSITIVE_FORMS              = 0x65736163,
    218   DWRITE_FONT_FEATURE_TAG_GLYPH_COMPOSITION_DECOMPOSITION   = 0x706d6363,
    219   DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_LIGATURES              = 0x67696c63,
    220   DWRITE_FONT_FEATURE_TAG_CAPITAL_SPACING                   = 0x70737063,
    221   DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_SWASH                  = 0x68777363,
    222   DWRITE_FONT_FEATURE_TAG_CURSIVE_POSITIONING               = 0x73727563,
    223   DWRITE_FONT_FEATURE_TAG_DISCRETIONARY_LIGATURES           = 0x67696c64,
    224   DWRITE_FONT_FEATURE_TAG_EXPERT_FORMS                      = 0x74707865,
    225   DWRITE_FONT_FEATURE_TAG_FRACTIONS                         = 0x63617266,
    226   DWRITE_FONT_FEATURE_TAG_FULL_WIDTH                        = 0x64697766,
    227   DWRITE_FONT_FEATURE_TAG_HALF_FORMS                        = 0x666c6168,
    228   DWRITE_FONT_FEATURE_TAG_HALANT_FORMS                      = 0x6e6c6168,
    229   DWRITE_FONT_FEATURE_TAG_ALTERNATE_HALF_WIDTH              = 0x746c6168,
    230   DWRITE_FONT_FEATURE_TAG_HISTORICAL_FORMS                  = 0x74736968,
    231   DWRITE_FONT_FEATURE_TAG_HORIZONTAL_KANA_ALTERNATES        = 0x616e6b68,
    232   DWRITE_FONT_FEATURE_TAG_HISTORICAL_LIGATURES              = 0x67696c68,
    233   DWRITE_FONT_FEATURE_TAG_HALF_WIDTH                        = 0x64697768,
    234   DWRITE_FONT_FEATURE_TAG_HOJO_KANJI_FORMS                  = 0x6f6a6f68,
    235   DWRITE_FONT_FEATURE_TAG_JIS04_FORMS                       = 0x3430706a,
    236   DWRITE_FONT_FEATURE_TAG_JIS78_FORMS                       = 0x3837706a,
    237   DWRITE_FONT_FEATURE_TAG_JIS83_FORMS                       = 0x3338706a,
    238   DWRITE_FONT_FEATURE_TAG_JIS90_FORMS                       = 0x3039706a,
    239   DWRITE_FONT_FEATURE_TAG_KERNING                           = 0x6e72656b,
    240   DWRITE_FONT_FEATURE_TAG_STANDARD_LIGATURES                = 0x6167696c,
    241   DWRITE_FONT_FEATURE_TAG_LINING_FIGURES                    = 0x6d756e6c,
    242   DWRITE_FONT_FEATURE_TAG_LOCALIZED_FORMS                   = 0x6c636f6c,
    243   DWRITE_FONT_FEATURE_TAG_MARK_POSITIONING                  = 0x6b72616d,
    244   DWRITE_FONT_FEATURE_TAG_MATHEMATICAL_GREEK                = 0x6b72676d,
    245   DWRITE_FONT_FEATURE_TAG_MARK_TO_MARK_POSITIONING          = 0x6b6d6b6d,
    246   DWRITE_FONT_FEATURE_TAG_ALTERNATE_ANNOTATION_FORMS        = 0x746c616e,
    247   DWRITE_FONT_FEATURE_TAG_NLC_KANJI_FORMS                   = 0x6b636c6e,
    248   DWRITE_FONT_FEATURE_TAG_OLD_STYLE_FIGURES                 = 0x6d756e6f,
    249   DWRITE_FONT_FEATURE_TAG_ORDINALS                          = 0x6e64726f,
    250   DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_ALTERNATE_WIDTH      = 0x746c6170,
    251   DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS                   = 0x70616370,
    252   DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_FIGURES              = 0x6d756e70,
    253   DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_WIDTHS               = 0x64697770,
    254   DWRITE_FONT_FEATURE_TAG_QUARTER_WIDTHS                    = 0x64697771,
    255   DWRITE_FONT_FEATURE_TAG_REQUIRED_LIGATURES                = 0x67696c72,
    256   DWRITE_FONT_FEATURE_TAG_RUBY_NOTATION_FORMS               = 0x79627572,
    257   DWRITE_FONT_FEATURE_TAG_STYLISTIC_ALTERNATES              = 0x746c6173,
    258   DWRITE_FONT_FEATURE_TAG_SCIENTIFIC_INFERIORS              = 0x666e6973,
    259   DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS                    = 0x70636d73,
    260   DWRITE_FONT_FEATURE_TAG_SIMPLIFIED_FORMS                  = 0x6c706d73,
    261   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_1                   = 0x31307373,
    262   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_2                   = 0x32307373,
    263   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_3                   = 0x33307373,
    264   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_4                   = 0x34307373,
    265   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_5                   = 0x35307373,
    266   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_6                   = 0x36307373,
    267   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_7                   = 0x37307373,
    268   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_8                   = 0x38307373,
    269   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_9                   = 0x39307373,
    270   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_10                  = 0x30317373,
    271   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_11                  = 0x31317373,
    272   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_12                  = 0x32317373,
    273   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_13                  = 0x33317373,
    274   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_14                  = 0x34317373,
    275   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_15                  = 0x35317373,
    276   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_16                  = 0x36317373,
    277   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_17                  = 0x37317373,
    278   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_18                  = 0x38317373,
    279   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_19                  = 0x39317373,
    280   DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_20                  = 0x30327373,
    281   DWRITE_FONT_FEATURE_TAG_SUBSCRIPT                         = 0x73627573,
    282   DWRITE_FONT_FEATURE_TAG_SUPERSCRIPT                       = 0x73707573,
    283   DWRITE_FONT_FEATURE_TAG_SWASH                             = 0x68737773,
    284   DWRITE_FONT_FEATURE_TAG_TITLING                           = 0x6c746974,
    285   DWRITE_FONT_FEATURE_TAG_TRADITIONAL_NAME_FORMS            = 0x6d616e74,
    286   DWRITE_FONT_FEATURE_TAG_TABULAR_FIGURES                   = 0x6d756e74,
    287   DWRITE_FONT_FEATURE_TAG_TRADITIONAL_FORMS                 = 0x64617274,
    288   DWRITE_FONT_FEATURE_TAG_THIRD_WIDTHS                      = 0x64697774,
    289   DWRITE_FONT_FEATURE_TAG_UNICASE                           = 0x63696e75,
    290   DWRITE_FONT_FEATURE_TAG_SLASHED_ZERO                      = 0x6f72657a
    291 } DWRITE_FONT_FEATURE_TAG;
    292 
    293 typedef enum DWRITE_FONT_FILE_TYPE {
    294   DWRITE_FONT_FILE_TYPE_UNKNOWN = 0,
    295   DWRITE_FONT_FILE_TYPE_CFF,
    296   DWRITE_FONT_FILE_TYPE_TRUETYPE,
    297   DWRITE_FONT_FILE_TYPE_TRUETYPE_COLLECTION,
    298   DWRITE_FONT_FILE_TYPE_TYPE1_PFM,
    299   DWRITE_FONT_FILE_TYPE_TYPE1_PFB,
    300   DWRITE_FONT_FILE_TYPE_VECTOR,
    301   DWRITE_FONT_FILE_TYPE_BITMAP
    302 } DWRITE_FONT_FILE_TYPE;
    303 
    304 typedef enum DWRITE_FONT_SIMULATIONS {
    305   DWRITE_FONT_SIMULATIONS_NONE      = 0x0000,
    306   DWRITE_FONT_SIMULATIONS_BOLD      = 0x0001,
    307   DWRITE_FONT_SIMULATIONS_OBLIQUE   = 0x0002
    308 } DWRITE_FONT_SIMULATIONS;
    309 
    310 #ifdef DEFINE_ENUM_FLAG_OPERATORS
    311 DEFINE_ENUM_FLAG_OPERATORS(DWRITE_FONT_SIMULATIONS);
    312 #endif
    313 
    314 typedef enum DWRITE_FONT_STRETCH {
    315   DWRITE_FONT_STRETCH_UNDEFINED         = 0,
    316   DWRITE_FONT_STRETCH_ULTRA_CONDENSED   = 1,
    317   DWRITE_FONT_STRETCH_EXTRA_CONDENSED   = 2,
    318   DWRITE_FONT_STRETCH_CONDENSED         = 3,
    319   DWRITE_FONT_STRETCH_SEMI_CONDENSED    = 4,
    320   DWRITE_FONT_STRETCH_NORMAL            = 5,
    321   DWRITE_FONT_STRETCH_MEDIUM            = 5,
    322   DWRITE_FONT_STRETCH_SEMI_EXPANDED     = 6,
    323   DWRITE_FONT_STRETCH_EXPANDED          = 7,
    324   DWRITE_FONT_STRETCH_EXTRA_EXPANDED    = 8,
    325   DWRITE_FONT_STRETCH_ULTRA_EXPANDED    = 9
    326 } DWRITE_FONT_STRETCH;
    327 
    328 typedef enum DWRITE_FONT_STYLE {
    329   DWRITE_FONT_STYLE_NORMAL = 0,
    330   DWRITE_FONT_STYLE_OBLIQUE,
    331   DWRITE_FONT_STYLE_ITALIC
    332 } DWRITE_FONT_STYLE;
    333 
    334 typedef enum DWRITE_FONT_WEIGHT {
    335   DWRITE_FONT_WEIGHT_THIN          = 100,
    336   DWRITE_FONT_WEIGHT_EXTRA_LIGHT   = 200,
    337   DWRITE_FONT_WEIGHT_ULTRA_LIGHT   = 200,
    338   DWRITE_FONT_WEIGHT_LIGHT         = 300,
    339   DWRITE_FONT_WEIGHT_NORMAL        = 400,
    340   DWRITE_FONT_WEIGHT_REGULAR       = 400,
    341   DWRITE_FONT_WEIGHT_MEDIUM        = 500,
    342   DWRITE_FONT_WEIGHT_DEMI_BOLD     = 600,
    343   DWRITE_FONT_WEIGHT_SEMI_BOLD     = 600,
    344   DWRITE_FONT_WEIGHT_BOLD          = 700,
    345   DWRITE_FONT_WEIGHT_EXTRA_BOLD    = 800,
    346   DWRITE_FONT_WEIGHT_ULTRA_BOLD    = 800,
    347   DWRITE_FONT_WEIGHT_BLACK         = 900,
    348   DWRITE_FONT_WEIGHT_HEAVY         = 900,
    349   DWRITE_FONT_WEIGHT_EXTRA_BLACK   = 950,
    350   DWRITE_FONT_WEIGHT_ULTRA_BLACK   = 950
    351 } DWRITE_FONT_WEIGHT;
    352 
    353 typedef enum DWRITE_LINE_SPACING_METHOD {
    354   DWRITE_LINE_SPACING_METHOD_DEFAULT = 0,
    355   DWRITE_LINE_SPACING_METHOD_UNIFORM
    356 } DWRITE_LINE_SPACING_METHOD;
    357 
    358 typedef enum DWRITE_NUMBER_SUBSTITUTION_METHOD {
    359   DWRITE_NUMBER_SUBSTITUTION_METHOD_FROM_CULTURE = 0,
    360   DWRITE_NUMBER_SUBSTITUTION_METHOD_CONTEXTUAL,
    361   DWRITE_NUMBER_SUBSTITUTION_METHOD_NONE,
    362   DWRITE_NUMBER_SUBSTITUTION_METHOD_NATIONAL,
    363   DWRITE_NUMBER_SUBSTITUTION_METHOD_TRADITIONAL
    364 } DWRITE_NUMBER_SUBSTITUTION_METHOD;
    365 
    366 typedef enum DWRITE_PARAGRAPH_ALIGNMENT {
    367   DWRITE_PARAGRAPH_ALIGNMENT_NEAR = 0,
    368   DWRITE_PARAGRAPH_ALIGNMENT_FAR,
    369   DWRITE_PARAGRAPH_ALIGNMENT_CENTER
    370 } DWRITE_PARAGRAPH_ALIGNMENT;
    371 
    372 typedef enum DWRITE_PIXEL_GEOMETRY {
    373   DWRITE_PIXEL_GEOMETRY_FLAT = 0,
    374   DWRITE_PIXEL_GEOMETRY_RGB,
    375   DWRITE_PIXEL_GEOMETRY_BGR
    376 } DWRITE_PIXEL_GEOMETRY;
    377 
    378 typedef enum DWRITE_READING_DIRECTION {
    379   DWRITE_READING_DIRECTION_LEFT_TO_RIGHT = 0,
    380   DWRITE_READING_DIRECTION_RIGHT_TO_LEFT
    381 } DWRITE_READING_DIRECTION;
    382 
    383 typedef enum DWRITE_RENDERING_MODE {
    384   DWRITE_RENDERING_MODE_DEFAULT = 0,
    385   DWRITE_RENDERING_MODE_ALIASED,
    386   DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC,
    387   DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL,
    388   DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL,
    389   DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC,
    390   DWRITE_RENDERING_MODE_OUTLINE
    391 } DWRITE_RENDERING_MODE;
    392 
    393 typedef enum DWRITE_SCRIPT_SHAPES {
    394   DWRITE_SCRIPT_SHAPES_DEFAULT     = 0,
    395   DWRITE_SCRIPT_SHAPES_NO_VISUAL   = 1
    396 } DWRITE_SCRIPT_SHAPES;
    397 
    398 typedef enum DWRITE_TEXT_ALIGNMENT {
    399   DWRITE_TEXT_ALIGNMENT_LEADING = 0,
    400   DWRITE_TEXT_ALIGNMENT_TRAILING,
    401   DWRITE_TEXT_ALIGNMENT_CENTER
    402 } DWRITE_TEXT_ALIGNMENT;
    403 
    404 typedef enum DWRITE_TEXTURE_TYPE {
    405   DWRITE_TEXTURE_ALIASED_1x1 = 0,
    406   DWRITE_TEXTURE_CLEARTYPE_3x1
    407 } DWRITE_TEXTURE_TYPE;
    408 
    409 typedef enum DWRITE_TRIMMING_GRANULARITY {
    410   DWRITE_TRIMMING_GRANULARITY_NONE,
    411   DWRITE_TRIMMING_GRANULARITY_CHARACTER,
    412   DWRITE_TRIMMING_GRANULARITY_WORD
    413 } DWRITE_TRIMMING_GRANULARITY;
    414 
    415 typedef enum DWRITE_WORD_WRAPPING {
    416   DWRITE_WORD_WRAPPING_WRAP,
    417   DWRITE_WORD_WRAPPING_NO_WRAP
    418 } DWRITE_WORD_WRAPPING;
    419 
    420 typedef struct _DWRITE_OVERHANG_METRICS {
    421   FLOAT left;
    422   FLOAT top;
    423   FLOAT right;
    424   FLOAT bottom;
    425 } DWRITE_OVERHANG_METRICS, *PDWRITE_OVERHANG_METRICS;
    426 
    427 typedef struct DWRITE_CLUSTER_METRICS {
    428   FLOAT  width;
    429   UINT16 length;
    430   UINT16 canWrapLineAfter  :1;
    431   UINT16 isWhitespace  :1;
    432   UINT16 isNewline  :1;
    433   UINT16 isSoftHyphen  :1;
    434   UINT16 isRightToLeft  :1;
    435   UINT16 padding  :11;
    436 } DWRITE_CLUSTER_METRICS;
    437 
    438 typedef struct DWRITE_FONT_FEATURE {
    439   DWRITE_FONT_FEATURE_TAG nameTag;
    440   UINT32                  parameter;
    441 } DWRITE_FONT_FEATURE;
    442 
    443 typedef struct DWRITE_FONT_METRICS {
    444   UINT16 designUnitsPerEm;
    445   UINT16 ascent;
    446   UINT16 descent;
    447   INT16  lineGap;
    448   UINT16 capHeight;
    449   UINT16 xHeight;
    450   INT16  underlinePosition;
    451   UINT16 underlineThickness;
    452   INT16  strikethroughPosition;
    453   UINT16 strikethroughThickness;
    454 } DWRITE_FONT_METRICS;
    455 
    456 typedef struct DWRITE_GLYPH_METRICS {
    457   INT32  leftSideBearing;
    458   UINT32 advanceWidth;
    459   INT32  rightSideBearing;
    460   INT32  topSideBearing;
    461   UINT32 advanceHeight;
    462   INT32  bottomSideBearing;
    463   INT32  verticalOriginY;
    464 } DWRITE_GLYPH_METRICS;
    465 
    466 typedef struct DWRITE_GLYPH_OFFSET {
    467   FLOAT advanceOffset;
    468   FLOAT ascenderOffset;
    469 } DWRITE_GLYPH_OFFSET;
    470 
    471 typedef struct DWRITE_GLYPH_RUN {
    472   IDWriteFontFace           *fontFace;
    473   FLOAT                     fontEmSize;
    474   UINT32                    glyphCount;
    475   const UINT16              *glyphIndices;
    476   const FLOAT               *glyphAdvances;
    477   const DWRITE_GLYPH_OFFSET *glyphOffsets;
    478   WINBOOL                   isSideways;
    479   UINT32                    bidiLevel;
    480 } DWRITE_GLYPH_RUN;
    481 
    482 typedef struct DWRITE_GLYPH_RUN_DESCRIPTION {
    483   const WCHAR  *localeName;
    484   const WCHAR  *string;
    485   UINT32       stringLength;
    486   const UINT16 *clusterMap;
    487   UINT32       textPosition;
    488 } DWRITE_GLYPH_RUN_DESCRIPTION;
    489 
    490 typedef struct DWRITE_HIT_TEST_METRICS {
    491   UINT32  textPosition;
    492   UINT32  length;
    493   FLOAT   left;
    494   FLOAT   top;
    495   FLOAT   width;
    496   FLOAT   height;
    497   UINT32  bidiLevel;
    498   WINBOOL isText;
    499 } DWRITE_HIT_TEST_METRICS;
    500 
    501 typedef struct DWRITE_INLINE_OBJECT_METRICS {
    502   FLOAT   width;
    503   FLOAT   height;
    504   FLOAT   baseline;
    505   WINBOOL supportsSideways;
    506 } DWRITE_INLINE_OBJECT_METRICS;
    507 
    508 typedef struct DWRITE_LINE_BREAKPOINT {
    509   UINT8 breakConditionBefore  :2;
    510   UINT8 breakConditionAfter  :2;
    511   UINT8 isWhitespace  :1;
    512   UINT8 isSoftHyphen  :1;
    513   UINT8 padding  :2;
    514 } DWRITE_LINE_BREAKPOINT;
    515 
    516 typedef struct DWRITE_LINE_METRICS {
    517   UINT32  length;
    518   UINT32  trailingWhitespaceLength;
    519   UINT32  newlineLength;
    520   FLOAT   height;
    521   FLOAT   baseline;
    522   WINBOOL isTrimmed;
    523 } DWRITE_LINE_METRICS;
    524 
    525 typedef struct DWRITE_MATRIX {
    526   FLOAT m11;
    527   FLOAT m12;
    528   FLOAT m21;
    529   FLOAT m22;
    530   FLOAT dx;
    531   FLOAT dy;
    532 } DWRITE_MATRIX;
    533 
    534 typedef struct DWRITE_SCRIPT_ANALYSIS {
    535   UINT16               script;
    536   DWRITE_SCRIPT_SHAPES shapes;
    537 } DWRITE_SCRIPT_ANALYSIS;
    538 
    539 typedef struct DWRITE_SHAPING_GLYPH_PROPERTIES {
    540   UINT16 justification  :4;
    541   UINT16 isClusterStart  :1;
    542   UINT16 isDiacritic  :1;
    543   UINT16 isZeroWidthSpace  :1;
    544   UINT16 reserved  :9;
    545 } DWRITE_SHAPING_GLYPH_PROPERTIES;
    546 
    547 typedef struct DWRITE_SHAPING_TEXT_PROPERTIES {
    548   UINT16 isShapedAlone  :1;
    549   UINT16 reserved  :15;
    550 } DWRITE_SHAPING_TEXT_PROPERTIES;
    551 
    552 typedef struct DWRITE_STRIKETHROUGH {
    553   FLOAT                    width;
    554   FLOAT                    thickness;
    555   FLOAT                    offset;
    556   DWRITE_READING_DIRECTION readingDirection;
    557   DWRITE_FLOW_DIRECTION    flowDirection;
    558   const WCHAR              *localeName;
    559   DWRITE_MEASURING_MODE    measuringMode;
    560 } DWRITE_STRIKETHROUGH;
    561 
    562 typedef struct DWRITE_TEXT_METRICS {
    563   FLOAT  left;
    564   FLOAT  top;
    565   FLOAT  width;
    566   FLOAT  widthIncludingTrailingWhitespace;
    567   FLOAT  height;
    568   FLOAT  layoutWidth;
    569   FLOAT  layoutHeight;
    570   UINT32 maxBidiReorderingDepth;
    571   UINT32 lineCount;
    572 } DWRITE_TEXT_METRICS;
    573 
    574 typedef struct DWRITE_TEXT_RANGE {
    575   UINT32 startPosition;
    576   UINT32 length;
    577 } DWRITE_TEXT_RANGE;
    578 
    579 typedef struct DWRITE_TRIMMING {
    580   DWRITE_TRIMMING_GRANULARITY granularity;
    581   UINT32                      delimiter;
    582   UINT32                      delimiterCount;
    583 } DWRITE_TRIMMING;
    584 
    585 typedef struct DWRITE_TYPOGRAPHIC_FEATURES {
    586   DWRITE_FONT_FEATURE *features;
    587   UINT32              featureCount;
    588 } DWRITE_TYPOGRAPHIC_FEATURES;
    589 
    590 typedef struct DWRITE_UNDERLINE {
    591   FLOAT                    width;
    592   FLOAT                    thickness;
    593   FLOAT                    offset;
    594   FLOAT                    runHeight;
    595   DWRITE_READING_DIRECTION readingDirection;
    596   DWRITE_FLOW_DIRECTION    flowDirection;
    597   const WCHAR              *localeName;
    598   DWRITE_MEASURING_MODE    measuringMode;
    599 } DWRITE_UNDERLINE;
    600 
    601 #define DWRITE_MAKE_OPENTYPE_TAG(a,b,c,d) ( \
    602     (static_cast<UINT32>(static_cast<UINT8>(d)) << 24) | \
    603     (static_cast<UINT32>(static_cast<UINT8>(c)) << 16) | \
    604     (static_cast<UINT32>(static_cast<UINT8>(b)) << 8) | \
    605      static_cast<UINT32>(static_cast<UINT8>(a)))
    606 
    607 #ifndef __MINGW_DEF_ARG_VAL
    608 #ifdef __cplusplus
    609 #define __MINGW_DEF_ARG_VAL(x) = x
    610 #else
    611 #define __MINGW_DEF_ARG_VAL(x)
    612 #endif
    613 #endif
    614 
    615 #undef  INTERFACE
    616 #define INTERFACE IDWriteBitmapRenderTarget
    617 DECLARE_INTERFACE_(IDWriteBitmapRenderTarget,IUnknown)
    618 {
    619     BEGIN_INTERFACE
    620 
    621 #ifndef __cplusplus
    622     /* IUnknown methods */
    623     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    624     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    625     STDMETHOD_(ULONG, Release)(THIS) PURE;
    626 #endif
    627 
    628     /* IDWriteBitmapRenderTarget methods */
    629     STDMETHOD(DrawGlyphRun)(THIS_
    630         FLOAT baselineOriginX,
    631         FLOAT baselineOriginY,
    632         DWRITE_MEASURING_MODE measuringMode,
    633         DWRITE_GLYPH_RUN const *glyphRun,
    634         IDWriteRenderingParams *renderingParams,
    635         COLORREF textColor,
    636         RECT *blackBoxRect __MINGW_DEF_ARG_VAL(NULL)) PURE;
    637 
    638     STDMETHOD_(HDC, GetMemoryDC)(THIS) PURE;
    639     STDMETHOD_(FLOAT, GetPixelsPerDip)(THIS) PURE;
    640 
    641     STDMETHOD(SetPixelsPerDip)(THIS_
    642         FLOAT pixelsPerDip) PURE;
    643 
    644     STDMETHOD(GetCurrentTransform)(THIS_
    645         DWRITE_MATRIX* transform) PURE;
    646 
    647     STDMETHOD(SetCurrentTransform)(THIS_
    648         DWRITE_MATRIX const *transform) PURE;
    649 
    650     STDMETHOD(GetSize)(THIS_
    651         SIZE *size) PURE;
    652 
    653     STDMETHOD(Resize)(THIS_
    654         UINT32 width,
    655         UINT32 height) PURE;
    656 
    657     END_INTERFACE
    658 };
    659 #ifdef COBJMACROS
    660 #define IDWriteBitmapRenderTarget_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    661 #define IDWriteBitmapRenderTarget_AddRef(This) (This)->lpVtbl->AddRef(This)
    662 #define IDWriteBitmapRenderTarget_Release(This) (This)->lpVtbl->Release(This)
    663 #define IDWriteBitmapRenderTarget_DrawGlyphRun(This,baselineOriginX,baselineOriginY,measuringMode,glyphRun,renderingParams,textColor,blackBoxRect) (This)->lpVtbl->DrawGlyphRun(This,baselineOriginX,baselineOriginY,measuringMode,glyphRun,renderingParams,textColor,blackBoxRect)
    664 #define IDWriteBitmapRenderTarget_GetCurrentTransform(This,transform) (This)->lpVtbl->GetCurrentTransform(This,transform)
    665 #define IDWriteBitmapRenderTarget_GetMemoryDC() (This)->lpVtbl->GetMemoryDC(This)
    666 #define IDWriteBitmapRenderTarget_GetPixelsPerDip() (This)->lpVtbl->GetPixelsPerDip(This)
    667 #define IDWriteBitmapRenderTarget_GetSize(This,size) (This)->lpVtbl->GetSize(This,size)
    668 #define IDWriteBitmapRenderTarget_Resize(This,width,height) (This)->lpVtbl->Resize(This,width,height)
    669 #define IDWriteBitmapRenderTarget_SetCurrentTransform(This,transform) (This)->lpVtbl->SetCurrentTransform(This,transform)
    670 #define IDWriteBitmapRenderTarget_SetPixelsPerDip(This,pixelsPerDip) (This)->lpVtbl->SetPixelsPerDip(This,pixelsPerDip)
    671 #endif /*COBJMACROS*/
    672 
    673 #undef  INTERFACE
    674 #define INTERFACE IDWriteFactory
    675 DECLARE_INTERFACE_(IDWriteFactory,IUnknown)
    676 {
    677     BEGIN_INTERFACE
    678 
    679 #ifndef __cplusplus
    680     /* IUnknown methods */
    681     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    682     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    683     STDMETHOD_(ULONG, Release)(THIS) PURE;
    684 #endif
    685 
    686     /* IDWriteFactory methods */
    687     STDMETHOD(GetSystemFontCollection)(THIS_
    688         IDWriteFontCollection **fontCollection,
    689         WINBOOL checkForUpdates __MINGW_DEF_ARG_VAL(FALSE)) PURE;
    690 
    691     STDMETHOD(CreateCustomFontCollection)(THIS_
    692         IDWriteFontCollectionLoader *collectionLoader,
    693         void const *collectionKey,
    694         UINT32 collectionKeySize,
    695         IDWriteFontCollection **fontCollection) PURE;
    696 
    697     STDMETHOD(RegisterFontCollectionLoader)(THIS_
    698         IDWriteFontCollectionLoader *fontCollectionLoader) PURE;
    699 
    700     STDMETHOD(UnregisterFontCollectionLoader)(THIS_
    701         IDWriteFontCollectionLoader *fontCollectionLoader) PURE;
    702 
    703     STDMETHOD(CreateFontFileReference)(THIS_
    704         WCHAR const *filePath,
    705         FILETIME const *lastWriteTime,
    706         IDWriteFontFile **fontFile) PURE;
    707 
    708     STDMETHOD(CreateCustomFontFileReference)(THIS_
    709         void const *fontFileReferenceKey,
    710         UINT32 fontFileReferenceKeySize,
    711         IDWriteFontFileLoader *fontFileLoader,
    712         IDWriteFontFile **fontFile) PURE;
    713 
    714     STDMETHOD(CreateFontFace)(THIS_
    715         DWRITE_FONT_FACE_TYPE fontFaceType,
    716         UINT32 numberOfFiles,
    717         IDWriteFontFile *const *fontFiles,
    718         UINT32 faceIndex,
    719         DWRITE_FONT_SIMULATIONS fontFaceSimulationFlags,
    720         IDWriteFontFace **fontFace) PURE;
    721 
    722     STDMETHOD(CreateRenderingParams)(THIS_
    723         IDWriteRenderingParams **renderingParams) PURE;
    724 
    725     STDMETHOD(CreateMonitorRenderingParams)(THIS_
    726         HMONITOR monitor,
    727         IDWriteRenderingParams **renderingParams) PURE;
    728 
    729     STDMETHOD(CreateCustomRenderingParams)(THIS_
    730         FLOAT gamma,
    731         FLOAT enhancedContrast,
    732         FLOAT clearTypeLevel,
    733         DWRITE_PIXEL_GEOMETRY pixelGeometry,
    734         DWRITE_RENDERING_MODE renderingMode,
    735         IDWriteRenderingParams **renderingParams) PURE;
    736 
    737     STDMETHOD(RegisterFontFileLoader)(THIS_
    738         IDWriteFontFileLoader *fontFileLoader) PURE;
    739 
    740     STDMETHOD(UnregisterFontFileLoader)(THIS_
    741         IDWriteFontFileLoader *fontFileLoader) PURE;
    742 
    743     STDMETHOD(CreateTextFormat)(THIS_
    744         WCHAR const *fontFamilyName,
    745         IDWriteFontCollection *fontCollection,
    746         DWRITE_FONT_WEIGHT fontWeight,
    747         DWRITE_FONT_STYLE fontStyle,
    748         DWRITE_FONT_STRETCH fontStretch,
    749         FLOAT fontSize,
    750         WCHAR const *localeName,
    751         IDWriteTextFormat **textFormat) PURE;
    752 
    753     STDMETHOD(CreateTypography)(THIS_
    754         IDWriteTypography **typography) PURE;
    755 
    756     STDMETHOD(GetGdiInterop)(THIS_
    757         IDWriteGdiInterop **gdiInterop) PURE;
    758 
    759     STDMETHOD(CreateTextLayout)(THIS_
    760         WCHAR const *string,
    761         UINT32 stringLength,
    762         IDWriteTextFormat *textFormat,
    763         FLOAT maxWidth,
    764         FLOAT maxHeight,
    765         IDWriteTextLayout **textLayout) PURE;
    766 
    767     STDMETHOD(CreateGdiCompatibleTextLayout)(THIS_
    768         WCHAR const *string,
    769         UINT32 stringLength,
    770         IDWriteTextFormat *textFormat,
    771         FLOAT layoutWidth,
    772         FLOAT layoutHeight,
    773         FLOAT pixelsPerDip,
    774         DWRITE_MATRIX const *transform,
    775         WINBOOL useGdiNatural,
    776         IDWriteTextLayout **textLayout) PURE;
    777 
    778     STDMETHOD(CreateEllipsisTrimmingSign)(THIS_
    779         IDWriteTextFormat *textFormat,
    780         IDWriteInlineObject **trimmingSign) PURE;
    781 
    782     STDMETHOD(CreateTextAnalyzer)(THIS_
    783         IDWriteTextAnalyzer **textAnalyzer) PURE;
    784 
    785     STDMETHOD(CreateNumberSubstitution)(THIS_
    786         DWRITE_NUMBER_SUBSTITUTION_METHOD substitutionMethod,
    787         WCHAR const *localeName,
    788         WINBOOL ignoreUserOverride,
    789         IDWriteNumberSubstitution **numberSubstitution) PURE;
    790 
    791     STDMETHOD(CreateGlyphRunAnalysis)(THIS_
    792         DWRITE_GLYPH_RUN const *glyphRun,
    793         FLOAT pixelsPerDip,
    794         DWRITE_MATRIX const *transform,
    795         DWRITE_RENDERING_MODE renderingMode,
    796         DWRITE_MEASURING_MODE measuringMode,
    797         FLOAT baselineOriginX,
    798         FLOAT baselineOriginY,
    799         IDWriteGlyphRunAnalysis **glyphRunAnalysis) PURE;
    800 
    801     END_INTERFACE
    802 };
    803 #ifdef COBJMACROS
    804 #define IDWriteFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    805 #define IDWriteFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
    806 #define IDWriteFactory_Release(This) (This)->lpVtbl->Release(This)
    807 #define IDWriteFactory_CreateCustomFontCollection(This,collectionLoader,collectionKey,collectionKeySize,fontCollection) (This)->lpVtbl->CreateCustomFontCollection(This,collectionLoader,collectionKey,collectionKeySize,fontCollection)
    808 #define IDWriteFactory_CreateCustomFontFileReference(This,fontFileReferenceKey,fontFileReferenceKeySize,fontFileLoader,fontFile) (This)->lpVtbl->CreateCustomFontFileReference(This,fontFileReferenceKey,fontFileReferenceKeySize,fontFileLoader,fontFile)
    809 #define IDWriteFactory_CreateCustomRenderingParams(This,gamma,enhancedContrast,clearTypeLevel,pixelGeometry,renderingMode,renderingParams) (This)->lpVtbl->CreateCustomRenderingParams(This,gamma,enhancedContrast,clearTypeLevel,pixelGeometry,renderingMode,renderingParams)
    810 #define IDWriteFactory_CreateGdiCompatibleTextLayout(This,string,stringLength,textFormat,layoutWidth,layoutHeight,pixelsPerDip,transform,useGdiNatural,textLayout) (This)->lpVtbl->CreateGdiCompatibleTextLayout(This,string,stringLength,textFormat,layoutWidth,layoutHeight,pixelsPerDip,transform,useGdiNatural,textLayout)
    811 #define IDWriteFactory_CreateEllipsisTrimmingSign(This,textFormat,trimmingSign) (This)->lpVtbl->CreateEllipsisTrimmingSign(This,textFormat,trimmingSign)
    812 #define IDWriteFactory_CreateFontFace(This,fontFaceType,numberOfFiles,fontFiles,faceIndex,fontFaceSimulationFlags,fontFace) (This)->lpVtbl->CreateFontFace(This,fontFaceType,numberOfFiles,fontFiles,faceIndex,fontFaceSimulationFlags,fontFace)
    813 #define IDWriteFactory_CreateFontFileReference(This,filePath,lastWriteTime,fontFile) (This)->lpVtbl->CreateFontFileReference(This,filePath,lastWriteTime,fontFile)
    814 #define IDWriteFactory_CreateGlyphRunAnalysis(This,glyphRun,pixelsPerDip,transform,renderingMode,measuringMode,baselineOriginX,baselineOriginY,glyphRunAnalysis) (This)->lpVtbl->CreateGlyphRunAnalysis(This,glyphRun,pixelsPerDip,transform,renderingMode,measuringMode,baselineOriginX,baselineOriginY,glyphRunAnalysis)
    815 #define IDWriteFactory_CreateMonitorRenderingParams(This,monitor,renderingParams) (This)->lpVtbl->CreateMonitorRenderingParams(This,monitor,renderingParams)
    816 #define IDWriteFactory_CreateNumberSubstitution(This,substitutionMethod,localeName,ignoreUserOverride,numberSubstitution) (This)->lpVtbl->CreateNumberSubstitution(This,substitutionMethod,localeName,ignoreUserOverride,numberSubstitution)
    817 #define IDWriteFactory_CreateRenderingParams(This,renderingParams) (This)->lpVtbl->CreateRenderingParams(This,renderingParams)
    818 #define IDWriteFactory_CreateTextAnalyzer(This,textAnalyzer) (This)->lpVtbl->CreateTextAnalyzer(This,textAnalyzer)
    819 #define IDWriteFactory_CreateTextFormat(This,fontFamilyName,fontCollection,fontWeight,fontStyle,fontStretch,fontSize,localeName,textFormat) (This)->lpVtbl->CreateTextFormat(This,fontFamilyName,fontCollection,fontWeight,fontStyle,fontStretch,fontSize,localeName,textFormat)
    820 #define IDWriteFactory_CreateTextLayout(This,string,stringLength,textFormat,maxWidth,maxHeight,textLayout) (This)->lpVtbl->CreateTextLayout(This,string,stringLength,textFormat,maxWidth,maxHeight,textLayout)
    821 #define IDWriteFactory_CreateTypography(This,typography) (This)->lpVtbl->CreateTypography(This,typography)
    822 #define IDWriteFactory_GetGdiInterop(This,gdiInterop) (This)->lpVtbl->GetGdiInterop(This,gdiInterop)
    823 #define IDWriteFactory_GetSystemFontCollection(This,fontCollection,checkForUpdates) (This)->lpVtbl->GetSystemFontCollection(This,fontCollection,checkForUpdates)
    824 #define IDWriteFactory_RegisterFontCollectionLoader(This,fontCollectionLoader) (This)->lpVtbl->RegisterFontCollectionLoader(This,fontCollectionLoader)
    825 #define IDWriteFactory_RegisterFontFileLoader(This,fontFileLoader) (This)->lpVtbl->RegisterFontFileLoader(This,fontFileLoader)
    826 #define IDWriteFactory_UnregisterFontCollectionLoader(This,fontCollectionLoader) (This)->lpVtbl->UnregisterFontCollectionLoader(This,fontCollectionLoader)
    827 #define IDWriteFactory_UnregisterFontFileLoader(This,fontFileLoader) (This)->lpVtbl->UnregisterFontFileLoader(This,fontFileLoader)
    828 #endif /*COBJMACROS*/
    829 
    830 #undef  INTERFACE
    831 #define INTERFACE IDWriteFont
    832 DECLARE_INTERFACE_(IDWriteFont,IUnknown)
    833 {
    834     BEGIN_INTERFACE
    835 
    836 #ifndef __cplusplus
    837     /* IUnknown methods */
    838     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    839     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    840     STDMETHOD_(ULONG, Release)(THIS) PURE;
    841 #endif
    842 
    843     /* IDWriteFont methods */
    844     STDMETHOD(GetFontFamily)(THIS_
    845         IDWriteFontFamily **fontFamily) PURE;
    846 
    847     STDMETHOD_(DWRITE_FONT_WEIGHT, GetWeight)(THIS) PURE;
    848     STDMETHOD_(DWRITE_FONT_STRETCH, GetStretch)(THIS) PURE;
    849     STDMETHOD_(DWRITE_FONT_STYLE, GetStyle)(THIS) PURE;
    850     STDMETHOD_(WINBOOL, IsSymbolFont)(THIS) PURE;
    851 
    852     STDMETHOD(GetFaceNames)(THIS_
    853         IDWriteLocalizedStrings **names) PURE;
    854 
    855     STDMETHOD(GetInformationalStrings)(THIS_
    856         DWRITE_INFORMATIONAL_STRING_ID informationalStringID,
    857         IDWriteLocalizedStrings **informationalStrings,
    858         WINBOOL *exists) PURE;
    859 
    860     STDMETHOD_(DWRITE_FONT_SIMULATIONS, GetSimulations)(THIS) PURE;
    861 
    862     STDMETHOD_(void, GetMetrics)(THIS_
    863         DWRITE_FONT_METRICS *fontMetrics) PURE;
    864 
    865     STDMETHOD(HasCharacter)(THIS_
    866         UINT32 unicodeValue,
    867         WINBOOL *exists) PURE;
    868 
    869     STDMETHOD(CreateFontFace)(THIS_
    870         IDWriteFontFace **fontFace) PURE;
    871 
    872     END_INTERFACE
    873 };
    874 #ifdef COBJMACROS
    875 #define IDWriteFont_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    876 #define IDWriteFont_AddRef(This) (This)->lpVtbl->AddRef(This)
    877 #define IDWriteFont_Release(This) (This)->lpVtbl->Release(This)
    878 #define IDWriteFont_CreateFontFace(This,fontFace) (This)->lpVtbl->CreateFontFace(This,fontFace)
    879 #define IDWriteFont_GetFaceNames(This,names) (This)->lpVtbl->GetFaceNames(This,names)
    880 #define IDWriteFont_GetFontFamily(This,fontFamily) (This)->lpVtbl->GetFontFamily(This,fontFamily)
    881 #define IDWriteFont_GetInformationalStrings(This,informationalStringID,informationalStrings,exists) (This)->lpVtbl->GetInformationalStrings(This,informationalStringID,informationalStrings,exists)
    882 #define IDWriteFont_GetMetrics(This,fontMetrics) (This)->lpVtbl->GetMetrics(This,fontMetrics)
    883 #define IDWriteFont_GetSimulations() (This)->lpVtbl->GetSimulations(This)
    884 #define IDWriteFont_GetStretch() (This)->lpVtbl->GetStretch(This)
    885 #define IDWriteFont_GetStyle() (This)->lpVtbl->GetStyle(This)
    886 #define IDWriteFont_GetWeight() (This)->lpVtbl->GetWeight(This)
    887 #define IDWriteFont_HasCharacter(This,unicodeValue,exists) (This)->lpVtbl->HasCharacter(This,unicodeValue,exists)
    888 #define IDWriteFont_IsSymbolFont() (This)->lpVtbl->IsSymbolFont(This)
    889 #endif /*COBJMACROS*/
    890 
    891 #undef  INTERFACE
    892 #define INTERFACE IDWriteFontCollection
    893 DECLARE_INTERFACE_(IDWriteFontCollection,IUnknown)
    894 {
    895     BEGIN_INTERFACE
    896 
    897 #ifndef __cplusplus
    898     /* IUnknown methods */
    899     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    900     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    901     STDMETHOD_(ULONG, Release)(THIS) PURE;
    902 #endif
    903 
    904     /* IDWriteFontCollection methods */
    905     STDMETHOD_(UINT32, GetFontFamilyCount)(THIS) PURE;
    906 
    907     STDMETHOD(GetFontFamily)(THIS_
    908         UINT32 index,
    909         IDWriteFontFamily **fontFamily) PURE;
    910 
    911     STDMETHOD(FindFamilyName)(THIS_
    912         WCHAR const *familyName,
    913         UINT32 *index,
    914         WINBOOL *exists) PURE;
    915 
    916     STDMETHOD(GetFontFromFontFace)(THIS_
    917         IDWriteFontFace* fontFace,
    918         IDWriteFont **font) PURE;
    919 
    920     END_INTERFACE
    921 };
    922 #ifdef COBJMACROS
    923 #define IDWriteFontCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    924 #define IDWriteFontCollection_AddRef(This) (This)->lpVtbl->AddRef(This)
    925 #define IDWriteFontCollection_Release(This) (This)->lpVtbl->Release(This)
    926 #define IDWriteFontCollection_FindFamilyName(This,familyName,index,exists) (This)->lpVtbl->FindFamilyName(This,familyName,index,exists)
    927 #define IDWriteFontCollection_GetFontFamily(This,index,fontFamily) (This)->lpVtbl->GetFontFamily(This,index,fontFamily)
    928 #define IDWriteFontCollection_GetFontFamilyCount() (This)->lpVtbl->GetFontFamilyCount(This)
    929 #define IDWriteFontCollection_GetFontFromFontFace(This,fontFace,font) (This)->lpVtbl->GetFontFromFontFace(This,fontFace,font)
    930 #endif /*COBJMACROS*/
    931 
    932 #undef  INTERFACE
    933 #define INTERFACE IDWriteFontFace
    934 DECLARE_INTERFACE_(IDWriteFontFace,IUnknown)
    935 {
    936     BEGIN_INTERFACE
    937 
    938 #ifndef __cplusplus
    939     /* IUnknown methods */
    940     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    941     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    942     STDMETHOD_(ULONG, Release)(THIS) PURE;
    943 #endif
    944 
    945     /* IDWriteFontFace methods */
    946     STDMETHOD_(DWRITE_FONT_FACE_TYPE, GetType)(THIS) PURE;
    947 
    948     STDMETHOD(GetFiles)(THIS_
    949         UINT32 *numberOfFiles,
    950         IDWriteFontFile **fontFiles) PURE;
    951 
    952     STDMETHOD_(UINT32, GetIndex)(THIS) PURE;
    953     STDMETHOD_(DWRITE_FONT_SIMULATIONS, GetSimulations)(THIS) PURE;
    954     STDMETHOD_(WINBOOL, IsSymbolFont)(THIS) PURE;
    955 
    956     STDMETHOD_(void, GetMetrics)(THIS_
    957         DWRITE_FONT_METRICS *fontFaceMetrics) PURE;
    958 
    959     STDMETHOD_(UINT16, GetGlyphCount)(THIS) PURE;
    960 
    961     STDMETHOD(GetDesignGlyphMetrics)(THIS_
    962         UINT16 const *glyphIndices,
    963         UINT32 glyphCount,
    964         DWRITE_GLYPH_METRICS *glyphMetrics,
    965         WINBOOL isSideways __MINGW_DEF_ARG_VAL(FALSE)) PURE;
    966 
    967     STDMETHOD(GetGlyphIndices)(THIS_
    968         UINT32 const *codePoints,
    969         UINT32 codePointCount,
    970         UINT16 *glyphIndices) PURE;
    971 
    972     STDMETHOD(TryGetFontTable)(THIS_
    973         UINT32 openTypeTableTag,
    974         const void **tableData,
    975         UINT32 *tableSize,
    976         void **tableContext,
    977         WINBOOL *exists) PURE;
    978 
    979     STDMETHOD_(void, ReleaseFontTable)(THIS_
    980         void *tableContext) PURE;
    981 
    982     STDMETHOD(GetGlyphRunOutline)(THIS_
    983         FLOAT emSize,
    984         UINT16 const *glyphIndices,
    985         FLOAT const *glyphAdvances,
    986         DWRITE_GLYPH_OFFSET const *glyphOffsets,
    987         UINT32 glyphCount,
    988         WINBOOL isSideways,
    989         WINBOOL isRightToLeft,
    990         IDWriteGeometrySink *geometrySink) PURE;
    991 
    992     STDMETHOD(GetRecommendedRenderingMode)(THIS_
    993         FLOAT emSize,
    994         FLOAT pixelsPerDip,
    995         DWRITE_MEASURING_MODE measuringMode,
    996         IDWriteRenderingParams *renderingParams,
    997         DWRITE_RENDERING_MODE *renderingMode) PURE;
    998 
    999     STDMETHOD(GetGdiCompatibleMetrics)(THIS_
   1000         FLOAT emSize,
   1001         FLOAT pixelsPerDip,
   1002         DWRITE_MATRIX const *transform,
   1003         DWRITE_FONT_METRICS *fontFaceMetrics) PURE;
   1004 
   1005 
   1006     STDMETHOD(GetGdiCompatibleGlyphMetrics)(THIS_
   1007         FLOAT emSize,
   1008         FLOAT pixelsPerDip,
   1009         DWRITE_MATRIX const *transform,
   1010         WINBOOL useGdiNatural,
   1011         UINT16 const *glyphIndices,
   1012         UINT32 glyphCount,
   1013         DWRITE_GLYPH_METRICS *glyphMetrics,
   1014         WINBOOL isSideways __MINGW_DEF_ARG_VAL(FALSE)) PURE;
   1015 
   1016     END_INTERFACE
   1017 };
   1018 #ifdef COBJMACROS
   1019 #define IDWriteFontFace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1020 #define IDWriteFontFace_AddRef(This) (This)->lpVtbl->AddRef(This)
   1021 #define IDWriteFontFace_Release(This) (This)->lpVtbl->Release(This)
   1022 #define IDWriteFontFace_GetDesignGlyphMetrics(This,glyphIndices,glyphCount,glyphMetrics,isSideways) (This)->lpVtbl->GetDesignGlyphMetrics(This,glyphIndices,glyphCount,glyphMetrics,isSideways)
   1023 #define IDWriteFontFace_GetFiles(This,fontFiles) (This)->lpVtbl->GetFiles(This,fontFiles)
   1024 #define IDWriteFontFace_GetGdiCompatibleMetrics(This,emSize,pixelsPerDip,transform,fontFaceMetrics) (This)->lpVtbl->GetGdiCompatibleMetrics(This,emSize,pixelsPerDip,transform,fontFaceMetrics)
   1025 #define IDWriteFontFace_GetGdiCompatibleGlyphMetrics(This,emSize,pixelsPerDip,transform,useGdiNatural,glyphIndices,glyphCount,glyphMetrics,isSideways) (This)->lpVtbl->GetGdiCompatibleGlyphMetrics(This,emSize,pixelsPerDip,transform,useGdiNatural,glyphIndices,glyphCount,glyphMetrics,isSideways)
   1026 #define IDWriteFontFace_GetGlyphCount() (This)->lpVtbl->GetGlyphCount(This)
   1027 #define IDWriteFontFace_GetGlyphIndices(This,codePoints,codePointCount,glyphIndices) (This)->lpVtbl->GetGlyphIndices(This,codePoints,codePointCount,glyphIndices)
   1028 #define IDWriteFontFace_GetGlyphRunOutline(This,emSize,glyphIndices,glyphOffsets,glyphCount,isSideways,isRightToLeft,geometrySink) (This)->lpVtbl->GetGlyphRunOutline(This,emSize,glyphIndices,glyphOffsets,glyphCount,isSideways,isRightToLeft,geometrySink)
   1029 #define IDWriteFontFace_GetIndex() (This)->lpVtbl->GetIndex(This)
   1030 #define IDWriteFontFace_GetMetrics(This,fontFaceMetrics) (This)->lpVtbl->GetMetrics(This,fontFaceMetrics)
   1031 #define IDWriteFontFace_GetRecommendedRenderingMode(This,emSize,pixelsPerDip,measuringMode,renderingParams,renderingMode) (This)->lpVtbl->GetRecommendedRenderingMode(This,emSize,pixelsPerDip,measuringMode,renderingParams,renderingMode)
   1032 #define IDWriteFontFace_GetSimulations() (This)->lpVtbl->GetSimulations(This)
   1033 #define IDWriteFontFace_GetType() (This)->lpVtbl->GetType(This)
   1034 #define IDWriteFontFace_IsSymbolFont() (This)->lpVtbl->IsSymbolFont(This)
   1035 #define IDWriteFontFace_ReleaseFontTable(This,tableContext) (This)->lpVtbl->ReleaseFontTable(This,tableContext)
   1036 #define IDWriteFontFace_TryGetFontTable(This,openTypeTableTag,tableData,tableSize,tableContext,exists) (This)->lpVtbl->TryGetFontTable(This,openTypeTableTag,tableData,tableSize,tableContext,exists)
   1037 #endif /*COBJMACROS*/
   1038 
   1039 #undef  INTERFACE
   1040 #define INTERFACE IDWriteFontList
   1041 DECLARE_INTERFACE_(IDWriteFontList,IUnknown)
   1042 {
   1043     BEGIN_INTERFACE
   1044 
   1045 #ifndef __cplusplus
   1046     /* IUnknown methods */
   1047     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1048     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1049     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1050 #endif
   1051 
   1052     /* IDWriteFontList methods */
   1053     STDMETHOD(GetFontCollection)(THIS_
   1054         IDWriteFontCollection** fontCollection) PURE;
   1055 
   1056     STDMETHOD_(UINT32, GetFontCount)(THIS) PURE;
   1057 
   1058     STDMETHOD(GetFont)(THIS_
   1059         UINT32 index,
   1060         IDWriteFont **font) PURE;
   1061 
   1062     END_INTERFACE
   1063 };
   1064 #ifdef COBJMACROS
   1065 #define IDWriteFontList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1066 #define IDWriteFontList_AddRef(This) (This)->lpVtbl->AddRef(This)
   1067 #define IDWriteFontList_Release(This) (This)->lpVtbl->Release(This)
   1068 #define IDWriteFontList_GetFont(This,index,font) (This)->lpVtbl->GetFont(This,index,font)
   1069 #define IDWriteFontList_GetFontCollection(This,fontCollection) (This)->lpVtbl->GetFontCollection(This,fontCollection)
   1070 #define IDWriteFontList_GetFontCount() (This)->lpVtbl->GetFontCount(This)
   1071 #endif /*COBJMACROS*/
   1072 
   1073 #undef  INTERFACE
   1074 #define INTERFACE IDWriteFontFamily
   1075 DECLARE_INTERFACE_(IDWriteFontFamily,IDWriteFontList)
   1076 {
   1077     BEGIN_INTERFACE
   1078 
   1079 #ifndef __cplusplus
   1080     /* IUnknown methods */
   1081     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1082     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1083     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1084 
   1085     /* IDWriteFontList methods */
   1086     STDMETHOD(GetFontCollection)(THIS_
   1087         IDWriteFontCollection** fontCollection) PURE;
   1088 
   1089     STDMETHOD_(UINT32, GetFontCount)(THIS) PURE;
   1090 
   1091     STDMETHOD(GetFont)(THIS_
   1092         UINT32 index,
   1093         IDWriteFont **font) PURE;
   1094 #endif
   1095 
   1096     /* IDWriteFontFamily methods */
   1097     STDMETHOD(GetFamilyNames)(THIS_
   1098         IDWriteLocalizedStrings **names) PURE;
   1099 
   1100     STDMETHOD(GetFirstMatchingFont)(THIS_
   1101         DWRITE_FONT_WEIGHT weight,
   1102         DWRITE_FONT_STRETCH stretch,
   1103         DWRITE_FONT_STYLE style,
   1104         IDWriteFont **matchingFont) PURE;
   1105 
   1106     STDMETHOD(GetMatchingFonts)(THIS_
   1107         DWRITE_FONT_WEIGHT weight,
   1108         DWRITE_FONT_STRETCH stretch,
   1109         DWRITE_FONT_STYLE style,
   1110         IDWriteFontList **matchingFonts) PURE;
   1111 
   1112     END_INTERFACE
   1113 };
   1114 #ifdef COBJMACROS
   1115 #define IDWriteFontFamily_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1116 #define IDWriteFontFamily_AddRef(This) (This)->lpVtbl->AddRef(This)
   1117 #define IDWriteFontFamily_Release(This) (This)->lpVtbl->Release(This)
   1118 #define IDWriteFontFamily_GetFont(This,index,font) (This)->lpVtbl->GetFont(This,index,font)
   1119 #define IDWriteFontFamily_GetFontCollection(This,fontCollection) (This)->lpVtbl->GetFontCollection(This,fontCollection)
   1120 #define IDWriteFontFamily_GetFontCount() (This)->lpVtbl->GetFontCount(This)
   1121 #define IDWriteFontFamily_GetFamilyNames(This,names) (This)->lpVtbl->GetFamilyNames(This,names)
   1122 #define IDWriteFontFamily_GetFirstMatchingFont(This,weight,stretch,style,matchingFont) (This)->lpVtbl->GetFirstMatchingFont(This,weight,stretch,style,matchingFont)
   1123 #define IDWriteFontFamily_GetMatchingFonts(This,weight,stretch,style,matchingFonts) (This)->lpVtbl->GetMatchingFonts(This,weight,stretch,style,matchingFonts)
   1124 #endif /*COBJMACROS*/
   1125 
   1126 #undef  INTERFACE
   1127 #define INTERFACE IDWriteFontFile
   1128 DECLARE_INTERFACE_(IDWriteFontFile,IUnknown)
   1129 {
   1130     BEGIN_INTERFACE
   1131 
   1132 #ifndef __cplusplus
   1133     /* IUnknown methods */
   1134     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1135     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1136     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1137 #endif
   1138 
   1139     /* IDWriteFontFile methods */
   1140     STDMETHOD(GetReferenceKey)(THIS_
   1141         void const **fontFileReferenceKey,
   1142         UINT32 *fontFileReferenceKeySize) PURE;
   1143 
   1144     STDMETHOD(GetLoader)(THIS_
   1145         IDWriteFontFileLoader **fontFileLoader) PURE;
   1146 
   1147     STDMETHOD(Analyze)(THIS_
   1148         WINBOOL *isSupportedFontType,
   1149         DWRITE_FONT_FILE_TYPE *fontFileType,
   1150         DWRITE_FONT_FACE_TYPE *fontFaceType,
   1151         UINT32 *numberOfFaces) PURE;
   1152 
   1153     END_INTERFACE
   1154 };
   1155 #ifdef COBJMACROS
   1156 #define IDWriteFontFile_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1157 #define IDWriteFontFile_AddRef(This) (This)->lpVtbl->AddRef(This)
   1158 #define IDWriteFontFile_Release(This) (This)->lpVtbl->Release(This)
   1159 #define IDWriteFontFile_Analyze(This,isSupportedFontType,fontFileType,fontFaceType,numberOfFaces) (This)->lpVtbl->Analyze(This,isSupportedFontType,fontFileType,fontFaceType,numberOfFaces)
   1160 #define IDWriteFontFile_GetLoader(This,fontFileLoader) (This)->lpVtbl->GetLoader(This,fontFileLoader)
   1161 #define IDWriteFontFile_GetReferenceKey(This,fontFileReferenceKey,fontFileReferenceKeySize) (This)->lpVtbl->GetReferenceKey(This,fontFileReferenceKey,fontFileReferenceKeySize)
   1162 #endif /*COBJMACROS*/
   1163 
   1164 #undef  INTERFACE
   1165 #define INTERFACE IDWriteFontFileLoader
   1166 DECLARE_INTERFACE_(IDWriteFontFileLoader,IUnknown)
   1167 {
   1168     BEGIN_INTERFACE
   1169 
   1170 #ifndef __cplusplus
   1171     /* IUnknown methods */
   1172     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1173     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1174     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1175 #endif
   1176 
   1177     /* IDWriteFontFileLoader methods */
   1178     STDMETHOD(CreateStreamFromKey)(
   1179         void const *fontFileReferenceKey,
   1180         UINT32 fontFileReferenceKeySize,
   1181         IDWriteFontFileStream **fontFileStream) PURE;
   1182 
   1183     END_INTERFACE
   1184 };
   1185 #ifdef COBJMACROS
   1186 #define IDWriteFontFileLoader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1187 #define IDWriteFontFileLoader_AddRef(This) (This)->lpVtbl->AddRef(This)
   1188 #define IDWriteFontFileLoader_Release(This) (This)->lpVtbl->Release(This)
   1189 #define IDWriteFontFileLoader_CreateStreamFromKey(This,fontFileReferenceKey,fontFileReferenceKeySize,fontFileStream) (This)->lpVtbl->CreateStreamFromKey(This,fontFileReferenceKey,fontFileReferenceKeySize,fontFileStream)
   1190 #endif /*COBJMACROS*/
   1191 
   1192 #undef  INTERFACE
   1193 #define INTERFACE IDWriteFontFileStream
   1194 DECLARE_INTERFACE_(IDWriteFontFileStream,IUnknown)
   1195 {
   1196     BEGIN_INTERFACE
   1197 
   1198 #ifndef __cplusplus
   1199     /* IUnknown methods */
   1200     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1201     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1202     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1203 #endif
   1204 
   1205     /* IDWriteFontFileStream methods */
   1206     STDMETHOD(ReadFileFragment)(THIS_
   1207         void const **fragmentStart,
   1208         UINT64 fileOffset,
   1209         UINT64 fragmentSize,
   1210         void** fragmentContext) PURE;
   1211 
   1212     STDMETHOD_(void, ReleaseFileFragment)(THIS_
   1213         void *fragmentContext) PURE;
   1214 
   1215     STDMETHOD(GetFileSize)(THIS_
   1216         UINT64 *fileSize) PURE;
   1217 
   1218     STDMETHOD(GetLastWriteTime)(THIS_
   1219         UINT64 *lastWriteTime) PURE;
   1220 
   1221     END_INTERFACE
   1222 };
   1223 #ifdef COBJMACROS
   1224 #define IDWriteFontFileStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1225 #define IDWriteFontFileStream_AddRef(This) (This)->lpVtbl->AddRef(This)
   1226 #define IDWriteFontFileStream_Release(This) (This)->lpVtbl->Release(This)
   1227 #define IDWriteFontFileStream_GetFileSize(This,fileSize) (This)->lpVtbl->GetFileSize(This,fileSize)
   1228 #define IDWriteFontFileStream_GetLastWriteTime(This,lastWriteTime) (This)->lpVtbl->GetLastWriteTime(This,lastWriteTime)
   1229 #define IDWriteFontFileStream_ReadFileFragment(This,fragmentStart,fileOffset,fragmentSize,fragmentContext) (This)->lpVtbl->ReadFileFragment(This,fragmentStart,fileOffset,fragmentSize,fragmentContext)
   1230 #define IDWriteFontFileStream_ReleaseFileFragment(This,fragmentContext) (This)->lpVtbl->ReleaseFileFragment(This,fragmentContext)
   1231 #endif /*COBJMACROS*/
   1232 
   1233 #undef  INTERFACE
   1234 #define INTERFACE IDWriteFontCollectionLoader
   1235 DECLARE_INTERFACE_(IDWriteFontCollectionLoader,IUnknown)
   1236 {
   1237     BEGIN_INTERFACE
   1238 
   1239 #ifndef __cplusplus
   1240     /* IUnknown methods */
   1241     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1242     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1243     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1244 #endif
   1245 
   1246     /* IDWriteFontCollectionLoader methods */
   1247     STDMETHOD_(HRESULT,CreateEnumeratorFromKey)(THIS_ IDWriteFactory * factory,const void * collectionKey,UINT32  collectionKeySize,IDWriteFontFileEnumerator ** fontFileEnumerator) PURE;
   1248 
   1249     END_INTERFACE
   1250 };
   1251 #ifdef COBJMACROS
   1252 #define IDWriteFontCollectionLoader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1253 #define IDWriteFontCollectionLoader_AddRef(This) (This)->lpVtbl->AddRef(This)
   1254 #define IDWriteFontCollectionLoader_Release(This) (This)->lpVtbl->Release(This)
   1255 #define IDWriteFontCollectionLoader_CreateEnumeratorFromKey(This,factory,collectionKey,collectionKeySize,fontFileEnumerator) (This)->lpVtbl->CreateEnumeratorFromKey(This,factory,collectionKey,collectionKeySize,fontFileEnumerator)
   1256 #endif /*COBJMACROS*/
   1257 
   1258 #undef  INTERFACE
   1259 #define INTERFACE IDWriteFontFileEnumerator
   1260 DECLARE_INTERFACE_(IDWriteFontFileEnumerator,IUnknown)
   1261 {
   1262     BEGIN_INTERFACE
   1263 
   1264 #ifndef __cplusplus
   1265     /* IUnknown methods */
   1266     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1267     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1268     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1269 #endif
   1270 
   1271     /* IDWriteFontFileEnumerator methods */
   1272     STDMETHOD_(HRESULT,MoveNext)(THIS_ WINBOOL * hasCurrentFile) PURE;
   1273     STDMETHOD_(HRESULT,GetCurrentFontFile)(THIS_ IDWriteFontFile ** fontFile) PURE;
   1274 
   1275     END_INTERFACE
   1276 };
   1277 #ifdef COBJMACROS
   1278 #define IDWriteFontFileEnumerator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1279 #define IDWriteFontFileEnumerator_AddRef(This) (This)->lpVtbl->AddRef(This)
   1280 #define IDWriteFontFileEnumerator_Release(This) (This)->lpVtbl->Release(This)
   1281 #define IDWriteFontFileEnumerator_GetCurrentFontFile(This,fontFile) (This)->lpVtbl->GetCurrentFontFile(This,fontFile)
   1282 #define IDWriteFontFileEnumerator_MoveNext(This,hasCurrentFile) (This)->lpVtbl->MoveNext(This,hasCurrentFile)
   1283 #endif /*COBJMACROS*/
   1284 
   1285 #undef  INTERFACE
   1286 #define INTERFACE IDWriteGdiInterop
   1287 DECLARE_INTERFACE_(IDWriteGdiInterop,IUnknown)
   1288 {
   1289     BEGIN_INTERFACE
   1290 
   1291 #ifndef __cplusplus
   1292     /* IUnknown methods */
   1293     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1294     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1295     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1296 #endif
   1297 
   1298     /* IDWriteGdiInterop methods */
   1299     STDMETHOD(CreateFontFromLOGFONT)(THIS_
   1300         LOGFONTW const *logFont,
   1301         IDWriteFont **font) PURE;
   1302 
   1303     STDMETHOD(ConvertFontToLOGFONT)(THIS_
   1304         IDWriteFont *font,
   1305         LOGFONTW *logFont,
   1306         WINBOOL *isSystemFont) PURE;
   1307 
   1308     STDMETHOD(ConvertFontFaceToLOGFONT)(THIS_
   1309         IDWriteFontFace *font,
   1310         LOGFONTW *logFont) PURE;
   1311 
   1312     STDMETHOD(CreateFontFaceFromHdc)(THIS_
   1313         HDC hdc,
   1314         IDWriteFontFace **fontFace) PURE;
   1315 
   1316     STDMETHOD(CreateBitmapRenderTarget)(THIS_
   1317         HDC hdc,
   1318         UINT32 width,
   1319         UINT32 height,
   1320         IDWriteBitmapRenderTarget **renderTarget) PURE;
   1321 
   1322     END_INTERFACE
   1323 };
   1324 #ifdef COBJMACROS
   1325 #define IDWriteGdiInterop_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1326 #define IDWriteGdiInterop_AddRef(This) (This)->lpVtbl->AddRef(This)
   1327 #define IDWriteGdiInterop_Release(This) (This)->lpVtbl->Release(This)
   1328 #define IDWriteGdiInterop_ConvertFontFaceToLOGFONT(This,font,logFont) (This)->lpVtbl->ConvertFontFaceToLOGFONT(This,font,logFont)
   1329 #define IDWriteGdiInterop_ConvertFontToLOGFONT(This,font,logFont,isSystemFont) (This)->lpVtbl->ConvertFontToLOGFONT(This,font,logFont,isSystemFont)
   1330 #define IDWriteGdiInterop_CreateBitmapRenderTarget(This,hdc,width,height,renderTarget) (This)->lpVtbl->CreateBitmapRenderTarget(This,hdc,width,height,renderTarget)
   1331 #define IDWriteGdiInterop_CreateFontFaceFromHdc(This,hdc,fontFace) (This)->lpVtbl->CreateFontFaceFromHdc(This,hdc,fontFace)
   1332 #define IDWriteGdiInterop_CreateFontFromLOGFONT(This,logFont,font) (This)->lpVtbl->CreateFontFromLOGFONT(This,logFont,font)
   1333 #endif /*COBJMACROS*/
   1334 
   1335 #undef  INTERFACE
   1336 #define INTERFACE IDWriteGlyphRunAnalysis
   1337 DECLARE_INTERFACE_(IDWriteGlyphRunAnalysis,IUnknown)
   1338 {
   1339     BEGIN_INTERFACE
   1340 
   1341 #ifndef __cplusplus
   1342     /* IUnknown methods */
   1343     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1344     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1345     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1346 #endif
   1347 
   1348     /* IDWriteGlyphRunAnalysis methods */
   1349     STDMETHOD(GetAlphaTextureBounds)(THIS_
   1350         DWRITE_TEXTURE_TYPE textureType,
   1351         RECT *textureBounds) PURE;
   1352 
   1353     STDMETHOD(CreateAlphaTexture)(THIS_
   1354         DWRITE_TEXTURE_TYPE textureType,
   1355         RECT const *textureBounds,
   1356         BYTE *alphaValues,
   1357         UINT32 bufferSize) PURE;
   1358 
   1359     STDMETHOD(GetAlphaBlendParams)(THIS_
   1360         IDWriteRenderingParams *renderingParams,
   1361         FLOAT *blendGamma,
   1362         FLOAT *blendEnhancedContrast,
   1363         FLOAT *blendClearTypeLevel) PURE;
   1364 
   1365     END_INTERFACE
   1366 };
   1367 #ifdef COBJMACROS
   1368 #define IDWriteGlyphRunAnalysis_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1369 #define IDWriteGlyphRunAnalysis_AddRef(This) (This)->lpVtbl->AddRef(This)
   1370 #define IDWriteGlyphRunAnalysis_Release(This) (This)->lpVtbl->Release(This)
   1371 #define IDWriteGlyphRunAnalysis_CreateAlphaTexture(This,textureType,textureBounds,alphaValues,bufferSize) (This)->lpVtbl->CreateAlphaTexture(This,textureType,textureBounds,alphaValues,bufferSize)
   1372 #define IDWriteGlyphRunAnalysis_GetAlphaBlendParams(This,renderingParams,blendGamma,blendEnhancedContrast,blendClearTypeLevel) (This)->lpVtbl->GetAlphaBlendParams(This,renderingParams,blendGamma,blendEnhancedContrast,blendClearTypeLevel)
   1373 #define IDWriteGlyphRunAnalysis_GetAlphaTextureBounds(This,textureType,textureBounds) (This)->lpVtbl->GetAlphaTextureBounds(This,textureType,textureBounds)
   1374 #endif /*COBJMACROS*/
   1375 
   1376 #undef  INTERFACE
   1377 #define INTERFACE IDWriteInlineObject
   1378 DECLARE_INTERFACE_(IDWriteInlineObject,IUnknown)
   1379 {
   1380     BEGIN_INTERFACE
   1381 
   1382 #ifndef __cplusplus
   1383     /* IUnknown methods */
   1384     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1385     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1386     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1387 #endif
   1388 
   1389     /* IDWriteInlineObject methods */
   1390     STDMETHOD(Draw)(THIS_
   1391             void *clientDrawingContext,
   1392             IDWriteTextRenderer *renderer,
   1393             FLOAT originX,
   1394             FLOAT originY,
   1395             WINBOOL isSideways,
   1396             WINBOOL isRightToLeft,
   1397             IUnknown *clientDrawingEffect) PURE;
   1398     STDMETHOD(GetMetrics)(THIS_
   1399             DWRITE_INLINE_OBJECT_METRICS *metrics) PURE;
   1400     STDMETHOD(GetOverhangMetrics)(THIS_
   1401             DWRITE_OVERHANG_METRICS *overhangs) PURE;
   1402     STDMETHOD(GetBreakConditions)(THIS_
   1403             DWRITE_BREAK_CONDITION *breakConditionBefore,
   1404             DWRITE_BREAK_CONDITION *breakConditionAfter) PURE;
   1405 
   1406     END_INTERFACE
   1407 };
   1408 #ifdef COBJMACROS
   1409 #define IDWriteInlineObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1410 #define IDWriteInlineObject_AddRef(This) (This)->lpVtbl->AddRef(This)
   1411 #define IDWriteInlineObject_Release(This) (This)->lpVtbl->Release(This)
   1412 #define IDWriteInlineObject_Draw(This,clientDrawingContext,renderer,originX,originY,isSideways,isRightToLeft,clientDrawingEffect) (This)->lpVtbl->Draw(This,clientDrawingContext,renderer,originX,originY,isSideways,isRightToLeft,clientDrawingEffect)
   1413 #define IDWriteInlineObject_GetBreakConditions(This,breakConditionBefore,breakConditionAfter) (This)->lpVtbl->GetBreakConditions(This,breakConditionBefore,breakConditionAfter)
   1414 #define IDWriteInlineObject_GetMetrics(This,metrics) (This)->lpVtbl->GetMetrics(This,metrics)
   1415 #define IDWriteInlineObject_GetOverhangMetrics(This,overhangs) (This)->lpVtbl->GetOverhangMetrics(This,overhangs)
   1416 #endif /*COBJMACROS*/
   1417 
   1418 #undef  INTERFACE
   1419 #define INTERFACE IDWriteLocalFontFileLoader
   1420 DECLARE_INTERFACE_(IDWriteLocalFontFileLoader,IUnknown)
   1421 {
   1422     BEGIN_INTERFACE
   1423 
   1424 #ifndef __cplusplus
   1425     /* IUnknown methods */
   1426     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1427     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1428     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1429 #endif
   1430 
   1431     /* IDWriteLocalFontFileLoader methods */
   1432     STDMETHOD_(HRESULT,GetFilePathLengthFromKey)(THIS_ const void *fontFileReferenceKey,UINT32 fontFileReferenceKeySize,UINT32 *filePathLength) PURE;
   1433     STDMETHOD_(HRESULT,GetFilePathFromKey)(THIS_ const void *fontFileReferenceKey,UINT32 fontFileReferenceKeySize,WCHAR *filePath,UINT32 filePathSize) PURE;
   1434     STDMETHOD_(HRESULT,GetLastWriteTimeFromKey)(THIS_ const void *fontFileReferenceKey,UINT32 fontFileReferenceKeySize,FILETIME *lastWriteTime) PURE;
   1435 
   1436     END_INTERFACE
   1437 };
   1438 #ifdef COBJMACROS
   1439 #define IDWriteLocalFontFileLoader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1440 #define IDWriteLocalFontFileLoader_AddRef(This) (This)->lpVtbl->AddRef(This)
   1441 #define IDWriteLocalFontFileLoader_Release(This) (This)->lpVtbl->Release(This)
   1442 #define IDWriteLocalFontFileLoader_GetFilePathLengthFromKey(This,fontFileReferenceKey,fontFileReferenceKeySize,filePathLength) (This)->lpVtbl->GetFilePathLengthFromKey(This,fontFileReferenceKey,fontFileReferenceKeySize,filePathLength)
   1443 #define IDWriteLocalFontFileLoader_GetFilePathFromKey(This,fontFileReferenceKey,fontFileReferenceKeySize,filePath,filePathSize) (This)->lpVtbl->GetFilePathFromKey(This,fontFileReferenceKey,fontFileReferenceKeySize,filePath,filePathSize)
   1444 #define IDWriteLocalFontFileLoader_GetLastWriteTimeFromKey(This,fontFileReferenceKey,fontFileReferenceKeySize,lastWriteTime) (This)->lpVtbl->GetLastWriteTimeFromKey(This,fontFileReferenceKey,fontFileReferenceKeySize,lastWriteTime)
   1445 #endif /*COBJMACROS*/
   1446 
   1447 #undef  INTERFACE
   1448 #define INTERFACE IDWriteLocalizedStrings
   1449 DECLARE_INTERFACE_(IDWriteLocalizedStrings,IUnknown)
   1450 {
   1451     BEGIN_INTERFACE
   1452 
   1453 #ifndef __cplusplus
   1454     /* IUnknown methods */
   1455     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1456     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1457     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1458 #endif
   1459 
   1460     /* IDWriteLocalizedStrings methods */
   1461     STDMETHOD_(UINT32, GetCount)(THIS) PURE;
   1462 
   1463     STDMETHOD(FindLocaleName)(THIS_
   1464         WCHAR const *localeName,
   1465         UINT32 *index,
   1466         WINBOOL *exists) PURE;
   1467 
   1468     STDMETHOD(GetLocaleNameLength)(THIS_
   1469         UINT32 index,
   1470         UINT32 *length) PURE;
   1471 
   1472     STDMETHOD(GetLocaleName)(THIS_
   1473         UINT32 index,
   1474         WCHAR *localeName,
   1475         UINT32 size) PURE;
   1476 
   1477     STDMETHOD(GetStringLength)(THIS_
   1478         UINT32 index,
   1479         UINT32 *length) PURE;
   1480 
   1481     STDMETHOD(GetString)(THIS_
   1482         UINT32 index,
   1483         WCHAR *stringBuffer,
   1484         UINT32 size) PURE;
   1485 
   1486     END_INTERFACE
   1487 };
   1488 #ifdef COBJMACROS
   1489 #define IDWriteLocalizedStrings_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1490 #define IDWriteLocalizedStrings_AddRef(This) (This)->lpVtbl->AddRef(This)
   1491 #define IDWriteLocalizedStrings_Release(This) (This)->lpVtbl->Release(This)
   1492 #define IDWriteLocalizedStrings_FindLocaleName(This,localeName,index,exists) (This)->lpVtbl->FindLocaleName(This,localeName,index,exists)
   1493 #define IDWriteLocalizedStrings_GetCount() (This)->lpVtbl->GetCount(This)
   1494 #define IDWriteLocalizedStrings_GetLocaleName(This,index,localeName,size) (This)->lpVtbl->GetLocaleName(This,index,localeName,size)
   1495 #define IDWriteLocalizedStrings_GetLocaleNameLength(This,index,length) (This)->lpVtbl->GetLocaleNameLength(This,index,length)
   1496 #define IDWriteLocalizedStrings_GetString(This,index,stringBuffer,size) (This)->lpVtbl->GetString(This,index,stringBuffer,size)
   1497 #define IDWriteLocalizedStrings_GetStringLength(This,index,length) (This)->lpVtbl->GetStringLength(This,index,length)
   1498 #endif /*COBJMACROS*/
   1499 
   1500 #undef  INTERFACE
   1501 #define INTERFACE IDWriteNumberSubstitution
   1502 DECLARE_INTERFACE_(IDWriteNumberSubstitution,IUnknown)
   1503 {
   1504     BEGIN_INTERFACE
   1505 
   1506 #ifndef __cplusplus
   1507     /* IUnknown methods */
   1508     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1509     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1510     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1511 #endif
   1512 
   1513     /* IDWriteNumberSubstitution methods */
   1514 
   1515     END_INTERFACE
   1516 };
   1517 #ifdef COBJMACROS
   1518 #define IDWriteNumberSubstitution_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1519 #define IDWriteNumberSubstitution_AddRef(This) (This)->lpVtbl->AddRef(This)
   1520 #define IDWriteNumberSubstitution_Release(This) (This)->lpVtbl->Release(This)
   1521 #endif /*COBJMACROS*/
   1522 
   1523 #undef  INTERFACE
   1524 #define INTERFACE IDWritePixelSnapping
   1525 DECLARE_INTERFACE_(IDWritePixelSnapping,IUnknown)
   1526 {
   1527     BEGIN_INTERFACE
   1528 
   1529 #ifndef __cplusplus
   1530     /* IUnknown methods */
   1531     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1532     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1533     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1534 #endif
   1535 
   1536     /* IDWritePixelSnapping methods */
   1537     STDMETHOD(IsPixelSnappingDisabled)(THIS_
   1538             void *clientDrawingContext,
   1539             WINBOOL *isDisabled) PURE;
   1540     STDMETHOD(GetCurrentTransform)(THIS_
   1541             void *clientDrawingContext,
   1542             DWRITE_MATRIX *transform) PURE;
   1543     STDMETHOD(GetPixelsPerDip)(THIS_
   1544             void *clientDrawingContext,
   1545             FLOAT *pixelsPerDip) PURE;
   1546 
   1547     END_INTERFACE
   1548 };
   1549 #ifdef COBJMACROS
   1550 #define IDWritePixelSnapping_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1551 #define IDWritePixelSnapping_AddRef(This) (This)->lpVtbl->AddRef(This)
   1552 #define IDWritePixelSnapping_Release(This) (This)->lpVtbl->Release(This)
   1553 #define IDWritePixelSnapping_GetCurrentTransform(This,clientDrawingContext,transform) (This)->lpVtbl->GetCurrentTransform(This,clientDrawingContext,transform)
   1554 #define IDWritePixelSnapping_GetPixelsPerDip(This,clientDrawingContext,pixelsPerDip) (This)->lpVtbl->GetPixelsPerDip(This,clientDrawingContext,pixelsPerDip)
   1555 #define IDWritePixelSnapping_IsPixelSnappingEnabled(This,clientDrawingContext,isDisabled) (This)->lpVtbl->IsPixelSnappingEnabled(This,clientDrawingContext,isDisabled)
   1556 #endif /*COBJMACROS*/
   1557 
   1558 #undef  INTERFACE
   1559 #define INTERFACE IDWriteRenderingParams
   1560 DECLARE_INTERFACE_(IDWriteRenderingParams,IUnknown)
   1561 {
   1562     BEGIN_INTERFACE
   1563 
   1564 #ifndef __cplusplus
   1565     /* IUnknown methods */
   1566     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1567     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1568     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1569 #endif
   1570 
   1571     /* IDWriteRenderingParams methods */
   1572     STDMETHOD_(FLOAT, GetGamma)(THIS) PURE;
   1573     STDMETHOD_(FLOAT, GetEnhancedContrast)(THIS) PURE;
   1574     STDMETHOD_(FLOAT, GetClearTypeLevel)(THIS) PURE;
   1575     STDMETHOD_(DWRITE_PIXEL_GEOMETRY, GetPixelGeometry)(THIS) PURE;
   1576     STDMETHOD_(DWRITE_RENDERING_MODE, GetRenderingMode)(THIS) PURE;
   1577 
   1578     END_INTERFACE
   1579 };
   1580 #ifdef COBJMACROS
   1581 #define IDWriteRenderingParams_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1582 #define IDWriteRenderingParams_AddRef(This) (This)->lpVtbl->AddRef(This)
   1583 #define IDWriteRenderingParams_Release(This) (This)->lpVtbl->Release(This)
   1584 #define IDWriteRenderingParams_GetClearTypeLevel() (This)->lpVtbl->GetClearTypeLevel(This)
   1585 #define IDWriteRenderingParams_GetEnhancedContrast() (This)->lpVtbl->GetEnhancedContrast(This)
   1586 #define IDWriteRenderingParams_GetGamma() (This)->lpVtbl->GetGamma(This)
   1587 #define IDWriteRenderingParams_GetPixelGeometry() (This)->lpVtbl->GetPixelGeometry(This)
   1588 #define IDWriteRenderingParams_GetRenderingMode() (This)->lpVtbl->GetRenderingMode(This)
   1589 #endif /*COBJMACROS*/
   1590 
   1591 #undef  INTERFACE
   1592 #define INTERFACE IDWriteTextAnalysisSink
   1593 DECLARE_INTERFACE_(IDWriteTextAnalysisSink,IUnknown)
   1594 {
   1595     BEGIN_INTERFACE
   1596 
   1597 #ifndef __cplusplus
   1598     /* IUnknown methods */
   1599     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1600     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1601     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1602 #endif
   1603 
   1604     /* IDWriteTextAnalysisSink methods */
   1605     STDMETHOD(SetScriptAnalysis)(
   1606             UINT32 textPosition,
   1607             UINT32 textLength,
   1608             DWRITE_SCRIPT_ANALYSIS const *scriptAnalysis) PURE;
   1609 
   1610     STDMETHOD(SetLineBreakpoints)(
   1611             UINT32 textPosition,
   1612             UINT32 textLength,
   1613             DWRITE_LINE_BREAKPOINT const *lineBreakpoints) PURE;
   1614 
   1615     STDMETHOD(SetBidiLevel)(
   1616             UINT32 textPosition,
   1617             UINT32 textLength,
   1618             UINT8 explicitLevel,
   1619             UINT8 resolvedLevel) PURE;
   1620 
   1621     STDMETHOD(SetNumberSubstitution)(
   1622             UINT32 textPosition,
   1623             UINT32 textLength,
   1624             IDWriteNumberSubstitution *numberSubstitution) PURE;
   1625 
   1626     END_INTERFACE
   1627 };
   1628 #ifdef COBJMACROS
   1629 #define IDWriteTextAnalysisSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1630 #define IDWriteTextAnalysisSink_AddRef(This) (This)->lpVtbl->AddRef(This)
   1631 #define IDWriteTextAnalysisSink_Release(This) (This)->lpVtbl->Release(This)
   1632 #define IDWriteTextAnalysisSink_SetBidiLevel(This,textPosition,textLength,explicitLevel,resolvedLevel) (This)->lpVtbl->SetBidiLevel(This,textPosition,textLength,explicitLevel,resolvedLevel)
   1633 #define IDWriteTextAnalysisSink_SetLineBreakpoints(This,textPosition,textLength,lineBreakpoints) (This)->lpVtbl->SetLineBreakpoints(This,textPosition,textLength,lineBreakpoints)
   1634 #define IDWriteTextAnalysisSink_SetNumberSubstitution(This,textPosition,textLength,numberSubstitution) (This)->lpVtbl->SetNumberSubstitution(This,textPosition,textLength,numberSubstitution)
   1635 #define IDWriteTextAnalysisSink_SetScriptAnalysis(This,textPosition,textLength,scriptAnalysis) (This)->lpVtbl->SetScriptAnalysis(This,textPosition,textLength,scriptAnalysis)
   1636 #endif /*COBJMACROS*/
   1637 
   1638 #undef  INTERFACE
   1639 #define INTERFACE IDWriteTextAnalysisSource
   1640 DECLARE_INTERFACE_(IDWriteTextAnalysisSource,IUnknown)
   1641 {
   1642     BEGIN_INTERFACE
   1643 
   1644 #ifndef __cplusplus
   1645     /* IUnknown methods */
   1646     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1647     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1648     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1649 #endif
   1650 
   1651     /* IDWriteTextAnalysisSource methods */
   1652     STDMETHOD(GetTextAtPosition)(THIS_
   1653         UINT32 textPosition,
   1654         WCHAR const **textString,
   1655         UINT32 *textLength) PURE;
   1656 
   1657     STDMETHOD(GetTextBeforePosition)(THIS_
   1658         UINT32 textPosition,
   1659         WCHAR const **textString,
   1660         UINT32 *textLength) PURE;
   1661 
   1662     STDMETHOD_(DWRITE_READING_DIRECTION, GetParagraphReadingDirection)(THIS) PURE;
   1663 
   1664     STDMETHOD(GetLocaleName)(THIS_
   1665         UINT32 textPosition,
   1666         UINT32 *textLength,
   1667         WCHAR const **localeName) PURE;
   1668 
   1669     STDMETHOD(GetNumberSubstitution)(THIS_
   1670         UINT32 textPosition,
   1671         UINT32 *textLength,
   1672         IDWriteNumberSubstitution **numberSubstitution) PURE;
   1673 
   1674     END_INTERFACE
   1675 };
   1676 #ifdef COBJMACROS
   1677 #define IDWriteTextAnalysisSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1678 #define IDWriteTextAnalysisSource_AddRef(This) (This)->lpVtbl->AddRef(This)
   1679 #define IDWriteTextAnalysisSource_Release(This) (This)->lpVtbl->Release(This)
   1680 #define IDWriteTextAnalysisSource_GetLocaleName(This,textPosition,textLength,localeName) (This)->lpVtbl->GetLocaleName(This,textPosition,textLength,localeName)
   1681 #define IDWriteTextAnalysisSource_GetNumberSubstitution(This,textPosition,textLength,numberSubstitution) (This)->lpVtbl->GetNumberSubstitution(This,textPosition,textLength,numberSubstitution)
   1682 #define IDWriteTextAnalysisSource_GetParagraphReadingDirection() (This)->lpVtbl->GetParagraphReadingDirection(This)
   1683 #define IDWriteTextAnalysisSource_GetTextAtPosition(This,textPosition,textString,textLength) (This)->lpVtbl->GetTextAtPosition(This,textPosition,textString,textLength)
   1684 #define IDWriteTextAnalysisSource_GetTextBeforePosition(This,textPosition,textString,textLength) (This)->lpVtbl->GetTextBeforePosition(This,textPosition,textString,textLength)
   1685 #endif /*COBJMACROS*/
   1686 
   1687 #undef  INTERFACE
   1688 #define INTERFACE IDWriteTextAnalyzer
   1689 DECLARE_INTERFACE_(IDWriteTextAnalyzer,IUnknown)
   1690 {
   1691     BEGIN_INTERFACE
   1692 
   1693 #ifndef __cplusplus
   1694     /* IUnknown methods */
   1695     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1696     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1697     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1698 #endif
   1699 
   1700     /* IDWriteTextAnalyzer methods */
   1701     STDMETHOD(AnalyzeScript)(THIS_
   1702         IDWriteTextAnalysisSource* analysisSource,
   1703         UINT32 textPosition,
   1704         UINT32 textLength,
   1705         IDWriteTextAnalysisSink *analysisSink) PURE;
   1706 
   1707     STDMETHOD(AnalyzeBidi)(THIS_
   1708         IDWriteTextAnalysisSource *analysisSource,
   1709         UINT32 textPosition,
   1710         UINT32 textLength,
   1711         IDWriteTextAnalysisSink *analysisSink) PURE;
   1712 
   1713     STDMETHOD(AnalyzeNumberSubstitution)(THIS_
   1714         IDWriteTextAnalysisSource *analysisSource,
   1715         UINT32 textPosition,
   1716         UINT32 textLength,
   1717         IDWriteTextAnalysisSink *analysisSink) PURE;
   1718 
   1719     STDMETHOD(AnalyzeLineBreakpoints)(THIS_
   1720         IDWriteTextAnalysisSource *analysisSource,
   1721         UINT32 textPosition,
   1722         UINT32 textLength,
   1723         IDWriteTextAnalysisSink *analysisSink) PURE;
   1724 
   1725     STDMETHOD(GetGlyphs)(THIS_
   1726         WCHAR const *textString,
   1727         UINT32 textLength,
   1728         IDWriteFontFace *fontFace,
   1729         WINBOOL isSideways,
   1730         WINBOOL isRightToLeft,
   1731         DWRITE_SCRIPT_ANALYSIS const *scriptAnalysis,
   1732         WCHAR const *localeName,
   1733         IDWriteNumberSubstitution *numberSubstitution,
   1734         DWRITE_TYPOGRAPHIC_FEATURES const **features,
   1735         UINT32 const *featureRangeLengths,
   1736         UINT32 featureRanges,
   1737         UINT32 maxGlyphCount,
   1738         UINT16 *clusterMap,
   1739         DWRITE_SHAPING_TEXT_PROPERTIES *textProps,
   1740         UINT16 *glyphIndices,
   1741         DWRITE_SHAPING_GLYPH_PROPERTIES *glyphProps,
   1742         UINT32 *actualGlyphCount) PURE;
   1743 
   1744     STDMETHOD(GetGlyphPlacements)(THIS_
   1745         WCHAR const *textString,
   1746         UINT16 const *clusterMap,
   1747         DWRITE_SHAPING_TEXT_PROPERTIES *textProps,
   1748         UINT32 textLength,
   1749         UINT16 const *glyphIndices,
   1750         DWRITE_SHAPING_GLYPH_PROPERTIES const *glyphProps,
   1751         UINT32 glyphCount,
   1752         IDWriteFontFace *fontFace,
   1753         FLOAT fontEmSize,
   1754         WINBOOL isSideways,
   1755         WINBOOL isRightToLeft,
   1756         DWRITE_SCRIPT_ANALYSIS const *scriptAnalysis,
   1757         WCHAR const *localeName,
   1758         DWRITE_TYPOGRAPHIC_FEATURES const **features,
   1759         UINT32 const *featureRangeLengths,
   1760         UINT32 featureRanges,
   1761         FLOAT *glyphAdvances,
   1762         DWRITE_GLYPH_OFFSET *glyphOffsets) PURE;
   1763 
   1764     STDMETHOD(GetGdiCompatibleGlyphPlacements)(THIS_
   1765         WCHAR const *textString,
   1766         UINT16 const *clusterMap,
   1767         DWRITE_SHAPING_TEXT_PROPERTIES *textProps,
   1768         UINT32 textLength,
   1769         UINT16 const *glyphIndices,
   1770         DWRITE_SHAPING_GLYPH_PROPERTIES const *glyphProps,
   1771         UINT32 glyphCount,
   1772         IDWriteFontFace *fontFace,
   1773         FLOAT fontEmSize,
   1774         FLOAT pixelsPerDip,
   1775         DWRITE_MATRIX const *transform,
   1776         WINBOOL useGdiNatural,
   1777         WINBOOL isSideways,
   1778         WINBOOL isRightToLeft,
   1779         DWRITE_SCRIPT_ANALYSIS const* scriptAnalysis,
   1780         WCHAR const *localeName,
   1781         DWRITE_TYPOGRAPHIC_FEATURES const **features,
   1782         UINT32 const *featureRangeLengths,
   1783         UINT32 featureRanges,
   1784         FLOAT *glyphAdvances,
   1785         DWRITE_GLYPH_OFFSET *glyphOffsets) PURE;
   1786 
   1787     END_INTERFACE
   1788 };
   1789 #ifdef COBJMACROS
   1790 #define IDWriteTextAnalyzer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1791 #define IDWriteTextAnalyzer_AddRef(This) (This)->lpVtbl->AddRef(This)
   1792 #define IDWriteTextAnalyzer_Release(This) (This)->lpVtbl->Release(This)
   1793 #define IDWriteTextAnalyzer_AnalyzeBidi(This,analysisSource,textPosition,textLength,analysisSink) (This)->lpVtbl->AnalyzeBidi(This,analysisSource,textPosition,textLength,analysisSink)
   1794 #define IDWriteTextAnalyzer_AnalyzeLineBreakpoints(This,analysisSource,textPosition,textLength,analysisSink) (This)->lpVtbl->AnalyzeLineBreakpoints(This,analysisSource,textPosition,textLength,analysisSink)
   1795 #define IDWriteTextAnalyzer_AnalyzeNumberSubstitution(This,analysisSource,textPosition,textLength,analysisSink) (This)->lpVtbl->AnalyzeNumberSubstitution(This,analysisSource,textPosition,textLength,analysisSink)
   1796 #define IDWriteTextAnalyzer_AnalyzeScript(This,analysisSource,textPosition,textLength,analysisSink) (This)->lpVtbl->AnalyzeScript(This,analysisSource,textPosition,textLength,analysisSink)
   1797 #define IDWriteTextAnalyzer_GetGdiCompatibleGlyphPlacements(This,textString,clusterMap,textProps,textLength,glyphIndices,glyphProps,glyphCount,fontFace,fontEmSize,pixelsPerDip,transform,useGdiNatural,isSideways,isRightToLeft,scriptAnalysis,featureRangeLengths,featureRanges,glyphAdvances,glyphOffsets) (This)->lpVtbl->GetGdiCompatibleGlyphPlacements(This,textString,clusterMap,textProps,textLength,glyphIndices,glyphProps,glyphCount,fontFace,fontEmSize,pixelsPerDip,transform,useGdiNatural,isSideways,isRightToLeft,scriptAnalysis,featureRangeLengths,featureRanges,glyphAdvances,glyphOffsets)
   1798 #define IDWriteTextAnalyzer_GetGlyphPlacements(This,textString,clusterMap,textProps,textLength,glyphIndices,glyphProps,glyphCount,fontFace,fontEmSize,isSideways,isRightToLeft,scriptAnalysis,featureRangeLengths,featureRanges,glyphAdvances,glyphOffsets) (This)->lpVtbl->GetGlyphPlacements(This,textString,clusterMap,textProps,textLength,glyphIndices,glyphProps,glyphCount,fontFace,fontEmSize,isSideways,isRightToLeft,scriptAnalysis,featureRangeLengths,featureRanges,glyphAdvances,glyphOffsets)
   1799 #define IDWriteTextAnalyzer_GetGlyphs(This,textString,textLength,fontFace,isSideways,isRightToLeft,scriptAnalysis,featureRangeLengths,featureRanges,maxGlyphCount,clusterMap,textProps,glyphIndices,glyphProps,actualGlyphCount) (This)->lpVtbl->GetGlyphs(This,textString,textLength,fontFace,isSideways,isRightToLeft,scriptAnalysis,featureRangeLengths,featureRanges,maxGlyphCount,clusterMap,textProps,glyphIndices,glyphProps,actualGlyphCount)
   1800 #endif /*COBJMACROS*/
   1801 
   1802 #undef  INTERFACE
   1803 #define INTERFACE IDWriteTextFormat
   1804 DECLARE_INTERFACE_(IDWriteTextFormat,IUnknown)
   1805 {
   1806     BEGIN_INTERFACE
   1807 
   1808 #ifndef __cplusplus
   1809     /* IUnknown methods */
   1810     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1811     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1812     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1813 #endif
   1814 
   1815     /* IDWriteTextFormat methods */
   1816     STDMETHOD(SetTextAlignment)(THIS_
   1817             DWRITE_TEXT_ALIGNMENT textAlignment) PURE;
   1818     STDMETHOD(SetParagraphAlignment)(THIS_
   1819             DWRITE_PARAGRAPH_ALIGNMENT paragraphAlignment) PURE;
   1820     STDMETHOD(SetWordWrapping)(THIS_
   1821             DWRITE_WORD_WRAPPING wordWrapping) PURE;
   1822     STDMETHOD(SetReadingDirection)(THIS_
   1823             DWRITE_READING_DIRECTION readingDirection) PURE;
   1824     STDMETHOD(SetFlowDirection)(THIS_
   1825             DWRITE_FLOW_DIRECTION flowDirection) PURE;
   1826     STDMETHOD(SetIncrementalTabStop)(THIS_
   1827             FLOAT incrementalTabStop) PURE;
   1828     STDMETHOD(SetTrimming)(THIS_
   1829             DWRITE_TRIMMING const *trimmingOptions,
   1830             IDWriteInlineObject *trimmingSign) PURE;
   1831     STDMETHOD(SetLineSpacing)(THIS_
   1832             DWRITE_LINE_SPACING_METHOD lineSpacingMethod,
   1833             FLOAT lineSpacing,
   1834             FLOAT baseline) PURE;
   1835     STDMETHOD_(DWRITE_TEXT_ALIGNMENT, GetTextAlignment)(THIS) PURE;
   1836     STDMETHOD_(DWRITE_PARAGRAPH_ALIGNMENT, GetParagraphAlignment)(THIS) PURE;
   1837     STDMETHOD_(DWRITE_WORD_WRAPPING, GetWordWrapping)(THIS) PURE;
   1838     STDMETHOD_(DWRITE_READING_DIRECTION, GetReadingDirection)(THIS) PURE;
   1839     STDMETHOD_(DWRITE_FLOW_DIRECTION, GetFlowDirection)(THIS) PURE;
   1840     STDMETHOD_(FLOAT, GetIncrementalTabStop)(THIS) PURE;
   1841     STDMETHOD(GetTrimming)(THIS_
   1842             DWRITE_TRIMMING* trimmingOptions,
   1843             IDWriteInlineObject **trimmingSign) PURE;
   1844     STDMETHOD(GetLineSpacing)(THIS_
   1845             DWRITE_LINE_SPACING_METHOD *lineSpacingMethod,
   1846             FLOAT *lineSpacing,
   1847             FLOAT *baseline) PURE;
   1848     STDMETHOD(GetFontCollection)(THIS_
   1849             IDWriteFontCollection **fontCollection) PURE;
   1850     STDMETHOD_(UINT32, GetFontFamilyNameLength)(THIS) PURE;
   1851     STDMETHOD(GetFontFamilyName)(THIS_
   1852             WCHAR *fontFamilyName,
   1853             UINT32 nameSize) PURE;
   1854     STDMETHOD_(DWRITE_FONT_WEIGHT, GetFontWeight)(THIS) PURE;
   1855     STDMETHOD_(DWRITE_FONT_STYLE, GetFontStyle)(THIS) PURE;
   1856     STDMETHOD_(DWRITE_FONT_STRETCH, GetFontStretch)(THIS) PURE;
   1857     STDMETHOD_(FLOAT, GetFontSize)(THIS) PURE;
   1858     STDMETHOD_(UINT32, GetLocaleNameLength)(THIS) PURE;
   1859     STDMETHOD(GetLocaleName)(THIS_
   1860             WCHAR *localeName,
   1861             UINT32 nameSize) PURE;
   1862 
   1863     END_INTERFACE
   1864 };
   1865 #ifdef COBJMACROS
   1866 #define IDWriteTextFormat_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1867 #define IDWriteTextFormat_AddRef(This) (This)->lpVtbl->AddRef(This)
   1868 #define IDWriteTextFormat_Release(This) (This)->lpVtbl->Release(This)
   1869 #define IDWriteTextFormat_GetFlowDirection() (This)->lpVtbl->GetFlowDirection(This)
   1870 #define IDWriteTextFormat_GetFontCollection(This,fontCollection) (This)->lpVtbl->GetFontCollection(This,fontCollection)
   1871 #define IDWriteTextFormat_GetFontFamilyName(This,fontFamilyName,nameSize) (This)->lpVtbl->GetFontFamilyName(This,fontFamilyName,nameSize)
   1872 #define IDWriteTextFormat_GetFontFamilyNameLength() (This)->lpVtbl->GetFontFamilyNameLength(This)
   1873 #define IDWriteTextFormat_GetFontSize() (This)->lpVtbl->GetFontSize(This)
   1874 #define IDWriteTextFormat_GetFontStretch() (This)->lpVtbl->GetFontStretch(This)
   1875 #define IDWriteTextFormat_GetFontStyle() (This)->lpVtbl->GetFontStyle(This)
   1876 #define IDWriteTextFormat_GetFontWeight() (This)->lpVtbl->GetFontWeight(This)
   1877 #define IDWriteTextFormat_GetIncrementalTabStop() (This)->lpVtbl->GetIncrementalTabStop(This)
   1878 #define IDWriteTextFormat_GetLineSpacing(This,lineSpacingMethod,lineSpacing,baseline) (This)->lpVtbl->GetLineSpacing(This,lineSpacingMethod,lineSpacing,baseline)
   1879 #define IDWriteTextFormat_GetLocaleName(This,localeName,nameSize) (This)->lpVtbl->GetLocaleName(This,localeName,nameSize)
   1880 #define IDWriteTextFormat_GetLocaleNameLength() (This)->lpVtbl->GetLocaleNameLength(This)
   1881 #define IDWriteTextFormat_GetParagraphAlignment() (This)->lpVtbl->GetParagraphAlignment(This)
   1882 #define IDWriteTextFormat_GetReadingDirection() (This)->lpVtbl->GetReadingDirection(This)
   1883 #define IDWriteTextFormat_GetTextAlignment() (This)->lpVtbl->GetTextAlignment(This)
   1884 #define IDWriteTextFormat_GetTrimming(This,trimmingOptions,trimmingSign) (This)->lpVtbl->GetTrimming(This,trimmingOptions,trimmingSign)
   1885 #define IDWriteTextFormat_GetWordWrapping() (This)->lpVtbl->GetWordWrapping(This)
   1886 #define IDWriteTextFormat_SetFlowDirection(This,flowDirection) (This)->lpVtbl->SetFlowDirection(This,flowDirection)
   1887 #define IDWriteTextFormat_SetIncrementalTabStop(This,incrementalTabStop) (This)->lpVtbl->SetIncrementalTabStop(This,incrementalTabStop)
   1888 #define IDWriteTextFormat_SetLineSpacing(This,lineSpacingMethod,lineSpacing,baseline) (This)->lpVtbl->SetLineSpacing(This,lineSpacingMethod,lineSpacing,baseline)
   1889 #define IDWriteTextFormat_SetParagraphAlignment(This,paragraphAlignment) (This)->lpVtbl->SetParagraphAlignment(This,paragraphAlignment)
   1890 #define IDWriteTextFormat_SetReadingDirection(This,readingDirection) (This)->lpVtbl->SetReadingDirection(This,readingDirection)
   1891 #define IDWriteTextFormat_SetTextAlignment(This,textAlignment) (This)->lpVtbl->SetTextAlignment(This,textAlignment)
   1892 #define IDWriteTextFormat_SetTrimming(This,trimmingOptions,trimmingSign) (This)->lpVtbl->SetTrimming(This,trimmingOptions,trimmingSign)
   1893 #define IDWriteTextFormat_SetWordWrapping(This,wordWrapping) (This)->lpVtbl->SetWordWrapping(This,wordWrapping)
   1894 #endif /*COBJMACROS*/
   1895 
   1896 #undef  INTERFACE
   1897 #define INTERFACE IDWriteTextLayout
   1898 DECLARE_INTERFACE_(IDWriteTextLayout,IDWriteTextFormat)
   1899 {
   1900     BEGIN_INTERFACE
   1901 
   1902 #ifndef __cplusplus
   1903     /* IUnknown methods */
   1904     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   1905     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1906     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1907 
   1908     /* IDWriteTextFormat methods */
   1909     STDMETHOD(SetTextAlignment)(THIS_
   1910             DWRITE_TEXT_ALIGNMENT textAlignment) PURE;
   1911     STDMETHOD(SetParagraphAlignment)(THIS_
   1912             DWRITE_PARAGRAPH_ALIGNMENT paragraphAlignment) PURE;
   1913     STDMETHOD(SetWordWrapping)(THIS_
   1914             DWRITE_WORD_WRAPPING wordWrapping) PURE;
   1915     STDMETHOD(SetReadingDirection)(THIS_
   1916             DWRITE_READING_DIRECTION readingDirection) PURE;
   1917     STDMETHOD(SetFlowDirection)(THIS_
   1918             DWRITE_FLOW_DIRECTION flowDirection) PURE;
   1919     STDMETHOD(SetIncrementalTabStop)(THIS_
   1920             FLOAT incrementalTabStop) PURE;
   1921     STDMETHOD(SetTrimming)(THIS_
   1922             DWRITE_TRIMMING const *trimmingOptions,
   1923             IDWriteInlineObject *trimmingSign) PURE;
   1924     STDMETHOD(SetLineSpacing)(THIS_
   1925             DWRITE_LINE_SPACING_METHOD lineSpacingMethod,
   1926             FLOAT lineSpacing,
   1927             FLOAT baseline) PURE;
   1928     STDMETHOD_(DWRITE_TEXT_ALIGNMENT, GetTextAlignment)(THIS) PURE;
   1929     STDMETHOD_(DWRITE_PARAGRAPH_ALIGNMENT, GetParagraphAlignment)(THIS) PURE;
   1930     STDMETHOD_(DWRITE_WORD_WRAPPING, GetWordWrapping)(THIS) PURE;
   1931     STDMETHOD_(DWRITE_READING_DIRECTION, GetReadingDirection)(THIS) PURE;
   1932     STDMETHOD_(DWRITE_FLOW_DIRECTION, GetFlowDirection)(THIS) PURE;
   1933     STDMETHOD_(FLOAT, GetIncrementalTabStop)(THIS) PURE;
   1934     STDMETHOD(GetTrimming)(THIS_
   1935             DWRITE_TRIMMING* trimmingOptions,
   1936             IDWriteInlineObject **trimmingSign) PURE;
   1937     STDMETHOD(GetLineSpacing)(THIS_
   1938             DWRITE_LINE_SPACING_METHOD *lineSpacingMethod,
   1939             FLOAT *lineSpacing,
   1940             FLOAT *baseline) PURE;
   1941     STDMETHOD(GetFontCollection)(THIS_
   1942             IDWriteFontCollection **fontCollection) PURE;
   1943     STDMETHOD_(UINT32, GetFontFamilyNameLength)(THIS) PURE;
   1944     STDMETHOD(GetFontFamilyName)(THIS_
   1945             WCHAR *fontFamilyName,
   1946             UINT32 nameSize) PURE;
   1947     STDMETHOD_(DWRITE_FONT_WEIGHT, GetFontWeight)(THIS) PURE;
   1948     STDMETHOD_(DWRITE_FONT_STYLE, GetFontStyle)(THIS) PURE;
   1949     STDMETHOD_(DWRITE_FONT_STRETCH, GetFontStretch)(THIS) PURE;
   1950     STDMETHOD_(FLOAT, GetFontSize)(THIS) PURE;
   1951     STDMETHOD_(UINT32, GetLocaleNameLength)(THIS) PURE;
   1952     STDMETHOD(GetLocaleName)(THIS_
   1953             WCHAR *localeName,
   1954             UINT32 nameSize) PURE;
   1955 #endif
   1956 
   1957     /* IDWriteTextLayout methods */
   1958     STDMETHOD(SetMaxWidth)(THIS_
   1959             FLOAT maxWidth) PURE;
   1960     STDMETHOD(SetMaxHeight)(THIS_
   1961             FLOAT maxHeight) PURE;
   1962     STDMETHOD(SetFontCollection)(THIS_
   1963             IDWriteFontCollection *fontCollection,
   1964             DWRITE_TEXT_RANGE textRange) PURE;
   1965     STDMETHOD(SetFontFamilyName)(THIS_
   1966             WCHAR const *fontFamilyName,
   1967             DWRITE_TEXT_RANGE textRange) PURE;
   1968     STDMETHOD(SetFontWeight)(THIS_
   1969             DWRITE_FONT_WEIGHT fontWeight,
   1970             DWRITE_TEXT_RANGE textRange) PURE;
   1971     STDMETHOD(SetFontStyle)(THIS_
   1972             DWRITE_FONT_STYLE fontStyle,
   1973             DWRITE_TEXT_RANGE textRange) PURE;
   1974     STDMETHOD(SetFontStretch)(THIS_
   1975             DWRITE_FONT_STRETCH fontStretch,
   1976             DWRITE_TEXT_RANGE textRange) PURE;
   1977     STDMETHOD(SetFontSize)(THIS_
   1978             FLOAT fontSize,
   1979             DWRITE_TEXT_RANGE textRange) PURE;
   1980     STDMETHOD(SetUnderline)(THIS_
   1981             WINBOOL hasUnderline,
   1982             DWRITE_TEXT_RANGE textRange) PURE;
   1983     STDMETHOD(SetStrikethrough)(THIS_
   1984             WINBOOL hasStrikethrough,
   1985             DWRITE_TEXT_RANGE textRange) PURE;
   1986     STDMETHOD(SetDrawingEffect)(THIS_
   1987             IUnknown *drawingEffect,
   1988             DWRITE_TEXT_RANGE textRange) PURE;
   1989     STDMETHOD(SetInlineObject)(THIS_
   1990             IDWriteInlineObject *inlineObject,
   1991             DWRITE_TEXT_RANGE textRange) PURE;
   1992     STDMETHOD(SetTypography)(THIS_
   1993             IDWriteTypography *typography,
   1994             DWRITE_TEXT_RANGE textRange) PURE;
   1995     STDMETHOD(SetLocaleName)(THIS_
   1996             WCHAR const *localeName,
   1997             DWRITE_TEXT_RANGE textRange) PURE;
   1998     STDMETHOD_(FLOAT, GetMaxWidth)(THIS) PURE;
   1999     STDMETHOD_(FLOAT, GetMaxHeight)(THIS) PURE;
   2000     STDMETHOD(GetFontCollection)(THIS_
   2001             UINT32 currentPosition,
   2002             IDWriteFontCollection** fontCollection,
   2003             DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
   2004     STDMETHOD(GetFontFamilyNameLength)(THIS_
   2005             UINT32 currentPosition,
   2006             UINT32 *nameLength,
   2007             DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
   2008     STDMETHOD(GetFontFamilyName)(THIS_
   2009             UINT32 currentPosition,
   2010             WCHAR *fontFamilyName,
   2011             UINT32 nameSize,
   2012             DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
   2013     STDMETHOD(GetFontWeight)(THIS_
   2014             UINT32 currentPosition,
   2015             DWRITE_FONT_WEIGHT *fontWeight,
   2016             DWRITE_TEXT_RANGE* textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
   2017     STDMETHOD(GetFontStyle)(THIS_
   2018             UINT32 currentPosition,
   2019             DWRITE_FONT_STYLE *fontStyle,
   2020             DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
   2021     STDMETHOD(GetFontStretch)(THIS_
   2022             UINT32 currentPosition,
   2023             DWRITE_FONT_STRETCH* fontStretch,
   2024             DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
   2025     STDMETHOD(GetFontSize)(THIS_
   2026             UINT32 currentPosition,
   2027             FLOAT *fontSize,
   2028             DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
   2029     STDMETHOD(GetUnderline)(THIS_
   2030             UINT32 currentPosition,
   2031             WINBOOL *hasUnderline,
   2032             DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
   2033     STDMETHOD(GetStrikethrough)(THIS_
   2034             UINT32 currentPosition,
   2035             WINBOOL *hasStrikethrough,
   2036             DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
   2037     STDMETHOD(GetDrawingEffect)(THIS_
   2038             UINT32 currentPosition,
   2039             IUnknown **drawingEffect,
   2040             DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
   2041     STDMETHOD(GetInlineObject)(THIS_
   2042             UINT32 currentPosition,
   2043             IDWriteInlineObject **inlineObject,
   2044             DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
   2045     STDMETHOD(GetTypography)(THIS_
   2046             UINT32 currentPosition,
   2047             IDWriteTypography **typography,
   2048             DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
   2049     STDMETHOD(GetLocaleNameLength)(THIS_
   2050             UINT32 currentPosition,
   2051             UINT32 *nameLength,
   2052             DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
   2053     STDMETHOD(GetLocaleName)(THIS_
   2054             UINT32 currentPosition,
   2055             WCHAR *localeName,
   2056             UINT32 nameSize,
   2057             DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
   2058     STDMETHOD(Draw)(THIS_
   2059             void *clientDrawingContext,
   2060             IDWriteTextRenderer *renderer,
   2061             FLOAT originX,
   2062             FLOAT originY) PURE;
   2063     STDMETHOD(GetLineMetrics)(THIS_
   2064             DWRITE_LINE_METRICS *lineMetrics,
   2065             UINT32 maxLineCount,
   2066             UINT32 *actualLineCount) PURE;
   2067     STDMETHOD(GetMetrics)(THIS_
   2068             DWRITE_TEXT_METRICS *textMetrics) PURE;
   2069     STDMETHOD(GetOverhangMetrics)(THIS_
   2070             DWRITE_OVERHANG_METRICS *overhangs) PURE;
   2071     STDMETHOD(GetClusterMetrics)(THIS_
   2072             DWRITE_CLUSTER_METRICS *clusterMetrics,
   2073             UINT32 maxClusterCount,
   2074             UINT32 *actualClusterCount) PURE;
   2075     STDMETHOD(DetermineMinWidth)(THIS_
   2076             FLOAT *minWidth) PURE;
   2077     STDMETHOD(HitTestPoint)(THIS_
   2078             FLOAT pointX,
   2079             FLOAT pointY,
   2080             WINBOOL *isTrailingHit,
   2081             WINBOOL *isInside,
   2082             DWRITE_HIT_TEST_METRICS *hitTestMetrics) PURE;
   2083     STDMETHOD(HitTestTextPosition)(THIS_
   2084             UINT32 textPosition,
   2085             WINBOOL isTrailingHit,
   2086             FLOAT *pointX,
   2087             FLOAT *pointY,
   2088             DWRITE_HIT_TEST_METRICS *hitTestMetrics) PURE;
   2089     STDMETHOD(HitTestTextRange)(THIS_
   2090             UINT32 textPosition,
   2091             UINT32 textLength,
   2092             FLOAT originX,
   2093             FLOAT originY,
   2094             DWRITE_HIT_TEST_METRICS *hitTestMetrics,
   2095             UINT32 maxHitTestMetricsCount,
   2096             UINT32 *actualHitTestMetricsCount) PURE;
   2097 
   2098     END_INTERFACE
   2099 };
   2100 #ifdef COBJMACROS
   2101 #define IDWriteTextLayout_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2102 #define IDWriteTextLayout_AddRef(This) (This)->lpVtbl->AddRef(This)
   2103 #define IDWriteTextLayout_Release(This) (This)->lpVtbl->Release(This)
   2104 #define IDWriteTextLayout_GetFlowDirection() (This)->lpVtbl->GetFlowDirection(This)
   2105 #define IDWriteTextLayout_GetFontCollection(This,fontCollection) (This)->lpVtbl->GetFontCollection(This,fontCollection)
   2106 #define IDWriteTextLayout_GetFontFamilyName(This,fontFamilyName,nameSize) (This)->lpVtbl->GetFontFamilyName(This,fontFamilyName,nameSize)
   2107 #define IDWriteTextLayout_GetFontFamilyNameLength() (This)->lpVtbl->GetFontFamilyNameLength(This)
   2108 #define IDWriteTextLayout_GetFontSize() (This)->lpVtbl->GetFontSize(This)
   2109 #define IDWriteTextLayout_GetFontStretch() (This)->lpVtbl->GetFontStretch(This)
   2110 #define IDWriteTextLayout_GetFontStyle() (This)->lpVtbl->GetFontStyle(This)
   2111 #define IDWriteTextLayout_GetFontWeight() (This)->lpVtbl->GetFontWeight(This)
   2112 #define IDWriteTextLayout_GetIncrementalTabStop() (This)->lpVtbl->GetIncrementalTabStop(This)
   2113 #define IDWriteTextLayout_GetLineSpacing(This,lineSpacingMethod,lineSpacing,baseline) (This)->lpVtbl->GetLineSpacing(This,lineSpacingMethod,lineSpacing,baseline)
   2114 #define IDWriteTextLayout_GetLocaleName(This,localeName,nameSize) (This)->lpVtbl->GetLocaleName(This,localeName,nameSize)
   2115 #define IDWriteTextLayout_GetLocaleNameLength() (This)->lpVtbl->GetLocaleNameLength(This)
   2116 #define IDWriteTextLayout_GetParagraphAlignment() (This)->lpVtbl->GetParagraphAlignment(This)
   2117 #define IDWriteTextLayout_GetReadingDirection() (This)->lpVtbl->GetReadingDirection(This)
   2118 #define IDWriteTextLayout_GetTextAlignment() (This)->lpVtbl->GetTextAlignment(This)
   2119 #define IDWriteTextLayout_GetTrimming(This,trimmingOptions,trimmingSign) (This)->lpVtbl->GetTrimming(This,trimmingOptions,trimmingSign)
   2120 #define IDWriteTextLayout_GetWordWrapping() (This)->lpVtbl->GetWordWrapping(This)
   2121 #define IDWriteTextLayout_SetFlowDirection(This,flowDirection) (This)->lpVtbl->SetFlowDirection(This,flowDirection)
   2122 #define IDWriteTextLayout_SetIncrementalTabStop(This,incrementalTabStop) (This)->lpVtbl->SetIncrementalTabStop(This,incrementalTabStop)
   2123 #define IDWriteTextLayout_SetLineSpacing(This,lineSpacingMethod,lineSpacing,baseline) (This)->lpVtbl->SetLineSpacing(This,lineSpacingMethod,lineSpacing,baseline)
   2124 #define IDWriteTextLayout_SetParagraphAlignment(This,paragraphAlignment) (This)->lpVtbl->SetParagraphAlignment(This,paragraphAlignment)
   2125 #define IDWriteTextLayout_SetReadingDirection(This,readingDirection) (This)->lpVtbl->SetReadingDirection(This,readingDirection)
   2126 #define IDWriteTextLayout_SetTextAlignment(This,textAlignment) (This)->lpVtbl->SetTextAlignment(This,textAlignment)
   2127 #define IDWriteTextLayout_SetTrimming(This,trimmingOptions,trimmingSign) (This)->lpVtbl->SetTrimming(This,trimmingOptions,trimmingSign)
   2128 #define IDWriteTextLayout_SetWordWrapping(This,wordWrapping) (This)->lpVtbl->SetWordWrapping(This,wordWrapping)
   2129 #define IDWriteTextLayout_Draw(This,clientDrawingContext,renderer,originX,originY) (This)->lpVtbl->Draw(This,clientDrawingContext,renderer,originX,originY)
   2130 #define IDWriteTextLayout_GetClusterMetrics(This,clusterMetrics,maxClusterCount,actualClusterCount) (This)->lpVtbl->GetClusterMetrics(This,clusterMetrics,maxClusterCount,actualClusterCount)
   2131 #define IDWriteTextLayout_DetermineMinWidth(This,minWidth) (This)->lpVtbl->DetermineMinWidth(This,minWidth)
   2132 #define IDWriteTextLayout_GetDrawingEffect(This,currentPosition,drawingEffect,textRange) (This)->lpVtbl->GetDrawingEffect(This,currentPosition,drawingEffect,textRange)
   2133 #define IDWriteTextLayout_GetFontCollection(This,currentPosition,fontCollection,textRange) (This)->lpVtbl->GetFontCollection(This,currentPosition,fontCollection,textRange)
   2134 #define IDWriteTextLayout_GetFontFamilyName(This,currentPosition,fontFamilyName,nameSize,textRange) (This)->lpVtbl->GetFontFamilyName(This,currentPosition,fontFamilyName,nameSize,textRange)
   2135 #define IDWriteTextLayout_GetFontFamilyNameLength(This,currentPosition,nameLength,textRange) (This)->lpVtbl->GetFontFamilyNameLength(This,currentPosition,nameLength,textRange)
   2136 #define IDWriteTextLayout_GetFontSize(This,currentPosition,fontSize,textRange) (This)->lpVtbl->GetFontSize(This,currentPosition,fontSize,textRange)
   2137 #define IDWriteTextLayout_GetFontStretch(This,currentPosition,fontStretch,textRange) (This)->lpVtbl->GetFontStretch(This,currentPosition,fontStretch,textRange)
   2138 #define IDWriteTextLayout_GetFontStyle(This,currentPosition,fontStyle,textRange) (This)->lpVtbl->GetFontStyle(This,currentPosition,fontStyle,textRange)
   2139 #define IDWriteTextLayout_GetFontWeight(This,currentPosition,fontWeight,textRange) (This)->lpVtbl->GetFontWeight(This,currentPosition,fontWeight,textRange)
   2140 #define IDWriteTextLayout_GetInlineObject(This,currentPosition,inlineObject,textRange) (This)->lpVtbl->GetInlineObject(This,currentPosition,inlineObject,textRange)
   2141 #define IDWriteTextLayout_GetLineMetrics(This,lineMetrics,maxLineCount,actualLineCount) (This)->lpVtbl->GetLineMetrics(This,lineMetrics,maxLineCount,actualLineCount)
   2142 #define IDWriteTextLayout_GetLocaleName(This,currentPosition,localeName,nameSize,textRange) (This)->lpVtbl->GetLocaleName(This,currentPosition,localeName,nameSize,textRange)
   2143 #define IDWriteTextLayout_GetLocaleNameLength(This,currentPosition,nameLength,textRange) (This)->lpVtbl->GetLocaleNameLength(This,currentPosition,nameLength,textRange)
   2144 #define IDWriteTextLayout_GetMaxHeight() (This)->lpVtbl->GetMaxHeight(This)
   2145 #define IDWriteTextLayout_GetMaxWidth() (This)->lpVtbl->GetMaxWidth(This)
   2146 #define IDWriteTextLayout_GetMetrics(This,textMetrics) (This)->lpVtbl->GetMetrics(This,textMetrics)
   2147 #define IDWriteTextLayout_GetOverhangMetrics(This,overhangs) (This)->lpVtbl->GetOverhangMetrics(This,overhangs)
   2148 #define IDWriteTextLayout_GetStrikethrough(This,currentPosition,hasStrikethrough,textRange) (This)->lpVtbl->GetStrikethrough(This,currentPosition,hasStrikethrough,textRange)
   2149 #define IDWriteTextLayout_GetTypography(This,currentPosition,typography,textRange) (This)->lpVtbl->GetTypography(This,currentPosition,typography,textRange)
   2150 #define IDWriteTextLayout_GetUnderline(This,currentPosition,hasUnderline,textRange) (This)->lpVtbl->GetUnderline(This,currentPosition,hasUnderline,textRange)
   2151 #define IDWriteTextLayout_HitTestPoint(This,pointX,pointY,isTrailingHit,isInside,hitTestMetrics) (This)->lpVtbl->HitTestPoint(This,pointX,pointY,isTrailingHit,isInside,hitTestMetrics)
   2152 #define IDWriteTextLayout_HitTestTextPosition(This,textPosition,isTrailingHit,pointX,pointY,hitTestMetrics) (This)->lpVtbl->HitTestTextPosition(This,textPosition,isTrailingHit,pointX,pointY,hitTestMetrics)
   2153 #define IDWriteTextLayout_HitTestTextRange(This,textPosition,textLength,originX,originY,hitTestMetrics,maxHitTestMetricsCount,actualHitTestMetricsCount) (This)->lpVtbl->HitTestTextRange(This,textPosition,textLength,originX,originY,hitTestMetrics,maxHitTestMetricsCount,actualHitTestMetricsCount)
   2154 #define IDWriteTextLayout_SetDrawingEffect(This,drawingEffect,textRange) (This)->lpVtbl->SetDrawingEffect(This,drawingEffect,textRange)
   2155 #define IDWriteTextLayout_SetFontCollection(This,fontCollection,textRange) (This)->lpVtbl->SetFontCollection(This,fontCollection,textRange)
   2156 #define IDWriteTextLayout_SetFontFamilyName(This,fontFamilyName,textRange) (This)->lpVtbl->SetFontFamilyName(This,fontFamilyName,textRange)
   2157 #define IDWriteTextLayout_SetFontSize(This,fontSize,textRange) (This)->lpVtbl->SetFontSize(This,fontSize,textRange)
   2158 #define IDWriteTextLayout_SetFontStretch(This,fontStretch,textRange) (This)->lpVtbl->SetFontStretch(This,fontStretch,textRange)
   2159 #define IDWriteTextLayout_SetFontStyle(This,fontStyle,textRange) (This)->lpVtbl->SetFontStyle(This,fontStyle,textRange)
   2160 #define IDWriteTextLayout_SetFontWeight(This,fontWeight,textRange) (This)->lpVtbl->SetFontWeight(This,fontWeight,textRange)
   2161 #define IDWriteTextLayout_SetInlineObject(This,inlineObject,textRange) (This)->lpVtbl->SetInlineObject(This,inlineObject,textRange)
   2162 #define IDWriteTextLayout_SetLocaleName(This,localeName,textRange) (This)->lpVtbl->SetLocaleName(This,localeName,textRange)
   2163 #define IDWriteTextLayout_SetMaxHeight(This,maxHeight) (This)->lpVtbl->SetMaxHeight(This,maxHeight)
   2164 #define IDWriteTextLayout_SetMaxWidth(This,maxWidth) (This)->lpVtbl->SetMaxWidth(This,maxWidth)
   2165 #define IDWriteTextLayout_SetStrikethrough(This,hasStrikethrough,textRange) (This)->lpVtbl->SetStrikethrough(This,hasStrikethrough,textRange)
   2166 #define IDWriteTextLayout_SetTypography(This,typography,textRange) (This)->lpVtbl->SetTypography(This,typography,textRange)
   2167 #define IDWriteTextLayout_SetUnderline(This,hasUnderline,textRange) (This)->lpVtbl->SetUnderline(This,hasUnderline,textRange)
   2168 #endif /*COBJMACROS*/
   2169 
   2170 #undef  INTERFACE
   2171 #define INTERFACE IDWriteTextRenderer
   2172 DECLARE_INTERFACE_(IDWriteTextRenderer,IDWritePixelSnapping)
   2173 {
   2174     BEGIN_INTERFACE
   2175 
   2176 #ifndef __cplusplus
   2177     /* IUnknown methods */
   2178     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   2179     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   2180     STDMETHOD_(ULONG, Release)(THIS) PURE;
   2181 
   2182     /* IDWritePixelSnapping methods */
   2183     STDMETHOD(IsPixelSnappingDisabled)(THIS_
   2184             void *clientDrawingContext,
   2185             WINBOOL *isDisabled) PURE;
   2186     STDMETHOD(GetCurrentTransform)(THIS_
   2187             void *clientDrawingContext,
   2188             DWRITE_MATRIX *transform) PURE;
   2189     STDMETHOD(GetPixelsPerDip)(THIS_
   2190             void *clientDrawingContext,
   2191             FLOAT *pixelsPerDip) PURE;
   2192 #endif
   2193 
   2194     /* IDWriteTextRenderer methods */
   2195     STDMETHOD(DrawGlyphRun)(THIS_
   2196             void *clientDrawingContext,
   2197             FLOAT baselineOriginX,
   2198             FLOAT baselineOriginY,
   2199             DWRITE_MEASURING_MODE measuringMode,
   2200             DWRITE_GLYPH_RUN const *glyphRun,
   2201             DWRITE_GLYPH_RUN_DESCRIPTION const *glyphRunDescription,
   2202             IUnknown* clientDrawingEffect) PURE;
   2203     STDMETHOD(DrawUnderline)(THIS_
   2204             void *clientDrawingContext,
   2205             FLOAT baselineOriginX,
   2206             FLOAT baselineOriginY,
   2207             DWRITE_UNDERLINE const *underline,
   2208             IUnknown *clientDrawingEffect) PURE;
   2209     STDMETHOD(DrawStrikethrough)(THIS_
   2210             void *clientDrawingContext,
   2211             FLOAT baselineOriginX,
   2212             FLOAT baselineOriginY,
   2213             DWRITE_STRIKETHROUGH const *strikethrough,
   2214             IUnknown* clientDrawingEffect) PURE;
   2215     STDMETHOD(DrawInlineObject)(
   2216             void *clientDrawingContext,
   2217             FLOAT originX,
   2218             FLOAT originY,
   2219             IDWriteInlineObject *inlineObject,
   2220             WINBOOL isSideways,
   2221             WINBOOL isRightToLeft,
   2222             IUnknown *clientDrawingEffect) PURE;
   2223 
   2224     END_INTERFACE
   2225 };
   2226 #ifdef COBJMACROS
   2227 #define IDWriteTextRenderer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2228 #define IDWriteTextRenderer_AddRef(This) (This)->lpVtbl->AddRef(This)
   2229 #define IDWriteTextRenderer_GetCurrentTransform(This,clientDrawingContext,transform) (This)->lpVtbl->GetCurrentTransform(This,clientDrawingContext,transform)
   2230 #define IDWriteTextRenderer_GetPixelsPerDip(This,clientDrawingContext,pixelsPerDip) (This)->lpVtbl->GetPixelsPerDip(This,clientDrawingContext,pixelsPerDip)
   2231 #define IDWriteTextRenderer_IsPixelSnappingEnabled(This,clientDrawingContext,isDisabled) (This)->lpVtbl->IsPixelSnappingEnabled(This,clientDrawingContext,isDisabled)
   2232 #define IDWriteTextRenderer_Release(This) (This)->lpVtbl->Release(This)
   2233 #define IDWriteTextRenderer_DrawGlyphRun(This,clientDrawingContext,baselineOriginX,baselineOriginY,measuringMode,glyphRun,glyphRunDescription,clientDrawingEffect) (This)->lpVtbl->DrawGlyphRun(This,clientDrawingContext,baselineOriginX,baselineOriginY,measuringMode,glyphRun,glyphRunDescription,clientDrawingEffect)
   2234 #define IDWriteTextRenderer_DrawInlineObject(This,clientDrawingContext,originX,originY,inlineObject,isSideways,isRightToLeft,clientDrawingEffect) (This)->lpVtbl->DrawInlineObject(This,clientDrawingContext,originX,originY,inlineObject,isSideways,isRightToLeft,clientDrawingEffect)
   2235 #define IDWriteTextRenderer_DrawStrikethrough(This,clientDrawingContext,baselineOriginX,baselineOriginY,strikethrough,clientDrawingEffect) (This)->lpVtbl->DrawStrikethrough(This,clientDrawingContext,baselineOriginX,baselineOriginY,strikethrough,clientDrawingEffect)
   2236 #define IDWriteTextRenderer_DrawUnderline(This,clientDrawingContext,baselineOriginX,baselineOriginY,underline,clientDrawingEffect) (This)->lpVtbl->DrawUnderline(This,clientDrawingContext,baselineOriginX,baselineOriginY,underline,clientDrawingEffect)
   2237 #endif /*COBJMACROS*/
   2238 
   2239 #undef  INTERFACE
   2240 #define INTERFACE IDWriteTypography
   2241 DECLARE_INTERFACE_(IDWriteTypography,IUnknown)
   2242 {
   2243     BEGIN_INTERFACE
   2244 
   2245 #ifndef __cplusplus
   2246     /* IUnknown methods */
   2247     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
   2248     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   2249     STDMETHOD_(ULONG, Release)(THIS) PURE;
   2250 #endif
   2251 
   2252     /* IDWriteTypography methods */
   2253     STDMETHOD_(HRESULT,AddFontFeature)(THIS_ DWRITE_FONT_FEATURE  fontFeature) PURE;
   2254     STDMETHOD_(HRESULT,GetFontFeature)(THIS_ UINT32  fontFeatureIndex,DWRITE_FONT_FEATURE * fontFeature) PURE;
   2255     STDMETHOD_(UINT32,GetFontFeatureCount)(THIS) PURE;
   2256 
   2257     END_INTERFACE
   2258 };
   2259 #ifdef COBJMACROS
   2260 #define IDWriteTypography_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2261 #define IDWriteTypography_AddRef(This) (This)->lpVtbl->AddRef(This)
   2262 #define IDWriteTypography_Release(This) (This)->lpVtbl->Release(This)
   2263 #define IDWriteTypography_AddFontFeature(This,fontFeature) (This)->lpVtbl->AddFontFeature(This,fontFeature)
   2264 #define IDWriteTypography_GetFontFeature(This,fontFeatureIndex,fontFeature) (This)->lpVtbl->GetFontFeature(This,fontFeatureIndex,fontFeature)
   2265 #define IDWriteTypography_GetFontFeatureCount() (This)->lpVtbl->GetFontFeatureCount(This)
   2266 #endif /*COBJMACROS*/
   2267 
   2268 #ifdef __cplusplus
   2269 extern "C" {
   2270 #endif
   2271 
   2272 DWRITEAPI HRESULT WINAPI DWriteCreateFactory(
   2273   DWRITE_FACTORY_TYPE factoryType,
   2274   REFIID iid,
   2275   IUnknown **factory
   2276 );
   2277 
   2278 #ifdef __cplusplus
   2279 }
   2280 #endif
   2281 
   2282 __CRT_UUID_DECL(IDWriteBitmapRenderTarget, 0x5e5a32a3,0x8dff,0x4773,0x9f,0xf6,0x06,0x96,0xea,0xb7,0x72,0x67);
   2283 __CRT_UUID_DECL(IDWriteFactory, 0xb859ee5a,0xd838,0x4b5b,0xa2,0xe8,0x1a,0xdc,0x7d,0x93,0xdb,0x48);
   2284 __CRT_UUID_DECL(IDWriteFont, 0xacd16696,0x8c14,0x4f5d,0x87,0x7e,0xfe,0x3f,0xc1,0xd3,0x27,0x37);
   2285 __CRT_UUID_DECL(IDWriteFontCollection, 0xa84cee02,0x3eea,0x4eee,0xa8,0x27,0x87,0xc1,0xa0,0x2a,0x0f,0xcc);
   2286 __CRT_UUID_DECL(IDWriteFontFace, 0x5f49804d,0x7024,0x4d43,0xbf,0xa9,0xd2,0x59,0x84,0xf5,0x38,0x49);
   2287 __CRT_UUID_DECL(IDWriteFontList, 0x1a0d8438,0x1d97,0x4ec1,0xae,0xf9,0xa2,0xfb,0x86,0xed,0x6a,0xcb);
   2288 __CRT_UUID_DECL(IDWriteFontFamily, 0xda20d8ef,0x812a,0x4c43,0x98,0x02,0x62,0xec,0x4a,0xbd,0x7a,0xdd);
   2289 __CRT_UUID_DECL(IDWriteFontFile, 0x739d886a,0xcef5,0x47dc,0x87,0x69,0x1a,0x8b,0x41,0xbe,0xbb,0xb0);
   2290 __CRT_UUID_DECL(IDWriteFontFileLoader, 0x727cad4e,0xd6af,0x4c9e,0x8a,0x08,0xd6,0x95,0xb1,0x1c,0xaa,0x49);
   2291 __CRT_UUID_DECL(IDWriteFontFileStream, 0x6d4865fe,0x0ab8,0x4d91,0x8f,0x62,0x5d,0xd6,0xbe,0x34,0xa3,0xe0);
   2292 __CRT_UUID_DECL(IDWriteGdiInterop, 0x1edd9491,0x9853,0x4299,0x89,0x8f,0x64,0x32,0x98,0x3b,0x6f,0x3a);
   2293 __CRT_UUID_DECL(IDWriteGlyphRunAnalysis, 0x7d97dbf7,0xe085,0x42d4,0x81,0xe3,0x6a,0x88,0x3b,0xde,0xd1,0x18);
   2294 __CRT_UUID_DECL(IDWriteLocalizedStrings, 0x08256209,0x099a,0x4b34,0xb8,0x6d,0xc2,0x2b,0x11,0x0e,0x77,0x71);
   2295 __CRT_UUID_DECL(IDWriteRenderingParams, 0x2f0da53a,0x2add,0x47cd,0x82,0xee,0xd9,0xec,0x34,0x68,0x8e,0x75);
   2296 __CRT_UUID_DECL(IDWriteTextAnalysisSink, 0x5810cd44,0x0ca0,0x4701,0xb3,0xfa,0xbe,0xc5,0x18,0x2a,0xe4,0xf6);
   2297 __CRT_UUID_DECL(IDWriteTextAnalysisSource, 0x688e1a58,0x5094,0x47c8,0xad,0xc8,0xfb,0xce,0xa6,0x0a,0xe9,0x2b);
   2298 __CRT_UUID_DECL(IDWriteTextAnalyzer, 0xb7e6163e,0x7f46,0x43b4,0x84,0xb3,0xe4,0xe6,0x24,0x9c,0x36,0x5d);
   2299 __CRT_UUID_DECL(IDWritePixelSnapping, 0xeaf3a2da,0xecf4,0x4d24,0xb6,0x44,0xb3,0x4f,0x68,0x42,0x02,0x4b);
   2300 __CRT_UUID_DECL(IDWriteTextRenderer, 0xef8a8135,0x5cc6,0x45fe,0x88,0x25,0xc5,0xa0,0x72,0x4e,0xb8,0x19);
   2301 __CRT_UUID_DECL(IDWriteInlineObject, 0x8339fde3,0x106f,0x47ab,0x83,0x73,0x1c,0x62,0x95,0xeb,0x10,0xb3);
   2302 __CRT_UUID_DECL(IDWriteTextFormat, 0x9c906818,0x31d7,0x4fd3,0xa1,0x51,0x7c,0x5e,0x22,0x5d,0xb5,0x5a);
   2303 __CRT_UUID_DECL(IDWriteTextLayout, 0x53737037,0x6d14,0x410b,0x9b,0xfe,0x0b,0x18,0x2b,0xb7,0x09,0x61);
   2304 __CRT_UUID_DECL(IDWriteFontFileEnumerator, 0x72755049,0x5ff7,0x435d,0x83,0x48,0x4b,0xe9,0x7c,0xfa,0x6c,0x7c);
   2305 __CRT_UUID_DECL(IDWriteFontCollectionLoader, 0xcca920e4,0x52f0,0x492b,0xbf,0xa8,0x29,0xc7,0x2e,0xe0,0xa4,0x68);
   2306 
   2307 #define IDWriteLocalFontFileLoader __MINGW_POISON_NAME(IDWriteLocalFontFileLoader)
   2308 #define IDWriteTypography __MINGW_POISON_NAME(IDWriteTypography)
   2309 
   2310 #endif /* __INC_DWRITE__ */
   2311