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