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