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