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