master
   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__
  23typedef interface IDWriteFactory1 IDWriteFactory1;
  24#ifdef __cplusplus
  25interface IDWriteFactory1;
  26#endif /* __cplusplus */
  27#endif
  28
  29#ifndef __IDWriteFontFace1_FWD_DEFINED__
  30#define __IDWriteFontFace1_FWD_DEFINED__
  31typedef interface IDWriteFontFace1 IDWriteFontFace1;
  32#ifdef __cplusplus
  33interface IDWriteFontFace1;
  34#endif /* __cplusplus */
  35#endif
  36
  37#ifndef __IDWriteFont1_FWD_DEFINED__
  38#define __IDWriteFont1_FWD_DEFINED__
  39typedef interface IDWriteFont1 IDWriteFont1;
  40#ifdef __cplusplus
  41interface IDWriteFont1;
  42#endif /* __cplusplus */
  43#endif
  44
  45#ifndef __IDWriteRenderingParams1_FWD_DEFINED__
  46#define __IDWriteRenderingParams1_FWD_DEFINED__
  47typedef interface IDWriteRenderingParams1 IDWriteRenderingParams1;
  48#ifdef __cplusplus
  49interface IDWriteRenderingParams1;
  50#endif /* __cplusplus */
  51#endif
  52
  53#ifndef __IDWriteTextAnalyzer1_FWD_DEFINED__
  54#define __IDWriteTextAnalyzer1_FWD_DEFINED__
  55typedef interface IDWriteTextAnalyzer1 IDWriteTextAnalyzer1;
  56#ifdef __cplusplus
  57interface IDWriteTextAnalyzer1;
  58#endif /* __cplusplus */
  59#endif
  60
  61#ifndef __IDWriteTextAnalysisSource1_FWD_DEFINED__
  62#define __IDWriteTextAnalysisSource1_FWD_DEFINED__
  63typedef interface IDWriteTextAnalysisSource1 IDWriteTextAnalysisSource1;
  64#ifdef __cplusplus
  65interface IDWriteTextAnalysisSource1;
  66#endif /* __cplusplus */
  67#endif
  68
  69#ifndef __IDWriteTextAnalysisSink1_FWD_DEFINED__
  70#define __IDWriteTextAnalysisSink1_FWD_DEFINED__
  71typedef interface IDWriteTextAnalysisSink1 IDWriteTextAnalysisSink1;
  72#ifdef __cplusplus
  73interface IDWriteTextAnalysisSink1;
  74#endif /* __cplusplus */
  75#endif
  76
  77#ifndef __IDWriteTextLayout1_FWD_DEFINED__
  78#define __IDWriteTextLayout1_FWD_DEFINED__
  79typedef interface IDWriteTextLayout1 IDWriteTextLayout1;
  80#ifdef __cplusplus
  81interface IDWriteTextLayout1;
  82#endif /* __cplusplus */
  83#endif
  84
  85#ifndef __IDWriteBitmapRenderTarget1_FWD_DEFINED__
  86#define __IDWriteBitmapRenderTarget1_FWD_DEFINED__
  87typedef interface IDWriteBitmapRenderTarget1 IDWriteBitmapRenderTarget1;
  88#ifdef __cplusplus
  89interface IDWriteBitmapRenderTarget1;
  90#endif /* __cplusplus */
  91#endif
  92
  93/* Headers for imported files */
  94
  95#include <dwrite.h>
  96
  97#ifdef __cplusplus
  98extern "C" {
  99#endif
 100
 101typedef 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;
 110typedef 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;
 131typedef 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;
 146typedef 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;
 158typedef 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;
 174typedef 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;
 187typedef 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;
 208typedef 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;
 226typedef 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;
 242typedef 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;
 254typedef 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;
 266typedef 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;
 272typedef 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;
 281typedef 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;
 294typedef 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;
 310typedef 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;
 326typedef 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;
 335typedef 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;
 350typedef 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;
 362typedef 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;
 372typedef 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;
 383typedef 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;
 401typedef 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;
 409typedef 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;
 424typedef 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;
 436typedef enum DWRITE_OUTLINE_THRESHOLD {
 437    DWRITE_OUTLINE_THRESHOLD_ANTIALIASED = 0,
 438    DWRITE_OUTLINE_THRESHOLD_ALIASED = 1
 439} DWRITE_OUTLINE_THRESHOLD;
 440typedef 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;
 451typedef enum DWRITE_VERTICAL_GLYPH_ORIENTATION {
 452    DWRITE_VERTICAL_GLYPH_ORIENTATION_DEFAULT = 0,
 453    DWRITE_VERTICAL_GLYPH_ORIENTATION_STACKED = 1
 454} DWRITE_VERTICAL_GLYPH_ORIENTATION;
 455typedef 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;
 461typedef 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;
 486typedef struct DWRITE_CARET_METRICS {
 487    INT16 slopeRise;
 488    INT16 slopeRun;
 489    INT16 offset;
 490} DWRITE_CARET_METRICS;
 491typedef 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;
 543typedef struct DWRITE_UNICODE_RANGE {
 544    UINT32 first;
 545    UINT32 last;
 546} DWRITE_UNICODE_RANGE;
 547typedef 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;
 561typedef 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__
 575typedef interface IDWriteTextAnalysisSource1 IDWriteTextAnalysisSource1;
 576#ifdef __cplusplus
 577interface IDWriteTextAnalysisSource1;
 578#endif /* __cplusplus */
 579#endif
 580
 581#ifndef __IDWriteTextAnalysisSink1_FWD_DEFINED__
 582#define __IDWriteTextAnalysisSink1_FWD_DEFINED__
 583typedef interface IDWriteTextAnalysisSink1 IDWriteTextAnalysisSink1;
 584#ifdef __cplusplus
 585interface IDWriteTextAnalysisSink1;
 586#endif /* __cplusplus */
 587#endif
 588
 589#ifndef __IDWriteRenderingParams1_FWD_DEFINED__
 590#define __IDWriteRenderingParams1_FWD_DEFINED__
 591typedef interface IDWriteRenderingParams1 IDWriteRenderingParams1;
 592#ifdef __cplusplus
 593interface IDWriteRenderingParams1;
 594#endif /* __cplusplus */
 595#endif
 596
 597/*****************************************************************************
 598 * IDWriteFactory1 interface
 599 */
 600#ifndef __IDWriteFactory1_INTERFACE_DEFINED__
 601#define __IDWriteFactory1_INTERFACE_DEFINED__
 602
 603DEFINE_GUID(IID_IDWriteFactory1, 0x30572f99, 0xdac6, 0x41db, 0xa1,0x6e, 0x04,0x86,0x30,0x7e,0x60,0x6a);
 604#if defined(__cplusplus) && !defined(CINTERFACE)
 605MIDL_INTERFACE("30572f99-dac6-41db-a16e-0486307e606a")
 606IDWriteFactory1 : 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
 626typedef 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
 796interface 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 ***/
 832static inline HRESULT IDWriteFactory1_QueryInterface(IDWriteFactory1* This,REFIID riid,void **ppvObject) {
 833    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 834}
 835static inline ULONG IDWriteFactory1_AddRef(IDWriteFactory1* This) {
 836    return This->lpVtbl->AddRef(This);
 837}
 838static inline ULONG IDWriteFactory1_Release(IDWriteFactory1* This) {
 839    return This->lpVtbl->Release(This);
 840}
 841/*** IDWriteFactory methods ***/
 842static inline HRESULT IDWriteFactory1_GetSystemFontCollection(IDWriteFactory1* This,IDWriteFontCollection **collection,WINBOOL check_for_updates) {
 843    return This->lpVtbl->GetSystemFontCollection(This,collection,check_for_updates);
 844}
 845static 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}
 848static inline HRESULT IDWriteFactory1_RegisterFontCollectionLoader(IDWriteFactory1* This,IDWriteFontCollectionLoader *loader) {
 849    return This->lpVtbl->RegisterFontCollectionLoader(This,loader);
 850}
 851static inline HRESULT IDWriteFactory1_UnregisterFontCollectionLoader(IDWriteFactory1* This,IDWriteFontCollectionLoader *loader) {
 852    return This->lpVtbl->UnregisterFontCollectionLoader(This,loader);
 853}
 854static 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}
 857static 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}
 860static 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}
 863static inline HRESULT IDWriteFactory1_CreateRenderingParams(IDWriteFactory1* This,IDWriteRenderingParams **params) {
 864    return This->lpVtbl->CreateRenderingParams(This,params);
 865}
 866static inline HRESULT IDWriteFactory1_CreateMonitorRenderingParams(IDWriteFactory1* This,HMONITOR monitor,IDWriteRenderingParams **params) {
 867    return This->lpVtbl->CreateMonitorRenderingParams(This,monitor,params);
 868}
 869static inline HRESULT IDWriteFactory1_RegisterFontFileLoader(IDWriteFactory1* This,IDWriteFontFileLoader *loader) {
 870    return This->lpVtbl->RegisterFontFileLoader(This,loader);
 871}
 872static inline HRESULT IDWriteFactory1_UnregisterFontFileLoader(IDWriteFactory1* This,IDWriteFontFileLoader *loader) {
 873    return This->lpVtbl->UnregisterFontFileLoader(This,loader);
 874}
 875static 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}
 878static inline HRESULT IDWriteFactory1_CreateTypography(IDWriteFactory1* This,IDWriteTypography **typography) {
 879    return This->lpVtbl->CreateTypography(This,typography);
 880}
 881static inline HRESULT IDWriteFactory1_GetGdiInterop(IDWriteFactory1* This,IDWriteGdiInterop **gdi_interop) {
 882    return This->lpVtbl->GetGdiInterop(This,gdi_interop);
 883}
 884static 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}
 887static 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}
 890static inline HRESULT IDWriteFactory1_CreateEllipsisTrimmingSign(IDWriteFactory1* This,IDWriteTextFormat *format,IDWriteInlineObject **trimming_sign) {
 891    return This->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign);
 892}
 893static inline HRESULT IDWriteFactory1_CreateTextAnalyzer(IDWriteFactory1* This,IDWriteTextAnalyzer **analyzer) {
 894    return This->lpVtbl->CreateTextAnalyzer(This,analyzer);
 895}
 896static 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}
 899static 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 ***/
 903static inline HRESULT IDWriteFactory1_GetEudcFontCollection(IDWriteFactory1* This,IDWriteFontCollection **collection,WINBOOL check_for_updates) {
 904    return This->lpVtbl->GetEudcFontCollection(This,collection,check_for_updates);
 905}
 906static 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
 923DEFINE_GUID(IID_IDWriteFontFace1, 0xa71efdb4, 0x9fdb, 0x4838, 0xad,0x90, 0xcf,0xc3,0xbe,0x8c,0x3d,0xaf);
 924#if defined(__cplusplus) && !defined(CINTERFACE)
 925MIDL_INTERFACE("a71efdb4-9fdb-4838-ad90-cfc3be8c3daf")
 926IDWriteFontFace1 : 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
 995typedef 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
