zig

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

dwrite_1.h (146335B) - Raw


      1 /*** Autogenerated by WIDL 10.4 from include/dwrite_1.idl - Do not edit ***/
      2 
      3 #ifdef _WIN32
      4 #ifndef __REQUIRED_RPCNDR_H_VERSION__
      5 #define __REQUIRED_RPCNDR_H_VERSION__ 475
      6 #endif
      7 #include <rpc.h>
      8 #include <rpcndr.h>
      9 #endif
     10 
     11 #ifndef COM_NO_WINDOWS_H
     12 #include <windows.h>
     13 #include <ole2.h>
     14 #endif
     15 
     16 #ifndef __dwrite_1_h__
     17 #define __dwrite_1_h__
     18 
     19 /* Forward declarations */
     20 
     21 #ifndef __IDWriteFactory1_FWD_DEFINED__
     22 #define __IDWriteFactory1_FWD_DEFINED__
     23 typedef interface IDWriteFactory1 IDWriteFactory1;
     24 #ifdef __cplusplus
     25 interface IDWriteFactory1;
     26 #endif /* __cplusplus */
     27 #endif
     28 
     29 #ifndef __IDWriteFontFace1_FWD_DEFINED__
     30 #define __IDWriteFontFace1_FWD_DEFINED__
     31 typedef interface IDWriteFontFace1 IDWriteFontFace1;
     32 #ifdef __cplusplus
     33 interface IDWriteFontFace1;
     34 #endif /* __cplusplus */
     35 #endif
     36 
     37 #ifndef __IDWriteFont1_FWD_DEFINED__
     38 #define __IDWriteFont1_FWD_DEFINED__
     39 typedef interface IDWriteFont1 IDWriteFont1;
     40 #ifdef __cplusplus
     41 interface IDWriteFont1;
     42 #endif /* __cplusplus */
     43 #endif
     44 
     45 #ifndef __IDWriteRenderingParams1_FWD_DEFINED__
     46 #define __IDWriteRenderingParams1_FWD_DEFINED__
     47 typedef interface IDWriteRenderingParams1 IDWriteRenderingParams1;
     48 #ifdef __cplusplus
     49 interface IDWriteRenderingParams1;
     50 #endif /* __cplusplus */
     51 #endif
     52 
     53 #ifndef __IDWriteTextAnalyzer1_FWD_DEFINED__
     54 #define __IDWriteTextAnalyzer1_FWD_DEFINED__
     55 typedef interface IDWriteTextAnalyzer1 IDWriteTextAnalyzer1;
     56 #ifdef __cplusplus
     57 interface IDWriteTextAnalyzer1;
     58 #endif /* __cplusplus */
     59 #endif
     60 
     61 #ifndef __IDWriteTextAnalysisSource1_FWD_DEFINED__
     62 #define __IDWriteTextAnalysisSource1_FWD_DEFINED__
     63 typedef interface IDWriteTextAnalysisSource1 IDWriteTextAnalysisSource1;
     64 #ifdef __cplusplus
     65 interface IDWriteTextAnalysisSource1;
     66 #endif /* __cplusplus */
     67 #endif
     68 
     69 #ifndef __IDWriteTextAnalysisSink1_FWD_DEFINED__
     70 #define __IDWriteTextAnalysisSink1_FWD_DEFINED__
     71 typedef interface IDWriteTextAnalysisSink1 IDWriteTextAnalysisSink1;
     72 #ifdef __cplusplus
     73 interface IDWriteTextAnalysisSink1;
     74 #endif /* __cplusplus */
     75 #endif
     76 
     77 #ifndef __IDWriteTextLayout1_FWD_DEFINED__
     78 #define __IDWriteTextLayout1_FWD_DEFINED__
     79 typedef interface IDWriteTextLayout1 IDWriteTextLayout1;
     80 #ifdef __cplusplus
     81 interface IDWriteTextLayout1;
     82 #endif /* __cplusplus */
     83 #endif
     84 
     85 #ifndef __IDWriteBitmapRenderTarget1_FWD_DEFINED__
     86 #define __IDWriteBitmapRenderTarget1_FWD_DEFINED__
     87 typedef interface IDWriteBitmapRenderTarget1 IDWriteBitmapRenderTarget1;
     88 #ifdef __cplusplus
     89 interface IDWriteBitmapRenderTarget1;
     90 #endif /* __cplusplus */
     91 #endif
     92 
     93 /* Headers for imported files */
     94 
     95 #include <dwrite.h>
     96 
     97 #ifdef __cplusplus
     98 extern "C" {
     99 #endif
    100 
    101 typedef enum DWRITE_PANOSE_FAMILY {
    102     DWRITE_PANOSE_FAMILY_ANY = 0,
    103     DWRITE_PANOSE_FAMILY_NO_FIT = 1,
    104     DWRITE_PANOSE_FAMILY_TEXT_DISPLAY = 2,
    105     DWRITE_PANOSE_FAMILY_SCRIPT = 3,
    106     DWRITE_PANOSE_FAMILY_DECORATIVE = 4,
    107     DWRITE_PANOSE_FAMILY_SYMBOL = 5,
    108     DWRITE_PANOSE_FAMILY_PICTORIAL = DWRITE_PANOSE_FAMILY_SYMBOL
    109 } DWRITE_PANOSE_FAMILY;
    110 typedef enum DWRITE_PANOSE_SERIF_STYLE {
    111     DWRITE_PANOSE_SERIF_STYLE_ANY = 0,
    112     DWRITE_PANOSE_SERIF_STYLE_NO_FIT = 1,
    113     DWRITE_PANOSE_SERIF_STYLE_COVE = 2,
    114     DWRITE_PANOSE_SERIF_STYLE_OBTUSE_COVE = 3,
    115     DWRITE_PANOSE_SERIF_STYLE_SQUARE_COVE = 4,
    116     DWRITE_PANOSE_SERIF_STYLE_OBTUSE_SQUARE_COVE = 5,
    117     DWRITE_PANOSE_SERIF_STYLE_SQUARE = 6,
    118     DWRITE_PANOSE_SERIF_STYLE_THIN = 7,
    119     DWRITE_PANOSE_SERIF_STYLE_OVAL = 8,
    120     DWRITE_PANOSE_SERIF_STYLE_EXAGGERATED = 9,
    121     DWRITE_PANOSE_SERIF_STYLE_TRIANGLE = 10,
    122     DWRITE_PANOSE_SERIF_STYLE_NORMAL_SANS = 11,
    123     DWRITE_PANOSE_SERIF_STYLE_OBTUSE_SANS = 12,
    124     DWRITE_PANOSE_SERIF_STYLE_PERPENDICULAR_SANS = 13,
    125     DWRITE_PANOSE_SERIF_STYLE_FLARED = 14,
    126     DWRITE_PANOSE_SERIF_STYLE_ROUNDED = 15,
    127     DWRITE_PANOSE_SERIF_STYLE_SCRIPT = 16,
    128     DWRITE_PANOSE_SERIF_STYLE_PERP_SANS = DWRITE_PANOSE_SERIF_STYLE_PERPENDICULAR_SANS,
    129     DWRITE_PANOSE_SERIF_STYLE_BONE = DWRITE_PANOSE_SERIF_STYLE_OVAL
    130 } DWRITE_PANOSE_SERIF_STYLE;
    131 typedef enum DWRITE_PANOSE_WEIGHT {
    132     DWRITE_PANOSE_WEIGHT_ANY = 0,
    133     DWRITE_PANOSE_WEIGHT_NO_FIT = 1,
    134     DWRITE_PANOSE_WEIGHT_VERY_LIGHT = 2,
    135     DWRITE_PANOSE_WEIGHT_LIGHT = 3,
    136     DWRITE_PANOSE_WEIGHT_THIN = 4,
    137     DWRITE_PANOSE_WEIGHT_BOOK = 5,
    138     DWRITE_PANOSE_WEIGHT_MEDIUM = 6,
    139     DWRITE_PANOSE_WEIGHT_DEMI = 7,
    140     DWRITE_PANOSE_WEIGHT_BOLD = 8,
    141     DWRITE_PANOSE_WEIGHT_HEAVY = 9,
    142     DWRITE_PANOSE_WEIGHT_BLACK = 10,
    143     DWRITE_PANOSE_WEIGHT_EXTRA_BLACK = 11,
    144     DWRITE_PANOSE_WEIGHT_NORD = DWRITE_PANOSE_WEIGHT_EXTRA_BLACK
    145 } DWRITE_PANOSE_WEIGHT;
    146 typedef enum DWRITE_PANOSE_PROPORTION {
    147     DWRITE_PANOSE_PROPORTION_ANY = 0,
    148     DWRITE_PANOSE_PROPORTION_NO_FIT = 1,
    149     DWRITE_PANOSE_PROPORTION_OLD_STYLE = 2,
    150     DWRITE_PANOSE_PROPORTION_MODERN = 3,
    151     DWRITE_PANOSE_PROPORTION_EVEN_WIDTH = 4,
    152     DWRITE_PANOSE_PROPORTION_EXPANDED = 5,
    153     DWRITE_PANOSE_PROPORTION_CONDENSED = 6,
    154     DWRITE_PANOSE_PROPORTION_VERY_EXPANDED = 7,
    155     DWRITE_PANOSE_PROPORTION_VERY_CONDENSED = 8,
    156     DWRITE_PANOSE_PROPORTION_MONOSPACED = 9
    157 } DWRITE_PANOSE_PROPORTION;
    158 typedef enum DWRITE_PANOSE_CONTRAST {
    159     DWRITE_PANOSE_CONTRAST_ANY = 0,
    160     DWRITE_PANOSE_CONTRAST_NO_FIT = 1,
    161     DWRITE_PANOSE_CONTRAST_NONE = 2,
    162     DWRITE_PANOSE_CONTRAST_VERY_LOW = 3,
    163     DWRITE_PANOSE_CONTRAST_LOW = 4,
    164     DWRITE_PANOSE_CONTRAST_MEDIUM_LOW = 5,
    165     DWRITE_PANOSE_CONTRAST_MEDIUM = 6,
    166     DWRITE_PANOSE_CONTRAST_MEDIUM_HIGH = 7,
    167     DWRITE_PANOSE_CONTRAST_HIGH = 8,
    168     DWRITE_PANOSE_CONTRAST_VERY_HIGH = 9,
    169     DWRITE_PANOSE_CONTRAST_HORIZONTAL_LOW = 10,
    170     DWRITE_PANOSE_CONTRAST_HORIZONTAL_MEDIUM = 11,
    171     DWRITE_PANOSE_CONTRAST_HORIZONTAL_HIGH = 12,
    172     DWRITE_PANOSE_CONTRAST_BROKEN = 13
    173 } DWRITE_PANOSE_CONTRAST;
    174 typedef enum DWRITE_PANOSE_STROKE_VARIATION {
    175     DWRITE_PANOSE_STROKE_VARIATION_ANY = 0,
    176     DWRITE_PANOSE_STROKE_VARIATION_NO_FIT = 1,
    177     DWRITE_PANOSE_STROKE_VARIATION_NO_VARIATION = 2,
    178     DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_DIAGONAL = 3,
    179     DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_TRANSITIONAL = 4,
    180     DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_VERTICAL = 5,
    181     DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_HORIZONTAL = 6,
    182     DWRITE_PANOSE_STROKE_VARIATION_RAPID_VERTICAL = 7,
    183     DWRITE_PANOSE_STROKE_VARIATION_RAPID_HORIZONTAL = 8,
    184     DWRITE_PANOSE_STROKE_VARIATION_INSTANT_VERTICAL = 9,
    185     DWRITE_PANOSE_STROKE_VARIATION_INSTANT_HORIZONTAL = 10
    186 } DWRITE_PANOSE_STROKE_VARIATION;
    187 typedef enum DWRITE_PANOSE_ARM_STYLE {
    188     DWRITE_PANOSE_ARM_STYLE_ANY = 0,
    189     DWRITE_PANOSE_ARM_STYLE_NO_FIT = 1,
    190     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_HORIZONTAL = 2,
    191     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_WEDGE = 3,
    192     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_VERTICAL = 4,
    193     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_SINGLE_SERIF = 5,
    194     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_DOUBLE_SERIF = 6,
    195     DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_HORIZONTAL = 7,
    196     DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_WEDGE = 8,
    197     DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_VERTICAL = 9,
    198     DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_SINGLE_SERIF = 10,
    199     DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_DOUBLE_SERIF = 11,
    200     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_HORZ = DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_HORIZONTAL,
    201     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_VERT = DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_VERTICAL,
    202     DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_HORZ = DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_HORIZONTAL,
    203     DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_WEDGE = DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_WEDGE,
    204     DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_VERT = DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_VERTICAL,
    205     DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_SINGLE_SERIF = DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_SINGLE_SERIF,
    206     DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_DOUBLE_SERIF = DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_DOUBLE_SERIF
    207 } DWRITE_PANOSE_ARM_STYLE;
    208 typedef enum DWRITE_PANOSE_LETTERFORM {
    209     DWRITE_PANOSE_LETTERFORM_ANY = 0,
    210     DWRITE_PANOSE_LETTERFORM_NO_FIT = 1,
    211     DWRITE_PANOSE_LETTERFORM_NORMAL_CONTACT = 2,
    212     DWRITE_PANOSE_LETTERFORM_NORMAL_WEIGHTED = 3,
    213     DWRITE_PANOSE_LETTERFORM_NORMAL_BOXED = 4,
    214     DWRITE_PANOSE_LETTERFORM_NORMAL_FLATTENED = 5,
    215     DWRITE_PANOSE_LETTERFORM_NORMAL_ROUNDED = 6,
    216     DWRITE_PANOSE_LETTERFORM_NORMAL_OFF_CENTER = 7,
    217     DWRITE_PANOSE_LETTERFORM_NORMAL_SQUARE = 8,
    218     DWRITE_PANOSE_LETTERFORM_OBLIQUE_CONTACT = 9,
    219     DWRITE_PANOSE_LETTERFORM_OBLIQUE_WEIGHTED = 10,
    220     DWRITE_PANOSE_LETTERFORM_OBLIQUE_BOXED = 11,
    221     DWRITE_PANOSE_LETTERFORM_OBLIQUE_FLATTENED = 12,
    222     DWRITE_PANOSE_LETTERFORM_OBLIQUE_ROUNDED = 13,
    223     DWRITE_PANOSE_LETTERFORM_OBLIQUE_OFF_CENTER = 14,
    224     DWRITE_PANOSE_LETTERFORM_OBLIQUE_SQUARE = 15
    225 } DWRITE_PANOSE_LETTERFORM;
    226 typedef enum DWRITE_PANOSE_MIDLINE {
    227     DWRITE_PANOSE_MIDLINE_ANY = 0,
    228     DWRITE_PANOSE_MIDLINE_NO_FIT = 1,
    229     DWRITE_PANOSE_MIDLINE_STANDARD_TRIMMED = 2,
    230     DWRITE_PANOSE_MIDLINE_STANDARD_POINTED = 3,
    231     DWRITE_PANOSE_MIDLINE_STANDARD_SERIFED = 4,
    232     DWRITE_PANOSE_MIDLINE_HIGH_TRIMMED = 5,
    233     DWRITE_PANOSE_MIDLINE_HIGH_POINTED = 6,
    234     DWRITE_PANOSE_MIDLINE_HIGH_SERIFED = 7,
    235     DWRITE_PANOSE_MIDLINE_CONSTANT_TRIMMED = 8,
    236     DWRITE_PANOSE_MIDLINE_CONSTANT_POINTED = 9,
    237     DWRITE_PANOSE_MIDLINE_CONSTANT_SERIFED = 10,
    238     DWRITE_PANOSE_MIDLINE_LOW_TRIMMED = 11,
    239     DWRITE_PANOSE_MIDLINE_LOW_POINTED = 12,
    240     DWRITE_PANOSE_MIDLINE_LOW_SERIFED = 13
    241 } DWRITE_PANOSE_MIDLINE;
    242 typedef enum DWRITE_PANOSE_XHEIGHT {
    243     DWRITE_PANOSE_XHEIGHT_ANY = 0,
    244     DWRITE_PANOSE_XHEIGHT_NO_FIT = 1,
    245     DWRITE_PANOSE_XHEIGHT_CONSTANT_SMALL = 2,
    246     DWRITE_PANOSE_XHEIGHT_CONSTANT_STANDARD = 3,
    247     DWRITE_PANOSE_XHEIGHT_CONSTANT_LARGE = 4,
    248     DWRITE_PANOSE_XHEIGHT_DUCKING_SMALL = 5,
    249     DWRITE_PANOSE_XHEIGHT_DUCKING_STANDARD = 6,
    250     DWRITE_PANOSE_XHEIGHT_DUCKING_LARGE = 7,
    251     DWRITE_PANOSE_XHEIGHT_CONSTANT_STD = DWRITE_PANOSE_XHEIGHT_CONSTANT_STANDARD,
    252     DWRITE_PANOSE_XHEIGHT_DUCKING_STD = DWRITE_PANOSE_XHEIGHT_DUCKING_STANDARD
    253 } DWRITE_PANOSE_XHEIGHT;
    254 typedef enum DWRITE_PANOSE_TOOL_KIND {
    255     DWRITE_PANOSE_TOOL_KIND_ANY = 0,
    256     DWRITE_PANOSE_TOOL_KIND_NO_FIT = 1,
    257     DWRITE_PANOSE_TOOL_KIND_FLAT_NIB = 2,
    258     DWRITE_PANOSE_TOOL_KIND_PRESSURE_POINT = 3,
    259     DWRITE_PANOSE_TOOL_KIND_ENGRAVED = 4,
    260     DWRITE_PANOSE_TOOL_KIND_BALL = 5,
    261     DWRITE_PANOSE_TOOL_KIND_BRUSH = 6,
    262     DWRITE_PANOSE_TOOL_KIND_ROUGH = 7,
    263     DWRITE_PANOSE_TOOL_KIND_FELT_PEN_BRUSH_TIP = 8,
    264     DWRITE_PANOSE_TOOL_KIND_WILD_BRUSH = 9
    265 } DWRITE_PANOSE_TOOL_KIND;
    266 typedef enum DWRITE_PANOSE_SPACING {
    267     DWRITE_PANOSE_SPACING_ANY = 0,
    268     DWRITE_PANOSE_SPACING_NO_FIT = 1,
    269     DWRITE_PANOSE_SPACING_PROPORTIONAL_SPACED = 2,
    270     DWRITE_PANOSE_SPACING_MONOSPACED = 3
    271 } DWRITE_PANOSE_SPACING;
    272 typedef enum DWRITE_PANOSE_ASPECT_RATIO {
    273     DWRITE_PANOSE_ASPECT_RATIO_ANY = 0,
    274     DWRITE_PANOSE_ASPECT_RATIO_NO_FIT = 1,
    275     DWRITE_PANOSE_ASPECT_RATIO_VERY_CONDENSED = 2,
    276     DWRITE_PANOSE_ASPECT_RATIO_CONDENSED = 3,
    277     DWRITE_PANOSE_ASPECT_RATIO_NORMAL = 4,
    278     DWRITE_PANOSE_ASPECT_RATIO_EXPANDED = 5,
    279     DWRITE_PANOSE_ASPECT_RATIO_VERY_EXPANDED = 6
    280 } DWRITE_PANOSE_ASPECT_RATIO;
    281 typedef enum DWRITE_PANOSE_SCRIPT_TOPOLOGY {
    282     DWRITE_PANOSE_SCRIPT_TOPOLOGY_ANY = 0,
    283     DWRITE_PANOSE_SCRIPT_TOPOLOGY_NO_FIT = 1,
    284     DWRITE_PANOSE_SCRIPT_TOPOLOGY_ROMAN_DISCONNECTED = 2,
    285     DWRITE_PANOSE_SCRIPT_TOPOLOGY_ROMAN_TRAILING = 3,
    286     DWRITE_PANOSE_SCRIPT_TOPOLOGY_ROMAN_CONNECTED = 4,
    287     DWRITE_PANOSE_SCRIPT_TOPOLOGY_CURSIVE_DISCONNECTED = 5,
    288     DWRITE_PANOSE_SCRIPT_TOPOLOGY_CURSIVE_TRAILING = 6,
    289     DWRITE_PANOSE_SCRIPT_TOPOLOGY_CURSIVE_CONNECTED = 7,
    290     DWRITE_PANOSE_SCRIPT_TOPOLOGY_BLACKLETTER_DISCONNECTED = 8,
    291     DWRITE_PANOSE_SCRIPT_TOPOLOGY_BLACKLETTER_TRAILING = 9,
    292     DWRITE_PANOSE_SCRIPT_TOPOLOGY_BLACKLETTER_CONNECTED = 10
    293 } DWRITE_PANOSE_SCRIPT_TOPOLOGY;
    294 typedef enum DWRITE_PANOSE_SCRIPT_FORM {
    295     DWRITE_PANOSE_SCRIPT_FORM_ANY = 0,
    296     DWRITE_PANOSE_SCRIPT_FORM_NO_FIT = 1,
    297     DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_NO_WRAPPING = 2,
    298     DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_SOME_WRAPPING = 3,
    299     DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_MORE_WRAPPING = 4,
    300     DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_EXTREME_WRAPPING = 5,
    301     DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_NO_WRAPPING = 6,
    302     DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_SOME_WRAPPING = 7,
    303     DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_MORE_WRAPPING = 8,
    304     DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_EXTREME_WRAPPING = 9,
    305     DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_NO_WRAPPING = 10,
    306     DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_SOME_WRAPPING = 11,
    307     DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_MORE_WRAPPING = 12,
    308     DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_EXTREME_WRAPPING = 13
    309 } DWRITE_PANOSE_SCRIPT_FORM;
    310 typedef enum DWRITE_PANOSE_FINIALS {
    311     DWRITE_PANOSE_FINIALS_ANY = 0,
    312     DWRITE_PANOSE_FINIALS_NO_FIT = 1,
    313     DWRITE_PANOSE_FINIALS_NONE_NO_LOOPS = 2,
    314     DWRITE_PANOSE_FINIALS_NONE_CLOSED_LOOPS = 3,
    315     DWRITE_PANOSE_FINIALS_NONE_OPEN_LOOPS = 4,
    316     DWRITE_PANOSE_FINIALS_SHARP_NO_LOOPS = 5,
    317     DWRITE_PANOSE_FINIALS_SHARP_CLOSED_LOOPS = 6,
    318     DWRITE_PANOSE_FINIALS_SHARP_OPEN_LOOPS = 7,
    319     DWRITE_PANOSE_FINIALS_TAPERED_NO_LOOPS = 8,
    320     DWRITE_PANOSE_FINIALS_TAPERED_CLOSED_LOOPS = 9,
    321     DWRITE_PANOSE_FINIALS_TAPERED_OPEN_LOOPS = 10,
    322     DWRITE_PANOSE_FINIALS_ROUND_NO_LOOPS = 11,
    323     DWRITE_PANOSE_FINIALS_ROUND_CLOSED_LOOPS = 12,
    324     DWRITE_PANOSE_FINIALS_ROUND_OPEN_LOOPS = 13
    325 } DWRITE_PANOSE_FINIALS;
    326 typedef enum DWRITE_PANOSE_XASCENT {
    327     DWRITE_PANOSE_XASCENT_ANY = 0,
    328     DWRITE_PANOSE_XASCENT_NO_FIT = 1,
    329     DWRITE_PANOSE_XASCENT_VERY_LOW = 2,
    330     DWRITE_PANOSE_XASCENT_LOW = 3,
    331     DWRITE_PANOSE_XASCENT_MEDIUM = 4,
    332     DWRITE_PANOSE_XASCENT_HIGH = 5,
    333     DWRITE_PANOSE_XASCENT_VERY_HIGH = 6
    334 } DWRITE_PANOSE_XASCENT;
    335 typedef enum DWRITE_PANOSE_DECORATIVE_CLASS {
    336     DWRITE_PANOSE_DECORATIVE_CLASS_ANY = 0,
    337     DWRITE_PANOSE_DECORATIVE_CLASS_NO_FIT = 1,
    338     DWRITE_PANOSE_DECORATIVE_CLASS_DERIVATIVE = 2,
    339     DWRITE_PANOSE_DECORATIVE_CLASS_NONSTANDARD_TOPOLOGY = 3,
    340     DWRITE_PANOSE_DECORATIVE_CLASS_NONSTANDARD_ELEMENTS = 4,
    341     DWRITE_PANOSE_DECORATIVE_CLASS_NONSTANDARD_ASPECT = 5,
    342     DWRITE_PANOSE_DECORATIVE_CLASS_INITIALS = 6,
    343     DWRITE_PANOSE_DECORATIVE_CLASS_CARTOON = 7,
    344     DWRITE_PANOSE_DECORATIVE_CLASS_PICTURE_STEMS = 8,
    345     DWRITE_PANOSE_DECORATIVE_CLASS_ORNAMENTED = 9,
    346     DWRITE_PANOSE_DECORATIVE_CLASS_TEXT_AND_BACKGROUND = 10,
    347     DWRITE_PANOSE_DECORATIVE_CLASS_COLLAGE = 11,
    348     DWRITE_PANOSE_DECORATIVE_CLASS_MONTAGE = 12
    349 } DWRITE_PANOSE_DECORATIVE_CLASS;
    350 typedef enum DWRITE_PANOSE_ASPECT {
    351     DWRITE_PANOSE_ASPECT_ANY = 0,
    352     DWRITE_PANOSE_ASPECT_NO_FIT = 1,
    353     DWRITE_PANOSE_ASPECT_SUPER_CONDENSED = 2,
    354     DWRITE_PANOSE_ASPECT_VERY_CONDENSED = 3,
    355     DWRITE_PANOSE_ASPECT_CONDENSED = 4,
    356     DWRITE_PANOSE_ASPECT_NORMAL = 5,
    357     DWRITE_PANOSE_ASPECT_EXTENDED = 6,
    358     DWRITE_PANOSE_ASPECT_VERY_EXTENDED = 7,
    359     DWRITE_PANOSE_ASPECT_SUPER_EXTENDED = 8,
    360     DWRITE_PANOSE_ASPECT_MONOSPACED = 9
    361 } DWRITE_PANOSE_ASPECT;
    362 typedef enum DWRITE_PANOSE_FILL {
    363     DWRITE_PANOSE_FILL_ANY = 0,
    364     DWRITE_PANOSE_FILL_NO_FIT = 1,
    365     DWRITE_PANOSE_FILL_STANDARD_SOLID_FILL = 2,
    366     DWRITE_PANOSE_FILL_NO_FILL = 3,
    367     DWRITE_PANOSE_FILL_PATTERNED_FILL = 4,
    368     DWRITE_PANOSE_FILL_COMPLEX_FILL = 5,
    369     DWRITE_PANOSE_FILL_SHAPED_FILL = 6,
    370     DWRITE_PANOSE_FILL_DRAWN_DISTRESSED = 7
    371 } DWRITE_PANOSE_FILL;
    372 typedef enum DWRITE_PANOSE_LINING {
    373     DWRITE_PANOSE_LINING_ANY = 0,
    374     DWRITE_PANOSE_LINING_NO_FIT = 1,
    375     DWRITE_PANOSE_LINING_NONE = 2,
    376     DWRITE_PANOSE_LINING_INLINE = 3,
    377     DWRITE_PANOSE_LINING_OUTLINE = 4,
    378     DWRITE_PANOSE_LINING_ENGRAVED = 5,
    379     DWRITE_PANOSE_LINING_SHADOW = 6,
    380     DWRITE_PANOSE_LINING_RELIEF = 7,
    381     DWRITE_PANOSE_LINING_BACKDROP = 8
    382 } DWRITE_PANOSE_LINING;
    383 typedef enum DWRITE_PANOSE_DECORATIVE_TOPOLOGY {
    384     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_ANY = 0,
    385     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_NO_FIT = 1,
    386     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_STANDARD = 2,
    387     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_SQUARE = 3,
    388     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_MULTIPLE_SEGMENT = 4,
    389     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_ART_DECO = 5,
    390     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_UNEVEN_WEIGHTING = 6,
    391     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_DIVERSE_ARMS = 7,
    392     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_DIVERSE_FORMS = 8,
    393     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_LOMBARDIC_FORMS = 9,
    394     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_UPPER_CASE_IN_LOWER_CASE = 10,
    395     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_IMPLIED_TOPOLOGY = 11,
    396     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_HORSESHOE_E_AND_A = 12,
    397     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_CURSIVE = 13,
    398     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_BLACKLETTER = 14,
    399     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_SWASH_VARIANCE = 15
    400 } DWRITE_PANOSE_DECORATIVE_TOPOLOGY;
    401 typedef enum DWRITE_PANOSE_CHARACTER_RANGES {
    402     DWRITE_PANOSE_CHARACTER_RANGES_ANY = 0,
    403     DWRITE_PANOSE_CHARACTER_RANGES_NO_FIT = 1,
    404     DWRITE_PANOSE_CHARACTER_RANGES_EXTENDED_COLLECTION = 2,
    405     DWRITE_PANOSE_CHARACTER_RANGES_LITERALS = 3,
    406     DWRITE_PANOSE_CHARACTER_RANGES_NO_LOWER_CASE = 4,
    407     DWRITE_PANOSE_CHARACTER_RANGES_SMALL_CAPS = 5
    408 } DWRITE_PANOSE_CHARACTER_RANGES;
    409 typedef enum DWRITE_PANOSE_SYMBOL_KIND {
    410     DWRITE_PANOSE_SYMBOL_KIND_ANY = 0,
    411     DWRITE_PANOSE_SYMBOL_KIND_NO_FIT = 1,
    412     DWRITE_PANOSE_SYMBOL_KIND_MONTAGES = 2,
    413     DWRITE_PANOSE_SYMBOL_KIND_PICTURES = 3,
    414     DWRITE_PANOSE_SYMBOL_KIND_SHAPES = 4,
    415     DWRITE_PANOSE_SYMBOL_KIND_SCIENTIFIC = 5,
    416     DWRITE_PANOSE_SYMBOL_KIND_MUSIC = 6,
    417     DWRITE_PANOSE_SYMBOL_KIND_EXPERT = 7,
    418     DWRITE_PANOSE_SYMBOL_KIND_PATTERNS = 8,
    419     DWRITE_PANOSE_SYMBOL_KIND_BOARDERS = 9,
    420     DWRITE_PANOSE_SYMBOL_KIND_ICONS = 10,
    421     DWRITE_PANOSE_SYMBOL_KIND_LOGOS = 11,
    422     DWRITE_PANOSE_SYMBOL_KIND_INDUSTRY_SPECIFIC = 12
    423 } DWRITE_PANOSE_SYMBOL_KIND;
    424 typedef enum DWRITE_PANOSE_SYMBOL_ASPECT_RATIO {
    425     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_ANY = 0,
    426     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NO_FIT = 1,
    427     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NO_WIDTH = 2,
    428     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_EXCEPTIONALLY_WIDE = 3,
    429     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_SUPER_WIDE = 4,
    430     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_VERY_WIDE = 5,
    431     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_WIDE = 6,
    432     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NORMAL = 7,
    433     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NARROW = 8,
    434     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_VERY_NARROW = 9
    435 } DWRITE_PANOSE_SYMBOL_ASPECT_RATIO;
    436 typedef enum DWRITE_OUTLINE_THRESHOLD {
    437     DWRITE_OUTLINE_THRESHOLD_ANTIALIASED = 0,
    438     DWRITE_OUTLINE_THRESHOLD_ALIASED = 1
    439 } DWRITE_OUTLINE_THRESHOLD;
    440 typedef enum DWRITE_BASELINE {
    441     DWRITE_BASELINE_DEFAULT = 0,
    442     DWRITE_BASELINE_ROMAN = 1,
    443     DWRITE_BASELINE_CENTRAL = 2,
    444     DWRITE_BASELINE_MATH = 3,
    445     DWRITE_BASELINE_HANGING = 4,
    446     DWRITE_BASELINE_IDEOGRAPHIC_BOTTOM = 5,
    447     DWRITE_BASELINE_IDEOGRAPHIC_TOP = 6,
    448     DWRITE_BASELINE_MINIMUM = 7,
    449     DWRITE_BASELINE_MAXIMUM = 8
    450 } DWRITE_BASELINE;
    451 typedef enum DWRITE_VERTICAL_GLYPH_ORIENTATION {
    452     DWRITE_VERTICAL_GLYPH_ORIENTATION_DEFAULT = 0,
    453     DWRITE_VERTICAL_GLYPH_ORIENTATION_STACKED = 1
    454 } DWRITE_VERTICAL_GLYPH_ORIENTATION;
    455 typedef enum DWRITE_GLYPH_ORIENTATION_ANGLE {
    456     DWRITE_GLYPH_ORIENTATION_ANGLE_0_DEGREES = 0,
    457     DWRITE_GLYPH_ORIENTATION_ANGLE_90_DEGREES = 1,
    458     DWRITE_GLYPH_ORIENTATION_ANGLE_180_DEGREES = 2,
    459     DWRITE_GLYPH_ORIENTATION_ANGLE_270_DEGREES = 3
    460 } DWRITE_GLYPH_ORIENTATION_ANGLE;
    461 typedef struct DWRITE_FONT_METRICS1 {
    462     UINT16 designUnitsPerEm;
    463     UINT16 ascent;
    464     UINT16 descent;
    465     INT16 lineGap;
    466     UINT16 capHeight;
    467     UINT16 xHeight;
    468     INT16 underlinePosition;
    469     UINT16 underlineThickness;
    470     INT16 strikethroughPosition;
    471     UINT16 strikethroughThickness;
    472     INT16 glyphBoxLeft;
    473     INT16 glyphBoxTop;
    474     INT16 glyphBoxRight;
    475     INT16 glyphBoxBottom;
    476     INT16 subscriptPositionX;
    477     INT16 subscriptPositionY;
    478     INT16 subscriptSizeX;
    479     INT16 subscriptSizeY;
    480     INT16 superscriptPositionX;
    481     INT16 superscriptPositionY;
    482     INT16 superscriptSizeX;
    483     INT16 superscriptSizeY;
    484     WINBOOL hasTypographicMetrics;
    485 } DWRITE_FONT_METRICS1;
    486 typedef struct DWRITE_CARET_METRICS {
    487     INT16 slopeRise;
    488     INT16 slopeRun;
    489     INT16 offset;
    490 } DWRITE_CARET_METRICS;
    491 typedef union DWRITE_PANOSE {
    492     UINT8 values[10];
    493     UINT8 familyKind;
    494     struct {
    495         UINT8 familyKind;
    496         UINT8 serifStyle;
    497         UINT8 weight;
    498         UINT8 proportion;
    499         UINT8 contrast;
    500         UINT8 strokeVariation;
    501         UINT8 armStyle;
    502         UINT8 letterform;
    503         UINT8 midline;
    504         UINT8 xHeight;
    505     } text;
    506     struct {
    507         UINT8 familyKind;
    508         UINT8 toolKind;
    509         UINT8 weight;
    510         UINT8 spacing;
    511         UINT8 aspectRatio;
    512         UINT8 contrast;
    513         UINT8 scriptTopology;
    514         UINT8 scriptForm;
    515         UINT8 finials;
    516         UINT8 xAscent;
    517     } script;
    518     struct {
    519         UINT8 familyKind;
    520         UINT8 decorativeClass;
    521         UINT8 weight;
    522         UINT8 aspect;
    523         UINT8 contrast;
    524         UINT8 serifVariant;
    525         UINT8 fill;
    526         UINT8 lining;
    527         UINT8 decorativeTopology;
    528         UINT8 characterRange;
    529     } decorative;
    530     struct {
    531         UINT8 familyKind;
    532         UINT8 symbolKind;
    533         UINT8 weight;
    534         UINT8 spacing;
    535         UINT8 aspectRatioAndContrast;
    536         UINT8 aspectRatio94;
    537         UINT8 aspectRatio119;
    538         UINT8 aspectRatio157;
    539         UINT8 aspectRatio163;
    540         UINT8 aspectRatio211;
    541     } symbol;
    542 } DWRITE_PANOSE;
    543 typedef struct DWRITE_UNICODE_RANGE {
    544     UINT32 first;
    545     UINT32 last;
    546 } DWRITE_UNICODE_RANGE;
    547 typedef struct DWRITE_SCRIPT_PROPERTIES {
    548     UINT32 isoScriptCode;
    549     UINT32 isoScriptNumber;
    550     UINT32 clusterLookahead;
    551     UINT32 justificationCharacter;
    552     UINT32 restrictCaretToClusters : 1;
    553     UINT32 usesWordDividers : 1;
    554     UINT32 isDiscreteWriting : 1;
    555     UINT32 isBlockWriting : 1;
    556     UINT32 isDistributedWithinCluster : 1;
    557     UINT32 isConnectedWriting : 1;
    558     UINT32 isCursiveWriting : 1;
    559     UINT32 reserved : 25;
    560 } DWRITE_SCRIPT_PROPERTIES;
    561 typedef struct DWRITE_JUSTIFICATION_OPPORTUNITY {
    562     FLOAT expansionMinimum;
    563     FLOAT expansionMaximum;
    564     FLOAT compressionMaximum;
    565     UINT32 expansionPriority : 8;
    566     UINT32 compressionPriority : 8;
    567     UINT32 allowResidualExpansion : 1;
    568     UINT32 allowResidualCompression : 1;
    569     UINT32 applyToLeadingEdge : 1;
    570     UINT32 applyToTrailingEdge : 1;
    571     UINT32 reserved : 12;
    572 } DWRITE_JUSTIFICATION_OPPORTUNITY;
    573 #ifndef __IDWriteTextAnalysisSource1_FWD_DEFINED__
    574 #define __IDWriteTextAnalysisSource1_FWD_DEFINED__
    575 typedef interface IDWriteTextAnalysisSource1 IDWriteTextAnalysisSource1;
    576 #ifdef __cplusplus
    577 interface IDWriteTextAnalysisSource1;
    578 #endif /* __cplusplus */
    579 #endif
    580 
    581 #ifndef __IDWriteTextAnalysisSink1_FWD_DEFINED__
    582 #define __IDWriteTextAnalysisSink1_FWD_DEFINED__
    583 typedef interface IDWriteTextAnalysisSink1 IDWriteTextAnalysisSink1;
    584 #ifdef __cplusplus
    585 interface IDWriteTextAnalysisSink1;
    586 #endif /* __cplusplus */
    587 #endif
    588 
    589 #ifndef __IDWriteRenderingParams1_FWD_DEFINED__
    590 #define __IDWriteRenderingParams1_FWD_DEFINED__
    591 typedef interface IDWriteRenderingParams1 IDWriteRenderingParams1;
    592 #ifdef __cplusplus
    593 interface IDWriteRenderingParams1;
    594 #endif /* __cplusplus */
    595 #endif
    596 
    597 /*****************************************************************************
    598  * IDWriteFactory1 interface
    599  */
    600 #ifndef __IDWriteFactory1_INTERFACE_DEFINED__
    601 #define __IDWriteFactory1_INTERFACE_DEFINED__
    602 
    603 DEFINE_GUID(IID_IDWriteFactory1, 0x30572f99, 0xdac6, 0x41db, 0xa1,0x6e, 0x04,0x86,0x30,0x7e,0x60,0x6a);
    604 #if defined(__cplusplus) && !defined(CINTERFACE)
    605 MIDL_INTERFACE("30572f99-dac6-41db-a16e-0486307e606a")
    606 IDWriteFactory1 : public IDWriteFactory
    607 {
    608     virtual HRESULT STDMETHODCALLTYPE GetEudcFontCollection(
    609         IDWriteFontCollection **collection,
    610         WINBOOL check_for_updates = FALSE) = 0;
    611 
    612     virtual HRESULT STDMETHODCALLTYPE CreateCustomRenderingParams(
    613         FLOAT gamma,
    614         FLOAT enhcontrast,
    615         FLOAT enhcontrast_grayscale,
    616         FLOAT cleartype_level,
    617         DWRITE_PIXEL_GEOMETRY geometry,
    618         DWRITE_RENDERING_MODE mode,
    619         IDWriteRenderingParams1 **params) = 0;
    620 
    621 };
    622 #ifdef __CRT_UUID_DECL
    623 __CRT_UUID_DECL(IDWriteFactory1, 0x30572f99, 0xdac6, 0x41db, 0xa1,0x6e, 0x04,0x86,0x30,0x7e,0x60,0x6a)
    624 #endif
    625 #else
    626 typedef struct IDWriteFactory1Vtbl {
    627     BEGIN_INTERFACE
    628 
    629     /*** IUnknown methods ***/
    630     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    631         IDWriteFactory1 *This,
    632         REFIID riid,
    633         void **ppvObject);
    634 
    635     ULONG (STDMETHODCALLTYPE *AddRef)(
    636         IDWriteFactory1 *This);
    637 
    638     ULONG (STDMETHODCALLTYPE *Release)(
    639         IDWriteFactory1 *This);
    640 
    641     /*** IDWriteFactory methods ***/
    642     HRESULT (STDMETHODCALLTYPE *GetSystemFontCollection)(
    643         IDWriteFactory1 *This,
    644         IDWriteFontCollection **collection,
    645         WINBOOL check_for_updates);
    646 
    647     HRESULT (STDMETHODCALLTYPE *CreateCustomFontCollection)(
    648         IDWriteFactory1 *This,
    649         IDWriteFontCollectionLoader *loader,
    650         const void *key,
    651         UINT32 key_size,
    652         IDWriteFontCollection **collection);
    653 
    654     HRESULT (STDMETHODCALLTYPE *RegisterFontCollectionLoader)(
    655         IDWriteFactory1 *This,
    656         IDWriteFontCollectionLoader *loader);
    657 
    658     HRESULT (STDMETHODCALLTYPE *UnregisterFontCollectionLoader)(
    659         IDWriteFactory1 *This,
    660         IDWriteFontCollectionLoader *loader);
    661 
    662     HRESULT (STDMETHODCALLTYPE *CreateFontFileReference)(
    663         IDWriteFactory1 *This,
    664         const WCHAR *path,
    665         const FILETIME *writetime,
    666         IDWriteFontFile **font_file);
    667 
    668     HRESULT (STDMETHODCALLTYPE *CreateCustomFontFileReference)(
    669         IDWriteFactory1 *This,
    670         const void *reference_key,
    671         UINT32 key_size,
    672         IDWriteFontFileLoader *loader,
    673         IDWriteFontFile **font_file);
    674 
    675     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
    676         IDWriteFactory1 *This,
    677         DWRITE_FONT_FACE_TYPE facetype,
    678         UINT32 files_number,
    679         IDWriteFontFile *const *font_files,
    680         UINT32 index,
    681         DWRITE_FONT_SIMULATIONS sim_flags,
    682         IDWriteFontFace **font_face);
    683 
    684     HRESULT (STDMETHODCALLTYPE *CreateRenderingParams)(
    685         IDWriteFactory1 *This,
    686         IDWriteRenderingParams **params);
    687 
    688     HRESULT (STDMETHODCALLTYPE *CreateMonitorRenderingParams)(
    689         IDWriteFactory1 *This,
    690         HMONITOR monitor,
    691         IDWriteRenderingParams **params);
    692 
    693     HRESULT (STDMETHODCALLTYPE *CreateCustomRenderingParams)(
    694         IDWriteFactory1 *This,
    695         FLOAT gamma,
    696         FLOAT enhancedContrast,
    697         FLOAT cleartype_level,
    698         DWRITE_PIXEL_GEOMETRY geometry,
    699         DWRITE_RENDERING_MODE mode,
    700         IDWriteRenderingParams **params);
    701 
    702     HRESULT (STDMETHODCALLTYPE *RegisterFontFileLoader)(
    703         IDWriteFactory1 *This,
    704         IDWriteFontFileLoader *loader);
    705 
    706     HRESULT (STDMETHODCALLTYPE *UnregisterFontFileLoader)(
    707         IDWriteFactory1 *This,
    708         IDWriteFontFileLoader *loader);
    709 
    710     HRESULT (STDMETHODCALLTYPE *CreateTextFormat)(
    711         IDWriteFactory1 *This,
    712         const WCHAR *family_name,
    713         IDWriteFontCollection *collection,
    714         DWRITE_FONT_WEIGHT weight,
    715         DWRITE_FONT_STYLE style,
    716         DWRITE_FONT_STRETCH stretch,
    717         FLOAT size,
    718         const WCHAR *locale,
    719         IDWriteTextFormat **format);
    720 
    721     HRESULT (STDMETHODCALLTYPE *CreateTypography)(
    722         IDWriteFactory1 *This,
    723         IDWriteTypography **typography);
    724 
    725     HRESULT (STDMETHODCALLTYPE *GetGdiInterop)(
    726         IDWriteFactory1 *This,
    727         IDWriteGdiInterop **gdi_interop);
    728 
    729     HRESULT (STDMETHODCALLTYPE *CreateTextLayout)(
    730         IDWriteFactory1 *This,
    731         const WCHAR *string,
    732         UINT32 len,
    733         IDWriteTextFormat *format,
    734         FLOAT max_width,
    735         FLOAT max_height,
    736         IDWriteTextLayout **layout);
    737 
    738     HRESULT (STDMETHODCALLTYPE *CreateGdiCompatibleTextLayout)(
    739         IDWriteFactory1 *This,
    740         const WCHAR *string,
    741         UINT32 len,
    742         IDWriteTextFormat *format,
    743         FLOAT layout_width,
    744         FLOAT layout_height,
    745         FLOAT pixels_per_dip,
    746         const DWRITE_MATRIX *transform,
    747         WINBOOL use_gdi_natural,
    748         IDWriteTextLayout **layout);
    749 
    750     HRESULT (STDMETHODCALLTYPE *CreateEllipsisTrimmingSign)(
    751         IDWriteFactory1 *This,
    752         IDWriteTextFormat *format,
    753         IDWriteInlineObject **trimming_sign);
    754 
    755     HRESULT (STDMETHODCALLTYPE *CreateTextAnalyzer)(
    756         IDWriteFactory1 *This,
    757         IDWriteTextAnalyzer **analyzer);
    758 
    759     HRESULT (STDMETHODCALLTYPE *CreateNumberSubstitution)(
    760         IDWriteFactory1 *This,
    761         DWRITE_NUMBER_SUBSTITUTION_METHOD method,
    762         const WCHAR *locale,
    763         WINBOOL ignore_user_override,
    764         IDWriteNumberSubstitution **substitution);
    765 
    766     HRESULT (STDMETHODCALLTYPE *CreateGlyphRunAnalysis)(
    767         IDWriteFactory1 *This,
    768         const DWRITE_GLYPH_RUN *glyph_run,
    769         FLOAT pixels_per_dip,
    770         const DWRITE_MATRIX *transform,
    771         DWRITE_RENDERING_MODE rendering_mode,
    772         DWRITE_MEASURING_MODE measuring_mode,
    773         FLOAT baseline_x,
    774         FLOAT baseline_y,
    775         IDWriteGlyphRunAnalysis **analysis);
    776 
    777     /*** IDWriteFactory1 methods ***/
    778     HRESULT (STDMETHODCALLTYPE *GetEudcFontCollection)(
    779         IDWriteFactory1 *This,
    780         IDWriteFontCollection **collection,
    781         WINBOOL check_for_updates);
    782 
    783     HRESULT (STDMETHODCALLTYPE *IDWriteFactory1_CreateCustomRenderingParams)(
    784         IDWriteFactory1 *This,
    785         FLOAT gamma,
    786         FLOAT enhcontrast,
    787         FLOAT enhcontrast_grayscale,
    788         FLOAT cleartype_level,
    789         DWRITE_PIXEL_GEOMETRY geometry,
    790         DWRITE_RENDERING_MODE mode,
    791         IDWriteRenderingParams1 **params);
    792 
    793     END_INTERFACE
    794 } IDWriteFactory1Vtbl;
    795 
    796 interface IDWriteFactory1 {
    797     CONST_VTBL IDWriteFactory1Vtbl* lpVtbl;
    798 };
    799 
    800 #ifdef COBJMACROS
    801 #ifndef WIDL_C_INLINE_WRAPPERS
    802 /*** IUnknown methods ***/
    803 #define IDWriteFactory1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    804 #define IDWriteFactory1_AddRef(This) (This)->lpVtbl->AddRef(This)
    805 #define IDWriteFactory1_Release(This) (This)->lpVtbl->Release(This)
    806 /*** IDWriteFactory methods ***/
    807 #define IDWriteFactory1_GetSystemFontCollection(This,collection,check_for_updates) (This)->lpVtbl->GetSystemFontCollection(This,collection,check_for_updates)
    808 #define IDWriteFactory1_CreateCustomFontCollection(This,loader,key,key_size,collection) (This)->lpVtbl->CreateCustomFontCollection(This,loader,key,key_size,collection)
    809 #define IDWriteFactory1_RegisterFontCollectionLoader(This,loader) (This)->lpVtbl->RegisterFontCollectionLoader(This,loader)
    810 #define IDWriteFactory1_UnregisterFontCollectionLoader(This,loader) (This)->lpVtbl->UnregisterFontCollectionLoader(This,loader)
    811 #define IDWriteFactory1_CreateFontFileReference(This,path,writetime,font_file) (This)->lpVtbl->CreateFontFileReference(This,path,writetime,font_file)
    812 #define IDWriteFactory1_CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file) (This)->lpVtbl->CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file)
    813 #define IDWriteFactory1_CreateFontFace(This,facetype,files_number,font_files,index,sim_flags,font_face) (This)->lpVtbl->CreateFontFace(This,facetype,files_number,font_files,index,sim_flags,font_face)
    814 #define IDWriteFactory1_CreateRenderingParams(This,params) (This)->lpVtbl->CreateRenderingParams(This,params)
    815 #define IDWriteFactory1_CreateMonitorRenderingParams(This,monitor,params) (This)->lpVtbl->CreateMonitorRenderingParams(This,monitor,params)
    816 #define IDWriteFactory1_RegisterFontFileLoader(This,loader) (This)->lpVtbl->RegisterFontFileLoader(This,loader)
    817 #define IDWriteFactory1_UnregisterFontFileLoader(This,loader) (This)->lpVtbl->UnregisterFontFileLoader(This,loader)
    818 #define IDWriteFactory1_CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format) (This)->lpVtbl->CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format)
    819 #define IDWriteFactory1_CreateTypography(This,typography) (This)->lpVtbl->CreateTypography(This,typography)
    820 #define IDWriteFactory1_GetGdiInterop(This,gdi_interop) (This)->lpVtbl->GetGdiInterop(This,gdi_interop)
    821 #define IDWriteFactory1_CreateTextLayout(This,string,len,format,max_width,max_height,layout) (This)->lpVtbl->CreateTextLayout(This,string,len,format,max_width,max_height,layout)
    822 #define IDWriteFactory1_CreateGdiCompatibleTextLayout(This,string,len,format,layout_width,layout_height,pixels_per_dip,transform,use_gdi_natural,layout) (This)->lpVtbl->CreateGdiCompatibleTextLayout(This,string,len,format,layout_width,layout_height,pixels_per_dip,transform,use_gdi_natural,layout)
    823 #define IDWriteFactory1_CreateEllipsisTrimmingSign(This,format,trimming_sign) (This)->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign)
    824 #define IDWriteFactory1_CreateTextAnalyzer(This,analyzer) (This)->lpVtbl->CreateTextAnalyzer(This,analyzer)
    825 #define IDWriteFactory1_CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution) (This)->lpVtbl->CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution)
    826 #define IDWriteFactory1_CreateGlyphRunAnalysis(This,glyph_run,pixels_per_dip,transform,rendering_mode,measuring_mode,baseline_x,baseline_y,analysis) (This)->lpVtbl->CreateGlyphRunAnalysis(This,glyph_run,pixels_per_dip,transform,rendering_mode,measuring_mode,baseline_x,baseline_y,analysis)
    827 /*** IDWriteFactory1 methods ***/
    828 #define IDWriteFactory1_GetEudcFontCollection(This,collection,check_for_updates) (This)->lpVtbl->GetEudcFontCollection(This,collection,check_for_updates)
    829 #define IDWriteFactory1_CreateCustomRenderingParams(This,gamma,enhcontrast,enhcontrast_grayscale,cleartype_level,geometry,mode,params) (This)->lpVtbl->IDWriteFactory1_CreateCustomRenderingParams(This,gamma,enhcontrast,enhcontrast_grayscale,cleartype_level,geometry,mode,params)
    830 #else
    831 /*** IUnknown methods ***/
    832 static inline HRESULT IDWriteFactory1_QueryInterface(IDWriteFactory1* This,REFIID riid,void **ppvObject) {
    833     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    834 }
    835 static inline ULONG IDWriteFactory1_AddRef(IDWriteFactory1* This) {
    836     return This->lpVtbl->AddRef(This);
    837 }
    838 static inline ULONG IDWriteFactory1_Release(IDWriteFactory1* This) {
    839     return This->lpVtbl->Release(This);
    840 }
    841 /*** IDWriteFactory methods ***/
    842 static inline HRESULT IDWriteFactory1_GetSystemFontCollection(IDWriteFactory1* This,IDWriteFontCollection **collection,WINBOOL check_for_updates) {
    843     return This->lpVtbl->GetSystemFontCollection(This,collection,check_for_updates);
    844 }
    845 static inline HRESULT IDWriteFactory1_CreateCustomFontCollection(IDWriteFactory1* This,IDWriteFontCollectionLoader *loader,const void *key,UINT32 key_size,IDWriteFontCollection **collection) {
    846     return This->lpVtbl->CreateCustomFontCollection(This,loader,key,key_size,collection);
    847 }
    848 static inline HRESULT IDWriteFactory1_RegisterFontCollectionLoader(IDWriteFactory1* This,IDWriteFontCollectionLoader *loader) {
    849     return This->lpVtbl->RegisterFontCollectionLoader(This,loader);
    850 }
    851 static inline HRESULT IDWriteFactory1_UnregisterFontCollectionLoader(IDWriteFactory1* This,IDWriteFontCollectionLoader *loader) {
    852     return This->lpVtbl->UnregisterFontCollectionLoader(This,loader);
    853 }
    854 static inline HRESULT IDWriteFactory1_CreateFontFileReference(IDWriteFactory1* This,const WCHAR *path,const FILETIME *writetime,IDWriteFontFile **font_file) {
    855     return This->lpVtbl->CreateFontFileReference(This,path,writetime,font_file);
    856 }
    857 static inline HRESULT IDWriteFactory1_CreateCustomFontFileReference(IDWriteFactory1* This,const void *reference_key,UINT32 key_size,IDWriteFontFileLoader *loader,IDWriteFontFile **font_file) {
    858     return This->lpVtbl->CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file);
    859 }
    860 static inline HRESULT IDWriteFactory1_CreateFontFace(IDWriteFactory1* This,DWRITE_FONT_FACE_TYPE facetype,UINT32 files_number,IDWriteFontFile *const *font_files,UINT32 index,DWRITE_FONT_SIMULATIONS sim_flags,IDWriteFontFace **font_face) {
    861     return This->lpVtbl->CreateFontFace(This,facetype,files_number,font_files,index,sim_flags,font_face);
    862 }
    863 static inline HRESULT IDWriteFactory1_CreateRenderingParams(IDWriteFactory1* This,IDWriteRenderingParams **params) {
    864     return This->lpVtbl->CreateRenderingParams(This,params);
    865 }
    866 static inline HRESULT IDWriteFactory1_CreateMonitorRenderingParams(IDWriteFactory1* This,HMONITOR monitor,IDWriteRenderingParams **params) {
    867     return This->lpVtbl->CreateMonitorRenderingParams(This,monitor,params);
    868 }
    869 static inline HRESULT IDWriteFactory1_RegisterFontFileLoader(IDWriteFactory1* This,IDWriteFontFileLoader *loader) {
    870     return This->lpVtbl->RegisterFontFileLoader(This,loader);
    871 }
    872 static inline HRESULT IDWriteFactory1_UnregisterFontFileLoader(IDWriteFactory1* This,IDWriteFontFileLoader *loader) {
    873     return This->lpVtbl->UnregisterFontFileLoader(This,loader);
    874 }
    875 static inline HRESULT IDWriteFactory1_CreateTextFormat(IDWriteFactory1* This,const WCHAR *family_name,IDWriteFontCollection *collection,DWRITE_FONT_WEIGHT weight,DWRITE_FONT_STYLE style,DWRITE_FONT_STRETCH stretch,FLOAT size,const WCHAR *locale,IDWriteTextFormat **format) {
    876     return This->lpVtbl->CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format);
    877 }
    878 static inline HRESULT IDWriteFactory1_CreateTypography(IDWriteFactory1* This,IDWriteTypography **typography) {
    879     return This->lpVtbl->CreateTypography(This,typography);
    880 }
    881 static inline HRESULT IDWriteFactory1_GetGdiInterop(IDWriteFactory1* This,IDWriteGdiInterop **gdi_interop) {
    882     return This->lpVtbl->GetGdiInterop(This,gdi_interop);
    883 }
    884 static inline HRESULT IDWriteFactory1_CreateTextLayout(IDWriteFactory1* This,const WCHAR *string,UINT32 len,IDWriteTextFormat *format,FLOAT max_width,FLOAT max_height,IDWriteTextLayout **layout) {
    885     return This->lpVtbl->CreateTextLayout(This,string,len,format,max_width,max_height,layout);
    886 }
    887 static inline HRESULT IDWriteFactory1_CreateGdiCompatibleTextLayout(IDWriteFactory1* This,const WCHAR *string,UINT32 len,IDWriteTextFormat *format,FLOAT layout_width,FLOAT layout_height,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,WINBOOL use_gdi_natural,IDWriteTextLayout **layout) {
    888     return This->lpVtbl->CreateGdiCompatibleTextLayout(This,string,len,format,layout_width,layout_height,pixels_per_dip,transform,use_gdi_natural,layout);
    889 }
    890 static inline HRESULT IDWriteFactory1_CreateEllipsisTrimmingSign(IDWriteFactory1* This,IDWriteTextFormat *format,IDWriteInlineObject **trimming_sign) {
    891     return This->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign);
    892 }
    893 static inline HRESULT IDWriteFactory1_CreateTextAnalyzer(IDWriteFactory1* This,IDWriteTextAnalyzer **analyzer) {
    894     return This->lpVtbl->CreateTextAnalyzer(This,analyzer);
    895 }
    896 static inline HRESULT IDWriteFactory1_CreateNumberSubstitution(IDWriteFactory1* This,DWRITE_NUMBER_SUBSTITUTION_METHOD method,const WCHAR *locale,WINBOOL ignore_user_override,IDWriteNumberSubstitution **substitution) {
    897     return This->lpVtbl->CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution);
    898 }
    899 static inline HRESULT IDWriteFactory1_CreateGlyphRunAnalysis(IDWriteFactory1* This,const DWRITE_GLYPH_RUN *glyph_run,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,DWRITE_RENDERING_MODE rendering_mode,DWRITE_MEASURING_MODE measuring_mode,FLOAT baseline_x,FLOAT baseline_y,IDWriteGlyphRunAnalysis **analysis) {
    900     return This->lpVtbl->CreateGlyphRunAnalysis(This,glyph_run,pixels_per_dip,transform,rendering_mode,measuring_mode,baseline_x,baseline_y,analysis);
    901 }
    902 /*** IDWriteFactory1 methods ***/
    903 static inline HRESULT IDWriteFactory1_GetEudcFontCollection(IDWriteFactory1* This,IDWriteFontCollection **collection,WINBOOL check_for_updates) {
    904     return This->lpVtbl->GetEudcFontCollection(This,collection,check_for_updates);
    905 }
    906 static inline HRESULT IDWriteFactory1_CreateCustomRenderingParams(IDWriteFactory1* This,FLOAT gamma,FLOAT enhcontrast,FLOAT enhcontrast_grayscale,FLOAT cleartype_level,DWRITE_PIXEL_GEOMETRY geometry,DWRITE_RENDERING_MODE mode,IDWriteRenderingParams1 **params) {
    907     return This->lpVtbl->IDWriteFactory1_CreateCustomRenderingParams(This,gamma,enhcontrast,enhcontrast_grayscale,cleartype_level,geometry,mode,params);
    908 }
    909 #endif
    910 #endif
    911 
    912 #endif
    913 
    914 
    915 #endif  /* __IDWriteFactory1_INTERFACE_DEFINED__ */
    916 
    917 /*****************************************************************************
    918  * IDWriteFontFace1 interface
    919  */
    920 #ifndef __IDWriteFontFace1_INTERFACE_DEFINED__
    921 #define __IDWriteFontFace1_INTERFACE_DEFINED__
    922 
    923 DEFINE_GUID(IID_IDWriteFontFace1, 0xa71efdb4, 0x9fdb, 0x4838, 0xad,0x90, 0xcf,0xc3,0xbe,0x8c,0x3d,0xaf);
    924 #if defined(__cplusplus) && !defined(CINTERFACE)
    925 MIDL_INTERFACE("a71efdb4-9fdb-4838-ad90-cfc3be8c3daf")
    926 IDWriteFontFace1 : public IDWriteFontFace
    927 {
    928     virtual void STDMETHODCALLTYPE GetMetrics(
    929         DWRITE_FONT_METRICS1 *metrics) = 0;
    930 
    931     virtual HRESULT STDMETHODCALLTYPE GetGdiCompatibleMetrics(
    932         FLOAT em_size,
    933         FLOAT pixels_per_dip,
    934         const DWRITE_MATRIX *transform,
    935         DWRITE_FONT_METRICS1 *metrics) = 0;
    936 
    937     virtual void STDMETHODCALLTYPE GetCaretMetrics(
    938         DWRITE_CARET_METRICS *metrics) = 0;
    939 
    940     virtual HRESULT STDMETHODCALLTYPE GetUnicodeRanges(
    941         UINT32 max_count,
    942         DWRITE_UNICODE_RANGE *ranges,
    943         UINT32 *count) = 0;
    944 
    945     virtual WINBOOL STDMETHODCALLTYPE IsMonospacedFont(
    946         ) = 0;
    947 
    948     virtual HRESULT STDMETHODCALLTYPE GetDesignGlyphAdvances(
    949         UINT32 glyph_count,
    950         const UINT16 *indices,
    951         INT32 *advances,
    952         WINBOOL is_sideways = FALSE) = 0;
    953 
    954     virtual HRESULT STDMETHODCALLTYPE GetGdiCompatibleGlyphAdvances(
    955         FLOAT em_size,
    956         FLOAT pixels_per_dip,
    957         const DWRITE_MATRIX *transform,
    958         WINBOOL use_gdi_natural,
    959         WINBOOL is_sideways,
    960         UINT32 glyph_count,
    961         const UINT16 *indices,
    962         INT32 *advances) = 0;
    963 
    964     virtual HRESULT STDMETHODCALLTYPE GetKerningPairAdjustments(
    965         UINT32 glyph_count,
    966         const UINT16 *indices,
    967         INT32 *adjustments) = 0;
    968 
    969     virtual WINBOOL STDMETHODCALLTYPE HasKerningPairs(
    970         ) = 0;
    971 
    972     virtual HRESULT STDMETHODCALLTYPE GetRecommendedRenderingMode(
    973         FLOAT font_emsize,
    974         FLOAT dpiX,
    975         FLOAT dpiY,
    976         const DWRITE_MATRIX *transform,
    977         WINBOOL is_sideways,
    978         DWRITE_OUTLINE_THRESHOLD threshold,
    979         DWRITE_MEASURING_MODE measuring_mode,
    980         DWRITE_RENDERING_MODE *rendering_mode) = 0;
    981 
    982     virtual HRESULT STDMETHODCALLTYPE GetVerticalGlyphVariants(
    983         UINT32 glyph_count,
    984         const UINT16 *nominal_indices,
    985         UINT16 *vertical_indices) = 0;
    986 
    987     virtual WINBOOL STDMETHODCALLTYPE HasVerticalGlyphVariants(
    988         ) = 0;
    989 
    990 };
    991 #ifdef __CRT_UUID_DECL
    992 __CRT_UUID_DECL(IDWriteFontFace1, 0xa71efdb4, 0x9fdb, 0x4838, 0xad,0x90, 0xcf,0xc3,0xbe,0x8c,0x3d,0xaf)
    993 #endif
    994 #else
    995 typedef struct IDWriteFontFace1Vtbl {
    996     BEGIN_INTERFACE
    997 
    998     /*** IUnknown methods ***/
    999     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1000         IDWriteFontFace1 *This,
   1001         REFIID riid,
   1002         void **ppvObject);
   1003 
   1004     ULONG (STDMETHODCALLTYPE *AddRef)(
   1005         IDWriteFontFace1 *This);
   1006 
   1007     ULONG (STDMETHODCALLTYPE *Release)(
   1008         IDWriteFontFace1 *This);
   1009 
   1010     /*** IDWriteFontFace methods ***/
   1011     DWRITE_FONT_FACE_TYPE (STDMETHODCALLTYPE *GetType)(
   1012         IDWriteFontFace1 *This);
   1013 
   1014     HRESULT (STDMETHODCALLTYPE *GetFiles)(
   1015         IDWriteFontFace1 *This,
   1016         UINT32 *number_of_files,
   1017         IDWriteFontFile **fontfiles);
   1018 
   1019     UINT32 (STDMETHODCALLTYPE *GetIndex)(
   1020         IDWriteFontFace1 *This);
   1021 
   1022     DWRITE_FONT_SIMULATIONS (STDMETHODCALLTYPE *GetSimulations)(
   1023         IDWriteFontFace1 *This);
   1024 
   1025     WINBOOL (STDMETHODCALLTYPE *IsSymbolFont)(
   1026         IDWriteFontFace1 *This);
   1027 
   1028     void (STDMETHODCALLTYPE *GetMetrics)(
   1029         IDWriteFontFace1 *This,
   1030         DWRITE_FONT_METRICS *metrics);
   1031 
   1032     UINT16 (STDMETHODCALLTYPE *GetGlyphCount)(
   1033         IDWriteFontFace1 *This);
   1034 
   1035     HRESULT (STDMETHODCALLTYPE *GetDesignGlyphMetrics)(
   1036         IDWriteFontFace1 *This,
   1037         const UINT16 *glyph_indices,
   1038         UINT32 glyph_count,
   1039         DWRITE_GLYPH_METRICS *metrics,
   1040         WINBOOL is_sideways);
   1041 
   1042     HRESULT (STDMETHODCALLTYPE *GetGlyphIndices)(
   1043         IDWriteFontFace1 *This,
   1044         const UINT32 *codepoints,
   1045         UINT32 count,
   1046         UINT16 *glyph_indices);
   1047 
   1048     HRESULT (STDMETHODCALLTYPE *TryGetFontTable)(
   1049         IDWriteFontFace1 *This,
   1050         UINT32 table_tag,
   1051         const void **table_data,
   1052         UINT32 *table_size,
   1053         void **context,
   1054         WINBOOL *exists);
   1055 
   1056     void (STDMETHODCALLTYPE *ReleaseFontTable)(
   1057         IDWriteFontFace1 *This,
   1058         void *table_context);
   1059 
   1060     HRESULT (STDMETHODCALLTYPE *GetGlyphRunOutline)(
   1061         IDWriteFontFace1 *This,
   1062         FLOAT emSize,
   1063         const UINT16 *glyph_indices,
   1064         const FLOAT *glyph_advances,
   1065         const DWRITE_GLYPH_OFFSET *glyph_offsets,
   1066         UINT32 glyph_count,
   1067         WINBOOL is_sideways,
   1068         WINBOOL is_rtl,
   1069         IDWriteGeometrySink *geometrysink);
   1070 
   1071     HRESULT (STDMETHODCALLTYPE *GetRecommendedRenderingMode)(
   1072         IDWriteFontFace1 *This,
   1073         FLOAT emSize,
   1074         FLOAT pixels_per_dip,
   1075         DWRITE_MEASURING_MODE mode,
   1076         IDWriteRenderingParams *params,
   1077         DWRITE_RENDERING_MODE *rendering_mode);
   1078 
   1079     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleMetrics)(
   1080         IDWriteFontFace1 *This,
   1081         FLOAT emSize,
   1082         FLOAT pixels_per_dip,
   1083         const DWRITE_MATRIX *transform,
   1084         DWRITE_FONT_METRICS *metrics);
   1085 
   1086     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleGlyphMetrics)(
   1087         IDWriteFontFace1 *This,
   1088         FLOAT emSize,
   1089         FLOAT pixels_per_dip,
   1090         const DWRITE_MATRIX *transform,
   1091         WINBOOL use_gdi_natural,
   1092         const UINT16 *glyph_indices,
   1093         UINT32 glyph_count,
   1094         DWRITE_GLYPH_METRICS *metrics,
   1095         WINBOOL is_sideways);
   1096 
   1097     /*** IDWriteFontFace1 methods ***/
   1098     void (STDMETHODCALLTYPE *IDWriteFontFace1_GetMetrics)(
   1099         IDWriteFontFace1 *This,
   1100         DWRITE_FONT_METRICS1 *metrics);
   1101 
   1102     HRESULT (STDMETHODCALLTYPE *IDWriteFontFace1_GetGdiCompatibleMetrics)(
   1103         IDWriteFontFace1 *This,
   1104         FLOAT em_size,
   1105         FLOAT pixels_per_dip,
   1106         const DWRITE_MATRIX *transform,
   1107         DWRITE_FONT_METRICS1 *metrics);
   1108 
   1109     void (STDMETHODCALLTYPE *GetCaretMetrics)(
   1110         IDWriteFontFace1 *This,
   1111         DWRITE_CARET_METRICS *metrics);
   1112 
   1113     HRESULT (STDMETHODCALLTYPE *GetUnicodeRanges)(
   1114         IDWriteFontFace1 *This,
   1115         UINT32 max_count,
   1116         DWRITE_UNICODE_RANGE *ranges,
   1117         UINT32 *count);
   1118 
   1119     WINBOOL (STDMETHODCALLTYPE *IsMonospacedFont)(
   1120         IDWriteFontFace1 *This);
   1121 
   1122     HRESULT (STDMETHODCALLTYPE *GetDesignGlyphAdvances)(
   1123         IDWriteFontFace1 *This,
   1124         UINT32 glyph_count,
   1125         const UINT16 *indices,
   1126         INT32 *advances,
   1127         WINBOOL is_sideways);
   1128 
   1129     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleGlyphAdvances)(
   1130         IDWriteFontFace1 *This,
   1131         FLOAT em_size,
   1132         FLOAT pixels_per_dip,
   1133         const DWRITE_MATRIX *transform,
   1134         WINBOOL use_gdi_natural,
   1135         WINBOOL is_sideways,
   1136         UINT32 glyph_count,
   1137         const UINT16 *indices,
   1138         INT32 *advances);
   1139 
   1140     HRESULT (STDMETHODCALLTYPE *GetKerningPairAdjustments)(
   1141         IDWriteFontFace1 *This,
   1142         UINT32 glyph_count,
   1143         const UINT16 *indices,
   1144         INT32 *adjustments);
   1145 
   1146     WINBOOL (STDMETHODCALLTYPE *HasKerningPairs)(
   1147         IDWriteFontFace1 *This);
   1148 
   1149     HRESULT (STDMETHODCALLTYPE *IDWriteFontFace1_GetRecommendedRenderingMode)(
   1150         IDWriteFontFace1 *This,
   1151         FLOAT font_emsize,
   1152         FLOAT dpiX,
   1153         FLOAT dpiY,
   1154         const DWRITE_MATRIX *transform,
   1155         WINBOOL is_sideways,
   1156         DWRITE_OUTLINE_THRESHOLD threshold,
   1157         DWRITE_MEASURING_MODE measuring_mode,
   1158         DWRITE_RENDERING_MODE *rendering_mode);
   1159 
   1160     HRESULT (STDMETHODCALLTYPE *GetVerticalGlyphVariants)(
   1161         IDWriteFontFace1 *This,
   1162         UINT32 glyph_count,
   1163         const UINT16 *nominal_indices,
   1164         UINT16 *vertical_indices);
   1165 
   1166     WINBOOL (STDMETHODCALLTYPE *HasVerticalGlyphVariants)(
   1167         IDWriteFontFace1 *This);
   1168 
   1169     END_INTERFACE
   1170 } IDWriteFontFace1Vtbl;
   1171 
   1172 interface IDWriteFontFace1 {
   1173     CONST_VTBL IDWriteFontFace1Vtbl* lpVtbl;
   1174 };
   1175 
   1176 #ifdef COBJMACROS
   1177 #ifndef WIDL_C_INLINE_WRAPPERS
   1178 /*** IUnknown methods ***/
   1179 #define IDWriteFontFace1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1180 #define IDWriteFontFace1_AddRef(This) (This)->lpVtbl->AddRef(This)
   1181 #define IDWriteFontFace1_Release(This) (This)->lpVtbl->Release(This)
   1182 /*** IDWriteFontFace methods ***/
   1183 #define IDWriteFontFace1_GetType(This) (This)->lpVtbl->GetType(This)
   1184 #define IDWriteFontFace1_GetFiles(This,number_of_files,fontfiles) (This)->lpVtbl->GetFiles(This,number_of_files,fontfiles)
   1185 #define IDWriteFontFace1_GetIndex(This) (This)->lpVtbl->GetIndex(This)
   1186 #define IDWriteFontFace1_GetSimulations(This) (This)->lpVtbl->GetSimulations(This)
   1187 #define IDWriteFontFace1_IsSymbolFont(This) (This)->lpVtbl->IsSymbolFont(This)
   1188 #define IDWriteFontFace1_GetGlyphCount(This) (This)->lpVtbl->GetGlyphCount(This)
   1189 #define IDWriteFontFace1_GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways) (This)->lpVtbl->GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways)
   1190 #define IDWriteFontFace1_GetGlyphIndices(This,codepoints,count,glyph_indices) (This)->lpVtbl->GetGlyphIndices(This,codepoints,count,glyph_indices)
   1191 #define IDWriteFontFace1_TryGetFontTable(This,table_tag,table_data,table_size,context,exists) (This)->lpVtbl->TryGetFontTable(This,table_tag,table_data,table_size,context,exists)
   1192 #define IDWriteFontFace1_ReleaseFontTable(This,table_context) (This)->lpVtbl->ReleaseFontTable(This,table_context)
   1193 #define IDWriteFontFace1_GetGlyphRunOutline(This,emSize,glyph_indices,glyph_advances,glyph_offsets,glyph_count,is_sideways,is_rtl,geometrysink) (This)->lpVtbl->GetGlyphRunOutline(This,emSize,glyph_indices,glyph_advances,glyph_offsets,glyph_count,is_sideways,is_rtl,geometrysink)
   1194 #define IDWriteFontFace1_GetGdiCompatibleGlyphMetrics(This,emSize,pixels_per_dip,transform,use_gdi_natural,glyph_indices,glyph_count,metrics,is_sideways) (This)->lpVtbl->GetGdiCompatibleGlyphMetrics(This,emSize,pixels_per_dip,transform,use_gdi_natural,glyph_indices,glyph_count,metrics,is_sideways)
   1195 /*** IDWriteFontFace1 methods ***/
   1196 #define IDWriteFontFace1_GetMetrics(This,metrics) (This)->lpVtbl->IDWriteFontFace1_GetMetrics(This,metrics)
   1197 #define IDWriteFontFace1_GetGdiCompatibleMetrics(This,em_size,pixels_per_dip,transform,metrics) (This)->lpVtbl->IDWriteFontFace1_GetGdiCompatibleMetrics(This,em_size,pixels_per_dip,transform,metrics)
   1198 #define IDWriteFontFace1_GetCaretMetrics(This,metrics) (This)->lpVtbl->GetCaretMetrics(This,metrics)
   1199 #define IDWriteFontFace1_GetUnicodeRanges(This,max_count,ranges,count) (This)->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count)
   1200 #define IDWriteFontFace1_IsMonospacedFont(This) (This)->lpVtbl->IsMonospacedFont(This)
   1201 #define IDWriteFontFace1_GetDesignGlyphAdvances(This,glyph_count,indices,advances,is_sideways) (This)->lpVtbl->GetDesignGlyphAdvances(This,glyph_count,indices,advances,is_sideways)
   1202 #define IDWriteFontFace1_GetGdiCompatibleGlyphAdvances(This,em_size,pixels_per_dip,transform,use_gdi_natural,is_sideways,glyph_count,indices,advances) (This)->lpVtbl->GetGdiCompatibleGlyphAdvances(This,em_size,pixels_per_dip,transform,use_gdi_natural,is_sideways,glyph_count,indices,advances)
   1203 #define IDWriteFontFace1_GetKerningPairAdjustments(This,glyph_count,indices,adjustments) (This)->lpVtbl->GetKerningPairAdjustments(This,glyph_count,indices,adjustments)
   1204 #define IDWriteFontFace1_HasKerningPairs(This) (This)->lpVtbl->HasKerningPairs(This)
   1205 #define IDWriteFontFace1_GetRecommendedRenderingMode(This,font_emsize,dpiX,dpiY,transform,is_sideways,threshold,measuring_mode,rendering_mode) (This)->lpVtbl->IDWriteFontFace1_GetRecommendedRenderingMode(This,font_emsize,dpiX,dpiY,transform,is_sideways,threshold,measuring_mode,rendering_mode)
   1206 #define IDWriteFontFace1_GetVerticalGlyphVariants(This,glyph_count,nominal_indices,vertical_indices) (This)->lpVtbl->GetVerticalGlyphVariants(This,glyph_count,nominal_indices,vertical_indices)
   1207 #define IDWriteFontFace1_HasVerticalGlyphVariants(This) (This)->lpVtbl->HasVerticalGlyphVariants(This)
   1208 #else
   1209 /*** IUnknown methods ***/
   1210 static inline HRESULT IDWriteFontFace1_QueryInterface(IDWriteFontFace1* This,REFIID riid,void **ppvObject) {
   1211     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1212 }
   1213 static inline ULONG IDWriteFontFace1_AddRef(IDWriteFontFace1* This) {
   1214     return This->lpVtbl->AddRef(This);
   1215 }
   1216 static inline ULONG IDWriteFontFace1_Release(IDWriteFontFace1* This) {
   1217     return This->lpVtbl->Release(This);
   1218 }
   1219 /*** IDWriteFontFace methods ***/
   1220 static inline DWRITE_FONT_FACE_TYPE IDWriteFontFace1_GetType(IDWriteFontFace1* This) {
   1221     return This->lpVtbl->GetType(This);
   1222 }
   1223 static inline HRESULT IDWriteFontFace1_GetFiles(IDWriteFontFace1* This,UINT32 *number_of_files,IDWriteFontFile **fontfiles) {
   1224     return This->lpVtbl->GetFiles(This,number_of_files,fontfiles);
   1225 }
   1226 static inline UINT32 IDWriteFontFace1_GetIndex(IDWriteFontFace1* This) {
   1227     return This->lpVtbl->GetIndex(This);
   1228 }
   1229 static inline DWRITE_FONT_SIMULATIONS IDWriteFontFace1_GetSimulations(IDWriteFontFace1* This) {
   1230     return This->lpVtbl->GetSimulations(This);
   1231 }
   1232 static inline WINBOOL IDWriteFontFace1_IsSymbolFont(IDWriteFontFace1* This) {
   1233     return This->lpVtbl->IsSymbolFont(This);
   1234 }
   1235 static inline UINT16 IDWriteFontFace1_GetGlyphCount(IDWriteFontFace1* This) {
   1236     return This->lpVtbl->GetGlyphCount(This);
   1237 }
   1238 static inline HRESULT IDWriteFontFace1_GetDesignGlyphMetrics(IDWriteFontFace1* This,const UINT16 *glyph_indices,UINT32 glyph_count,DWRITE_GLYPH_METRICS *metrics,WINBOOL is_sideways) {
   1239     return This->lpVtbl->GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways);
   1240 }
   1241 static inline HRESULT IDWriteFontFace1_GetGlyphIndices(IDWriteFontFace1* This,const UINT32 *codepoints,UINT32 count,UINT16 *glyph_indices) {
   1242     return This->lpVtbl->GetGlyphIndices(This,codepoints,count,glyph_indices);
   1243 }
   1244 static inline HRESULT IDWriteFontFace1_TryGetFontTable(IDWriteFontFace1* This,UINT32 table_tag,const void **table_data,UINT32 *table_size,void **context,WINBOOL *exists) {
   1245     return This->lpVtbl->TryGetFontTable(This,table_tag,table_data,table_size,context,exists);
   1246 }
   1247 static inline void IDWriteFontFace1_ReleaseFontTable(IDWriteFontFace1* This,void *table_context) {
   1248     This->lpVtbl->ReleaseFontTable(This,table_context);
   1249 }
   1250 static inline HRESULT IDWriteFontFace1_GetGlyphRunOutline(IDWriteFontFace1* This,FLOAT emSize,const UINT16 *glyph_indices,const FLOAT *glyph_advances,const DWRITE_GLYPH_OFFSET *glyph_offsets,UINT32 glyph_count,WINBOOL is_sideways,WINBOOL is_rtl,IDWriteGeometrySink *geometrysink) {
   1251     return This->lpVtbl->GetGlyphRunOutline(This,emSize,glyph_indices,glyph_advances,glyph_offsets,glyph_count,is_sideways,is_rtl,geometrysink);
   1252 }
   1253 static inline HRESULT IDWriteFontFace1_GetGdiCompatibleGlyphMetrics(IDWriteFontFace1* This,FLOAT emSize,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,WINBOOL use_gdi_natural,const UINT16 *glyph_indices,UINT32 glyph_count,DWRITE_GLYPH_METRICS *metrics,WINBOOL is_sideways) {
   1254     return This->lpVtbl->GetGdiCompatibleGlyphMetrics(This,emSize,pixels_per_dip,transform,use_gdi_natural,glyph_indices,glyph_count,metrics,is_sideways);
   1255 }
   1256 /*** IDWriteFontFace1 methods ***/
   1257 static inline void IDWriteFontFace1_GetMetrics(IDWriteFontFace1* This,DWRITE_FONT_METRICS1 *metrics) {
   1258     This->lpVtbl->IDWriteFontFace1_GetMetrics(This,metrics);
   1259 }
   1260 static inline HRESULT IDWriteFontFace1_GetGdiCompatibleMetrics(IDWriteFontFace1* This,FLOAT em_size,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,DWRITE_FONT_METRICS1 *metrics) {
   1261     return This->lpVtbl->IDWriteFontFace1_GetGdiCompatibleMetrics(This,em_size,pixels_per_dip,transform,metrics);
   1262 }
   1263 static inline void IDWriteFontFace1_GetCaretMetrics(IDWriteFontFace1* This,DWRITE_CARET_METRICS *metrics) {
   1264     This->lpVtbl->GetCaretMetrics(This,metrics);
   1265 }
   1266 static inline HRESULT IDWriteFontFace1_GetUnicodeRanges(IDWriteFontFace1* This,UINT32 max_count,DWRITE_UNICODE_RANGE *ranges,UINT32 *count) {
   1267     return This->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count);
   1268 }
   1269 static inline WINBOOL IDWriteFontFace1_IsMonospacedFont(IDWriteFontFace1* This) {
   1270     return This->lpVtbl->IsMonospacedFont(This);
   1271 }
   1272 static inline HRESULT IDWriteFontFace1_GetDesignGlyphAdvances(IDWriteFontFace1* This,UINT32 glyph_count,const UINT16 *indices,INT32 *advances,WINBOOL is_sideways) {
   1273     return This->lpVtbl->GetDesignGlyphAdvances(This,glyph_count,indices,advances,is_sideways);
   1274 }
   1275 static inline HRESULT IDWriteFontFace1_GetGdiCompatibleGlyphAdvances(IDWriteFontFace1* This,FLOAT em_size,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,WINBOOL use_gdi_natural,WINBOOL is_sideways,UINT32 glyph_count,const UINT16 *indices,INT32 *advances) {
   1276     return This->lpVtbl->GetGdiCompatibleGlyphAdvances(This,em_size,pixels_per_dip,transform,use_gdi_natural,is_sideways,glyph_count,indices,advances);
   1277 }
   1278 static inline HRESULT IDWriteFontFace1_GetKerningPairAdjustments(IDWriteFontFace1* This,UINT32 glyph_count,const UINT16 *indices,INT32 *adjustments) {
   1279     return This->lpVtbl->GetKerningPairAdjustments(This,glyph_count,indices,adjustments);
   1280 }
   1281 static inline WINBOOL IDWriteFontFace1_HasKerningPairs(IDWriteFontFace1* This) {
   1282     return This->lpVtbl->HasKerningPairs(This);
   1283 }
   1284 static inline HRESULT IDWriteFontFace1_GetRecommendedRenderingMode(IDWriteFontFace1* This,FLOAT font_emsize,FLOAT dpiX,FLOAT dpiY,const DWRITE_MATRIX *transform,WINBOOL is_sideways,DWRITE_OUTLINE_THRESHOLD threshold,DWRITE_MEASURING_MODE measuring_mode,DWRITE_RENDERING_MODE *rendering_mode) {
   1285     return This->lpVtbl->IDWriteFontFace1_GetRecommendedRenderingMode(This,font_emsize,dpiX,dpiY,transform,is_sideways,threshold,measuring_mode,rendering_mode);
   1286 }
   1287 static inline HRESULT IDWriteFontFace1_GetVerticalGlyphVariants(IDWriteFontFace1* This,UINT32 glyph_count,const UINT16 *nominal_indices,UINT16 *vertical_indices) {
   1288     return This->lpVtbl->GetVerticalGlyphVariants(This,glyph_count,nominal_indices,vertical_indices);
   1289 }
   1290 static inline WINBOOL IDWriteFontFace1_HasVerticalGlyphVariants(IDWriteFontFace1* This) {
   1291     return This->lpVtbl->HasVerticalGlyphVariants(This);
   1292 }
   1293 #endif
   1294 #endif
   1295 
   1296 #endif
   1297 
   1298 
   1299 #endif  /* __IDWriteFontFace1_INTERFACE_DEFINED__ */
   1300 
   1301 /*****************************************************************************
   1302  * IDWriteFont1 interface
   1303  */
   1304 #ifndef __IDWriteFont1_INTERFACE_DEFINED__
   1305 #define __IDWriteFont1_INTERFACE_DEFINED__
   1306 
   1307 DEFINE_GUID(IID_IDWriteFont1, 0xacd16696, 0x8c14, 0x4f5d, 0x87,0x7e, 0xfe,0x3f,0xc1,0xd3,0x27,0x38);
   1308 #if defined(__cplusplus) && !defined(CINTERFACE)
   1309 MIDL_INTERFACE("acd16696-8c14-4f5d-877e-fe3fc1d32738")
   1310 IDWriteFont1 : public IDWriteFont
   1311 {
   1312     virtual void STDMETHODCALLTYPE GetMetrics(
   1313         DWRITE_FONT_METRICS1 *metrics) = 0;
   1314 
   1315     virtual void STDMETHODCALLTYPE GetPanose(
   1316         DWRITE_PANOSE *panose) = 0;
   1317 
   1318     virtual HRESULT STDMETHODCALLTYPE GetUnicodeRanges(
   1319         UINT32 max_count,
   1320         DWRITE_UNICODE_RANGE *ranges,
   1321         UINT32 *count) = 0;
   1322 
   1323     virtual WINBOOL STDMETHODCALLTYPE IsMonospacedFont(
   1324         ) = 0;
   1325 
   1326 };
   1327 #ifdef __CRT_UUID_DECL
   1328 __CRT_UUID_DECL(IDWriteFont1, 0xacd16696, 0x8c14, 0x4f5d, 0x87,0x7e, 0xfe,0x3f,0xc1,0xd3,0x27,0x38)
   1329 #endif
   1330 #else
   1331 typedef struct IDWriteFont1Vtbl {
   1332     BEGIN_INTERFACE
   1333 
   1334     /*** IUnknown methods ***/
   1335     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1336         IDWriteFont1 *This,
   1337         REFIID riid,
   1338         void **ppvObject);
   1339 
   1340     ULONG (STDMETHODCALLTYPE *AddRef)(
   1341         IDWriteFont1 *This);
   1342 
   1343     ULONG (STDMETHODCALLTYPE *Release)(
   1344         IDWriteFont1 *This);
   1345 
   1346     /*** IDWriteFont methods ***/
   1347     HRESULT (STDMETHODCALLTYPE *GetFontFamily)(
   1348         IDWriteFont1 *This,
   1349         IDWriteFontFamily **family);
   1350 
   1351     DWRITE_FONT_WEIGHT (STDMETHODCALLTYPE *GetWeight)(
   1352         IDWriteFont1 *This);
   1353 
   1354     DWRITE_FONT_STRETCH (STDMETHODCALLTYPE *GetStretch)(
   1355         IDWriteFont1 *This);
   1356 
   1357     DWRITE_FONT_STYLE (STDMETHODCALLTYPE *GetStyle)(
   1358         IDWriteFont1 *This);
   1359 
   1360     WINBOOL (STDMETHODCALLTYPE *IsSymbolFont)(
   1361         IDWriteFont1 *This);
   1362 
   1363     HRESULT (STDMETHODCALLTYPE *GetFaceNames)(
   1364         IDWriteFont1 *This,
   1365         IDWriteLocalizedStrings **names);
   1366 
   1367     HRESULT (STDMETHODCALLTYPE *GetInformationalStrings)(
   1368         IDWriteFont1 *This,
   1369         DWRITE_INFORMATIONAL_STRING_ID stringid,
   1370         IDWriteLocalizedStrings **strings,
   1371         WINBOOL *exists);
   1372 
   1373     DWRITE_FONT_SIMULATIONS (STDMETHODCALLTYPE *GetSimulations)(
   1374         IDWriteFont1 *This);
   1375 
   1376     void (STDMETHODCALLTYPE *GetMetrics)(
   1377         IDWriteFont1 *This,
   1378         DWRITE_FONT_METRICS *metrics);
   1379 
   1380     HRESULT (STDMETHODCALLTYPE *HasCharacter)(
   1381         IDWriteFont1 *This,
   1382         UINT32 value,
   1383         WINBOOL *exists);
   1384 
   1385     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
   1386         IDWriteFont1 *This,
   1387         IDWriteFontFace **face);
   1388 
   1389     /*** IDWriteFont1 methods ***/
   1390     void (STDMETHODCALLTYPE *IDWriteFont1_GetMetrics)(
   1391         IDWriteFont1 *This,
   1392         DWRITE_FONT_METRICS1 *metrics);
   1393 
   1394     void (STDMETHODCALLTYPE *GetPanose)(
   1395         IDWriteFont1 *This,
   1396         DWRITE_PANOSE *panose);
   1397 
   1398     HRESULT (STDMETHODCALLTYPE *GetUnicodeRanges)(
   1399         IDWriteFont1 *This,
   1400         UINT32 max_count,
   1401         DWRITE_UNICODE_RANGE *ranges,
   1402         UINT32 *count);
   1403 
   1404     WINBOOL (STDMETHODCALLTYPE *IsMonospacedFont)(
   1405         IDWriteFont1 *This);
   1406 
   1407     END_INTERFACE
   1408 } IDWriteFont1Vtbl;
   1409 
   1410 interface IDWriteFont1 {
   1411     CONST_VTBL IDWriteFont1Vtbl* lpVtbl;
   1412 };
   1413 
   1414 #ifdef COBJMACROS
   1415 #ifndef WIDL_C_INLINE_WRAPPERS
   1416 /*** IUnknown methods ***/
   1417 #define IDWriteFont1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1418 #define IDWriteFont1_AddRef(This) (This)->lpVtbl->AddRef(This)
   1419 #define IDWriteFont1_Release(This) (This)->lpVtbl->Release(This)
   1420 /*** IDWriteFont methods ***/
   1421 #define IDWriteFont1_GetFontFamily(This,family) (This)->lpVtbl->GetFontFamily(This,family)
   1422 #define IDWriteFont1_GetWeight(This) (This)->lpVtbl->GetWeight(This)
   1423 #define IDWriteFont1_GetStretch(This) (This)->lpVtbl->GetStretch(This)
   1424 #define IDWriteFont1_GetStyle(This) (This)->lpVtbl->GetStyle(This)
   1425 #define IDWriteFont1_IsSymbolFont(This) (This)->lpVtbl->IsSymbolFont(This)
   1426 #define IDWriteFont1_GetFaceNames(This,names) (This)->lpVtbl->GetFaceNames(This,names)
   1427 #define IDWriteFont1_GetInformationalStrings(This,stringid,strings,exists) (This)->lpVtbl->GetInformationalStrings(This,stringid,strings,exists)
   1428 #define IDWriteFont1_GetSimulations(This) (This)->lpVtbl->GetSimulations(This)
   1429 #define IDWriteFont1_HasCharacter(This,value,exists) (This)->lpVtbl->HasCharacter(This,value,exists)
   1430 #define IDWriteFont1_CreateFontFace(This,face) (This)->lpVtbl->CreateFontFace(This,face)
   1431 /*** IDWriteFont1 methods ***/
   1432 #define IDWriteFont1_GetMetrics(This,metrics) (This)->lpVtbl->IDWriteFont1_GetMetrics(This,metrics)
   1433 #define IDWriteFont1_GetPanose(This,panose) (This)->lpVtbl->GetPanose(This,panose)
   1434 #define IDWriteFont1_GetUnicodeRanges(This,max_count,ranges,count) (This)->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count)
   1435 #define IDWriteFont1_IsMonospacedFont(This) (This)->lpVtbl->IsMonospacedFont(This)
   1436 #else
   1437 /*** IUnknown methods ***/
   1438 static inline HRESULT IDWriteFont1_QueryInterface(IDWriteFont1* This,REFIID riid,void **ppvObject) {
   1439     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1440 }
   1441 static inline ULONG IDWriteFont1_AddRef(IDWriteFont1* This) {
   1442     return This->lpVtbl->AddRef(This);
   1443 }
   1444 static inline ULONG IDWriteFont1_Release(IDWriteFont1* This) {
   1445     return This->lpVtbl->Release(This);
   1446 }
   1447 /*** IDWriteFont methods ***/
   1448 static inline HRESULT IDWriteFont1_GetFontFamily(IDWriteFont1* This,IDWriteFontFamily **family) {
   1449     return This->lpVtbl->GetFontFamily(This,family);
   1450 }
   1451 static inline DWRITE_FONT_WEIGHT IDWriteFont1_GetWeight(IDWriteFont1* This) {
   1452     return This->lpVtbl->GetWeight(This);
   1453 }
   1454 static inline DWRITE_FONT_STRETCH IDWriteFont1_GetStretch(IDWriteFont1* This) {
   1455     return This->lpVtbl->GetStretch(This);
   1456 }
   1457 static inline DWRITE_FONT_STYLE IDWriteFont1_GetStyle(IDWriteFont1* This) {
   1458     return This->lpVtbl->GetStyle(This);
   1459 }
   1460 static inline WINBOOL IDWriteFont1_IsSymbolFont(IDWriteFont1* This) {
   1461     return This->lpVtbl->IsSymbolFont(This);
   1462 }
   1463 static inline HRESULT IDWriteFont1_GetFaceNames(IDWriteFont1* This,IDWriteLocalizedStrings **names) {
   1464     return This->lpVtbl->GetFaceNames(This,names);
   1465 }
   1466 static inline HRESULT IDWriteFont1_GetInformationalStrings(IDWriteFont1* This,DWRITE_INFORMATIONAL_STRING_ID stringid,IDWriteLocalizedStrings **strings,WINBOOL *exists) {
   1467     return This->lpVtbl->GetInformationalStrings(This,stringid,strings,exists);
   1468 }
   1469 static inline DWRITE_FONT_SIMULATIONS IDWriteFont1_GetSimulations(IDWriteFont1* This) {
   1470     return This->lpVtbl->GetSimulations(This);
   1471 }
   1472 static inline HRESULT IDWriteFont1_HasCharacter(IDWriteFont1* This,UINT32 value,WINBOOL *exists) {
   1473     return This->lpVtbl->HasCharacter(This,value,exists);
   1474 }
   1475 static inline HRESULT IDWriteFont1_CreateFontFace(IDWriteFont1* This,IDWriteFontFace **face) {
   1476     return This->lpVtbl->CreateFontFace(This,face);
   1477 }
   1478 /*** IDWriteFont1 methods ***/
   1479 static inline void IDWriteFont1_GetMetrics(IDWriteFont1* This,DWRITE_FONT_METRICS1 *metrics) {
   1480     This->lpVtbl->IDWriteFont1_GetMetrics(This,metrics);
   1481 }
   1482 static inline void IDWriteFont1_GetPanose(IDWriteFont1* This,DWRITE_PANOSE *panose) {
   1483     This->lpVtbl->GetPanose(This,panose);
   1484 }
   1485 static inline HRESULT IDWriteFont1_GetUnicodeRanges(IDWriteFont1* This,UINT32 max_count,DWRITE_UNICODE_RANGE *ranges,UINT32 *count) {
   1486     return This->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count);
   1487 }
   1488 static inline WINBOOL IDWriteFont1_IsMonospacedFont(IDWriteFont1* This) {
   1489     return This->lpVtbl->IsMonospacedFont(This);
   1490 }
   1491 #endif
   1492 #endif
   1493 
   1494 #endif
   1495 
   1496 
   1497 #endif  /* __IDWriteFont1_INTERFACE_DEFINED__ */
   1498 
   1499 /*****************************************************************************
   1500  * IDWriteRenderingParams1 interface
   1501  */
   1502 #ifndef __IDWriteRenderingParams1_INTERFACE_DEFINED__
   1503 #define __IDWriteRenderingParams1_INTERFACE_DEFINED__
   1504 
   1505 DEFINE_GUID(IID_IDWriteRenderingParams1, 0x94413cf4, 0xa6fc, 0x4248, 0x8b,0x50, 0x66,0x74,0x34,0x8f,0xca,0xd3);
   1506 #if defined(__cplusplus) && !defined(CINTERFACE)
   1507 MIDL_INTERFACE("94413cf4-a6fc-4248-8b50-6674348fcad3")
   1508 IDWriteRenderingParams1 : public IDWriteRenderingParams
   1509 {
   1510     virtual FLOAT STDMETHODCALLTYPE GetGrayscaleEnhancedContrast(
   1511         ) = 0;
   1512 
   1513 };
   1514 #ifdef __CRT_UUID_DECL
   1515 __CRT_UUID_DECL(IDWriteRenderingParams1, 0x94413cf4, 0xa6fc, 0x4248, 0x8b,0x50, 0x66,0x74,0x34,0x8f,0xca,0xd3)
   1516 #endif
   1517 #else
   1518 typedef struct IDWriteRenderingParams1Vtbl {
   1519     BEGIN_INTERFACE
   1520 
   1521     /*** IUnknown methods ***/
   1522     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1523         IDWriteRenderingParams1 *This,
   1524         REFIID riid,
   1525         void **ppvObject);
   1526 
   1527     ULONG (STDMETHODCALLTYPE *AddRef)(
   1528         IDWriteRenderingParams1 *This);
   1529 
   1530     ULONG (STDMETHODCALLTYPE *Release)(
   1531         IDWriteRenderingParams1 *This);
   1532 
   1533     /*** IDWriteRenderingParams methods ***/
   1534     FLOAT (STDMETHODCALLTYPE *GetGamma)(
   1535         IDWriteRenderingParams1 *This);
   1536 
   1537     FLOAT (STDMETHODCALLTYPE *GetEnhancedContrast)(
   1538         IDWriteRenderingParams1 *This);
   1539 
   1540     FLOAT (STDMETHODCALLTYPE *GetClearTypeLevel)(
   1541         IDWriteRenderingParams1 *This);
   1542 
   1543     DWRITE_PIXEL_GEOMETRY (STDMETHODCALLTYPE *GetPixelGeometry)(
   1544         IDWriteRenderingParams1 *This);
   1545 
   1546     DWRITE_RENDERING_MODE (STDMETHODCALLTYPE *GetRenderingMode)(
   1547         IDWriteRenderingParams1 *This);
   1548 
   1549     /*** IDWriteRenderingParams1 methods ***/
   1550     FLOAT (STDMETHODCALLTYPE *GetGrayscaleEnhancedContrast)(
   1551         IDWriteRenderingParams1 *This);
   1552 
   1553     END_INTERFACE
   1554 } IDWriteRenderingParams1Vtbl;
   1555 
   1556 interface IDWriteRenderingParams1 {
   1557     CONST_VTBL IDWriteRenderingParams1Vtbl* lpVtbl;
   1558 };
   1559 
   1560 #ifdef COBJMACROS
   1561 #ifndef WIDL_C_INLINE_WRAPPERS
   1562 /*** IUnknown methods ***/
   1563 #define IDWriteRenderingParams1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1564 #define IDWriteRenderingParams1_AddRef(This) (This)->lpVtbl->AddRef(This)
   1565 #define IDWriteRenderingParams1_Release(This) (This)->lpVtbl->Release(This)
   1566 /*** IDWriteRenderingParams methods ***/
   1567 #define IDWriteRenderingParams1_GetGamma(This) (This)->lpVtbl->GetGamma(This)
   1568 #define IDWriteRenderingParams1_GetEnhancedContrast(This) (This)->lpVtbl->GetEnhancedContrast(This)
   1569 #define IDWriteRenderingParams1_GetClearTypeLevel(This) (This)->lpVtbl->GetClearTypeLevel(This)
   1570 #define IDWriteRenderingParams1_GetPixelGeometry(This) (This)->lpVtbl->GetPixelGeometry(This)
   1571 #define IDWriteRenderingParams1_GetRenderingMode(This) (This)->lpVtbl->GetRenderingMode(This)
   1572 /*** IDWriteRenderingParams1 methods ***/
   1573 #define IDWriteRenderingParams1_GetGrayscaleEnhancedContrast(This) (This)->lpVtbl->GetGrayscaleEnhancedContrast(This)
   1574 #else
   1575 /*** IUnknown methods ***/
   1576 static inline HRESULT IDWriteRenderingParams1_QueryInterface(IDWriteRenderingParams1* This,REFIID riid,void **ppvObject) {
   1577     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1578 }
   1579 static inline ULONG IDWriteRenderingParams1_AddRef(IDWriteRenderingParams1* This) {
   1580     return This->lpVtbl->AddRef(This);
   1581 }
   1582 static inline ULONG IDWriteRenderingParams1_Release(IDWriteRenderingParams1* This) {
   1583     return This->lpVtbl->Release(This);
   1584 }
   1585 /*** IDWriteRenderingParams methods ***/
   1586 static inline FLOAT IDWriteRenderingParams1_GetGamma(IDWriteRenderingParams1* This) {
   1587     return This->lpVtbl->GetGamma(This);
   1588 }
   1589 static inline FLOAT IDWriteRenderingParams1_GetEnhancedContrast(IDWriteRenderingParams1* This) {
   1590     return This->lpVtbl->GetEnhancedContrast(This);
   1591 }
   1592 static inline FLOAT IDWriteRenderingParams1_GetClearTypeLevel(IDWriteRenderingParams1* This) {
   1593     return This->lpVtbl->GetClearTypeLevel(This);
   1594 }
   1595 static inline DWRITE_PIXEL_GEOMETRY IDWriteRenderingParams1_GetPixelGeometry(IDWriteRenderingParams1* This) {
   1596     return This->lpVtbl->GetPixelGeometry(This);
   1597 }
   1598 static inline DWRITE_RENDERING_MODE IDWriteRenderingParams1_GetRenderingMode(IDWriteRenderingParams1* This) {
   1599     return This->lpVtbl->GetRenderingMode(This);
   1600 }
   1601 /*** IDWriteRenderingParams1 methods ***/
   1602 static inline FLOAT IDWriteRenderingParams1_GetGrayscaleEnhancedContrast(IDWriteRenderingParams1* This) {
   1603     return This->lpVtbl->GetGrayscaleEnhancedContrast(This);
   1604 }
   1605 #endif
   1606 #endif
   1607 
   1608 #endif
   1609 
   1610 
   1611 #endif  /* __IDWriteRenderingParams1_INTERFACE_DEFINED__ */
   1612 
   1613 /*****************************************************************************
   1614  * IDWriteTextAnalyzer1 interface
   1615  */
   1616 #ifndef __IDWriteTextAnalyzer1_INTERFACE_DEFINED__
   1617 #define __IDWriteTextAnalyzer1_INTERFACE_DEFINED__
   1618 
   1619 DEFINE_GUID(IID_IDWriteTextAnalyzer1, 0x80dad800, 0xe21f, 0x4e83, 0x96,0xce, 0xbf,0xcc,0xe5,0x00,0xdb,0x7c);
   1620 #if defined(__cplusplus) && !defined(CINTERFACE)
   1621 MIDL_INTERFACE("80dad800-e21f-4e83-96ce-bfcce500db7c")
   1622 IDWriteTextAnalyzer1 : public IDWriteTextAnalyzer
   1623 {
   1624     virtual HRESULT STDMETHODCALLTYPE ApplyCharacterSpacing(
   1625         FLOAT leading_spacing,
   1626         FLOAT trailing_spacing,
   1627         FLOAT min_advance_width,
   1628         UINT32 len,
   1629         UINT32 glyph_count,
   1630         const UINT16 *clustermap,
   1631         const FLOAT *advances,
   1632         const DWRITE_GLYPH_OFFSET *offsets,
   1633         const DWRITE_SHAPING_GLYPH_PROPERTIES *props,
   1634         FLOAT *modified_advances,
   1635         DWRITE_GLYPH_OFFSET *modified_offsets) = 0;
   1636 
   1637     virtual HRESULT STDMETHODCALLTYPE GetBaseline(
   1638         IDWriteFontFace *face,
   1639         DWRITE_BASELINE baseline,
   1640         WINBOOL vertical,
   1641         WINBOOL is_simulation_allowed,
   1642         DWRITE_SCRIPT_ANALYSIS sa,
   1643         const WCHAR *localeName,
   1644         INT32 *baseline_coord,
   1645         WINBOOL *exists) = 0;
   1646 
   1647     virtual HRESULT STDMETHODCALLTYPE AnalyzeVerticalGlyphOrientation(
   1648         IDWriteTextAnalysisSource1 *source,
   1649         UINT32 text_pos,
   1650         UINT32 len,
   1651         IDWriteTextAnalysisSink1 *sink) = 0;
   1652 
   1653     virtual HRESULT STDMETHODCALLTYPE GetGlyphOrientationTransform(
   1654         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
   1655         WINBOOL is_sideways,
   1656         DWRITE_MATRIX *transform) = 0;
   1657 
   1658     virtual HRESULT STDMETHODCALLTYPE GetScriptProperties(
   1659         DWRITE_SCRIPT_ANALYSIS sa,
   1660         DWRITE_SCRIPT_PROPERTIES *props) = 0;
   1661 
   1662     virtual HRESULT STDMETHODCALLTYPE GetTextComplexity(
   1663         const WCHAR *text,
   1664         UINT32 len,
   1665         IDWriteFontFace *face,
   1666         WINBOOL *is_simple,
   1667         UINT32 *len_read,
   1668         UINT16 *indices) = 0;
   1669 
   1670     virtual HRESULT STDMETHODCALLTYPE GetJustificationOpportunities(
   1671         IDWriteFontFace *face,
   1672         FLOAT font_em_size,
   1673         DWRITE_SCRIPT_ANALYSIS sa,
   1674         UINT32 length,
   1675         UINT32 glyph_count,
   1676         const WCHAR *text,
   1677         const UINT16 *clustermap,
   1678         const DWRITE_SHAPING_GLYPH_PROPERTIES *prop,
   1679         DWRITE_JUSTIFICATION_OPPORTUNITY *jo) = 0;
   1680 
   1681     virtual HRESULT STDMETHODCALLTYPE JustifyGlyphAdvances(
   1682         FLOAT width,
   1683         UINT32 glyph_count,
   1684         const DWRITE_JUSTIFICATION_OPPORTUNITY *jo,
   1685         const FLOAT *advances,
   1686         const DWRITE_GLYPH_OFFSET *offsets,
   1687         FLOAT *justifiedadvances,
   1688         DWRITE_GLYPH_OFFSET *justifiedoffsets) = 0;
   1689 
   1690     virtual HRESULT STDMETHODCALLTYPE GetJustifiedGlyphs(
   1691         IDWriteFontFace *face,
   1692         FLOAT font_em_size,
   1693         DWRITE_SCRIPT_ANALYSIS sa,
   1694         UINT32 length,
   1695         UINT32 glyph_count,
   1696         UINT32 max_glyphcount,
   1697         const UINT16 *clustermap,
   1698         const UINT16 *indices,
   1699         const FLOAT *advances,
   1700         const FLOAT *justifiedadvances,
   1701         const DWRITE_GLYPH_OFFSET *justifiedoffsets,
   1702         const DWRITE_SHAPING_GLYPH_PROPERTIES *prop,
   1703         UINT32 *actual_count,
   1704         UINT16 *modified_clustermap,
   1705         UINT16 *modified_indices,
   1706         FLOAT *modified_advances,
   1707         DWRITE_GLYPH_OFFSET *modified_offsets) = 0;
   1708 
   1709 };
   1710 #ifdef __CRT_UUID_DECL
   1711 __CRT_UUID_DECL(IDWriteTextAnalyzer1, 0x80dad800, 0xe21f, 0x4e83, 0x96,0xce, 0xbf,0xcc,0xe5,0x00,0xdb,0x7c)
   1712 #endif
   1713 #else
   1714 typedef struct IDWriteTextAnalyzer1Vtbl {
   1715     BEGIN_INTERFACE
   1716 
   1717     /*** IUnknown methods ***/
   1718     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1719         IDWriteTextAnalyzer1 *This,
   1720         REFIID riid,
   1721         void **ppvObject);
   1722 
   1723     ULONG (STDMETHODCALLTYPE *AddRef)(
   1724         IDWriteTextAnalyzer1 *This);
   1725 
   1726     ULONG (STDMETHODCALLTYPE *Release)(
   1727         IDWriteTextAnalyzer1 *This);
   1728 
   1729     /*** IDWriteTextAnalyzer methods ***/
   1730     HRESULT (STDMETHODCALLTYPE *AnalyzeScript)(
   1731         IDWriteTextAnalyzer1 *This,
   1732         IDWriteTextAnalysisSource *source,
   1733         UINT32 position,
   1734         UINT32 length,
   1735         IDWriteTextAnalysisSink *sink);
   1736 
   1737     HRESULT (STDMETHODCALLTYPE *AnalyzeBidi)(
   1738         IDWriteTextAnalyzer1 *This,
   1739         IDWriteTextAnalysisSource *source,
   1740         UINT32 position,
   1741         UINT32 length,
   1742         IDWriteTextAnalysisSink *sink);
   1743 
   1744     HRESULT (STDMETHODCALLTYPE *AnalyzeNumberSubstitution)(
   1745         IDWriteTextAnalyzer1 *This,
   1746         IDWriteTextAnalysisSource *source,
   1747         UINT32 position,
   1748         UINT32 length,
   1749         IDWriteTextAnalysisSink *sink);
   1750 
   1751     HRESULT (STDMETHODCALLTYPE *AnalyzeLineBreakpoints)(
   1752         IDWriteTextAnalyzer1 *This,
   1753         IDWriteTextAnalysisSource *source,
   1754         UINT32 position,
   1755         UINT32 length,
   1756         IDWriteTextAnalysisSink *sink);
   1757 
   1758     HRESULT (STDMETHODCALLTYPE *GetGlyphs)(
   1759         IDWriteTextAnalyzer1 *This,
   1760         const WCHAR *text,
   1761         UINT32 length,
   1762         IDWriteFontFace *font_face,
   1763         WINBOOL is_sideways,
   1764         WINBOOL is_rtl,
   1765         const DWRITE_SCRIPT_ANALYSIS *analysis,
   1766         const WCHAR *locale,
   1767         IDWriteNumberSubstitution *substitution,
   1768         const DWRITE_TYPOGRAPHIC_FEATURES **features,
   1769         const UINT32 *feature_range_len,
   1770         UINT32 feature_ranges,
   1771         UINT32 max_glyph_count,
   1772         UINT16 *clustermap,
   1773         DWRITE_SHAPING_TEXT_PROPERTIES *text_props,
   1774         UINT16 *glyph_indices,
   1775         DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,
   1776         UINT32 *actual_glyph_count);
   1777 
   1778     HRESULT (STDMETHODCALLTYPE *GetGlyphPlacements)(
   1779         IDWriteTextAnalyzer1 *This,
   1780         const WCHAR *text,
   1781         const UINT16 *clustermap,
   1782         DWRITE_SHAPING_TEXT_PROPERTIES *props,
   1783         UINT32 text_len,
   1784         const UINT16 *glyph_indices,
   1785         const DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,
   1786         UINT32 glyph_count,
   1787         IDWriteFontFace *font_face,
   1788         FLOAT fontEmSize,
   1789         WINBOOL is_sideways,
   1790         WINBOOL is_rtl,
   1791         const DWRITE_SCRIPT_ANALYSIS *analysis,
   1792         const WCHAR *locale,
   1793         const DWRITE_TYPOGRAPHIC_FEATURES **features,
   1794         const UINT32 *feature_range_len,
   1795         UINT32 feature_ranges,
   1796         FLOAT *glyph_advances,
   1797         DWRITE_GLYPH_OFFSET *glyph_offsets);
   1798 
   1799     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleGlyphPlacements)(
   1800         IDWriteTextAnalyzer1 *This,
   1801         const WCHAR *text,
   1802         const UINT16 *clustermap,
   1803         DWRITE_SHAPING_TEXT_PROPERTIES *props,
   1804         UINT32 text_len,
   1805         const UINT16 *glyph_indices,
   1806         const DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,
   1807         UINT32 glyph_count,
   1808         IDWriteFontFace *font_face,
   1809         FLOAT fontEmSize,
   1810         FLOAT pixels_per_dip,
   1811         const DWRITE_MATRIX *transform,
   1812         WINBOOL use_gdi_natural,
   1813         WINBOOL is_sideways,
   1814         WINBOOL is_rtl,
   1815         const DWRITE_SCRIPT_ANALYSIS *analysis,
   1816         const WCHAR *locale,
   1817         const DWRITE_TYPOGRAPHIC_FEATURES **features,
   1818         const UINT32 *feature_range_lengths,
   1819         UINT32 feature_ranges,
   1820         FLOAT *glyph_advances,
   1821         DWRITE_GLYPH_OFFSET *glyph_offsets);
   1822 
   1823     /*** IDWriteTextAnalyzer1 methods ***/
   1824     HRESULT (STDMETHODCALLTYPE *ApplyCharacterSpacing)(
   1825         IDWriteTextAnalyzer1 *This,
   1826         FLOAT leading_spacing,
   1827         FLOAT trailing_spacing,
   1828         FLOAT min_advance_width,
   1829         UINT32 len,
   1830         UINT32 glyph_count,
   1831         const UINT16 *clustermap,
   1832         const FLOAT *advances,
   1833         const DWRITE_GLYPH_OFFSET *offsets,
   1834         const DWRITE_SHAPING_GLYPH_PROPERTIES *props,
   1835         FLOAT *modified_advances,
   1836         DWRITE_GLYPH_OFFSET *modified_offsets);
   1837 
   1838     HRESULT (STDMETHODCALLTYPE *GetBaseline)(
   1839         IDWriteTextAnalyzer1 *This,
   1840         IDWriteFontFace *face,
   1841         DWRITE_BASELINE baseline,
   1842         WINBOOL vertical,
   1843         WINBOOL is_simulation_allowed,
   1844         DWRITE_SCRIPT_ANALYSIS sa,
   1845         const WCHAR *localeName,
   1846         INT32 *baseline_coord,
   1847         WINBOOL *exists);
   1848 
   1849     HRESULT (STDMETHODCALLTYPE *AnalyzeVerticalGlyphOrientation)(
   1850         IDWriteTextAnalyzer1 *This,
   1851         IDWriteTextAnalysisSource1 *source,
   1852         UINT32 text_pos,
   1853         UINT32 len,
   1854         IDWriteTextAnalysisSink1 *sink);
   1855 
   1856     HRESULT (STDMETHODCALLTYPE *GetGlyphOrientationTransform)(
   1857         IDWriteTextAnalyzer1 *This,
   1858         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
   1859         WINBOOL is_sideways,
   1860         DWRITE_MATRIX *transform);
   1861 
   1862     HRESULT (STDMETHODCALLTYPE *GetScriptProperties)(
   1863         IDWriteTextAnalyzer1 *This,
   1864         DWRITE_SCRIPT_ANALYSIS sa,
   1865         DWRITE_SCRIPT_PROPERTIES *props);
   1866 
   1867     HRESULT (STDMETHODCALLTYPE *GetTextComplexity)(
   1868         IDWriteTextAnalyzer1 *This,
   1869         const WCHAR *text,
   1870         UINT32 len,
   1871         IDWriteFontFace *face,
   1872         WINBOOL *is_simple,
   1873         UINT32 *len_read,
   1874         UINT16 *indices);
   1875 
   1876     HRESULT (STDMETHODCALLTYPE *GetJustificationOpportunities)(
   1877         IDWriteTextAnalyzer1 *This,
   1878         IDWriteFontFace *face,
   1879         FLOAT font_em_size,
   1880         DWRITE_SCRIPT_ANALYSIS sa,
   1881         UINT32 length,
   1882         UINT32 glyph_count,
   1883         const WCHAR *text,
   1884         const UINT16 *clustermap,
   1885         const DWRITE_SHAPING_GLYPH_PROPERTIES *prop,
   1886         DWRITE_JUSTIFICATION_OPPORTUNITY *jo);
   1887 
   1888     HRESULT (STDMETHODCALLTYPE *JustifyGlyphAdvances)(
   1889         IDWriteTextAnalyzer1 *This,
   1890         FLOAT width,
   1891         UINT32 glyph_count,
   1892         const DWRITE_JUSTIFICATION_OPPORTUNITY *jo,
   1893         const FLOAT *advances,
   1894         const DWRITE_GLYPH_OFFSET *offsets,
   1895         FLOAT *justifiedadvances,
   1896         DWRITE_GLYPH_OFFSET *justifiedoffsets);
   1897 
   1898     HRESULT (STDMETHODCALLTYPE *GetJustifiedGlyphs)(
   1899         IDWriteTextAnalyzer1 *This,
   1900         IDWriteFontFace *face,
   1901         FLOAT font_em_size,
   1902         DWRITE_SCRIPT_ANALYSIS sa,
   1903         UINT32 length,
   1904         UINT32 glyph_count,
   1905         UINT32 max_glyphcount,
   1906         const UINT16 *clustermap,
   1907         const UINT16 *indices,
   1908         const FLOAT *advances,
   1909         const FLOAT *justifiedadvances,
   1910         const DWRITE_GLYPH_OFFSET *justifiedoffsets,
   1911         const DWRITE_SHAPING_GLYPH_PROPERTIES *prop,
   1912         UINT32 *actual_count,
   1913         UINT16 *modified_clustermap,
   1914         UINT16 *modified_indices,
   1915         FLOAT *modified_advances,
   1916         DWRITE_GLYPH_OFFSET *modified_offsets);
   1917 
   1918     END_INTERFACE
   1919 } IDWriteTextAnalyzer1Vtbl;
   1920 
   1921 interface IDWriteTextAnalyzer1 {
   1922     CONST_VTBL IDWriteTextAnalyzer1Vtbl* lpVtbl;
   1923 };
   1924 
   1925 #ifdef COBJMACROS
   1926 #ifndef WIDL_C_INLINE_WRAPPERS
   1927 /*** IUnknown methods ***/
   1928 #define IDWriteTextAnalyzer1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1929 #define IDWriteTextAnalyzer1_AddRef(This) (This)->lpVtbl->AddRef(This)
   1930 #define IDWriteTextAnalyzer1_Release(This) (This)->lpVtbl->Release(This)
   1931 /*** IDWriteTextAnalyzer methods ***/
   1932 #define IDWriteTextAnalyzer1_AnalyzeScript(This,source,position,length,sink) (This)->lpVtbl->AnalyzeScript(This,source,position,length,sink)
   1933 #define IDWriteTextAnalyzer1_AnalyzeBidi(This,source,position,length,sink) (This)->lpVtbl->AnalyzeBidi(This,source,position,length,sink)
   1934 #define IDWriteTextAnalyzer1_AnalyzeNumberSubstitution(This,source,position,length,sink) (This)->lpVtbl->AnalyzeNumberSubstitution(This,source,position,length,sink)
   1935 #define IDWriteTextAnalyzer1_AnalyzeLineBreakpoints(This,source,position,length,sink) (This)->lpVtbl->AnalyzeLineBreakpoints(This,source,position,length,sink)
   1936 #define IDWriteTextAnalyzer1_GetGlyphs(This,text,length,font_face,is_sideways,is_rtl,analysis,locale,substitution,features,feature_range_len,feature_ranges,max_glyph_count,clustermap,text_props,glyph_indices,glyph_props,actual_glyph_count) (This)->lpVtbl->GetGlyphs(This,text,length,font_face,is_sideways,is_rtl,analysis,locale,substitution,features,feature_range_len,feature_ranges,max_glyph_count,clustermap,text_props,glyph_indices,glyph_props,actual_glyph_count)
   1937 #define IDWriteTextAnalyzer1_GetGlyphPlacements(This,text,clustermap,props,text_len,glyph_indices,glyph_props,glyph_count,font_face,fontEmSize,is_sideways,is_rtl,analysis,locale,features,feature_range_len,feature_ranges,glyph_advances,glyph_offsets) (This)->lpVtbl->GetGlyphPlacements(This,text,clustermap,props,text_len,glyph_indices,glyph_props,glyph_count,font_face,fontEmSize,is_sideways,is_rtl,analysis,locale,features,feature_range_len,feature_ranges,glyph_advances,glyph_offsets)
   1938 #define IDWriteTextAnalyzer1_GetGdiCompatibleGlyphPlacements(This,text,clustermap,props,text_len,glyph_indices,glyph_props,glyph_count,font_face,fontEmSize,pixels_per_dip,transform,use_gdi_natural,is_sideways,is_rtl,analysis,locale,features,feature_range_lengths,feature_ranges,glyph_advances,glyph_offsets) (This)->lpVtbl->GetGdiCompatibleGlyphPlacements(This,text,clustermap,props,text_len,glyph_indices,glyph_props,glyph_count,font_face,fontEmSize,pixels_per_dip,transform,use_gdi_natural,is_sideways,is_rtl,analysis,locale,features,feature_range_lengths,feature_ranges,glyph_advances,glyph_offsets)
   1939 /*** IDWriteTextAnalyzer1 methods ***/
   1940 #define IDWriteTextAnalyzer1_ApplyCharacterSpacing(This,leading_spacing,trailing_spacing,min_advance_width,len,glyph_count,clustermap,advances,offsets,props,modified_advances,modified_offsets) (This)->lpVtbl->ApplyCharacterSpacing(This,leading_spacing,trailing_spacing,min_advance_width,len,glyph_count,clustermap,advances,offsets,props,modified_advances,modified_offsets)
   1941 #define IDWriteTextAnalyzer1_GetBaseline(This,face,baseline,vertical,is_simulation_allowed,sa,localeName,baseline_coord,exists) (This)->lpVtbl->GetBaseline(This,face,baseline,vertical,is_simulation_allowed,sa,localeName,baseline_coord,exists)
   1942 #define IDWriteTextAnalyzer1_AnalyzeVerticalGlyphOrientation(This,source,text_pos,len,sink) (This)->lpVtbl->AnalyzeVerticalGlyphOrientation(This,source,text_pos,len,sink)
   1943 #define IDWriteTextAnalyzer1_GetGlyphOrientationTransform(This,angle,is_sideways,transform) (This)->lpVtbl->GetGlyphOrientationTransform(This,angle,is_sideways,transform)
   1944 #define IDWriteTextAnalyzer1_GetScriptProperties(This,sa,props) (This)->lpVtbl->GetScriptProperties(This,sa,props)
   1945 #define IDWriteTextAnalyzer1_GetTextComplexity(This,text,len,face,is_simple,len_read,indices) (This)->lpVtbl->GetTextComplexity(This,text,len,face,is_simple,len_read,indices)
   1946 #define IDWriteTextAnalyzer1_GetJustificationOpportunities(This,face,font_em_size,sa,length,glyph_count,text,clustermap,prop,jo) (This)->lpVtbl->GetJustificationOpportunities(This,face,font_em_size,sa,length,glyph_count,text,clustermap,prop,jo)
   1947 #define IDWriteTextAnalyzer1_JustifyGlyphAdvances(This,width,glyph_count,jo,advances,offsets,justifiedadvances,justifiedoffsets) (This)->lpVtbl->JustifyGlyphAdvances(This,width,glyph_count,jo,advances,offsets,justifiedadvances,justifiedoffsets)
   1948 #define IDWriteTextAnalyzer1_GetJustifiedGlyphs(This,face,font_em_size,sa,length,glyph_count,max_glyphcount,clustermap,indices,advances,justifiedadvances,justifiedoffsets,prop,actual_count,modified_clustermap,modified_indices,modified_advances,modified_offsets) (This)->lpVtbl->GetJustifiedGlyphs(This,face,font_em_size,sa,length,glyph_count,max_glyphcount,clustermap,indices,advances,justifiedadvances,justifiedoffsets,prop,actual_count,modified_clustermap,modified_indices,modified_advances,modified_offsets)
   1949 #else
   1950 /*** IUnknown methods ***/
   1951 static inline HRESULT IDWriteTextAnalyzer1_QueryInterface(IDWriteTextAnalyzer1* This,REFIID riid,void **ppvObject) {
   1952     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1953 }
   1954 static inline ULONG IDWriteTextAnalyzer1_AddRef(IDWriteTextAnalyzer1* This) {
   1955     return This->lpVtbl->AddRef(This);
   1956 }
   1957 static inline ULONG IDWriteTextAnalyzer1_Release(IDWriteTextAnalyzer1* This) {
   1958     return This->lpVtbl->Release(This);
   1959 }
   1960 /*** IDWriteTextAnalyzer methods ***/
   1961 static inline HRESULT IDWriteTextAnalyzer1_AnalyzeScript(IDWriteTextAnalyzer1* This,IDWriteTextAnalysisSource *source,UINT32 position,UINT32 length,IDWriteTextAnalysisSink *sink) {
   1962     return This->lpVtbl->AnalyzeScript(This,source,position,length,sink);
   1963 }
   1964 static inline HRESULT IDWriteTextAnalyzer1_AnalyzeBidi(IDWriteTextAnalyzer1* This,IDWriteTextAnalysisSource *source,UINT32 position,UINT32 length,IDWriteTextAnalysisSink *sink) {
   1965     return This->lpVtbl->AnalyzeBidi(This,source,position,length,sink);
   1966 }
   1967 static inline HRESULT IDWriteTextAnalyzer1_AnalyzeNumberSubstitution(IDWriteTextAnalyzer1* This,IDWriteTextAnalysisSource *source,UINT32 position,UINT32 length,IDWriteTextAnalysisSink *sink) {
   1968     return This->lpVtbl->AnalyzeNumberSubstitution(This,source,position,length,sink);
   1969 }
   1970 static inline HRESULT IDWriteTextAnalyzer1_AnalyzeLineBreakpoints(IDWriteTextAnalyzer1* This,IDWriteTextAnalysisSource *source,UINT32 position,UINT32 length,IDWriteTextAnalysisSink *sink) {
   1971     return This->lpVtbl->AnalyzeLineBreakpoints(This,source,position,length,sink);
   1972 }
   1973 static inline HRESULT IDWriteTextAnalyzer1_GetGlyphs(IDWriteTextAnalyzer1* This,const WCHAR *text,UINT32 length,IDWriteFontFace *font_face,WINBOOL is_sideways,WINBOOL is_rtl,const DWRITE_SCRIPT_ANALYSIS *analysis,const WCHAR *locale,IDWriteNumberSubstitution *substitution,const DWRITE_TYPOGRAPHIC_FEATURES **features,const UINT32 *feature_range_len,UINT32 feature_ranges,UINT32 max_glyph_count,UINT16 *clustermap,DWRITE_SHAPING_TEXT_PROPERTIES *text_props,UINT16 *glyph_indices,DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,UINT32 *actual_glyph_count) {
   1974     return This->lpVtbl->GetGlyphs(This,text,length,font_face,is_sideways,is_rtl,analysis,locale,substitution,features,feature_range_len,feature_ranges,max_glyph_count,clustermap,text_props,glyph_indices,glyph_props,actual_glyph_count);
   1975 }
   1976 static inline HRESULT IDWriteTextAnalyzer1_GetGlyphPlacements(IDWriteTextAnalyzer1* This,const WCHAR *text,const UINT16 *clustermap,DWRITE_SHAPING_TEXT_PROPERTIES *props,UINT32 text_len,const UINT16 *glyph_indices,const DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,UINT32 glyph_count,IDWriteFontFace *font_face,FLOAT fontEmSize,WINBOOL is_sideways,WINBOOL is_rtl,const DWRITE_SCRIPT_ANALYSIS *analysis,const WCHAR *locale,const DWRITE_TYPOGRAPHIC_FEATURES **features,const UINT32 *feature_range_len,UINT32 feature_ranges,FLOAT *glyph_advances,DWRITE_GLYPH_OFFSET *glyph_offsets) {
   1977     return This->lpVtbl->GetGlyphPlacements(This,text,clustermap,props,text_len,glyph_indices,glyph_props,glyph_count,font_face,fontEmSize,is_sideways,is_rtl,analysis,locale,features,feature_range_len,feature_ranges,glyph_advances,glyph_offsets);
   1978 }
   1979 static inline HRESULT IDWriteTextAnalyzer1_GetGdiCompatibleGlyphPlacements(IDWriteTextAnalyzer1* This,const WCHAR *text,const UINT16 *clustermap,DWRITE_SHAPING_TEXT_PROPERTIES *props,UINT32 text_len,const UINT16 *glyph_indices,const DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,UINT32 glyph_count,IDWriteFontFace *font_face,FLOAT fontEmSize,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,WINBOOL use_gdi_natural,WINBOOL is_sideways,WINBOOL is_rtl,const DWRITE_SCRIPT_ANALYSIS *analysis,const WCHAR *locale,const DWRITE_TYPOGRAPHIC_FEATURES **features,const UINT32 *feature_range_lengths,UINT32 feature_ranges,FLOAT *glyph_advances,DWRITE_GLYPH_OFFSET *glyph_offsets) {
   1980     return This->lpVtbl->GetGdiCompatibleGlyphPlacements(This,text,clustermap,props,text_len,glyph_indices,glyph_props,glyph_count,font_face,fontEmSize,pixels_per_dip,transform,use_gdi_natural,is_sideways,is_rtl,analysis,locale,features,feature_range_lengths,feature_ranges,glyph_advances,glyph_offsets);
   1981 }
   1982 /*** IDWriteTextAnalyzer1 methods ***/
   1983 static inline HRESULT IDWriteTextAnalyzer1_ApplyCharacterSpacing(IDWriteTextAnalyzer1* This,FLOAT leading_spacing,FLOAT trailing_spacing,FLOAT min_advance_width,UINT32 len,UINT32 glyph_count,const UINT16 *clustermap,const FLOAT *advances,const DWRITE_GLYPH_OFFSET *offsets,const DWRITE_SHAPING_GLYPH_PROPERTIES *props,FLOAT *modified_advances,DWRITE_GLYPH_OFFSET *modified_offsets) {
   1984     return This->lpVtbl->ApplyCharacterSpacing(This,leading_spacing,trailing_spacing,min_advance_width,len,glyph_count,clustermap,advances,offsets,props,modified_advances,modified_offsets);
   1985 }
   1986 static inline HRESULT IDWriteTextAnalyzer1_GetBaseline(IDWriteTextAnalyzer1* This,IDWriteFontFace *face,DWRITE_BASELINE baseline,WINBOOL vertical,WINBOOL is_simulation_allowed,DWRITE_SCRIPT_ANALYSIS sa,const WCHAR *localeName,INT32 *baseline_coord,WINBOOL *exists) {
   1987     return This->lpVtbl->GetBaseline(This,face,baseline,vertical,is_simulation_allowed,sa,localeName,baseline_coord,exists);
   1988 }
   1989 static inline HRESULT IDWriteTextAnalyzer1_AnalyzeVerticalGlyphOrientation(IDWriteTextAnalyzer1* This,IDWriteTextAnalysisSource1 *source,UINT32 text_pos,UINT32 len,IDWriteTextAnalysisSink1 *sink) {
   1990     return This->lpVtbl->AnalyzeVerticalGlyphOrientation(This,source,text_pos,len,sink);
   1991 }
   1992 static inline HRESULT IDWriteTextAnalyzer1_GetGlyphOrientationTransform(IDWriteTextAnalyzer1* This,DWRITE_GLYPH_ORIENTATION_ANGLE angle,WINBOOL is_sideways,DWRITE_MATRIX *transform) {
   1993     return This->lpVtbl->GetGlyphOrientationTransform(This,angle,is_sideways,transform);
   1994 }
   1995 static inline HRESULT IDWriteTextAnalyzer1_GetScriptProperties(IDWriteTextAnalyzer1* This,DWRITE_SCRIPT_ANALYSIS sa,DWRITE_SCRIPT_PROPERTIES *props) {
   1996     return This->lpVtbl->GetScriptProperties(This,sa,props);
   1997 }
   1998 static inline HRESULT IDWriteTextAnalyzer1_GetTextComplexity(IDWriteTextAnalyzer1* This,const WCHAR *text,UINT32 len,IDWriteFontFace *face,WINBOOL *is_simple,UINT32 *len_read,UINT16 *indices) {
   1999     return This->lpVtbl->GetTextComplexity(This,text,len,face,is_simple,len_read,indices);
   2000 }
   2001 static inline HRESULT IDWriteTextAnalyzer1_GetJustificationOpportunities(IDWriteTextAnalyzer1* This,IDWriteFontFace *face,FLOAT font_em_size,DWRITE_SCRIPT_ANALYSIS sa,UINT32 length,UINT32 glyph_count,const WCHAR *text,const UINT16 *clustermap,const DWRITE_SHAPING_GLYPH_PROPERTIES *prop,DWRITE_JUSTIFICATION_OPPORTUNITY *jo) {
   2002     return This->lpVtbl->GetJustificationOpportunities(This,face,font_em_size,sa,length,glyph_count,text,clustermap,prop,jo);
   2003 }
   2004 static inline HRESULT IDWriteTextAnalyzer1_JustifyGlyphAdvances(IDWriteTextAnalyzer1* This,FLOAT width,UINT32 glyph_count,const DWRITE_JUSTIFICATION_OPPORTUNITY *jo,const FLOAT *advances,const DWRITE_GLYPH_OFFSET *offsets,FLOAT *justifiedadvances,DWRITE_GLYPH_OFFSET *justifiedoffsets) {
   2005     return This->lpVtbl->JustifyGlyphAdvances(This,width,glyph_count,jo,advances,offsets,justifiedadvances,justifiedoffsets);
   2006 }
   2007 static inline HRESULT IDWriteTextAnalyzer1_GetJustifiedGlyphs(IDWriteTextAnalyzer1* This,IDWriteFontFace *face,FLOAT font_em_size,DWRITE_SCRIPT_ANALYSIS sa,UINT32 length,UINT32 glyph_count,UINT32 max_glyphcount,const UINT16 *clustermap,const UINT16 *indices,const FLOAT *advances,const FLOAT *justifiedadvances,const DWRITE_GLYPH_OFFSET *justifiedoffsets,const DWRITE_SHAPING_GLYPH_PROPERTIES *prop,UINT32 *actual_count,UINT16 *modified_clustermap,UINT16 *modified_indices,FLOAT *modified_advances,DWRITE_GLYPH_OFFSET *modified_offsets) {
   2008     return This->lpVtbl->GetJustifiedGlyphs(This,face,font_em_size,sa,length,glyph_count,max_glyphcount,clustermap,indices,advances,justifiedadvances,justifiedoffsets,prop,actual_count,modified_clustermap,modified_indices,modified_advances,modified_offsets);
   2009 }
   2010 #endif
   2011 #endif
   2012 
   2013 #endif
   2014 
   2015 
   2016 #endif  /* __IDWriteTextAnalyzer1_INTERFACE_DEFINED__ */
   2017 
   2018 /*****************************************************************************
   2019  * IDWriteTextAnalysisSource1 interface
   2020  */
   2021 #ifndef __IDWriteTextAnalysisSource1_INTERFACE_DEFINED__
   2022 #define __IDWriteTextAnalysisSource1_INTERFACE_DEFINED__
   2023 
   2024 DEFINE_GUID(IID_IDWriteTextAnalysisSource1, 0x639cfad8, 0x0fb4, 0x4b21, 0xa5,0x8a, 0x06,0x79,0x20,0x12,0x00,0x09);
   2025 #if defined(__cplusplus) && !defined(CINTERFACE)
   2026 MIDL_INTERFACE("639cfad8-0fb4-4b21-a58a-067920120009")
   2027 IDWriteTextAnalysisSource1 : public IDWriteTextAnalysisSource
   2028 {
   2029     virtual HRESULT STDMETHODCALLTYPE GetVerticalGlyphOrientation(
   2030         UINT32 pos,
   2031         UINT32 *length,
   2032         DWRITE_VERTICAL_GLYPH_ORIENTATION *orientation,
   2033         UINT8 *bidi_level) = 0;
   2034 
   2035 };
   2036 #ifdef __CRT_UUID_DECL
   2037 __CRT_UUID_DECL(IDWriteTextAnalysisSource1, 0x639cfad8, 0x0fb4, 0x4b21, 0xa5,0x8a, 0x06,0x79,0x20,0x12,0x00,0x09)
   2038 #endif
   2039 #else
   2040 typedef struct IDWriteTextAnalysisSource1Vtbl {
   2041     BEGIN_INTERFACE
   2042 
   2043     /*** IUnknown methods ***/
   2044     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2045         IDWriteTextAnalysisSource1 *This,
   2046         REFIID riid,
   2047         void **ppvObject);
   2048 
   2049     ULONG (STDMETHODCALLTYPE *AddRef)(
   2050         IDWriteTextAnalysisSource1 *This);
   2051 
   2052     ULONG (STDMETHODCALLTYPE *Release)(
   2053         IDWriteTextAnalysisSource1 *This);
   2054 
   2055     /*** IDWriteTextAnalysisSource methods ***/
   2056     HRESULT (STDMETHODCALLTYPE *GetTextAtPosition)(
   2057         IDWriteTextAnalysisSource1 *This,
   2058         UINT32 position,
   2059         const WCHAR **text,
   2060         UINT32 *text_len);
   2061 
   2062     HRESULT (STDMETHODCALLTYPE *GetTextBeforePosition)(
   2063         IDWriteTextAnalysisSource1 *This,
   2064         UINT32 position,
   2065         const WCHAR **text,
   2066         UINT32 *text_len);
   2067 
   2068     DWRITE_READING_DIRECTION (STDMETHODCALLTYPE *GetParagraphReadingDirection)(
   2069         IDWriteTextAnalysisSource1 *This);
   2070 
   2071     HRESULT (STDMETHODCALLTYPE *GetLocaleName)(
   2072         IDWriteTextAnalysisSource1 *This,
   2073         UINT32 position,
   2074         UINT32 *text_len,
   2075         const WCHAR **locale);
   2076 
   2077     HRESULT (STDMETHODCALLTYPE *GetNumberSubstitution)(
   2078         IDWriteTextAnalysisSource1 *This,
   2079         UINT32 position,
   2080         UINT32 *text_len,
   2081         IDWriteNumberSubstitution **substitution);
   2082 
   2083     /*** IDWriteTextAnalysisSource1 methods ***/
   2084     HRESULT (STDMETHODCALLTYPE *GetVerticalGlyphOrientation)(
   2085         IDWriteTextAnalysisSource1 *This,
   2086         UINT32 pos,
   2087         UINT32 *length,
   2088         DWRITE_VERTICAL_GLYPH_ORIENTATION *orientation,
   2089         UINT8 *bidi_level);
   2090 
   2091     END_INTERFACE
   2092 } IDWriteTextAnalysisSource1Vtbl;
   2093 
   2094 interface IDWriteTextAnalysisSource1 {
   2095     CONST_VTBL IDWriteTextAnalysisSource1Vtbl* lpVtbl;
   2096 };
   2097 
   2098 #ifdef COBJMACROS
   2099 #ifndef WIDL_C_INLINE_WRAPPERS
   2100 /*** IUnknown methods ***/
   2101 #define IDWriteTextAnalysisSource1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2102 #define IDWriteTextAnalysisSource1_AddRef(This) (This)->lpVtbl->AddRef(This)
   2103 #define IDWriteTextAnalysisSource1_Release(This) (This)->lpVtbl->Release(This)
   2104 /*** IDWriteTextAnalysisSource methods ***/
   2105 #define IDWriteTextAnalysisSource1_GetTextAtPosition(This,position,text,text_len) (This)->lpVtbl->GetTextAtPosition(This,position,text,text_len)
   2106 #define IDWriteTextAnalysisSource1_GetTextBeforePosition(This,position,text,text_len) (This)->lpVtbl->GetTextBeforePosition(This,position,text,text_len)
   2107 #define IDWriteTextAnalysisSource1_GetParagraphReadingDirection(This) (This)->lpVtbl->GetParagraphReadingDirection(This)
   2108 #define IDWriteTextAnalysisSource1_GetLocaleName(This,position,text_len,locale) (This)->lpVtbl->GetLocaleName(This,position,text_len,locale)
   2109 #define IDWriteTextAnalysisSource1_GetNumberSubstitution(This,position,text_len,substitution) (This)->lpVtbl->GetNumberSubstitution(This,position,text_len,substitution)
   2110 /*** IDWriteTextAnalysisSource1 methods ***/
   2111 #define IDWriteTextAnalysisSource1_GetVerticalGlyphOrientation(This,pos,length,orientation,bidi_level) (This)->lpVtbl->GetVerticalGlyphOrientation(This,pos,length,orientation,bidi_level)
   2112 #else
   2113 /*** IUnknown methods ***/
   2114 static inline HRESULT IDWriteTextAnalysisSource1_QueryInterface(IDWriteTextAnalysisSource1* This,REFIID riid,void **ppvObject) {
   2115     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2116 }
   2117 static inline ULONG IDWriteTextAnalysisSource1_AddRef(IDWriteTextAnalysisSource1* This) {
   2118     return This->lpVtbl->AddRef(This);
   2119 }
   2120 static inline ULONG IDWriteTextAnalysisSource1_Release(IDWriteTextAnalysisSource1* This) {
   2121     return This->lpVtbl->Release(This);
   2122 }
   2123 /*** IDWriteTextAnalysisSource methods ***/
   2124 static inline HRESULT IDWriteTextAnalysisSource1_GetTextAtPosition(IDWriteTextAnalysisSource1* This,UINT32 position,const WCHAR **text,UINT32 *text_len) {
   2125     return This->lpVtbl->GetTextAtPosition(This,position,text,text_len);
   2126 }
   2127 static inline HRESULT IDWriteTextAnalysisSource1_GetTextBeforePosition(IDWriteTextAnalysisSource1* This,UINT32 position,const WCHAR **text,UINT32 *text_len) {
   2128     return This->lpVtbl->GetTextBeforePosition(This,position,text,text_len);
   2129 }
   2130 static inline DWRITE_READING_DIRECTION IDWriteTextAnalysisSource1_GetParagraphReadingDirection(IDWriteTextAnalysisSource1* This) {
   2131     return This->lpVtbl->GetParagraphReadingDirection(This);
   2132 }
   2133 static inline HRESULT IDWriteTextAnalysisSource1_GetLocaleName(IDWriteTextAnalysisSource1* This,UINT32 position,UINT32 *text_len,const WCHAR **locale) {
   2134     return This->lpVtbl->GetLocaleName(This,position,text_len,locale);
   2135 }
   2136 static inline HRESULT IDWriteTextAnalysisSource1_GetNumberSubstitution(IDWriteTextAnalysisSource1* This,UINT32 position,UINT32 *text_len,IDWriteNumberSubstitution **substitution) {
   2137     return This->lpVtbl->GetNumberSubstitution(This,position,text_len,substitution);
   2138 }
   2139 /*** IDWriteTextAnalysisSource1 methods ***/
   2140 static inline HRESULT IDWriteTextAnalysisSource1_GetVerticalGlyphOrientation(IDWriteTextAnalysisSource1* This,UINT32 pos,UINT32 *length,DWRITE_VERTICAL_GLYPH_ORIENTATION *orientation,UINT8 *bidi_level) {
   2141     return This->lpVtbl->GetVerticalGlyphOrientation(This,pos,length,orientation,bidi_level);
   2142 }
   2143 #endif
   2144 #endif
   2145 
   2146 #endif
   2147 
   2148 
   2149 #endif  /* __IDWriteTextAnalysisSource1_INTERFACE_DEFINED__ */
   2150 
   2151 /*****************************************************************************
   2152  * IDWriteTextAnalysisSink1 interface
   2153  */
   2154 #ifndef __IDWriteTextAnalysisSink1_INTERFACE_DEFINED__
   2155 #define __IDWriteTextAnalysisSink1_INTERFACE_DEFINED__
   2156 
   2157 DEFINE_GUID(IID_IDWriteTextAnalysisSink1, 0xb0d941a0, 0x85e7, 0x4d8b, 0x9f,0xd3, 0x5c,0xed,0x99,0x34,0x48,0x2a);
   2158 #if defined(__cplusplus) && !defined(CINTERFACE)
   2159 MIDL_INTERFACE("b0d941a0-85e7-4d8b-9fd3-5ced9934482a")
   2160 IDWriteTextAnalysisSink1 : public IDWriteTextAnalysisSink
   2161 {
   2162     virtual HRESULT STDMETHODCALLTYPE SetGlyphOrientation(
   2163         UINT32 pos,
   2164         UINT32 length,
   2165         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
   2166         UINT8 adjusted_bidilevel,
   2167         WINBOOL is_sideways,
   2168         WINBOOL is_rtl) = 0;
   2169 
   2170 };
   2171 #ifdef __CRT_UUID_DECL
   2172 __CRT_UUID_DECL(IDWriteTextAnalysisSink1, 0xb0d941a0, 0x85e7, 0x4d8b, 0x9f,0xd3, 0x5c,0xed,0x99,0x34,0x48,0x2a)
   2173 #endif
   2174 #else
   2175 typedef struct IDWriteTextAnalysisSink1Vtbl {
   2176     BEGIN_INTERFACE
   2177 
   2178     /*** IUnknown methods ***/
   2179     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2180         IDWriteTextAnalysisSink1 *This,
   2181         REFIID riid,
   2182         void **ppvObject);
   2183 
   2184     ULONG (STDMETHODCALLTYPE *AddRef)(
   2185         IDWriteTextAnalysisSink1 *This);
   2186 
   2187     ULONG (STDMETHODCALLTYPE *Release)(
   2188         IDWriteTextAnalysisSink1 *This);
   2189 
   2190     /*** IDWriteTextAnalysisSink methods ***/
   2191     HRESULT (STDMETHODCALLTYPE *SetScriptAnalysis)(
   2192         IDWriteTextAnalysisSink1 *This,
   2193         UINT32 position,
   2194         UINT32 length,
   2195         const DWRITE_SCRIPT_ANALYSIS *scriptanalysis);
   2196 
   2197     HRESULT (STDMETHODCALLTYPE *SetLineBreakpoints)(
   2198         IDWriteTextAnalysisSink1 *This,
   2199         UINT32 position,
   2200         UINT32 length,
   2201         const DWRITE_LINE_BREAKPOINT *breakpoints);
   2202 
   2203     HRESULT (STDMETHODCALLTYPE *SetBidiLevel)(
   2204         IDWriteTextAnalysisSink1 *This,
   2205         UINT32 position,
   2206         UINT32 length,
   2207         UINT8 explicitLevel,
   2208         UINT8 resolvedLevel);
   2209 
   2210     HRESULT (STDMETHODCALLTYPE *SetNumberSubstitution)(
   2211         IDWriteTextAnalysisSink1 *This,
   2212         UINT32 position,
   2213         UINT32 length,
   2214         IDWriteNumberSubstitution *substitution);
   2215 
   2216     /*** IDWriteTextAnalysisSink1 methods ***/
   2217     HRESULT (STDMETHODCALLTYPE *SetGlyphOrientation)(
   2218         IDWriteTextAnalysisSink1 *This,
   2219         UINT32 pos,
   2220         UINT32 length,
   2221         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
   2222         UINT8 adjusted_bidilevel,
   2223         WINBOOL is_sideways,
   2224         WINBOOL is_rtl);
   2225 
   2226     END_INTERFACE
   2227 } IDWriteTextAnalysisSink1Vtbl;
   2228 
   2229 interface IDWriteTextAnalysisSink1 {
   2230     CONST_VTBL IDWriteTextAnalysisSink1Vtbl* lpVtbl;
   2231 };
   2232 
   2233 #ifdef COBJMACROS
   2234 #ifndef WIDL_C_INLINE_WRAPPERS
   2235 /*** IUnknown methods ***/
   2236 #define IDWriteTextAnalysisSink1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2237 #define IDWriteTextAnalysisSink1_AddRef(This) (This)->lpVtbl->AddRef(This)
   2238 #define IDWriteTextAnalysisSink1_Release(This) (This)->lpVtbl->Release(This)
   2239 /*** IDWriteTextAnalysisSink methods ***/
   2240 #define IDWriteTextAnalysisSink1_SetScriptAnalysis(This,position,length,scriptanalysis) (This)->lpVtbl->SetScriptAnalysis(This,position,length,scriptanalysis)
   2241 #define IDWriteTextAnalysisSink1_SetLineBreakpoints(This,position,length,breakpoints) (This)->lpVtbl->SetLineBreakpoints(This,position,length,breakpoints)
   2242 #define IDWriteTextAnalysisSink1_SetBidiLevel(This,position,length,explicitLevel,resolvedLevel) (This)->lpVtbl->SetBidiLevel(This,position,length,explicitLevel,resolvedLevel)
   2243 #define IDWriteTextAnalysisSink1_SetNumberSubstitution(This,position,length,substitution) (This)->lpVtbl->SetNumberSubstitution(This,position,length,substitution)
   2244 /*** IDWriteTextAnalysisSink1 methods ***/
   2245 #define IDWriteTextAnalysisSink1_SetGlyphOrientation(This,pos,length,angle,adjusted_bidilevel,is_sideways,is_rtl) (This)->lpVtbl->SetGlyphOrientation(This,pos,length,angle,adjusted_bidilevel,is_sideways,is_rtl)
   2246 #else
   2247 /*** IUnknown methods ***/
   2248 static inline HRESULT IDWriteTextAnalysisSink1_QueryInterface(IDWriteTextAnalysisSink1* This,REFIID riid,void **ppvObject) {
   2249     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2250 }
   2251 static inline ULONG IDWriteTextAnalysisSink1_AddRef(IDWriteTextAnalysisSink1* This) {
   2252     return This->lpVtbl->AddRef(This);
   2253 }
   2254 static inline ULONG IDWriteTextAnalysisSink1_Release(IDWriteTextAnalysisSink1* This) {
   2255     return This->lpVtbl->Release(This);
   2256 }
   2257 /*** IDWriteTextAnalysisSink methods ***/
   2258 static inline HRESULT IDWriteTextAnalysisSink1_SetScriptAnalysis(IDWriteTextAnalysisSink1* This,UINT32 position,UINT32 length,const DWRITE_SCRIPT_ANALYSIS *scriptanalysis) {
   2259     return This->lpVtbl->SetScriptAnalysis(This,position,length,scriptanalysis);
   2260 }
   2261 static inline HRESULT IDWriteTextAnalysisSink1_SetLineBreakpoints(IDWriteTextAnalysisSink1* This,UINT32 position,UINT32 length,const DWRITE_LINE_BREAKPOINT *breakpoints) {
   2262     return This->lpVtbl->SetLineBreakpoints(This,position,length,breakpoints);
   2263 }
   2264 static inline HRESULT IDWriteTextAnalysisSink1_SetBidiLevel(IDWriteTextAnalysisSink1* This,UINT32 position,UINT32 length,UINT8 explicitLevel,UINT8 resolvedLevel) {
   2265     return This->lpVtbl->SetBidiLevel(This,position,length,explicitLevel,resolvedLevel);
   2266 }
   2267 static inline HRESULT IDWriteTextAnalysisSink1_SetNumberSubstitution(IDWriteTextAnalysisSink1* This,UINT32 position,UINT32 length,IDWriteNumberSubstitution *substitution) {
   2268     return This->lpVtbl->SetNumberSubstitution(This,position,length,substitution);
   2269 }
   2270 /*** IDWriteTextAnalysisSink1 methods ***/
   2271 static inline HRESULT IDWriteTextAnalysisSink1_SetGlyphOrientation(IDWriteTextAnalysisSink1* This,UINT32 pos,UINT32 length,DWRITE_GLYPH_ORIENTATION_ANGLE angle,UINT8 adjusted_bidilevel,WINBOOL is_sideways,WINBOOL is_rtl) {
   2272     return This->lpVtbl->SetGlyphOrientation(This,pos,length,angle,adjusted_bidilevel,is_sideways,is_rtl);
   2273 }
   2274 #endif
   2275 #endif
   2276 
   2277 #endif
   2278 
   2279 
   2280 #endif  /* __IDWriteTextAnalysisSink1_INTERFACE_DEFINED__ */
   2281 
   2282 /*****************************************************************************
   2283  * IDWriteTextLayout1 interface
   2284  */
   2285 #ifndef __IDWriteTextLayout1_INTERFACE_DEFINED__
   2286 #define __IDWriteTextLayout1_INTERFACE_DEFINED__
   2287 
   2288 DEFINE_GUID(IID_IDWriteTextLayout1, 0x9064d822, 0x80a7, 0x465c, 0xa9,0x86, 0xdf,0x65,0xf7,0x8b,0x8f,0xeb);
   2289 #if defined(__cplusplus) && !defined(CINTERFACE)
   2290 MIDL_INTERFACE("9064d822-80a7-465c-a986-df65f78b8feb")
   2291 IDWriteTextLayout1 : public IDWriteTextLayout
   2292 {
   2293     virtual HRESULT STDMETHODCALLTYPE SetPairKerning(
   2294         WINBOOL is_pairkerning_enabled,
   2295         DWRITE_TEXT_RANGE range) = 0;
   2296 
   2297     virtual HRESULT STDMETHODCALLTYPE GetPairKerning(
   2298         UINT32 position,
   2299         WINBOOL *is_pairkerning_enabled,
   2300         DWRITE_TEXT_RANGE *range) = 0;
   2301 
   2302     virtual HRESULT STDMETHODCALLTYPE SetCharacterSpacing(
   2303         FLOAT leading_spacing,
   2304         FLOAT trailing_spacing,
   2305         FLOAT minimum_advance_width,
   2306         DWRITE_TEXT_RANGE range) = 0;
   2307 
   2308     virtual HRESULT STDMETHODCALLTYPE GetCharacterSpacing(
   2309         UINT32 position,
   2310         FLOAT *leading_spacing,
   2311         FLOAT *trailing_spacing,
   2312         FLOAT *minimum_advance_width,
   2313         DWRITE_TEXT_RANGE *range = 0) = 0;
   2314 
   2315 };
   2316 #ifdef __CRT_UUID_DECL
   2317 __CRT_UUID_DECL(IDWriteTextLayout1, 0x9064d822, 0x80a7, 0x465c, 0xa9,0x86, 0xdf,0x65,0xf7,0x8b,0x8f,0xeb)
   2318 #endif
   2319 #else
   2320 typedef struct IDWriteTextLayout1Vtbl {
   2321     BEGIN_INTERFACE
   2322 
   2323     /*** IUnknown methods ***/
   2324     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2325         IDWriteTextLayout1 *This,
   2326         REFIID riid,
   2327         void **ppvObject);
   2328 
   2329     ULONG (STDMETHODCALLTYPE *AddRef)(
   2330         IDWriteTextLayout1 *This);
   2331 
   2332     ULONG (STDMETHODCALLTYPE *Release)(
   2333         IDWriteTextLayout1 *This);
   2334 
   2335     /*** IDWriteTextFormat methods ***/
   2336     HRESULT (STDMETHODCALLTYPE *SetTextAlignment)(
   2337         IDWriteTextLayout1 *This,
   2338         DWRITE_TEXT_ALIGNMENT alignment);
   2339 
   2340     HRESULT (STDMETHODCALLTYPE *SetParagraphAlignment)(
   2341         IDWriteTextLayout1 *This,
   2342         DWRITE_PARAGRAPH_ALIGNMENT alignment);
   2343 
   2344     HRESULT (STDMETHODCALLTYPE *SetWordWrapping)(
   2345         IDWriteTextLayout1 *This,
   2346         DWRITE_WORD_WRAPPING wrapping);
   2347 
   2348     HRESULT (STDMETHODCALLTYPE *SetReadingDirection)(
   2349         IDWriteTextLayout1 *This,
   2350         DWRITE_READING_DIRECTION direction);
   2351 
   2352     HRESULT (STDMETHODCALLTYPE *SetFlowDirection)(
   2353         IDWriteTextLayout1 *This,
   2354         DWRITE_FLOW_DIRECTION direction);
   2355 
   2356     HRESULT (STDMETHODCALLTYPE *SetIncrementalTabStop)(
   2357         IDWriteTextLayout1 *This,
   2358         FLOAT tabstop);
   2359 
   2360     HRESULT (STDMETHODCALLTYPE *SetTrimming)(
   2361         IDWriteTextLayout1 *This,
   2362         const DWRITE_TRIMMING *trimming,
   2363         IDWriteInlineObject *trimming_sign);
   2364 
   2365     HRESULT (STDMETHODCALLTYPE *SetLineSpacing)(
   2366         IDWriteTextLayout1 *This,
   2367         DWRITE_LINE_SPACING_METHOD spacing,
   2368         FLOAT line_spacing,
   2369         FLOAT baseline);
   2370 
   2371     DWRITE_TEXT_ALIGNMENT (STDMETHODCALLTYPE *GetTextAlignment)(
   2372         IDWriteTextLayout1 *This);
   2373 
   2374     DWRITE_PARAGRAPH_ALIGNMENT (STDMETHODCALLTYPE *GetParagraphAlignment)(
   2375         IDWriteTextLayout1 *This);
   2376 
   2377     DWRITE_WORD_WRAPPING (STDMETHODCALLTYPE *GetWordWrapping)(
   2378         IDWriteTextLayout1 *This);
   2379 
   2380     DWRITE_READING_DIRECTION (STDMETHODCALLTYPE *GetReadingDirection)(
   2381         IDWriteTextLayout1 *This);
   2382 
   2383     DWRITE_FLOW_DIRECTION (STDMETHODCALLTYPE *GetFlowDirection)(
   2384         IDWriteTextLayout1 *This);
   2385 
   2386     FLOAT (STDMETHODCALLTYPE *GetIncrementalTabStop)(
   2387         IDWriteTextLayout1 *This);
   2388 
   2389     HRESULT (STDMETHODCALLTYPE *GetTrimming)(
   2390         IDWriteTextLayout1 *This,
   2391         DWRITE_TRIMMING *options,
   2392         IDWriteInlineObject **trimming_sign);
   2393 
   2394     HRESULT (STDMETHODCALLTYPE *GetLineSpacing)(
   2395         IDWriteTextLayout1 *This,
   2396         DWRITE_LINE_SPACING_METHOD *method,
   2397         FLOAT *spacing,
   2398         FLOAT *baseline);
   2399 
   2400     HRESULT (STDMETHODCALLTYPE *GetFontCollection)(
   2401         IDWriteTextLayout1 *This,
   2402         IDWriteFontCollection **collection);
   2403 
   2404     UINT32 (STDMETHODCALLTYPE *GetFontFamilyNameLength)(
   2405         IDWriteTextLayout1 *This);
   2406 
   2407     HRESULT (STDMETHODCALLTYPE *GetFontFamilyName)(
   2408         IDWriteTextLayout1 *This,
   2409         WCHAR *name,
   2410         UINT32 size);
   2411 
   2412     DWRITE_FONT_WEIGHT (STDMETHODCALLTYPE *GetFontWeight)(
   2413         IDWriteTextLayout1 *This);
   2414 
   2415     DWRITE_FONT_STYLE (STDMETHODCALLTYPE *GetFontStyle)(
   2416         IDWriteTextLayout1 *This);
   2417 
   2418     DWRITE_FONT_STRETCH (STDMETHODCALLTYPE *GetFontStretch)(
   2419         IDWriteTextLayout1 *This);
   2420 
   2421     FLOAT (STDMETHODCALLTYPE *GetFontSize)(
   2422         IDWriteTextLayout1 *This);
   2423 
   2424     UINT32 (STDMETHODCALLTYPE *GetLocaleNameLength)(
   2425         IDWriteTextLayout1 *This);
   2426 
   2427     HRESULT (STDMETHODCALLTYPE *GetLocaleName)(
   2428         IDWriteTextLayout1 *This,
   2429         WCHAR *name,
   2430         UINT32 size);
   2431 
   2432     /*** IDWriteTextLayout methods ***/
   2433     HRESULT (STDMETHODCALLTYPE *SetMaxWidth)(
   2434         IDWriteTextLayout1 *This,
   2435         FLOAT maxWidth);
   2436 
   2437     HRESULT (STDMETHODCALLTYPE *SetMaxHeight)(
   2438         IDWriteTextLayout1 *This,
   2439         FLOAT maxHeight);
   2440 
   2441     HRESULT (STDMETHODCALLTYPE *SetFontCollection)(
   2442         IDWriteTextLayout1 *This,
   2443         IDWriteFontCollection *collection,
   2444         DWRITE_TEXT_RANGE range);
   2445 
   2446     HRESULT (STDMETHODCALLTYPE *SetFontFamilyName)(
   2447         IDWriteTextLayout1 *This,
   2448         const WCHAR *name,
   2449         DWRITE_TEXT_RANGE range);
   2450 
   2451     HRESULT (STDMETHODCALLTYPE *SetFontWeight)(
   2452         IDWriteTextLayout1 *This,
   2453         DWRITE_FONT_WEIGHT weight,
   2454         DWRITE_TEXT_RANGE range);
   2455 
   2456     HRESULT (STDMETHODCALLTYPE *SetFontStyle)(
   2457         IDWriteTextLayout1 *This,
   2458         DWRITE_FONT_STYLE style,
   2459         DWRITE_TEXT_RANGE range);
   2460 
   2461     HRESULT (STDMETHODCALLTYPE *SetFontStretch)(
   2462         IDWriteTextLayout1 *This,
   2463         DWRITE_FONT_STRETCH stretch,
   2464         DWRITE_TEXT_RANGE range);
   2465 
   2466     HRESULT (STDMETHODCALLTYPE *SetFontSize)(
   2467         IDWriteTextLayout1 *This,
   2468         FLOAT size,
   2469         DWRITE_TEXT_RANGE range);
   2470 
   2471     HRESULT (STDMETHODCALLTYPE *SetUnderline)(
   2472         IDWriteTextLayout1 *This,
   2473         WINBOOL underline,
   2474         DWRITE_TEXT_RANGE range);
   2475 
   2476     HRESULT (STDMETHODCALLTYPE *SetStrikethrough)(
   2477         IDWriteTextLayout1 *This,
   2478         WINBOOL strikethrough,
   2479         DWRITE_TEXT_RANGE range);
   2480 
   2481     HRESULT (STDMETHODCALLTYPE *SetDrawingEffect)(
   2482         IDWriteTextLayout1 *This,
   2483         IUnknown *effect,
   2484         DWRITE_TEXT_RANGE range);
   2485 
   2486     HRESULT (STDMETHODCALLTYPE *SetInlineObject)(
   2487         IDWriteTextLayout1 *This,
   2488         IDWriteInlineObject *object,
   2489         DWRITE_TEXT_RANGE range);
   2490 
   2491     HRESULT (STDMETHODCALLTYPE *SetTypography)(
   2492         IDWriteTextLayout1 *This,
   2493         IDWriteTypography *typography,
   2494         DWRITE_TEXT_RANGE range);
   2495 
   2496     HRESULT (STDMETHODCALLTYPE *SetLocaleName)(
   2497         IDWriteTextLayout1 *This,
   2498         const WCHAR *locale,
   2499         DWRITE_TEXT_RANGE range);
   2500 
   2501     FLOAT (STDMETHODCALLTYPE *GetMaxWidth)(
   2502         IDWriteTextLayout1 *This);
   2503 
   2504     FLOAT (STDMETHODCALLTYPE *GetMaxHeight)(
   2505         IDWriteTextLayout1 *This);
   2506 
   2507     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontCollection)(
   2508         IDWriteTextLayout1 *This,
   2509         UINT32 pos,
   2510         IDWriteFontCollection **collection,
   2511         DWRITE_TEXT_RANGE *range);
   2512 
   2513     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontFamilyNameLength)(
   2514         IDWriteTextLayout1 *This,
   2515         UINT32 pos,
   2516         UINT32 *len,
   2517         DWRITE_TEXT_RANGE *range);
   2518 
   2519     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontFamilyName)(
   2520         IDWriteTextLayout1 *This,
   2521         UINT32 position,
   2522         WCHAR *name,
   2523         UINT32 name_size,
   2524         DWRITE_TEXT_RANGE *range);
   2525 
   2526     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontWeight)(
   2527         IDWriteTextLayout1 *This,
   2528         UINT32 position,
   2529         DWRITE_FONT_WEIGHT *weight,
   2530         DWRITE_TEXT_RANGE *range);
   2531 
   2532     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontStyle)(
   2533         IDWriteTextLayout1 *This,
   2534         UINT32 currentPosition,
   2535         DWRITE_FONT_STYLE *style,
   2536         DWRITE_TEXT_RANGE *range);
   2537 
   2538     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontStretch)(
   2539         IDWriteTextLayout1 *This,
   2540         UINT32 position,
   2541         DWRITE_FONT_STRETCH *stretch,
   2542         DWRITE_TEXT_RANGE *range);
   2543 
   2544     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontSize)(
   2545         IDWriteTextLayout1 *This,
   2546         UINT32 position,
   2547         FLOAT *size,
   2548         DWRITE_TEXT_RANGE *range);
   2549 
   2550     HRESULT (STDMETHODCALLTYPE *GetUnderline)(
   2551         IDWriteTextLayout1 *This,
   2552         UINT32 position,
   2553         WINBOOL *has_underline,
   2554         DWRITE_TEXT_RANGE *range);
   2555 
   2556     HRESULT (STDMETHODCALLTYPE *GetStrikethrough)(
   2557         IDWriteTextLayout1 *This,
   2558         UINT32 position,
   2559         WINBOOL *has_strikethrough,
   2560         DWRITE_TEXT_RANGE *range);
   2561 
   2562     HRESULT (STDMETHODCALLTYPE *GetDrawingEffect)(
   2563         IDWriteTextLayout1 *This,
   2564         UINT32 position,
   2565         IUnknown **effect,
   2566         DWRITE_TEXT_RANGE *range);
   2567 
   2568     HRESULT (STDMETHODCALLTYPE *GetInlineObject)(
   2569         IDWriteTextLayout1 *This,
   2570         UINT32 position,
   2571         IDWriteInlineObject **object,
   2572         DWRITE_TEXT_RANGE *range);
   2573 
   2574     HRESULT (STDMETHODCALLTYPE *GetTypography)(
   2575         IDWriteTextLayout1 *This,
   2576         UINT32 position,
   2577         IDWriteTypography **typography,
   2578         DWRITE_TEXT_RANGE *range);
   2579 
   2580     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetLocaleNameLength)(
   2581         IDWriteTextLayout1 *This,
   2582         UINT32 position,
   2583         UINT32 *length,
   2584         DWRITE_TEXT_RANGE *range);
   2585 
   2586     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetLocaleName)(
   2587         IDWriteTextLayout1 *This,
   2588         UINT32 position,
   2589         WCHAR *name,
   2590         UINT32 name_size,
   2591         DWRITE_TEXT_RANGE *range);
   2592 
   2593     HRESULT (STDMETHODCALLTYPE *Draw)(
   2594         IDWriteTextLayout1 *This,
   2595         void *context,
   2596         IDWriteTextRenderer *renderer,
   2597         FLOAT originX,
   2598         FLOAT originY);
   2599 
   2600     HRESULT (STDMETHODCALLTYPE *GetLineMetrics)(
   2601         IDWriteTextLayout1 *This,
   2602         DWRITE_LINE_METRICS *metrics,
   2603         UINT32 max_count,
   2604         UINT32 *actual_count);
   2605 
   2606     HRESULT (STDMETHODCALLTYPE *GetMetrics)(
   2607         IDWriteTextLayout1 *This,
   2608         DWRITE_TEXT_METRICS *metrics);
   2609 
   2610     HRESULT (STDMETHODCALLTYPE *GetOverhangMetrics)(
   2611         IDWriteTextLayout1 *This,
   2612         DWRITE_OVERHANG_METRICS *overhangs);
   2613 
   2614     HRESULT (STDMETHODCALLTYPE *GetClusterMetrics)(
   2615         IDWriteTextLayout1 *This,
   2616         DWRITE_CLUSTER_METRICS *metrics,
   2617         UINT32 max_count,
   2618         UINT32 *act_count);
   2619 
   2620     HRESULT (STDMETHODCALLTYPE *DetermineMinWidth)(
   2621         IDWriteTextLayout1 *This,
   2622         FLOAT *min_width);
   2623 
   2624     HRESULT (STDMETHODCALLTYPE *HitTestPoint)(
   2625         IDWriteTextLayout1 *This,
   2626         FLOAT pointX,
   2627         FLOAT pointY,
   2628         WINBOOL *is_trailinghit,
   2629         WINBOOL *is_inside,
   2630         DWRITE_HIT_TEST_METRICS *metrics);
   2631 
   2632     HRESULT (STDMETHODCALLTYPE *HitTestTextPosition)(
   2633         IDWriteTextLayout1 *This,
   2634         UINT32 textPosition,
   2635         WINBOOL is_trailinghit,
   2636         FLOAT *pointX,
   2637         FLOAT *pointY,
   2638         DWRITE_HIT_TEST_METRICS *metrics);
   2639 
   2640     HRESULT (STDMETHODCALLTYPE *HitTestTextRange)(
   2641         IDWriteTextLayout1 *This,
   2642         UINT32 textPosition,
   2643         UINT32 textLength,
   2644         FLOAT originX,
   2645         FLOAT originY,
   2646         DWRITE_HIT_TEST_METRICS *metrics,
   2647         UINT32 max_metricscount,
   2648         UINT32 *actual_metricscount);
   2649 
   2650     /*** IDWriteTextLayout1 methods ***/
   2651     HRESULT (STDMETHODCALLTYPE *SetPairKerning)(
   2652         IDWriteTextLayout1 *This,
   2653         WINBOOL is_pairkerning_enabled,
   2654         DWRITE_TEXT_RANGE range);
   2655 
   2656     HRESULT (STDMETHODCALLTYPE *GetPairKerning)(
   2657         IDWriteTextLayout1 *This,
   2658         UINT32 position,
   2659         WINBOOL *is_pairkerning_enabled,
   2660         DWRITE_TEXT_RANGE *range);
   2661 
   2662     HRESULT (STDMETHODCALLTYPE *SetCharacterSpacing)(
   2663         IDWriteTextLayout1 *This,
   2664         FLOAT leading_spacing,
   2665         FLOAT trailing_spacing,
   2666         FLOAT minimum_advance_width,
   2667         DWRITE_TEXT_RANGE range);
   2668 
   2669     HRESULT (STDMETHODCALLTYPE *GetCharacterSpacing)(
   2670         IDWriteTextLayout1 *This,
   2671         UINT32 position,
   2672         FLOAT *leading_spacing,
   2673         FLOAT *trailing_spacing,
   2674         FLOAT *minimum_advance_width,
   2675         DWRITE_TEXT_RANGE *range);
   2676 
   2677     END_INTERFACE
   2678 } IDWriteTextLayout1Vtbl;
   2679 
   2680 interface IDWriteTextLayout1 {
   2681     CONST_VTBL IDWriteTextLayout1Vtbl* lpVtbl;
   2682 };
   2683 
   2684 #ifdef COBJMACROS
   2685 #ifndef WIDL_C_INLINE_WRAPPERS
   2686 /*** IUnknown methods ***/
   2687 #define IDWriteTextLayout1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2688 #define IDWriteTextLayout1_AddRef(This) (This)->lpVtbl->AddRef(This)
   2689 #define IDWriteTextLayout1_Release(This) (This)->lpVtbl->Release(This)
   2690 /*** IDWriteTextFormat methods ***/
   2691 #define IDWriteTextLayout1_SetTextAlignment(This,alignment) (This)->lpVtbl->SetTextAlignment(This,alignment)
   2692 #define IDWriteTextLayout1_SetParagraphAlignment(This,alignment) (This)->lpVtbl->SetParagraphAlignment(This,alignment)
   2693 #define IDWriteTextLayout1_SetWordWrapping(This,wrapping) (This)->lpVtbl->SetWordWrapping(This,wrapping)
   2694 #define IDWriteTextLayout1_SetReadingDirection(This,direction) (This)->lpVtbl->SetReadingDirection(This,direction)
   2695 #define IDWriteTextLayout1_SetFlowDirection(This,direction) (This)->lpVtbl->SetFlowDirection(This,direction)
   2696 #define IDWriteTextLayout1_SetIncrementalTabStop(This,tabstop) (This)->lpVtbl->SetIncrementalTabStop(This,tabstop)
   2697 #define IDWriteTextLayout1_SetTrimming(This,trimming,trimming_sign) (This)->lpVtbl->SetTrimming(This,trimming,trimming_sign)
   2698 #define IDWriteTextLayout1_SetLineSpacing(This,spacing,line_spacing,baseline) (This)->lpVtbl->SetLineSpacing(This,spacing,line_spacing,baseline)
   2699 #define IDWriteTextLayout1_GetTextAlignment(This) (This)->lpVtbl->GetTextAlignment(This)
   2700 #define IDWriteTextLayout1_GetParagraphAlignment(This) (This)->lpVtbl->GetParagraphAlignment(This)
   2701 #define IDWriteTextLayout1_GetWordWrapping(This) (This)->lpVtbl->GetWordWrapping(This)
   2702 #define IDWriteTextLayout1_GetReadingDirection(This) (This)->lpVtbl->GetReadingDirection(This)
   2703 #define IDWriteTextLayout1_GetFlowDirection(This) (This)->lpVtbl->GetFlowDirection(This)
   2704 #define IDWriteTextLayout1_GetIncrementalTabStop(This) (This)->lpVtbl->GetIncrementalTabStop(This)
   2705 #define IDWriteTextLayout1_GetTrimming(This,options,trimming_sign) (This)->lpVtbl->GetTrimming(This,options,trimming_sign)
   2706 #define IDWriteTextLayout1_GetLineSpacing(This,method,spacing,baseline) (This)->lpVtbl->GetLineSpacing(This,method,spacing,baseline)
   2707 /*** IDWriteTextLayout methods ***/
   2708 #define IDWriteTextLayout1_SetMaxWidth(This,maxWidth) (This)->lpVtbl->SetMaxWidth(This,maxWidth)
   2709 #define IDWriteTextLayout1_SetMaxHeight(This,maxHeight) (This)->lpVtbl->SetMaxHeight(This,maxHeight)
   2710 #define IDWriteTextLayout1_SetFontCollection(This,collection,range) (This)->lpVtbl->SetFontCollection(This,collection,range)
   2711 #define IDWriteTextLayout1_SetFontFamilyName(This,name,range) (This)->lpVtbl->SetFontFamilyName(This,name,range)
   2712 #define IDWriteTextLayout1_SetFontWeight(This,weight,range) (This)->lpVtbl->SetFontWeight(This,weight,range)
   2713 #define IDWriteTextLayout1_SetFontStyle(This,style,range) (This)->lpVtbl->SetFontStyle(This,style,range)
   2714 #define IDWriteTextLayout1_SetFontStretch(This,stretch,range) (This)->lpVtbl->SetFontStretch(This,stretch,range)
   2715 #define IDWriteTextLayout1_SetFontSize(This,size,range) (This)->lpVtbl->SetFontSize(This,size,range)
   2716 #define IDWriteTextLayout1_SetUnderline(This,underline,range) (This)->lpVtbl->SetUnderline(This,underline,range)
   2717 #define IDWriteTextLayout1_SetStrikethrough(This,strikethrough,range) (This)->lpVtbl->SetStrikethrough(This,strikethrough,range)
   2718 #define IDWriteTextLayout1_SetDrawingEffect(This,effect,range) (This)->lpVtbl->SetDrawingEffect(This,effect,range)
   2719 #define IDWriteTextLayout1_SetInlineObject(This,object,range) (This)->lpVtbl->SetInlineObject(This,object,range)
   2720 #define IDWriteTextLayout1_SetTypography(This,typography,range) (This)->lpVtbl->SetTypography(This,typography,range)
   2721 #define IDWriteTextLayout1_SetLocaleName(This,locale,range) (This)->lpVtbl->SetLocaleName(This,locale,range)
   2722 #define IDWriteTextLayout1_GetMaxWidth(This) (This)->lpVtbl->GetMaxWidth(This)
   2723 #define IDWriteTextLayout1_GetMaxHeight(This) (This)->lpVtbl->GetMaxHeight(This)
   2724 #define IDWriteTextLayout1_GetFontCollection(This,pos,collection,range) (This)->lpVtbl->IDWriteTextLayout_GetFontCollection(This,pos,collection,range)
   2725 #define IDWriteTextLayout1_GetFontFamilyNameLength(This,pos,len,range) (This)->lpVtbl->IDWriteTextLayout_GetFontFamilyNameLength(This,pos,len,range)
   2726 #define IDWriteTextLayout1_GetFontFamilyName(This,position,name,name_size,range) (This)->lpVtbl->IDWriteTextLayout_GetFontFamilyName(This,position,name,name_size,range)
   2727 #define IDWriteTextLayout1_GetFontWeight(This,position,weight,range) (This)->lpVtbl->IDWriteTextLayout_GetFontWeight(This,position,weight,range)
   2728 #define IDWriteTextLayout1_GetFontStyle(This,currentPosition,style,range) (This)->lpVtbl->IDWriteTextLayout_GetFontStyle(This,currentPosition,style,range)
   2729 #define IDWriteTextLayout1_GetFontStretch(This,position,stretch,range) (This)->lpVtbl->IDWriteTextLayout_GetFontStretch(This,position,stretch,range)
   2730 #define IDWriteTextLayout1_GetFontSize(This,position,size,range) (This)->lpVtbl->IDWriteTextLayout_GetFontSize(This,position,size,range)
   2731 #define IDWriteTextLayout1_GetUnderline(This,position,has_underline,range) (This)->lpVtbl->GetUnderline(This,position,has_underline,range)
   2732 #define IDWriteTextLayout1_GetStrikethrough(This,position,has_strikethrough,range) (This)->lpVtbl->GetStrikethrough(This,position,has_strikethrough,range)
   2733 #define IDWriteTextLayout1_GetDrawingEffect(This,position,effect,range) (This)->lpVtbl->GetDrawingEffect(This,position,effect,range)
   2734 #define IDWriteTextLayout1_GetInlineObject(This,position,object,range) (This)->lpVtbl->GetInlineObject(This,position,object,range)
   2735 #define IDWriteTextLayout1_GetTypography(This,position,typography,range) (This)->lpVtbl->GetTypography(This,position,typography,range)
   2736 #define IDWriteTextLayout1_GetLocaleNameLength(This,position,length,range) (This)->lpVtbl->IDWriteTextLayout_GetLocaleNameLength(This,position,length,range)
   2737 #define IDWriteTextLayout1_GetLocaleName(This,position,name,name_size,range) (This)->lpVtbl->IDWriteTextLayout_GetLocaleName(This,position,name,name_size,range)
   2738 #define IDWriteTextLayout1_Draw(This,context,renderer,originX,originY) (This)->lpVtbl->Draw(This,context,renderer,originX,originY)
   2739 #define IDWriteTextLayout1_GetLineMetrics(This,metrics,max_count,actual_count) (This)->lpVtbl->GetLineMetrics(This,metrics,max_count,actual_count)
   2740 #define IDWriteTextLayout1_GetMetrics(This,metrics) (This)->lpVtbl->GetMetrics(This,metrics)
   2741 #define IDWriteTextLayout1_GetOverhangMetrics(This,overhangs) (This)->lpVtbl->GetOverhangMetrics(This,overhangs)
   2742 #define IDWriteTextLayout1_GetClusterMetrics(This,metrics,max_count,act_count) (This)->lpVtbl->GetClusterMetrics(This,metrics,max_count,act_count)
   2743 #define IDWriteTextLayout1_DetermineMinWidth(This,min_width) (This)->lpVtbl->DetermineMinWidth(This,min_width)
   2744 #define IDWriteTextLayout1_HitTestPoint(This,pointX,pointY,is_trailinghit,is_inside,metrics) (This)->lpVtbl->HitTestPoint(This,pointX,pointY,is_trailinghit,is_inside,metrics)
   2745 #define IDWriteTextLayout1_HitTestTextPosition(This,textPosition,is_trailinghit,pointX,pointY,metrics) (This)->lpVtbl->HitTestTextPosition(This,textPosition,is_trailinghit,pointX,pointY,metrics)
   2746 #define IDWriteTextLayout1_HitTestTextRange(This,textPosition,textLength,originX,originY,metrics,max_metricscount,actual_metricscount) (This)->lpVtbl->HitTestTextRange(This,textPosition,textLength,originX,originY,metrics,max_metricscount,actual_metricscount)
   2747 /*** IDWriteTextLayout1 methods ***/
   2748 #define IDWriteTextLayout1_SetPairKerning(This,is_pairkerning_enabled,range) (This)->lpVtbl->SetPairKerning(This,is_pairkerning_enabled,range)
   2749 #define IDWriteTextLayout1_GetPairKerning(This,position,is_pairkerning_enabled,range) (This)->lpVtbl->GetPairKerning(This,position,is_pairkerning_enabled,range)
   2750 #define IDWriteTextLayout1_SetCharacterSpacing(This,leading_spacing,trailing_spacing,minimum_advance_width,range) (This)->lpVtbl->SetCharacterSpacing(This,leading_spacing,trailing_spacing,minimum_advance_width,range)
   2751 #define IDWriteTextLayout1_GetCharacterSpacing(This,position,leading_spacing,trailing_spacing,minimum_advance_width,range) (This)->lpVtbl->GetCharacterSpacing(This,position,leading_spacing,trailing_spacing,minimum_advance_width,range)
   2752 #else
   2753 /*** IUnknown methods ***/
   2754 static inline HRESULT IDWriteTextLayout1_QueryInterface(IDWriteTextLayout1* This,REFIID riid,void **ppvObject) {
   2755     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2756 }
   2757 static inline ULONG IDWriteTextLayout1_AddRef(IDWriteTextLayout1* This) {
   2758     return This->lpVtbl->AddRef(This);
   2759 }
   2760 static inline ULONG IDWriteTextLayout1_Release(IDWriteTextLayout1* This) {
   2761     return This->lpVtbl->Release(This);
   2762 }
   2763 /*** IDWriteTextFormat methods ***/
   2764 static inline HRESULT IDWriteTextLayout1_SetTextAlignment(IDWriteTextLayout1* This,DWRITE_TEXT_ALIGNMENT alignment) {
   2765     return This->lpVtbl->SetTextAlignment(This,alignment);
   2766 }
   2767 static inline HRESULT IDWriteTextLayout1_SetParagraphAlignment(IDWriteTextLayout1* This,DWRITE_PARAGRAPH_ALIGNMENT alignment) {
   2768     return This->lpVtbl->SetParagraphAlignment(This,alignment);
   2769 }
   2770 static inline HRESULT IDWriteTextLayout1_SetWordWrapping(IDWriteTextLayout1* This,DWRITE_WORD_WRAPPING wrapping) {
   2771     return This->lpVtbl->SetWordWrapping(This,wrapping);
   2772 }
   2773 static inline HRESULT IDWriteTextLayout1_SetReadingDirection(IDWriteTextLayout1* This,DWRITE_READING_DIRECTION direction) {
   2774     return This->lpVtbl->SetReadingDirection(This,direction);
   2775 }
   2776 static inline HRESULT IDWriteTextLayout1_SetFlowDirection(IDWriteTextLayout1* This,DWRITE_FLOW_DIRECTION direction) {
   2777     return This->lpVtbl->SetFlowDirection(This,direction);
   2778 }
   2779 static inline HRESULT IDWriteTextLayout1_SetIncrementalTabStop(IDWriteTextLayout1* This,FLOAT tabstop) {
   2780     return This->lpVtbl->SetIncrementalTabStop(This,tabstop);
   2781 }
   2782 static inline HRESULT IDWriteTextLayout1_SetTrimming(IDWriteTextLayout1* This,const DWRITE_TRIMMING *trimming,IDWriteInlineObject *trimming_sign) {
   2783     return This->lpVtbl->SetTrimming(This,trimming,trimming_sign);
   2784 }
   2785 static inline HRESULT IDWriteTextLayout1_SetLineSpacing(IDWriteTextLayout1* This,DWRITE_LINE_SPACING_METHOD spacing,FLOAT line_spacing,FLOAT baseline) {
   2786     return This->lpVtbl->SetLineSpacing(This,spacing,line_spacing,baseline);
   2787 }
   2788 static inline DWRITE_TEXT_ALIGNMENT IDWriteTextLayout1_GetTextAlignment(IDWriteTextLayout1* This) {
   2789     return This->lpVtbl->GetTextAlignment(This);
   2790 }
   2791 static inline DWRITE_PARAGRAPH_ALIGNMENT IDWriteTextLayout1_GetParagraphAlignment(IDWriteTextLayout1* This) {
   2792     return This->lpVtbl->GetParagraphAlignment(This);
   2793 }
   2794 static inline DWRITE_WORD_WRAPPING IDWriteTextLayout1_GetWordWrapping(IDWriteTextLayout1* This) {
   2795     return This->lpVtbl->GetWordWrapping(This);
   2796 }
   2797 static inline DWRITE_READING_DIRECTION IDWriteTextLayout1_GetReadingDirection(IDWriteTextLayout1* This) {
   2798     return This->lpVtbl->GetReadingDirection(This);
   2799 }
   2800 static inline DWRITE_FLOW_DIRECTION IDWriteTextLayout1_GetFlowDirection(IDWriteTextLayout1* This) {
   2801     return This->lpVtbl->GetFlowDirection(This);
   2802 }
   2803 static inline FLOAT IDWriteTextLayout1_GetIncrementalTabStop(IDWriteTextLayout1* This) {
   2804     return This->lpVtbl->GetIncrementalTabStop(This);
   2805 }
   2806 static inline HRESULT IDWriteTextLayout1_GetTrimming(IDWriteTextLayout1* This,DWRITE_TRIMMING *options,IDWriteInlineObject **trimming_sign) {
   2807     return This->lpVtbl->GetTrimming(This,options,trimming_sign);
   2808 }
   2809 static inline HRESULT IDWriteTextLayout1_GetLineSpacing(IDWriteTextLayout1* This,DWRITE_LINE_SPACING_METHOD *method,FLOAT *spacing,FLOAT *baseline) {
   2810     return This->lpVtbl->GetLineSpacing(This,method,spacing,baseline);
   2811 }
   2812 /*** IDWriteTextLayout methods ***/
   2813 static inline HRESULT IDWriteTextLayout1_SetMaxWidth(IDWriteTextLayout1* This,FLOAT maxWidth) {
   2814     return This->lpVtbl->SetMaxWidth(This,maxWidth);
   2815 }
   2816 static inline HRESULT IDWriteTextLayout1_SetMaxHeight(IDWriteTextLayout1* This,FLOAT maxHeight) {
   2817     return This->lpVtbl->SetMaxHeight(This,maxHeight);
   2818 }
   2819 static inline HRESULT IDWriteTextLayout1_SetFontCollection(IDWriteTextLayout1* This,IDWriteFontCollection *collection,DWRITE_TEXT_RANGE range) {
   2820     return This->lpVtbl->SetFontCollection(This,collection,range);
   2821 }
   2822 static inline HRESULT IDWriteTextLayout1_SetFontFamilyName(IDWriteTextLayout1* This,const WCHAR *name,DWRITE_TEXT_RANGE range) {
   2823     return This->lpVtbl->SetFontFamilyName(This,name,range);
   2824 }
   2825 static inline HRESULT IDWriteTextLayout1_SetFontWeight(IDWriteTextLayout1* This,DWRITE_FONT_WEIGHT weight,DWRITE_TEXT_RANGE range) {
   2826     return This->lpVtbl->SetFontWeight(This,weight,range);
   2827 }
   2828 static inline HRESULT IDWriteTextLayout1_SetFontStyle(IDWriteTextLayout1* This,DWRITE_FONT_STYLE style,DWRITE_TEXT_RANGE range) {
   2829     return This->lpVtbl->SetFontStyle(This,style,range);
   2830 }
   2831 static inline HRESULT IDWriteTextLayout1_SetFontStretch(IDWriteTextLayout1* This,DWRITE_FONT_STRETCH stretch,DWRITE_TEXT_RANGE range) {
   2832     return This->lpVtbl->SetFontStretch(This,stretch,range);
   2833 }
   2834 static inline HRESULT IDWriteTextLayout1_SetFontSize(IDWriteTextLayout1* This,FLOAT size,DWRITE_TEXT_RANGE range) {
   2835     return This->lpVtbl->SetFontSize(This,size,range);
   2836 }
   2837 static inline HRESULT IDWriteTextLayout1_SetUnderline(IDWriteTextLayout1* This,WINBOOL underline,DWRITE_TEXT_RANGE range) {
   2838     return This->lpVtbl->SetUnderline(This,underline,range);
   2839 }
   2840 static inline HRESULT IDWriteTextLayout1_SetStrikethrough(IDWriteTextLayout1* This,WINBOOL strikethrough,DWRITE_TEXT_RANGE range) {
   2841     return This->lpVtbl->SetStrikethrough(This,strikethrough,range);
   2842 }
   2843 static inline HRESULT IDWriteTextLayout1_SetDrawingEffect(IDWriteTextLayout1* This,IUnknown *effect,DWRITE_TEXT_RANGE range) {
   2844     return This->lpVtbl->SetDrawingEffect(This,effect,range);
   2845 }
   2846 static inline HRESULT IDWriteTextLayout1_SetInlineObject(IDWriteTextLayout1* This,IDWriteInlineObject *object,DWRITE_TEXT_RANGE range) {
   2847     return This->lpVtbl->SetInlineObject(This,object,range);
   2848 }
   2849 static inline HRESULT IDWriteTextLayout1_SetTypography(IDWriteTextLayout1* This,IDWriteTypography *typography,DWRITE_TEXT_RANGE range) {
   2850     return This->lpVtbl->SetTypography(This,typography,range);
   2851 }
   2852 static inline HRESULT IDWriteTextLayout1_SetLocaleName(IDWriteTextLayout1* This,const WCHAR *locale,DWRITE_TEXT_RANGE range) {
   2853     return This->lpVtbl->SetLocaleName(This,locale,range);
   2854 }
   2855 static inline FLOAT IDWriteTextLayout1_GetMaxWidth(IDWriteTextLayout1* This) {
   2856     return This->lpVtbl->GetMaxWidth(This);
   2857 }
   2858 static inline FLOAT IDWriteTextLayout1_GetMaxHeight(IDWriteTextLayout1* This) {
   2859     return This->lpVtbl->GetMaxHeight(This);
   2860 }
   2861 static inline HRESULT IDWriteTextLayout1_GetFontCollection(IDWriteTextLayout1* This,UINT32 pos,IDWriteFontCollection **collection,DWRITE_TEXT_RANGE *range) {
   2862     return This->lpVtbl->IDWriteTextLayout_GetFontCollection(This,pos,collection,range);
   2863 }
   2864 static inline HRESULT IDWriteTextLayout1_GetFontFamilyNameLength(IDWriteTextLayout1* This,UINT32 pos,UINT32 *len,DWRITE_TEXT_RANGE *range) {
   2865     return This->lpVtbl->IDWriteTextLayout_GetFontFamilyNameLength(This,pos,len,range);
   2866 }
   2867 static inline HRESULT IDWriteTextLayout1_GetFontFamilyName(IDWriteTextLayout1* This,UINT32 position,WCHAR *name,UINT32 name_size,DWRITE_TEXT_RANGE *range) {
   2868     return This->lpVtbl->IDWriteTextLayout_GetFontFamilyName(This,position,name,name_size,range);
   2869 }
   2870 static inline HRESULT IDWriteTextLayout1_GetFontWeight(IDWriteTextLayout1* This,UINT32 position,DWRITE_FONT_WEIGHT *weight,DWRITE_TEXT_RANGE *range) {
   2871     return This->lpVtbl->IDWriteTextLayout_GetFontWeight(This,position,weight,range);
   2872 }
   2873 static inline HRESULT IDWriteTextLayout1_GetFontStyle(IDWriteTextLayout1* This,UINT32 currentPosition,DWRITE_FONT_STYLE *style,DWRITE_TEXT_RANGE *range) {
   2874     return This->lpVtbl->IDWriteTextLayout_GetFontStyle(This,currentPosition,style,range);
   2875 }
   2876 static inline HRESULT IDWriteTextLayout1_GetFontStretch(IDWriteTextLayout1* This,UINT32 position,DWRITE_FONT_STRETCH *stretch,DWRITE_TEXT_RANGE *range) {
   2877     return This->lpVtbl->IDWriteTextLayout_GetFontStretch(This,position,stretch,range);
   2878 }
   2879 static inline HRESULT IDWriteTextLayout1_GetFontSize(IDWriteTextLayout1* This,UINT32 position,FLOAT *size,DWRITE_TEXT_RANGE *range) {
   2880     return This->lpVtbl->IDWriteTextLayout_GetFontSize(This,position,size,range);
   2881 }
   2882 static inline HRESULT IDWriteTextLayout1_GetUnderline(IDWriteTextLayout1* This,UINT32 position,WINBOOL *has_underline,DWRITE_TEXT_RANGE *range) {
   2883     return This->lpVtbl->GetUnderline(This,position,has_underline,range);
   2884 }
   2885 static inline HRESULT IDWriteTextLayout1_GetStrikethrough(IDWriteTextLayout1* This,UINT32 position,WINBOOL *has_strikethrough,DWRITE_TEXT_RANGE *range) {
   2886     return This->lpVtbl->GetStrikethrough(This,position,has_strikethrough,range);
   2887 }
   2888 static inline HRESULT IDWriteTextLayout1_GetDrawingEffect(IDWriteTextLayout1* This,UINT32 position,IUnknown **effect,DWRITE_TEXT_RANGE *range) {
   2889     return This->lpVtbl->GetDrawingEffect(This,position,effect,range);
   2890 }
   2891 static inline HRESULT IDWriteTextLayout1_GetInlineObject(IDWriteTextLayout1* This,UINT32 position,IDWriteInlineObject **object,DWRITE_TEXT_RANGE *range) {
   2892     return This->lpVtbl->GetInlineObject(This,position,object,range);
   2893 }
   2894 static inline HRESULT IDWriteTextLayout1_GetTypography(IDWriteTextLayout1* This,UINT32 position,IDWriteTypography **typography,DWRITE_TEXT_RANGE *range) {
   2895     return This->lpVtbl->GetTypography(This,position,typography,range);
   2896 }
   2897 static inline HRESULT IDWriteTextLayout1_GetLocaleNameLength(IDWriteTextLayout1* This,UINT32 position,UINT32 *length,DWRITE_TEXT_RANGE *range) {
   2898     return This->lpVtbl->IDWriteTextLayout_GetLocaleNameLength(This,position,length,range);
   2899 }
   2900 static inline HRESULT IDWriteTextLayout1_GetLocaleName(IDWriteTextLayout1* This,UINT32 position,WCHAR *name,UINT32 name_size,DWRITE_TEXT_RANGE *range) {
   2901     return This->lpVtbl->IDWriteTextLayout_GetLocaleName(This,position,name,name_size,range);
   2902 }
   2903 static inline HRESULT IDWriteTextLayout1_Draw(IDWriteTextLayout1* This,void *context,IDWriteTextRenderer *renderer,FLOAT originX,FLOAT originY) {
   2904     return This->lpVtbl->Draw(This,context,renderer,originX,originY);
   2905 }
   2906 static inline HRESULT IDWriteTextLayout1_GetLineMetrics(IDWriteTextLayout1* This,DWRITE_LINE_METRICS *metrics,UINT32 max_count,UINT32 *actual_count) {
   2907     return This->lpVtbl->GetLineMetrics(This,metrics,max_count,actual_count);
   2908 }
   2909 static inline HRESULT IDWriteTextLayout1_GetMetrics(IDWriteTextLayout1* This,DWRITE_TEXT_METRICS *metrics) {
   2910     return This->lpVtbl->GetMetrics(This,metrics);
   2911 }
   2912 static inline HRESULT IDWriteTextLayout1_GetOverhangMetrics(IDWriteTextLayout1* This,DWRITE_OVERHANG_METRICS *overhangs) {
   2913     return This->lpVtbl->GetOverhangMetrics(This,overhangs);
   2914 }
   2915 static inline HRESULT IDWriteTextLayout1_GetClusterMetrics(IDWriteTextLayout1* This,DWRITE_CLUSTER_METRICS *metrics,UINT32 max_count,UINT32 *act_count) {
   2916     return This->lpVtbl->GetClusterMetrics(This,metrics,max_count,act_count);
   2917 }
   2918 static inline HRESULT IDWriteTextLayout1_DetermineMinWidth(IDWriteTextLayout1* This,FLOAT *min_width) {
   2919     return This->lpVtbl->DetermineMinWidth(This,min_width);
   2920 }
   2921 static inline HRESULT IDWriteTextLayout1_HitTestPoint(IDWriteTextLayout1* This,FLOAT pointX,FLOAT pointY,WINBOOL *is_trailinghit,WINBOOL *is_inside,DWRITE_HIT_TEST_METRICS *metrics) {
   2922     return This->lpVtbl->HitTestPoint(This,pointX,pointY,is_trailinghit,is_inside,metrics);
   2923 }
   2924 static inline HRESULT IDWriteTextLayout1_HitTestTextPosition(IDWriteTextLayout1* This,UINT32 textPosition,WINBOOL is_trailinghit,FLOAT *pointX,FLOAT *pointY,DWRITE_HIT_TEST_METRICS *metrics) {
   2925     return This->lpVtbl->HitTestTextPosition(This,textPosition,is_trailinghit,pointX,pointY,metrics);
   2926 }
   2927 static inline HRESULT IDWriteTextLayout1_HitTestTextRange(IDWriteTextLayout1* This,UINT32 textPosition,UINT32 textLength,FLOAT originX,FLOAT originY,DWRITE_HIT_TEST_METRICS *metrics,UINT32 max_metricscount,UINT32 *actual_metricscount) {
   2928     return This->lpVtbl->HitTestTextRange(This,textPosition,textLength,originX,originY,metrics,max_metricscount,actual_metricscount);
   2929 }
   2930 /*** IDWriteTextLayout1 methods ***/
   2931 static inline HRESULT IDWriteTextLayout1_SetPairKerning(IDWriteTextLayout1* This,WINBOOL is_pairkerning_enabled,DWRITE_TEXT_RANGE range) {
   2932     return This->lpVtbl->SetPairKerning(This,is_pairkerning_enabled,range);
   2933 }
   2934 static inline HRESULT IDWriteTextLayout1_GetPairKerning(IDWriteTextLayout1* This,UINT32 position,WINBOOL *is_pairkerning_enabled,DWRITE_TEXT_RANGE *range) {
   2935     return This->lpVtbl->GetPairKerning(This,position,is_pairkerning_enabled,range);
   2936 }
   2937 static inline HRESULT IDWriteTextLayout1_SetCharacterSpacing(IDWriteTextLayout1* This,FLOAT leading_spacing,FLOAT trailing_spacing,FLOAT minimum_advance_width,DWRITE_TEXT_RANGE range) {
   2938     return This->lpVtbl->SetCharacterSpacing(This,leading_spacing,trailing_spacing,minimum_advance_width,range);
   2939 }
   2940 static inline HRESULT IDWriteTextLayout1_GetCharacterSpacing(IDWriteTextLayout1* This,UINT32 position,FLOAT *leading_spacing,FLOAT *trailing_spacing,FLOAT *minimum_advance_width,DWRITE_TEXT_RANGE *range) {
   2941     return This->lpVtbl->GetCharacterSpacing(This,position,leading_spacing,trailing_spacing,minimum_advance_width,range);
   2942 }
   2943 #endif
   2944 #endif
   2945 
   2946 #endif
   2947 
   2948 
   2949 #endif  /* __IDWriteTextLayout1_INTERFACE_DEFINED__ */
   2950 
   2951 typedef enum DWRITE_TEXT_ANTIALIAS_MODE {
   2952     DWRITE_TEXT_ANTIALIAS_MODE_CLEARTYPE = 0,
   2953     DWRITE_TEXT_ANTIALIAS_MODE_GRAYSCALE = 1
   2954 } DWRITE_TEXT_ANTIALIAS_MODE;
   2955 /*****************************************************************************
   2956  * IDWriteBitmapRenderTarget1 interface
   2957  */
   2958 #ifndef __IDWriteBitmapRenderTarget1_INTERFACE_DEFINED__
   2959 #define __IDWriteBitmapRenderTarget1_INTERFACE_DEFINED__
   2960 
   2961 DEFINE_GUID(IID_IDWriteBitmapRenderTarget1, 0x791e8298, 0x3ef3, 0x4230, 0x98,0x80, 0xc9,0xbd,0xec,0xc4,0x20,0x64);
   2962 #if defined(__cplusplus) && !defined(CINTERFACE)
   2963 MIDL_INTERFACE("791e8298-3ef3-4230-9880-c9bdecc42064")
   2964 IDWriteBitmapRenderTarget1 : public IDWriteBitmapRenderTarget
   2965 {
   2966     virtual DWRITE_TEXT_ANTIALIAS_MODE STDMETHODCALLTYPE GetTextAntialiasMode(
   2967         ) = 0;
   2968 
   2969     virtual HRESULT STDMETHODCALLTYPE SetTextAntialiasMode(
   2970         DWRITE_TEXT_ANTIALIAS_MODE mode) = 0;
   2971 
   2972 };
   2973 #ifdef __CRT_UUID_DECL
   2974 __CRT_UUID_DECL(IDWriteBitmapRenderTarget1, 0x791e8298, 0x3ef3, 0x4230, 0x98,0x80, 0xc9,0xbd,0xec,0xc4,0x20,0x64)
   2975 #endif
   2976 #else
   2977 typedef struct IDWriteBitmapRenderTarget1Vtbl {
   2978     BEGIN_INTERFACE
   2979 
   2980     /*** IUnknown methods ***/
   2981     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2982         IDWriteBitmapRenderTarget1 *This,
   2983         REFIID riid,
   2984         void **ppvObject);
   2985 
   2986     ULONG (STDMETHODCALLTYPE *AddRef)(
   2987         IDWriteBitmapRenderTarget1 *This);
   2988 
   2989     ULONG (STDMETHODCALLTYPE *Release)(
   2990         IDWriteBitmapRenderTarget1 *This);
   2991 
   2992     /*** IDWriteBitmapRenderTarget methods ***/
   2993     HRESULT (STDMETHODCALLTYPE *DrawGlyphRun)(
   2994         IDWriteBitmapRenderTarget1 *This,
   2995         FLOAT baselineOriginX,
   2996         FLOAT baselineOriginY,
   2997         DWRITE_MEASURING_MODE measuring_mode,
   2998         const DWRITE_GLYPH_RUN *glyph_run,
   2999         IDWriteRenderingParams *params,
   3000         COLORREF textColor,
   3001         RECT *blackbox_rect);
   3002 
   3003     HDC (STDMETHODCALLTYPE *GetMemoryDC)(
   3004         IDWriteBitmapRenderTarget1 *This);
   3005 
   3006     FLOAT (STDMETHODCALLTYPE *GetPixelsPerDip)(
   3007         IDWriteBitmapRenderTarget1 *This);
   3008 
   3009     HRESULT (STDMETHODCALLTYPE *SetPixelsPerDip)(
   3010         IDWriteBitmapRenderTarget1 *This,
   3011         FLOAT pixels_per_dip);
   3012 
   3013     HRESULT (STDMETHODCALLTYPE *GetCurrentTransform)(
   3014         IDWriteBitmapRenderTarget1 *This,
   3015         DWRITE_MATRIX *transform);
   3016 
   3017     HRESULT (STDMETHODCALLTYPE *SetCurrentTransform)(
   3018         IDWriteBitmapRenderTarget1 *This,
   3019         const DWRITE_MATRIX *transform);
   3020 
   3021     HRESULT (STDMETHODCALLTYPE *GetSize)(
   3022         IDWriteBitmapRenderTarget1 *This,
   3023         SIZE *size);
   3024 
   3025     HRESULT (STDMETHODCALLTYPE *Resize)(
   3026         IDWriteBitmapRenderTarget1 *This,
   3027         UINT32 width,
   3028         UINT32 height);
   3029 
   3030     /*** IDWriteBitmapRenderTarget1 methods ***/
   3031     DWRITE_TEXT_ANTIALIAS_MODE (STDMETHODCALLTYPE *GetTextAntialiasMode)(
   3032         IDWriteBitmapRenderTarget1 *This);
   3033 
   3034     HRESULT (STDMETHODCALLTYPE *SetTextAntialiasMode)(
   3035         IDWriteBitmapRenderTarget1 *This,
   3036         DWRITE_TEXT_ANTIALIAS_MODE mode);
   3037 
   3038     END_INTERFACE
   3039 } IDWriteBitmapRenderTarget1Vtbl;
   3040 
   3041 interface IDWriteBitmapRenderTarget1 {
   3042     CONST_VTBL IDWriteBitmapRenderTarget1Vtbl* lpVtbl;
   3043 };
   3044 
   3045 #ifdef COBJMACROS
   3046 #ifndef WIDL_C_INLINE_WRAPPERS
   3047 /*** IUnknown methods ***/
   3048 #define IDWriteBitmapRenderTarget1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3049 #define IDWriteBitmapRenderTarget1_AddRef(This) (This)->lpVtbl->AddRef(This)
   3050 #define IDWriteBitmapRenderTarget1_Release(This) (This)->lpVtbl->Release(This)
   3051 /*** IDWriteBitmapRenderTarget methods ***/
   3052 #define IDWriteBitmapRenderTarget1_DrawGlyphRun(This,baselineOriginX,baselineOriginY,measuring_mode,glyph_run,params,textColor,blackbox_rect) (This)->lpVtbl->DrawGlyphRun(This,baselineOriginX,baselineOriginY,measuring_mode,glyph_run,params,textColor,blackbox_rect)
   3053 #define IDWriteBitmapRenderTarget1_GetMemoryDC(This) (This)->lpVtbl->GetMemoryDC(This)
   3054 #define IDWriteBitmapRenderTarget1_GetPixelsPerDip(This) (This)->lpVtbl->GetPixelsPerDip(This)
   3055 #define IDWriteBitmapRenderTarget1_SetPixelsPerDip(This,pixels_per_dip) (This)->lpVtbl->SetPixelsPerDip(This,pixels_per_dip)
   3056 #define IDWriteBitmapRenderTarget1_GetCurrentTransform(This,transform) (This)->lpVtbl->GetCurrentTransform(This,transform)
   3057 #define IDWriteBitmapRenderTarget1_SetCurrentTransform(This,transform) (This)->lpVtbl->SetCurrentTransform(This,transform)
   3058 #define IDWriteBitmapRenderTarget1_GetSize(This,size) (This)->lpVtbl->GetSize(This,size)
   3059 #define IDWriteBitmapRenderTarget1_Resize(This,width,height) (This)->lpVtbl->Resize(This,width,height)
   3060 /*** IDWriteBitmapRenderTarget1 methods ***/
   3061 #define IDWriteBitmapRenderTarget1_GetTextAntialiasMode(This) (This)->lpVtbl->GetTextAntialiasMode(This)
   3062 #define IDWriteBitmapRenderTarget1_SetTextAntialiasMode(This,mode) (This)->lpVtbl->SetTextAntialiasMode(This,mode)
   3063 #else
   3064 /*** IUnknown methods ***/
   3065 static inline HRESULT IDWriteBitmapRenderTarget1_QueryInterface(IDWriteBitmapRenderTarget1* This,REFIID riid,void **ppvObject) {
   3066     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3067 }
   3068 static inline ULONG IDWriteBitmapRenderTarget1_AddRef(IDWriteBitmapRenderTarget1* This) {
   3069     return This->lpVtbl->AddRef(This);
   3070 }
   3071 static inline ULONG IDWriteBitmapRenderTarget1_Release(IDWriteBitmapRenderTarget1* This) {
   3072     return This->lpVtbl->Release(This);
   3073 }
   3074 /*** IDWriteBitmapRenderTarget methods ***/
   3075 static inline HRESULT IDWriteBitmapRenderTarget1_DrawGlyphRun(IDWriteBitmapRenderTarget1* This,FLOAT baselineOriginX,FLOAT baselineOriginY,DWRITE_MEASURING_MODE measuring_mode,const DWRITE_GLYPH_RUN *glyph_run,IDWriteRenderingParams *params,COLORREF textColor,RECT *blackbox_rect) {
   3076     return This->lpVtbl->DrawGlyphRun(This,baselineOriginX,baselineOriginY,measuring_mode,glyph_run,params,textColor,blackbox_rect);
   3077 }
   3078 static inline HDC IDWriteBitmapRenderTarget1_GetMemoryDC(IDWriteBitmapRenderTarget1* This) {
   3079     return This->lpVtbl->GetMemoryDC(This);
   3080 }
   3081 static inline FLOAT IDWriteBitmapRenderTarget1_GetPixelsPerDip(IDWriteBitmapRenderTarget1* This) {
   3082     return This->lpVtbl->GetPixelsPerDip(This);
   3083 }
   3084 static inline HRESULT IDWriteBitmapRenderTarget1_SetPixelsPerDip(IDWriteBitmapRenderTarget1* This,FLOAT pixels_per_dip) {
   3085     return This->lpVtbl->SetPixelsPerDip(This,pixels_per_dip);
   3086 }
   3087 static inline HRESULT IDWriteBitmapRenderTarget1_GetCurrentTransform(IDWriteBitmapRenderTarget1* This,DWRITE_MATRIX *transform) {
   3088     return This->lpVtbl->GetCurrentTransform(This,transform);
   3089 }
   3090 static inline HRESULT IDWriteBitmapRenderTarget1_SetCurrentTransform(IDWriteBitmapRenderTarget1* This,const DWRITE_MATRIX *transform) {
   3091     return This->lpVtbl->SetCurrentTransform(This,transform);
   3092 }
   3093 static inline HRESULT IDWriteBitmapRenderTarget1_GetSize(IDWriteBitmapRenderTarget1* This,SIZE *size) {
   3094     return This->lpVtbl->GetSize(This,size);
   3095 }
   3096 static inline HRESULT IDWriteBitmapRenderTarget1_Resize(IDWriteBitmapRenderTarget1* This,UINT32 width,UINT32 height) {
   3097     return This->lpVtbl->Resize(This,width,height);
   3098 }
   3099 /*** IDWriteBitmapRenderTarget1 methods ***/
   3100 static inline DWRITE_TEXT_ANTIALIAS_MODE IDWriteBitmapRenderTarget1_GetTextAntialiasMode(IDWriteBitmapRenderTarget1* This) {
   3101     return This->lpVtbl->GetTextAntialiasMode(This);
   3102 }
   3103 static inline HRESULT IDWriteBitmapRenderTarget1_SetTextAntialiasMode(IDWriteBitmapRenderTarget1* This,DWRITE_TEXT_ANTIALIAS_MODE mode) {
   3104     return This->lpVtbl->SetTextAntialiasMode(This,mode);
   3105 }
   3106 #endif
   3107 #endif
   3108 
   3109 #endif
   3110 
   3111 
   3112 #endif  /* __IDWriteBitmapRenderTarget1_INTERFACE_DEFINED__ */
   3113 
   3114 /* Begin additional prototypes for all interfaces */
   3115 
   3116 
   3117 /* End additional prototypes */
   3118 
   3119 #ifdef __cplusplus
   3120 }
   3121 #endif
   3122 
   3123 #endif /* __dwrite_1_h__ */