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