1172interface 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 ***/
1210static inline HRESULT IDWriteFontFace1_QueryInterface(IDWriteFontFace1* This,REFIID riid,void **ppvObject) {
1211    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1212}
1213static inline ULONG IDWriteFontFace1_AddRef(IDWriteFontFace1* This) {
1214    return This->lpVtbl->AddRef(This);
1215}
1216static inline ULONG IDWriteFontFace1_Release(IDWriteFontFace1* This) {
1217    return This->lpVtbl->Release(This);
1218}
1219/*** IDWriteFontFace methods ***/
1220static inline DWRITE_FONT_FACE_TYPE IDWriteFontFace1_GetType(IDWriteFontFace1* This) {
1221    return This->lpVtbl->GetType(This);
1222}
1223static inline HRESULT IDWriteFontFace1_GetFiles(IDWriteFontFace1* This,UINT32 *number_of_files,IDWriteFontFile **fontfiles) {
1224    return This->lpVtbl->GetFiles(This,number_of_files,fontfiles);
1225}
1226static inline UINT32 IDWriteFontFace1_GetIndex(IDWriteFontFace1* This) {
1227    return This->lpVtbl->GetIndex(This);
1228}
1229static inline DWRITE_FONT_SIMULATIONS IDWriteFontFace1_GetSimulations(IDWriteFontFace1* This) {
1230    return This->lpVtbl->GetSimulations(This);
1231}
1232static inline WINBOOL IDWriteFontFace1_IsSymbolFont(IDWriteFontFace1* This) {
1233    return This->lpVtbl->IsSymbolFont(This);
1234}
1235static inline UINT16 IDWriteFontFace1_GetGlyphCount(IDWriteFontFace1* This) {
1236    return This->lpVtbl->GetGlyphCount(This);
1237}
1238static 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}
1241static 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}
1244static 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}
1247static inline void IDWriteFontFace1_ReleaseFontTable(IDWriteFontFace1* This,void *table_context) {
1248    This->lpVtbl->ReleaseFontTable(This,table_context);
1249}
1250static 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}
1253static 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 ***/
1257static inline void IDWriteFontFace1_GetMetrics(IDWriteFontFace1* This,DWRITE_FONT_METRICS1 *metrics) {
1258    This->lpVtbl->IDWriteFontFace1_GetMetrics(This,metrics);
1259}
1260static 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}
1263static inline void IDWriteFontFace1_GetCaretMetrics(IDWriteFontFace1* This,DWRITE_CARET_METRICS *metrics) {
1264    This->lpVtbl->GetCaretMetrics(This,metrics);
1265}
1266static 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}
1269static inline WINBOOL IDWriteFontFace1_IsMonospacedFont(IDWriteFontFace1* This) {
1270    return This->lpVtbl->IsMonospacedFont(This);
1271}
1272static 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}
1275static 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}
1278static 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}
1281static inline WINBOOL IDWriteFontFace1_HasKerningPairs(IDWriteFontFace1* This) {
1282    return This->lpVtbl->HasKerningPairs(This);
1283}
1284static 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}
1287static 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}
1290static 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
1307DEFINE_GUID(IID_IDWriteFont1, 0xacd16696, 0x8c14, 0x4f5d, 0x87,0x7e, 0xfe,0x3f,0xc1,0xd3,0x27,0x38);
1308#if defined(__cplusplus) && !defined(CINTERFACE)
1309MIDL_INTERFACE("acd16696-8c14-4f5d-877e-fe3fc1d32738")
1310IDWriteFont1 : 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
1331typedef 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
1410interface 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 ***/
1438static inline HRESULT IDWriteFont1_QueryInterface(IDWriteFont1* This,REFIID riid,void **ppvObject) {
1439    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1440}
1441static inline ULONG IDWriteFont1_AddRef(IDWriteFont1* This) {
1442    return This->lpVtbl->AddRef(This);
1443}
1444static inline ULONG IDWriteFont1_Release(IDWriteFont1* This) {
1445    return This->lpVtbl->Release(This);
1446}
1447/*** IDWriteFont methods ***/
1448static inline HRESULT IDWriteFont1_GetFontFamily(IDWriteFont1* This,IDWriteFontFamily **family) {
1449    return This->lpVtbl->GetFontFamily(This,family);
1450}
1451static inline DWRITE_FONT_WEIGHT IDWriteFont1_GetWeight(IDWriteFont1* This) {
1452    return This->lpVtbl->GetWeight(This);
1453}
1454static inline DWRITE_FONT_STRETCH IDWriteFont1_GetStretch(IDWriteFont1* This) {
1455    return This->lpVtbl->GetStretch(This);
1456}
1457static inline DWRITE_FONT_STYLE IDWriteFont1_GetStyle(IDWriteFont1* This) {
1458    return This->lpVtbl->GetStyle(This);
1459}
1460static inline WINBOOL IDWriteFont1_IsSymbolFont(IDWriteFont1* This) {
1461    return This->lpVtbl->IsSymbolFont(This);
1462}
1463static inline HRESULT IDWriteFont1_GetFaceNames(IDWriteFont1* This,IDWriteLocalizedStrings **names) {
1464    return This->lpVtbl->GetFaceNames(This,names);
1465}
1466static 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}
1469static inline DWRITE_FONT_SIMULATIONS IDWriteFont1_GetSimulations(IDWriteFont1* This) {
1470    return This->lpVtbl->GetSimulations(This);
1471}
1472static inline HRESULT IDWriteFont1_HasCharacter(IDWriteFont1* This,UINT32 value,WINBOOL *exists) {
1473    return This->lpVtbl->HasCharacter(This,value,exists);
1474}
1475static inline HRESULT IDWriteFont1_CreateFontFace(IDWriteFont1* This,IDWriteFontFace **face) {
1476    return This->lpVtbl->CreateFontFace(This,face);
1477}
1478/*** IDWriteFont1 methods ***/
1479static inline void IDWriteFont1_GetMetrics(IDWriteFont1* This,DWRITE_FONT_METRICS1 *metrics) {
1480    This->lpVtbl->IDWriteFont1_GetMetrics(This,metrics);
1481}
1482static inline void IDWriteFont1_GetPanose(IDWriteFont1* This,DWRITE_PANOSE *panose) {
1483    This->lpVtbl->GetPanose(This,panose);
1484}
1485static 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}
1488static 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
1505DEFINE_GUID(IID_IDWriteRenderingParams1, 0x94413cf4, 0xa6fc, 0x4248, 0x8b,0x50, 0x66,0x74,0x34,0x8f,0xca,0xd3);
1506#if defined(__cplusplus) && !defined(CINTERFACE)
1507MIDL_INTERFACE("94413cf4-a6fc-4248-8b50-6674348fcad3")
1508IDWriteRenderingParams1 : 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
1518typedef 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
1556interface 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 ***/
1576static inline HRESULT IDWriteRenderingParams1_QueryInterface(IDWriteRenderingParams1* This,REFIID riid,void **ppvObject) {
1577    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1578}
1579static inline ULONG IDWriteRenderingParams1_AddRef(IDWriteRenderingParams1* This) {
1580    return This->lpVtbl->AddRef(This);
1581}
1582static inline ULONG IDWriteRenderingParams1_Release(IDWriteRenderingParams1* This) {
1583    return This->lpVtbl->Release(This);
1584}
1585/*** IDWriteRenderingParams methods ***/
1586static inline FLOAT IDWriteRenderingParams1_GetGamma(IDWriteRenderingParams1* This) {
1587    return This->lpVtbl->GetGamma(This);
1588}
1589static inline FLOAT IDWriteRenderingParams1_GetEnhancedContrast(IDWriteRenderingParams1* This) {
1590    return This->lpVtbl->GetEnhancedContrast(This);
1591}
1592static inline FLOAT IDWriteRenderingParams1_GetClearTypeLevel(IDWriteRenderingParams1* This) {
1593    return This->lpVtbl->GetClearTypeLevel(This);
1594}
1595static inline DWRITE_PIXEL_GEOMETRY IDWriteRenderingParams1_GetPixelGeometry(IDWriteRenderingParams1* This) {
1596    return This->lpVtbl->GetPixelGeometry(This);
1597}
1598static inline DWRITE_RENDERING_MODE IDWriteRenderingParams1_GetRenderingMode(IDWriteRenderingParams1* This) {
1599    return This->lpVtbl->GetRenderingMode(This);
1600}
1601/*** IDWriteRenderingParams1 methods ***/
1602static 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
1619DEFINE_GUID(IID_IDWriteTextAnalyzer1, 0x80dad800, 0xe21f, 0x4e83, 0x96,0xce, 0xbf,0xcc,0xe5,0x00,0xdb,0x7c);
1620#if defined(__cplusplus) && !defined(CINTERFACE)
1621MIDL_INTERFACE("80dad800-e21f-4e83-96ce-bfcce500db7c")
1622IDWriteTextAnalyzer1 : 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
1714typedef 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
1921interface 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 ***/
1951static inline HRESULT IDWriteTextAnalyzer1_QueryInterface(IDWriteTextAnalyzer1* This,REFIID riid,void **ppvObject) {
1952    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1953}
1954static inline ULONG IDWriteTextAnalyzer1_AddRef(IDWriteTextAnalyzer1* This) {
1955    return This->lpVtbl->AddRef(This);
1956}
1957static inline ULONG IDWriteTextAnalyzer1_Release(IDWriteTextAnalyzer1* This) {
1958    return This->lpVtbl->Release(This);
1959}
1960/*** IDWriteTextAnalyzer methods ***/
1961static 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}
1964static 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}
1967static 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}
1970static 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}
1973static 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}
1976static 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}
1979static 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 ***/
1983static 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}
1986static 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}
1989static 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}
1992static 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}
1995static inline HRESULT IDWriteTextAnalyzer1_GetScriptProperties(IDWriteTextAnalyzer1* This,DWRITE_SCRIPT_ANALYSIS sa,DWRITE_SCRIPT_PROPERTIES *props) {
1996    return This->lpVtbl->GetScriptProperties(This,sa,props);
1997}
1998static 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}
2001static 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}
2004static 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}
2007static 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
2024DEFINE_GUID(IID_IDWriteTextAnalysisSource1, 0x639cfad8, 0x0fb4, 0x4b21, 0xa5,0x8a, 0x06,0x79,0x20,0x12,0x00,0x09);
2025#if defined(__cplusplus) && !defined(CINTERFACE)
2026MIDL_INTERFACE("639cfad8-0fb4-4b21-a58a-067920120009")
2027IDWriteTextAnalysisSource1 : 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
2040typedef 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
2094interface 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 ***/
2114static inline HRESULT IDWriteTextAnalysisSource1_QueryInterface(IDWriteTextAnalysisSource1* This,REFIID riid,void **ppvObject) {
2115    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2116}
2117static inline ULONG IDWriteTextAnalysisSource1_AddRef(IDWriteTextAnalysisSource1* This) {
2118    return This->lpVtbl->AddRef(This);
2119}
2120static inline ULONG IDWriteTextAnalysisSource1_Release(IDWriteTextAnalysisSource1* This) {
2121    return This->lpVtbl->Release(This);
2122}
2123/*** IDWriteTextAnalysisSource methods ***/
2124static 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}
2127static 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}
2130static inline DWRITE_READING_DIRECTION IDWriteTextAnalysisSource1_GetParagraphReadingDirection(IDWriteTextAnalysisSource1* This) {
2131    return This->lpVtbl->GetParagraphReadingDirection(This);
2132}
2133static 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}
2136static 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 ***/
2140static 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
2157DEFINE_GUID(IID_IDWriteTextAnalysisSink1, 0xb0d941a0, 0x85e7, 0x4d8b, 0x9f,0xd3, 0x5c,0xed,0x99,0x34,0x48,0x2a);
2158#if defined(__cplusplus) && !defined(CINTERFACE)
2159MIDL_INTERFACE("b0d941a0-85e7-4d8b-9fd3-5ced9934482a")
2160IDWriteTextAnalysisSink1 : 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
2175typedef 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
2229interface 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 ***/
2248static inline HRESULT IDWriteTextAnalysisSink1_QueryInterface(IDWriteTextAnalysisSink1* This,REFIID riid,void **ppvObject) {
2249    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2250}
2251static inline ULONG IDWriteTextAnalysisSink1_AddRef(IDWriteTextAnalysisSink1* This) {
2252    return This->lpVtbl->AddRef(This);
2253}
2254static inline ULONG IDWriteTextAnalysisSink1_Release(IDWriteTextAnalysisSink1* This) {
2255    return This->lpVtbl->Release(This);
2256}
2257/*** IDWriteTextAnalysisSink methods ***/
2258static 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}
2261static 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}
2264static 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}
2267static 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 ***/
2271static 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
2288DEFINE_GUID(IID_IDWriteTextLayout1, 0x9064d822, 0x80a7, 0x465c, 0xa9,0x86, 0xdf,0x65,0xf7,0x8b,0x8f,0xeb);
2289#if defined(__cplusplus) && !defined(CINTERFACE)
2290MIDL_INTERFACE("9064d822-80a7-465c-a986-df65f78b8feb")
2291IDWriteTextLayout1 : 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
2320typedef 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
2680interface 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 ***/
2754static inline HRESULT IDWriteTextLayout1_QueryInterface(IDWriteTextLayout1* This,REFIID riid,void **ppvObject) {
2755    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2756}
2757static inline ULONG IDWriteTextLayout1_AddRef(IDWriteTextLayout1* This) {
2758    return This->lpVtbl->AddRef(This);
2759}
2760static inline ULONG IDWriteTextLayout1_Release(IDWriteTextLayout1* This) {
2761    return This->lpVtbl->Release(This);
2762}
2763/*** IDWriteTextFormat methods ***/
2764static inline HRESULT IDWriteTextLayout1_SetTextAlignment(IDWriteTextLayout1* This,DWRITE_TEXT_ALIGNMENT alignment) {
2765    return This->lpVtbl->SetTextAlignment(This,alignment);
2766}
2767static inline HRESULT IDWriteTextLayout1_SetParagraphAlignment(IDWriteTextLayout1* This,DWRITE_PARAGRAPH_ALIGNMENT alignment) {
2768    return This->lpVtbl->SetParagraphAlignment(This,alignment);
2769}
2770static inline HRESULT IDWriteTextLayout1_SetWordWrapping(IDWriteTextLayout1* This,DWRITE_WORD_WRAPPING wrapping) {
2771    return This->lpVtbl->SetWordWrapping(This,wrapping);
2772}
2773static inline HRESULT IDWriteTextLayout1_SetReadingDirection(IDWriteTextLayout1* This,DWRITE_READING_DIRECTION direction) {
2774    return This->lpVtbl->SetReadingDirection(This,direction);
2775}
2776static inline HRESULT IDWriteTextLayout1_SetFlowDirection(IDWriteTextLayout1* This,DWRITE_FLOW_DIRECTION direction) {
2777    return This->lpVtbl->SetFlowDirection(This,direction);
2778}
2779static inline HRESULT IDWriteTextLayout1_SetIncrementalTabStop(IDWriteTextLayout1* This,FLOAT tabstop) {
2780    return This->lpVtbl->SetIncrementalTabStop(This,tabstop);
2781}
2782static inline HRESULT IDWriteTextLayout1_SetTrimming(IDWriteTextLayout1* This,const DWRITE_TRIMMING *trimming,IDWriteInlineObject *trimming_sign) {
2783    return This->lpVtbl->SetTrimming(This,trimming,trimming_sign);
2784}
2785static 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}
2788static inline DWRITE_TEXT_ALIGNMENT IDWriteTextLayout1_GetTextAlignment(IDWriteTextLayout1* This) {
2789    return This->lpVtbl->GetTextAlignment(This);
2790}
2791static inline DWRITE_PARAGRAPH_ALIGNMENT IDWriteTextLayout1_GetParagraphAlignment(IDWriteTextLayout1* This) {
2792    return This->lpVtbl->GetParagraphAlignment(This);
2793}
2794static inline DWRITE_WORD_WRAPPING IDWriteTextLayout1_GetWordWrapping(IDWriteTextLayout1* This) {
2795    return This->lpVtbl->GetWordWrapping(This);
2796}
2797static inline DWRITE_READING_DIRECTION IDWriteTextLayout1_GetReadingDirection(IDWriteTextLayout1* This) {
2798    return This->lpVtbl->GetReadingDirection(This);
2799}
2800static inline DWRITE_FLOW_DIRECTION IDWriteTextLayout1_GetFlowDirection(IDWriteTextLayout1* This) {
2801    return This->lpVtbl->GetFlowDirection(This);
2802}
2803static inline FLOAT IDWriteTextLayout1_GetIncrementalTabStop(IDWriteTextLayout1* This) {
2804    return This->lpVtbl->GetIncrementalTabStop(This);
2805}
2806static inline HRESULT IDWriteTextLayout1_GetTrimming(IDWriteTextLayout1* This,DWRITE_TRIMMING *options,IDWriteInlineObject **trimming_sign) {
2807    return This->lpVtbl->GetTrimming(This,options,trimming_sign);
2808}
2809static 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 ***/
2813static inline HRESULT IDWriteTextLayout1_SetMaxWidth(IDWriteTextLayout1* This,FLOAT maxWidth) {
2814    return This->lpVtbl->SetMaxWidth(This,maxWidth);
2815}
2816static inline HRESULT IDWriteTextLayout1_SetMaxHeight(IDWriteTextLayout1* This,FLOAT maxHeight) {
2817    return This->lpVtbl->SetMaxHeight(This,maxHeight);
2818}
2819static inline HRESULT IDWriteTextLayout1_SetFontCollection(IDWriteTextLayout1* This,IDWriteFontCollection *collection,DWRITE_TEXT_RANGE range) {
2820    return This->lpVtbl->SetFontCollection(This,collection,range);
2821}
2822static inline HRESULT IDWriteTextLayout1_SetFontFamilyName(IDWriteTextLayout1* This,const WCHAR *name,DWRITE_TEXT_RANGE range) {
2823    return This->lpVtbl->SetFontFamilyName(This,name,range);
2824}
2825static inline HRESULT IDWriteTextLayout1_SetFontWeight(IDWriteTextLayout1* This,DWRITE_FONT_WEIGHT weight,DWRITE_TEXT_RANGE range) {
2826    return This->lpVtbl->SetFontWeight(This,weight,range);
2827}
2828static inline HRESULT IDWriteTextLayout1_SetFontStyle(IDWriteTextLayout1* This,DWRITE_FONT_STYLE style,DWRITE_TEXT_RANGE range) {
2829    return This->lpVtbl->SetFontStyle(This,style,range);
2830}
2831static inline HRESULT IDWriteTextLayout1_SetFontStretch(IDWriteTextLayout1* This,DWRITE_FONT_STRETCH stretch,DWRITE_TEXT_RANGE range) {
2832    return This->lpVtbl->SetFontStretch(This,stretch,range);
2833}
2834static inline HRESULT IDWriteTextLayout1_SetFontSize(IDWriteTextLayout1* This,FLOAT size,DWRITE_TEXT_RANGE range) {
2835    return This->lpVtbl->SetFontSize(This,size,range);
2836}
2837static inline HRESULT IDWriteTextLayout1_SetUnderline(IDWriteTextLayout1* This,WINBOOL underline,DWRITE_TEXT_RANGE range) {
2838    return This->lpVtbl->SetUnderline(This,underline,range);
2839}
2840static inline HRESULT IDWriteTextLayout1_SetStrikethrough(IDWriteTextLayout1* This,WINBOOL strikethrough,DWRITE_TEXT_RANGE range) {
2841    return This->lpVtbl->SetStrikethrough(This,strikethrough,range);
2842}
2843static inline HRESULT IDWriteTextLayout1_SetDrawingEffect(IDWriteTextLayout1* This,IUnknown *effect,DWRITE_TEXT_RANGE range) {
2844    return This->lpVtbl->SetDrawingEffect(This,effect,range);
2845}
2846static inline HRESULT IDWriteTextLayout1_SetInlineObject(IDWriteTextLayout1* This,IDWriteInlineObject *object,DWRITE_TEXT_RANGE range) {
2847    return This->lpVtbl->SetInlineObject(This,object,range);
2848}
2849static inline HRESULT IDWriteTextLayout1_SetTypography(IDWriteTextLayout1* This,IDWriteTypography *typography,DWRITE_TEXT_RANGE range) {
2850    return This->lpVtbl->SetTypography(This,typography,range);
2851}
2852static inline HRESULT IDWriteTextLayout1_SetLocaleName(IDWriteTextLayout1* This,const WCHAR *locale,DWRITE_TEXT_RANGE range) {
2853    return This->lpVtbl->SetLocaleName(This,locale,range);
2854}
2855static inline FLOAT IDWriteTextLayout1_GetMaxWidth(IDWriteTextLayout1* This) {
2856    return This->lpVtbl->GetMaxWidth(This);
2857}
2858static inline FLOAT IDWriteTextLayout1_GetMaxHeight(IDWriteTextLayout1* This) {
2859    return This->lpVtbl->GetMaxHeight(This);
2860}
2861static 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}
2864static 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}
2867static 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}
2870static 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}
2873static 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}
2876static 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}
2879static 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}
2882static 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}
2885static 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}
2888static inline HRESULT IDWriteTextLayout1_GetDrawingEffect(IDWriteTextLayout1* This,UINT32 position,IUnknown **effect,DWRITE_TEXT_RANGE *range) {
2889    return This->lpVtbl->GetDrawingEffect(This,position,effect,range);
2890}
2891static inline HRESULT IDWriteTextLayout1_GetInlineObject(IDWriteTextLayout1* This,UINT32 position,IDWriteInlineObject **object,DWRITE_TEXT_RANGE *range) {
2892    return This->lpVtbl->GetInlineObject(This,position,object,range);
2893}
2894static inline HRESULT IDWriteTextLayout1_GetTypography(IDWriteTextLayout1* This,UINT32 position,IDWriteTypography **typography,DWRITE_TEXT_RANGE *range) {
2895    return This->lpVtbl->GetTypography(This,position,typography,range);
2896}
2897static 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}
2900static 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}
2903static 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}
2906static 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}
2909static inline HRESULT IDWriteTextLayout1_GetMetrics(IDWriteTextLayout1* This,DWRITE_TEXT_METRICS *metrics) {
2910    return This->lpVtbl->GetMetrics(This,metrics);
2911}
2912static inline HRESULT IDWriteTextLayout1_GetOverhangMetrics(IDWriteTextLayout1* This,DWRITE_OVERHANG_METRICS *overhangs) {
2913    return This->lpVtbl->GetOverhangMetrics(This,overhangs);
2914}
2915static 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}
2918static inline HRESULT IDWriteTextLayout1_DetermineMinWidth(IDWriteTextLayout1* This,FLOAT *min_width) {
2919    return This->lpVtbl->DetermineMinWidth(This,min_width);
2920}
2921static 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}
2924static 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}
2927static 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 ***/
2931static 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}
2934static 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}
2937static 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}
2940static 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
2951typedef 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
2961DEFINE_GUID(IID_IDWriteBitmapRenderTarget1, 0x791e8298, 0x3ef3, 0x4230, 0x98,0x80, 0xc9,0xbd,0xec,0xc4,0x20,0x64);
2962#if defined(__cplusplus) && !defined(CINTERFACE)
2963MIDL_INTERFACE("791e8298-3ef3-4230-9880-c9bdecc42064")
2964IDWriteBitmapRenderTarget1 : 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
2977typedef 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
3041interface 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 ***/
3065static inline HRESULT IDWriteBitmapRenderTarget1_QueryInterface(IDWriteBitmapRenderTarget1* This,REFIID riid,void **ppvObject) {
3066    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3067}
3068static inline ULONG IDWriteBitmapRenderTarget1_AddRef(IDWriteBitmapRenderTarget1* This) {
3069    return This->lpVtbl->AddRef(This);
3070}
3071static inline ULONG IDWriteBitmapRenderTarget1_Release(IDWriteBitmapRenderTarget1* This) {
3072    return This->lpVtbl->Release(This);
3073}
3074/*** IDWriteBitmapRenderTarget methods ***/
3075static 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}
3078static inline HDC IDWriteBitmapRenderTarget1_GetMemoryDC(IDWriteBitmapRenderTarget1* This) {
3079    return This->lpVtbl->GetMemoryDC(This);
3080}
3081static inline FLOAT IDWriteBitmapRenderTarget1_GetPixelsPerDip(IDWriteBitmapRenderTarget1* This) {
3082    return This->lpVtbl->GetPixelsPerDip(This);
3083}
3084static inline HRESULT IDWriteBitmapRenderTarget1_SetPixelsPerDip(IDWriteBitmapRenderTarget1* This,FLOAT pixels_per_dip) {
3085    return This->lpVtbl->SetPixelsPerDip(This,pixels_per_dip);
3086}
3087static inline HRESULT IDWriteBitmapRenderTarget1_GetCurrentTransform(IDWriteBitmapRenderTarget1* This,DWRITE_MATRIX *transform) {
3088    return This->lpVtbl->GetCurrentTransform(This,transform);
3089}
3090static inline HRESULT IDWriteBitmapRenderTarget1_SetCurrentTransform(IDWriteBitmapRenderTarget1* This,const DWRITE_MATRIX *transform) {
3091    return This->lpVtbl->SetCurrentTransform(This,transform);
3092}
3093static inline HRESULT IDWriteBitmapRenderTarget1_GetSize(IDWriteBitmapRenderTarget1* This,SIZE *size) {
3094    return This->lpVtbl->GetSize(This,size);
3095}
3096static inline HRESULT IDWriteBitmapRenderTarget1_Resize(IDWriteBitmapRenderTarget1* This,UINT32 width,UINT32 height) {
3097    return This->lpVtbl->Resize(This,width,height);
3098}
3099/*** IDWriteBitmapRenderTarget1 methods ***/
3100static inline DWRITE_TEXT_ANTIALIAS_MODE IDWriteBitmapRenderTarget1_GetTextAntialiasMode(IDWriteBitmapRenderTarget1* This) {
3101    return This->lpVtbl->GetTextAntialiasMode(This);
3102}
3103static 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__ */