1 /*** Autogenerated by WIDL 6.4 from include/dwrite_1.idl - Do not edit ***/
2 
3 #ifdef _WIN32
4 #ifndef __REQUIRED_RPCNDR_H_VERSION__
5 #define __REQUIRED_RPCNDR_H_VERSION__ 475
6 #endif
7 #include <rpc.h>
8 #include <rpcndr.h>
9 #endif
10 
11 #ifndef COM_NO_WINDOWS_H
12 #include <windows.h>
13 #include <ole2.h>
14 #endif
15 
16 #ifndef __dwrite_1_h__
17 #define __dwrite_1_h__
18 
19 /* Forward declarations */
20 
21 #ifndef __IDWriteFactory1_FWD_DEFINED__
22 #define __IDWriteFactory1_FWD_DEFINED__
23 typedef interface IDWriteFactory1 IDWriteFactory1;
24 #ifdef __cplusplus
25 interface IDWriteFactory1;
26 #endif /* __cplusplus */
27 #endif
28 
29 #ifndef __IDWriteFontFace1_FWD_DEFINED__
30 #define __IDWriteFontFace1_FWD_DEFINED__
31 typedef interface IDWriteFontFace1 IDWriteFontFace1;
32 #ifdef __cplusplus
33 interface IDWriteFontFace1;
34 #endif /* __cplusplus */
35 #endif
36 
37 #ifndef __IDWriteFont1_FWD_DEFINED__
38 #define __IDWriteFont1_FWD_DEFINED__
39 typedef interface IDWriteFont1 IDWriteFont1;
40 #ifdef __cplusplus
41 interface IDWriteFont1;
42 #endif /* __cplusplus */
43 #endif
44 
45 #ifndef __IDWriteRenderingParams1_FWD_DEFINED__
46 #define __IDWriteRenderingParams1_FWD_DEFINED__
47 typedef interface IDWriteRenderingParams1 IDWriteRenderingParams1;
48 #ifdef __cplusplus
49 interface IDWriteRenderingParams1;
50 #endif /* __cplusplus */
51 #endif
52 
53 #ifndef __IDWriteTextAnalyzer1_FWD_DEFINED__
54 #define __IDWriteTextAnalyzer1_FWD_DEFINED__
55 typedef interface IDWriteTextAnalyzer1 IDWriteTextAnalyzer1;
56 #ifdef __cplusplus
57 interface IDWriteTextAnalyzer1;
58 #endif /* __cplusplus */
59 #endif
60 
61 #ifndef __IDWriteTextAnalysisSource1_FWD_DEFINED__
62 #define __IDWriteTextAnalysisSource1_FWD_DEFINED__
63 typedef interface IDWriteTextAnalysisSource1 IDWriteTextAnalysisSource1;
64 #ifdef __cplusplus
65 interface IDWriteTextAnalysisSource1;
66 #endif /* __cplusplus */
67 #endif
68 
69 #ifndef __IDWriteTextAnalysisSink1_FWD_DEFINED__
70 #define __IDWriteTextAnalysisSink1_FWD_DEFINED__
71 typedef interface IDWriteTextAnalysisSink1 IDWriteTextAnalysisSink1;
72 #ifdef __cplusplus
73 interface IDWriteTextAnalysisSink1;
74 #endif /* __cplusplus */
75 #endif
76 
77 #ifndef __IDWriteTextLayout1_FWD_DEFINED__
78 #define __IDWriteTextLayout1_FWD_DEFINED__
79 typedef interface IDWriteTextLayout1 IDWriteTextLayout1;
80 #ifdef __cplusplus
81 interface IDWriteTextLayout1;
82 #endif /* __cplusplus */
83 #endif
84 
85 #ifndef __IDWriteBitmapRenderTarget1_FWD_DEFINED__
86 #define __IDWriteBitmapRenderTarget1_FWD_DEFINED__
87 typedef interface IDWriteBitmapRenderTarget1 IDWriteBitmapRenderTarget1;
88 #ifdef __cplusplus
89 interface IDWriteBitmapRenderTarget1;
90 #endif /* __cplusplus */
91 #endif
92 
93 /* Headers for imported files */
94 
95 #include <dwrite.h>
96 
97 #ifdef __cplusplus
98 extern "C" {
99 #endif
100 
101 typedef enum DWRITE_PANOSE_FAMILY {
102     DWRITE_PANOSE_FAMILY_ANY = 0,
103     DWRITE_PANOSE_FAMILY_NO_FIT = 1,
104     DWRITE_PANOSE_FAMILY_TEXT_DISPLAY = 2,
105     DWRITE_PANOSE_FAMILY_SCRIPT = 3,
106     DWRITE_PANOSE_FAMILY_DECORATIVE = 4,
107     DWRITE_PANOSE_FAMILY_SYMBOL = 5,
108     DWRITE_PANOSE_FAMILY_PICTORIAL = DWRITE_PANOSE_FAMILY_SYMBOL
109 } DWRITE_PANOSE_FAMILY;
110 typedef enum DWRITE_PANOSE_SERIF_STYLE {
111     DWRITE_PANOSE_SERIF_STYLE_ANY = 0,
112     DWRITE_PANOSE_SERIF_STYLE_NO_FIT = 1,
113     DWRITE_PANOSE_SERIF_STYLE_COVE = 2,
114     DWRITE_PANOSE_SERIF_STYLE_OBTUSE_COVE = 3,
115     DWRITE_PANOSE_SERIF_STYLE_SQUARE_COVE = 4,
116     DWRITE_PANOSE_SERIF_STYLE_OBTUSE_SQUARE_COVE = 5,
117     DWRITE_PANOSE_SERIF_STYLE_SQUARE = 6,
118     DWRITE_PANOSE_SERIF_STYLE_THIN = 7,
119     DWRITE_PANOSE_SERIF_STYLE_OVAL = 8,
120     DWRITE_PANOSE_SERIF_STYLE_EXAGGERATED = 9,
121     DWRITE_PANOSE_SERIF_STYLE_TRIANGLE = 10,
122     DWRITE_PANOSE_SERIF_STYLE_NORMAL_SANS = 11,
123     DWRITE_PANOSE_SERIF_STYLE_OBTUSE_SANS = 12,
124     DWRITE_PANOSE_SERIF_STYLE_PERPENDICULAR_SANS = 13,
125     DWRITE_PANOSE_SERIF_STYLE_FLARED = 14,
126     DWRITE_PANOSE_SERIF_STYLE_ROUNDED = 15,
127     DWRITE_PANOSE_SERIF_STYLE_SCRIPT = 16,
128     DWRITE_PANOSE_SERIF_STYLE_PERP_SANS = DWRITE_PANOSE_SERIF_STYLE_PERPENDICULAR_SANS,
129     DWRITE_PANOSE_SERIF_STYLE_BONE = DWRITE_PANOSE_SERIF_STYLE_OVAL
130 } DWRITE_PANOSE_SERIF_STYLE;
131 typedef enum DWRITE_PANOSE_WEIGHT {
132     DWRITE_PANOSE_WEIGHT_ANY = 0,
133     DWRITE_PANOSE_WEIGHT_NO_FIT = 1,
134     DWRITE_PANOSE_WEIGHT_VERY_LIGHT = 2,
135     DWRITE_PANOSE_WEIGHT_LIGHT = 3,
136     DWRITE_PANOSE_WEIGHT_THIN = 4,
137     DWRITE_PANOSE_WEIGHT_BOOK = 5,
138     DWRITE_PANOSE_WEIGHT_MEDIUM = 6,
139     DWRITE_PANOSE_WEIGHT_DEMI = 7,
140     DWRITE_PANOSE_WEIGHT_BOLD = 8,
141     DWRITE_PANOSE_WEIGHT_HEAVY = 9,
142     DWRITE_PANOSE_WEIGHT_BLACK = 10,
143     DWRITE_PANOSE_WEIGHT_EXTRA_BLACK = 11,
144     DWRITE_PANOSE_WEIGHT_NORD = DWRITE_PANOSE_WEIGHT_EXTRA_BLACK
145 } DWRITE_PANOSE_WEIGHT;
146 typedef enum DWRITE_PANOSE_PROPORTION {
147     DWRITE_PANOSE_PROPORTION_ANY = 0,
148     DWRITE_PANOSE_PROPORTION_NO_FIT = 1,
149     DWRITE_PANOSE_PROPORTION_OLD_STYLE = 2,
150     DWRITE_PANOSE_PROPORTION_MODERN = 3,
151     DWRITE_PANOSE_PROPORTION_EVEN_WIDTH = 4,
152     DWRITE_PANOSE_PROPORTION_EXPANDED = 5,
153     DWRITE_PANOSE_PROPORTION_CONDENSED = 6,
154     DWRITE_PANOSE_PROPORTION_VERY_EXPANDED = 7,
155     DWRITE_PANOSE_PROPORTION_VERY_CONDENSED = 8,
156     DWRITE_PANOSE_PROPORTION_MONOSPACED = 9
157 } DWRITE_PANOSE_PROPORTION;
158 typedef enum DWRITE_PANOSE_CONTRAST {
159     DWRITE_PANOSE_CONTRAST_ANY = 0,
160     DWRITE_PANOSE_CONTRAST_NO_FIT = 1,
161     DWRITE_PANOSE_CONTRAST_NONE = 2,
162     DWRITE_PANOSE_CONTRAST_VERY_LOW = 3,
163     DWRITE_PANOSE_CONTRAST_LOW = 4,
164     DWRITE_PANOSE_CONTRAST_MEDIUM_LOW = 5,
165     DWRITE_PANOSE_CONTRAST_MEDIUM = 6,
166     DWRITE_PANOSE_CONTRAST_MEDIUM_HIGH = 7,
167     DWRITE_PANOSE_CONTRAST_HIGH = 8,
168     DWRITE_PANOSE_CONTRAST_VERY_HIGH = 9,
169     DWRITE_PANOSE_CONTRAST_HORIZONTAL_LOW = 10,
170     DWRITE_PANOSE_CONTRAST_HORIZONTAL_MEDIUM = 11,
171     DWRITE_PANOSE_CONTRAST_HORIZONTAL_HIGH = 12,
172     DWRITE_PANOSE_CONTRAST_BROKEN = 13
173 } DWRITE_PANOSE_CONTRAST;
174 typedef enum DWRITE_PANOSE_STROKE_VARIATION {
175     DWRITE_PANOSE_STROKE_VARIATION_ANY = 0,
176     DWRITE_PANOSE_STROKE_VARIATION_NO_FIT = 1,
177     DWRITE_PANOSE_STROKE_VARIATION_NO_VARIATION = 2,
178     DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_DIAGONAL = 3,
179     DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_TRANSITIONAL = 4,
180     DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_VERTICAL = 5,
181     DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_HORIZONTAL = 6,
182     DWRITE_PANOSE_STROKE_VARIATION_RAPID_VERTICAL = 7,
183     DWRITE_PANOSE_STROKE_VARIATION_RAPID_HORIZONTAL = 8,
184     DWRITE_PANOSE_STROKE_VARIATION_INSTANT_VERTICAL = 9,
185     DWRITE_PANOSE_STROKE_VARIATION_INSTANT_HORIZONTAL = 10
186 } DWRITE_PANOSE_STROKE_VARIATION;
187 typedef enum DWRITE_PANOSE_ARM_STYLE {
188     DWRITE_PANOSE_ARM_STYLE_ANY = 0,
189     DWRITE_PANOSE_ARM_STYLE_NO_FIT = 1,
190     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_HORIZONTAL = 2,
191     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_WEDGE = 3,
192     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_VERTICAL = 4,
193     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_SINGLE_SERIF = 5,
194     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_DOUBLE_SERIF = 6,
195     DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_HORIZONTAL = 7,
196     DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_WEDGE = 8,
197     DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_VERTICAL = 9,
198     DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_SINGLE_SERIF = 10,
199     DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_DOUBLE_SERIF = 11,
200     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_HORZ = DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_HORIZONTAL,
201     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_VERT = DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_VERTICAL,
202     DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_HORZ = DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_HORIZONTAL,
203     DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_WEDGE = DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_WEDGE,
204     DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_VERT = DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_VERTICAL,
205     DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_SINGLE_SERIF = DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_SINGLE_SERIF,
206     DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_DOUBLE_SERIF = DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_DOUBLE_SERIF
207 } DWRITE_PANOSE_ARM_STYLE;
208 typedef enum DWRITE_PANOSE_LETTERFORM {
209     DWRITE_PANOSE_LETTERFORM_ANY = 0,
210     DWRITE_PANOSE_LETTERFORM_NO_FIT = 1,
211     DWRITE_PANOSE_LETTERFORM_NORMAL_CONTACT = 2,
212     DWRITE_PANOSE_LETTERFORM_NORMAL_WEIGHTED = 3,
213     DWRITE_PANOSE_LETTERFORM_NORMAL_BOXED = 4,
214     DWRITE_PANOSE_LETTERFORM_NORMAL_FLATTENED = 5,
215     DWRITE_PANOSE_LETTERFORM_NORMAL_ROUNDED = 6,
216     DWRITE_PANOSE_LETTERFORM_NORMAL_OFF_CENTER = 7,
217     DWRITE_PANOSE_LETTERFORM_NORMAL_SQUARE = 8,
218     DWRITE_PANOSE_LETTERFORM_OBLIQUE_CONTACT = 9,
219     DWRITE_PANOSE_LETTERFORM_OBLIQUE_WEIGHTED = 10,
220     DWRITE_PANOSE_LETTERFORM_OBLIQUE_BOXED = 11,
221     DWRITE_PANOSE_LETTERFORM_OBLIQUE_FLATTENED = 12,
222     DWRITE_PANOSE_LETTERFORM_OBLIQUE_ROUNDED = 13,
223     DWRITE_PANOSE_LETTERFORM_OBLIQUE_OFF_CENTER = 14,
224     DWRITE_PANOSE_LETTERFORM_OBLIQUE_SQUARE = 15
225 } DWRITE_PANOSE_LETTERFORM;
226 typedef enum DWRITE_PANOSE_MIDLINE {
227     DWRITE_PANOSE_MIDLINE_ANY = 0,
228     DWRITE_PANOSE_MIDLINE_NO_FIT = 1,
229     DWRITE_PANOSE_MIDLINE_STANDARD_TRIMMED = 2,
230     DWRITE_PANOSE_MIDLINE_STANDARD_POINTED = 3,
231     DWRITE_PANOSE_MIDLINE_STANDARD_SERIFED = 4,
232     DWRITE_PANOSE_MIDLINE_HIGH_TRIMMED = 5,
233     DWRITE_PANOSE_MIDLINE_HIGH_POINTED = 6,
234     DWRITE_PANOSE_MIDLINE_HIGH_SERIFED = 7,
235     DWRITE_PANOSE_MIDLINE_CONSTANT_TRIMMED = 8,
236     DWRITE_PANOSE_MIDLINE_CONSTANT_POINTED = 9,
237     DWRITE_PANOSE_MIDLINE_CONSTANT_SERIFED = 10,
238     DWRITE_PANOSE_MIDLINE_LOW_TRIMMED = 11,
239     DWRITE_PANOSE_MIDLINE_LOW_POINTED = 12,
240     DWRITE_PANOSE_MIDLINE_LOW_SERIFED = 13
241 } DWRITE_PANOSE_MIDLINE;
242 typedef enum DWRITE_PANOSE_XHEIGHT {
243     DWRITE_PANOSE_XHEIGHT_ANY = 0,
244     DWRITE_PANOSE_XHEIGHT_NO_FIT = 1,
245     DWRITE_PANOSE_XHEIGHT_CONSTANT_SMALL = 2,
246     DWRITE_PANOSE_XHEIGHT_CONSTANT_STANDARD = 3,
247     DWRITE_PANOSE_XHEIGHT_CONSTANT_LARGE = 4,
248     DWRITE_PANOSE_XHEIGHT_DUCKING_SMALL = 5,
249     DWRITE_PANOSE_XHEIGHT_DUCKING_STANDARD = 6,
250     DWRITE_PANOSE_XHEIGHT_DUCKING_LARGE = 7,
251     DWRITE_PANOSE_XHEIGHT_CONSTANT_STD = DWRITE_PANOSE_XHEIGHT_CONSTANT_STANDARD,
252     DWRITE_PANOSE_XHEIGHT_DUCKING_STD = DWRITE_PANOSE_XHEIGHT_DUCKING_STANDARD
253 } DWRITE_PANOSE_XHEIGHT;
254 typedef enum DWRITE_PANOSE_TOOL_KIND {
255     DWRITE_PANOSE_TOOL_KIND_ANY = 0,
256     DWRITE_PANOSE_TOOL_KIND_NO_FIT = 1,
257     DWRITE_PANOSE_TOOL_KIND_FLAT_NIB = 2,
258     DWRITE_PANOSE_TOOL_KIND_PRESSURE_POINT = 3,
259     DWRITE_PANOSE_TOOL_KIND_ENGRAVED = 4,
260     DWRITE_PANOSE_TOOL_KIND_BALL = 5,
261     DWRITE_PANOSE_TOOL_KIND_BRUSH = 6,
262     DWRITE_PANOSE_TOOL_KIND_ROUGH = 7,
263     DWRITE_PANOSE_TOOL_KIND_FELT_PEN_BRUSH_TIP = 8,
264     DWRITE_PANOSE_TOOL_KIND_WILD_BRUSH = 9
265 } DWRITE_PANOSE_TOOL_KIND;
266 typedef enum DWRITE_PANOSE_SPACING {
267     DWRITE_PANOSE_SPACING_ANY = 0,
268     DWRITE_PANOSE_SPACING_NO_FIT = 1,
269     DWRITE_PANOSE_SPACING_PROPORTIONAL_SPACED = 2,
270     DWRITE_PANOSE_SPACING_MONOSPACED = 3
271 } DWRITE_PANOSE_SPACING;
272 typedef enum DWRITE_PANOSE_ASPECT_RATIO {
273     DWRITE_PANOSE_ASPECT_RATIO_ANY = 0,
274     DWRITE_PANOSE_ASPECT_RATIO_NO_FIT = 1,
275     DWRITE_PANOSE_ASPECT_RATIO_VERY_CONDENSED = 2,
276     DWRITE_PANOSE_ASPECT_RATIO_CONDENSED = 3,
277     DWRITE_PANOSE_ASPECT_RATIO_NORMAL = 4,
278     DWRITE_PANOSE_ASPECT_RATIO_EXPANDED = 5,
279     DWRITE_PANOSE_ASPECT_RATIO_VERY_EXPANDED = 6
280 } DWRITE_PANOSE_ASPECT_RATIO;
281 typedef enum DWRITE_PANOSE_SCRIPT_TOPOLOGY {
282     DWRITE_PANOSE_SCRIPT_TOPOLOGY_ANY = 0,
283     DWRITE_PANOSE_SCRIPT_TOPOLOGY_NO_FIT = 1,
284     DWRITE_PANOSE_SCRIPT_TOPOLOGY_ROMAN_DISCONNECTED = 2,
285     DWRITE_PANOSE_SCRIPT_TOPOLOGY_ROMAN_TRAILING = 3,
286     DWRITE_PANOSE_SCRIPT_TOPOLOGY_ROMAN_CONNECTED = 4,
287     DWRITE_PANOSE_SCRIPT_TOPOLOGY_CURSIVE_DISCONNECTED = 5,
288     DWRITE_PANOSE_SCRIPT_TOPOLOGY_CURSIVE_TRAILING = 6,
289     DWRITE_PANOSE_SCRIPT_TOPOLOGY_CURSIVE_CONNECTED = 7,
290     DWRITE_PANOSE_SCRIPT_TOPOLOGY_BLACKLETTER_DISCONNECTED = 8,
291     DWRITE_PANOSE_SCRIPT_TOPOLOGY_BLACKLETTER_TRAILING = 9,
292     DWRITE_PANOSE_SCRIPT_TOPOLOGY_BLACKLETTER_CONNECTED = 10
293 } DWRITE_PANOSE_SCRIPT_TOPOLOGY;
294 typedef enum DWRITE_PANOSE_SCRIPT_FORM {
295     DWRITE_PANOSE_SCRIPT_FORM_ANY = 0,
296     DWRITE_PANOSE_SCRIPT_FORM_NO_FIT = 1,
297     DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_NO_WRAPPING = 2,
298     DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_SOME_WRAPPING = 3,
299     DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_MORE_WRAPPING = 4,
300     DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_EXTREME_WRAPPING = 5,
301     DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_NO_WRAPPING = 6,
302     DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_SOME_WRAPPING = 7,
303     DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_MORE_WRAPPING = 8,
304     DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_EXTREME_WRAPPING = 9,
305     DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_NO_WRAPPING = 10,
306     DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_SOME_WRAPPING = 11,
307     DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_MORE_WRAPPING = 12,
308     DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_EXTREME_WRAPPING = 13
309 } DWRITE_PANOSE_SCRIPT_FORM;
310 typedef enum DWRITE_PANOSE_FINIALS {
311     DWRITE_PANOSE_FINIALS_ANY = 0,
312     DWRITE_PANOSE_FINIALS_NO_FIT = 1,
313     DWRITE_PANOSE_FINIALS_NONE_NO_LOOPS = 2,
314     DWRITE_PANOSE_FINIALS_NONE_CLOSED_LOOPS = 3,
315     DWRITE_PANOSE_FINIALS_NONE_OPEN_LOOPS = 4,
316     DWRITE_PANOSE_FINIALS_SHARP_NO_LOOPS = 5,
317     DWRITE_PANOSE_FINIALS_SHARP_CLOSED_LOOPS = 6,
318     DWRITE_PANOSE_FINIALS_SHARP_OPEN_LOOPS = 7,
319     DWRITE_PANOSE_FINIALS_TAPERED_NO_LOOPS = 8,
320     DWRITE_PANOSE_FINIALS_TAPERED_CLOSED_LOOPS = 9,
321     DWRITE_PANOSE_FINIALS_TAPERED_OPEN_LOOPS = 10,
322     DWRITE_PANOSE_FINIALS_ROUND_NO_LOOPS = 11,
323     DWRITE_PANOSE_FINIALS_ROUND_CLOSED_LOOPS = 12,
324     DWRITE_PANOSE_FINIALS_ROUND_OPEN_LOOPS = 13
325 } DWRITE_PANOSE_FINIALS;
326 typedef enum DWRITE_PANOSE_XASCENT {
327     DWRITE_PANOSE_XASCENT_ANY = 0,
328     DWRITE_PANOSE_XASCENT_NO_FIT = 1,
329     DWRITE_PANOSE_XASCENT_VERY_LOW = 2,
330     DWRITE_PANOSE_XASCENT_LOW = 3,
331     DWRITE_PANOSE_XASCENT_MEDIUM = 4,
332     DWRITE_PANOSE_XASCENT_HIGH = 5,
333     DWRITE_PANOSE_XASCENT_VERY_HIGH = 6
334 } DWRITE_PANOSE_XASCENT;
335 typedef enum DWRITE_PANOSE_DECORATIVE_CLASS {
336     DWRITE_PANOSE_DECORATIVE_CLASS_ANY = 0,
337     DWRITE_PANOSE_DECORATIVE_CLASS_NO_FIT = 1,
338     DWRITE_PANOSE_DECORATIVE_CLASS_DERIVATIVE = 2,
339     DWRITE_PANOSE_DECORATIVE_CLASS_NONSTANDARD_TOPOLOGY = 3,
340     DWRITE_PANOSE_DECORATIVE_CLASS_NONSTANDARD_ELEMENTS = 4,
341     DWRITE_PANOSE_DECORATIVE_CLASS_NONSTANDARD_ASPECT = 5,
342     DWRITE_PANOSE_DECORATIVE_CLASS_INITIALS = 6,
343     DWRITE_PANOSE_DECORATIVE_CLASS_CARTOON = 7,
344     DWRITE_PANOSE_DECORATIVE_CLASS_PICTURE_STEMS = 8,
345     DWRITE_PANOSE_DECORATIVE_CLASS_ORNAMENTED = 9,
346     DWRITE_PANOSE_DECORATIVE_CLASS_TEXT_AND_BACKGROUND = 10,
347     DWRITE_PANOSE_DECORATIVE_CLASS_COLLAGE = 11,
348     DWRITE_PANOSE_DECORATIVE_CLASS_MONTAGE = 12
349 } DWRITE_PANOSE_DECORATIVE_CLASS;
350 typedef enum DWRITE_PANOSE_ASPECT {
351     DWRITE_PANOSE_ASPECT_ANY = 0,
352     DWRITE_PANOSE_ASPECT_NO_FIT = 1,
353     DWRITE_PANOSE_ASPECT_SUPER_CONDENSED = 2,
354     DWRITE_PANOSE_ASPECT_VERY_CONDENSED = 3,
355     DWRITE_PANOSE_ASPECT_CONDENSED = 4,
356     DWRITE_PANOSE_ASPECT_NORMAL = 5,
357     DWRITE_PANOSE_ASPECT_EXTENDED = 6,
358     DWRITE_PANOSE_ASPECT_VERY_EXTENDED = 7,
359     DWRITE_PANOSE_ASPECT_SUPER_EXTENDED = 8,
360     DWRITE_PANOSE_ASPECT_MONOSPACED = 9
361 } DWRITE_PANOSE_ASPECT;
362 typedef enum DWRITE_PANOSE_FILL {
363     DWRITE_PANOSE_FILL_ANY = 0,
364     DWRITE_PANOSE_FILL_NO_FIT = 1,
365     DWRITE_PANOSE_FILL_STANDARD_SOLID_FILL = 2,
366     DWRITE_PANOSE_FILL_NO_FILL = 3,
367     DWRITE_PANOSE_FILL_PATTERNED_FILL = 4,
368     DWRITE_PANOSE_FILL_COMPLEX_FILL = 5,
369     DWRITE_PANOSE_FILL_SHAPED_FILL = 6,
370     DWRITE_PANOSE_FILL_DRAWN_DISTRESSED = 7
371 } DWRITE_PANOSE_FILL;
372 typedef enum DWRITE_PANOSE_LINING {
373     DWRITE_PANOSE_LINING_ANY = 0,
374     DWRITE_PANOSE_LINING_NO_FIT = 1,
375     DWRITE_PANOSE_LINING_NONE = 2,
376     DWRITE_PANOSE_LINING_INLINE = 3,
377     DWRITE_PANOSE_LINING_OUTLINE = 4,
378     DWRITE_PANOSE_LINING_ENGRAVED = 5,
379     DWRITE_PANOSE_LINING_SHADOW = 6,
380     DWRITE_PANOSE_LINING_RELIEF = 7,
381     DWRITE_PANOSE_LINING_BACKDROP = 8
382 } DWRITE_PANOSE_LINING;
383 typedef enum DWRITE_PANOSE_DECORATIVE_TOPOLOGY {
384     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_ANY = 0,
385     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_NO_FIT = 1,
386     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_STANDARD = 2,
387     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_SQUARE = 3,
388     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_MULTIPLE_SEGMENT = 4,
389     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_ART_DECO = 5,
390     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_UNEVEN_WEIGHTING = 6,
391     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_DIVERSE_ARMS = 7,
392     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_DIVERSE_FORMS = 8,
393     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_LOMBARDIC_FORMS = 9,
394     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_UPPER_CASE_IN_LOWER_CASE = 10,
395     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_IMPLIED_TOPOLOGY = 11,
396     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_HORSESHOE_E_AND_A = 12,
397     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_CURSIVE = 13,
398     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_BLACKLETTER = 14,
399     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_SWASH_VARIANCE = 15
400 } DWRITE_PANOSE_DECORATIVE_TOPOLOGY;
401 typedef enum DWRITE_PANOSE_CHARACTER_RANGES {
402     DWRITE_PANOSE_CHARACTER_RANGES_ANY = 0,
403     DWRITE_PANOSE_CHARACTER_RANGES_NO_FIT = 1,
404     DWRITE_PANOSE_CHARACTER_RANGES_EXTENDED_COLLECTION = 2,
405     DWRITE_PANOSE_CHARACTER_RANGES_LITERALS = 3,
406     DWRITE_PANOSE_CHARACTER_RANGES_NO_LOWER_CASE = 4,
407     DWRITE_PANOSE_CHARACTER_RANGES_SMALL_CAPS = 5
408 } DWRITE_PANOSE_CHARACTER_RANGES;
409 typedef enum DWRITE_PANOSE_SYMBOL_KIND {
410     DWRITE_PANOSE_SYMBOL_KIND_ANY = 0,
411     DWRITE_PANOSE_SYMBOL_KIND_NO_FIT = 1,
412     DWRITE_PANOSE_SYMBOL_KIND_MONTAGES = 2,
413     DWRITE_PANOSE_SYMBOL_KIND_PICTURES = 3,
414     DWRITE_PANOSE_SYMBOL_KIND_SHAPES = 4,
415     DWRITE_PANOSE_SYMBOL_KIND_SCIENTIFIC = 5,
416     DWRITE_PANOSE_SYMBOL_KIND_MUSIC = 6,
417     DWRITE_PANOSE_SYMBOL_KIND_EXPERT = 7,
418     DWRITE_PANOSE_SYMBOL_KIND_PATTERNS = 8,
419     DWRITE_PANOSE_SYMBOL_KIND_BOARDERS = 9,
420     DWRITE_PANOSE_SYMBOL_KIND_ICONS = 10,
421     DWRITE_PANOSE_SYMBOL_KIND_LOGOS = 11,
422     DWRITE_PANOSE_SYMBOL_KIND_INDUSTRY_SPECIFIC = 12
423 } DWRITE_PANOSE_SYMBOL_KIND;
424 typedef enum DWRITE_PANOSE_SYMBOL_ASPECT_RATIO {
425     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_ANY = 0,
426     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NO_FIT = 1,
427     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NO_WIDTH = 2,
428     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_EXCEPTIONALLY_WIDE = 3,
429     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_SUPER_WIDE = 4,
430     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_VERY_WIDE = 5,
431     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_WIDE = 6,
432     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NORMAL = 7,
433     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NARROW = 8,
434     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_VERY_NARROW = 9
435 } DWRITE_PANOSE_SYMBOL_ASPECT_RATIO;
436 typedef enum DWRITE_OUTLINE_THRESHOLD {
437     DWRITE_OUTLINE_THRESHOLD_ANTIALIASED = 0,
438     DWRITE_OUTLINE_THRESHOLD_ALIASED = 1
439 } DWRITE_OUTLINE_THRESHOLD;
440 typedef enum DWRITE_BASELINE {
441     DWRITE_BASELINE_DEFAULT = 0,
442     DWRITE_BASELINE_ROMAN = 1,
443     DWRITE_BASELINE_CENTRAL = 2,
444     DWRITE_BASELINE_MATH = 3,
445     DWRITE_BASELINE_HANGING = 4,
446     DWRITE_BASELINE_IDEOGRAPHIC_BOTTOM = 5,
447     DWRITE_BASELINE_IDEOGRAPHIC_TOP = 6,
448     DWRITE_BASELINE_MINIMUM = 7,
449     DWRITE_BASELINE_MAXIMUM = 8
450 } DWRITE_BASELINE;
451 typedef enum DWRITE_VERTICAL_GLYPH_ORIENTATION {
452     DWRITE_VERTICAL_GLYPH_ORIENTATION_DEFAULT = 0,
453     DWRITE_VERTICAL_GLYPH_ORIENTATION_STACKED = 1
454 } DWRITE_VERTICAL_GLYPH_ORIENTATION;
455 typedef enum DWRITE_GLYPH_ORIENTATION_ANGLE {
456     DWRITE_GLYPH_ORIENTATION_ANGLE_0_DEGREES = 0,
457     DWRITE_GLYPH_ORIENTATION_ANGLE_90_DEGREES = 1,
458     DWRITE_GLYPH_ORIENTATION_ANGLE_180_DEGREES = 2,
459     DWRITE_GLYPH_ORIENTATION_ANGLE_270_DEGREES = 3
460 } DWRITE_GLYPH_ORIENTATION_ANGLE;
461 typedef struct DWRITE_FONT_METRICS1 {
462     UINT16 designUnitsPerEm;
463     UINT16 ascent;
464     UINT16 descent;
465     INT16 lineGap;
466     UINT16 capHeight;
467     UINT16 xHeight;
468     INT16 underlinePosition;
469     UINT16 underlineThickness;
470     INT16 strikethroughPosition;
471     UINT16 strikethroughThickness;
472     INT16 glyphBoxLeft;
473     INT16 glyphBoxTop;
474     INT16 glyphBoxRight;
475     INT16 glyphBoxBottom;
476     INT16 subscriptPositionX;
477     INT16 subscriptPositionY;
478     INT16 subscriptSizeX;
479     INT16 subscriptSizeY;
480     INT16 superscriptPositionX;
481     INT16 superscriptPositionY;
482     INT16 superscriptSizeX;
483     INT16 superscriptSizeY;
484     WINBOOL hasTypographicMetrics;
485 } DWRITE_FONT_METRICS1;
486 typedef struct DWRITE_CARET_METRICS {
487     INT16 slopeRise;
488     INT16 slopeRun;
489     INT16 offset;
490 } DWRITE_CARET_METRICS;
491 typedef union DWRITE_PANOSE {
492     UINT8 values[10];
493     UINT8 familyKind;
494     struct {
495         UINT8 familyKind;
496         UINT8 serifStyle;
497         UINT8 weight;
498         UINT8 proportion;
499         UINT8 contrast;
500         UINT8 strokeVariation;
501         UINT8 armStyle;
502         UINT8 letterform;
503         UINT8 midline;
504         UINT8 xHeight;
505     } text;
506     struct {
507         UINT8 familyKind;
508         UINT8 toolKind;
509         UINT8 weight;
510         UINT8 spacing;
511         UINT8 aspectRatio;
512         UINT8 contrast;
513         UINT8 scriptTopology;
514         UINT8 scriptForm;
515         UINT8 finials;
516         UINT8 xAscent;
517     } script;
518     struct {
519         UINT8 familyKind;
520         UINT8 decorativeClass;
521         UINT8 weight;
522         UINT8 aspect;
523         UINT8 contrast;
524         UINT8 serifVariant;
525         UINT8 fill;
526         UINT8 lining;
527         UINT8 decorativeTopology;
528         UINT8 characterRange;
529     } decorative;
530     struct {
531         UINT8 familyKind;
532         UINT8 symbolKind;
533         UINT8 weight;
534         UINT8 spacing;
535         UINT8 aspectRatioAndContrast;
536         UINT8 aspectRatio94;
537         UINT8 aspectRatio119;
538         UINT8 aspectRatio157;
539         UINT8 aspectRatio163;
540         UINT8 aspectRatio211;
541     } symbol;
542 } DWRITE_PANOSE;
543 typedef struct DWRITE_UNICODE_RANGE {
544     UINT32 first;
545     UINT32 last;
546 } DWRITE_UNICODE_RANGE;
547 typedef struct DWRITE_SCRIPT_PROPERTIES {
548     UINT32 isoScriptCode;
549     UINT32 isoScriptNumber;
550     UINT32 clusterLookahead;
551     UINT32 justificationCharacter;
552     UINT32 restrictCaretToClusters : 1;
553     UINT32 usesWordDividers : 1;
554     UINT32 isDiscreteWriting : 1;
555     UINT32 isBlockWriting : 1;
556     UINT32 isDistributedWithinCluster : 1;
557     UINT32 isConnectedWriting : 1;
558     UINT32 isCursiveWriting : 1;
559     UINT32 reserved : 25;
560 } DWRITE_SCRIPT_PROPERTIES;
561 typedef struct DWRITE_JUSTIFICATION_OPPORTUNITY {
562     FLOAT expansionMinimum;
563     FLOAT expansionMaximum;
564     FLOAT compressionMaximum;
565     UINT32 expansionPriority : 8;
566     UINT32 compressionPriority : 8;
567     UINT32 allowResidualExpansion : 1;
568     UINT32 allowResidualCompression : 1;
569     UINT32 applyToLeadingEdge : 1;
570     UINT32 applyToTrailingEdge : 1;
571     UINT32 reserved : 12;
572 } DWRITE_JUSTIFICATION_OPPORTUNITY;
573 #ifndef __IDWriteTextAnalysisSource1_FWD_DEFINED__
574 #define __IDWriteTextAnalysisSource1_FWD_DEFINED__
575 typedef interface IDWriteTextAnalysisSource1 IDWriteTextAnalysisSource1;
576 #ifdef __cplusplus
577 interface IDWriteTextAnalysisSource1;
578 #endif /* __cplusplus */
579 #endif
580 
581 #ifndef __IDWriteTextAnalysisSink1_FWD_DEFINED__
582 #define __IDWriteTextAnalysisSink1_FWD_DEFINED__
583 typedef interface IDWriteTextAnalysisSink1 IDWriteTextAnalysisSink1;
584 #ifdef __cplusplus
585 interface IDWriteTextAnalysisSink1;
586 #endif /* __cplusplus */
587 #endif
588 
589 #ifndef __IDWriteRenderingParams1_FWD_DEFINED__
590 #define __IDWriteRenderingParams1_FWD_DEFINED__
591 typedef interface IDWriteRenderingParams1 IDWriteRenderingParams1;
592 #ifdef __cplusplus
593 interface IDWriteRenderingParams1;
594 #endif /* __cplusplus */
595 #endif
596 
597 /*****************************************************************************
598  * IDWriteFactory1 interface
599  */
600 #ifndef __IDWriteFactory1_INTERFACE_DEFINED__
601 #define __IDWriteFactory1_INTERFACE_DEFINED__
602 
603 DEFINE_GUID(IID_IDWriteFactory1, 0x30572f99, 0xdac6, 0x41db, 0xa1,0x6e, 0x04,0x86,0x30,0x7e,0x60,0x6a);
604 #if defined(__cplusplus) && !defined(CINTERFACE)
605 MIDL_INTERFACE("30572f99-dac6-41db-a16e-0486307e606a")
606 IDWriteFactory1 : public IDWriteFactory
607 {
608     virtual HRESULT STDMETHODCALLTYPE GetEudcFontCollection(
609         IDWriteFontCollection **collection,
610         WINBOOL check_for_updates = FALSE) = 0;
611 
612     virtual HRESULT STDMETHODCALLTYPE CreateCustomRenderingParams(
613         FLOAT gamma,
614         FLOAT enhcontrast,
615         FLOAT enhcontrast_grayscale,
616         FLOAT cleartype_level,
617         DWRITE_PIXEL_GEOMETRY geometry,
618         DWRITE_RENDERING_MODE mode,
619         IDWriteRenderingParams1 **params) = 0;
620 
621 };
622 #ifdef __CRT_UUID_DECL
623 __CRT_UUID_DECL(IDWriteFactory1, 0x30572f99, 0xdac6, 0x41db, 0xa1,0x6e, 0x04,0x86,0x30,0x7e,0x60,0x6a)
624 #endif
625 #else
626 typedef struct IDWriteFactory1Vtbl {
627     BEGIN_INTERFACE
628 
629     /*** IUnknown methods ***/
630     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
631         IDWriteFactory1 *This,
632         REFIID riid,
633         void **ppvObject);
634 
635     ULONG (STDMETHODCALLTYPE *AddRef)(
636         IDWriteFactory1 *This);
637 
638     ULONG (STDMETHODCALLTYPE *Release)(
639         IDWriteFactory1 *This);
640 
641     /*** IDWriteFactory methods ***/
642     HRESULT (STDMETHODCALLTYPE *GetSystemFontCollection)(
643         IDWriteFactory1 *This,
644         IDWriteFontCollection **collection,
645         WINBOOL check_for_updates);
646 
647     HRESULT (STDMETHODCALLTYPE *CreateCustomFontCollection)(
648         IDWriteFactory1 *This,
649         IDWriteFontCollectionLoader *loader,
650         const void *key,
651         UINT32 key_size,
652         IDWriteFontCollection **collection);
653 
654     HRESULT (STDMETHODCALLTYPE *RegisterFontCollectionLoader)(
655         IDWriteFactory1 *This,
656         IDWriteFontCollectionLoader *loader);
657 
658     HRESULT (STDMETHODCALLTYPE *UnregisterFontCollectionLoader)(
659         IDWriteFactory1 *This,
660         IDWriteFontCollectionLoader *loader);
661 
662     HRESULT (STDMETHODCALLTYPE *CreateFontFileReference)(
663         IDWriteFactory1 *This,
664         const WCHAR *path,
665         const FILETIME *writetime,
666         IDWriteFontFile **font_file);
667 
668     HRESULT (STDMETHODCALLTYPE *CreateCustomFontFileReference)(
669         IDWriteFactory1 *This,
670         const void *reference_key,
671         UINT32 key_size,
672         IDWriteFontFileLoader *loader,
673         IDWriteFontFile **font_file);
674 
675     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
676         IDWriteFactory1 *This,
677         DWRITE_FONT_FACE_TYPE facetype,
678         UINT32 files_number,
679         IDWriteFontFile *const *font_files,
680         UINT32 index,
681         DWRITE_FONT_SIMULATIONS sim_flags,
682         IDWriteFontFace **font_face);
683 
684     HRESULT (STDMETHODCALLTYPE *CreateRenderingParams)(
685         IDWriteFactory1 *This,
686         IDWriteRenderingParams **params);
687 
688     HRESULT (STDMETHODCALLTYPE *CreateMonitorRenderingParams)(
689         IDWriteFactory1 *This,
690         HMONITOR monitor,
691         IDWriteRenderingParams **params);
692 
693     HRESULT (STDMETHODCALLTYPE *CreateCustomRenderingParams)(
694         IDWriteFactory1 *This,
695         FLOAT gamma,
696         FLOAT enhancedContrast,
697         FLOAT cleartype_level,
698         DWRITE_PIXEL_GEOMETRY geometry,
699         DWRITE_RENDERING_MODE mode,
700         IDWriteRenderingParams **params);
701 
702     HRESULT (STDMETHODCALLTYPE *RegisterFontFileLoader)(
703         IDWriteFactory1 *This,
704         IDWriteFontFileLoader *loader);
705 
706     HRESULT (STDMETHODCALLTYPE *UnregisterFontFileLoader)(
707         IDWriteFactory1 *This,
708         IDWriteFontFileLoader *loader);
709 
710     HRESULT (STDMETHODCALLTYPE *CreateTextFormat)(
711         IDWriteFactory1 *This,
712         const WCHAR *family_name,
713         IDWriteFontCollection *collection,
714         DWRITE_FONT_WEIGHT weight,
715         DWRITE_FONT_STYLE style,
716         DWRITE_FONT_STRETCH stretch,
717         FLOAT size,
718         const WCHAR *locale,
719         IDWriteTextFormat **format);
720 
721     HRESULT (STDMETHODCALLTYPE *CreateTypography)(
722         IDWriteFactory1 *This,
723         IDWriteTypography **typography);
724 
725     HRESULT (STDMETHODCALLTYPE *GetGdiInterop)(
726         IDWriteFactory1 *This,
727         IDWriteGdiInterop **gdi_interop);
728 
729     HRESULT (STDMETHODCALLTYPE *CreateTextLayout)(
730         IDWriteFactory1 *This,
731         const WCHAR *string,
732         UINT32 len,
733         IDWriteTextFormat *format,
734         FLOAT max_width,
735         FLOAT max_height,
736         IDWriteTextLayout **layout);
737 
738     HRESULT (STDMETHODCALLTYPE *CreateGdiCompatibleTextLayout)(
739         IDWriteFactory1 *This,
740         const WCHAR *string,
741         UINT32 len,
742         IDWriteTextFormat *format,
743         FLOAT layout_width,
744         FLOAT layout_height,
745         FLOAT pixels_per_dip,
746         const DWRITE_MATRIX *transform,
747         WINBOOL use_gdi_natural,
748         IDWriteTextLayout **layout);
749 
750     HRESULT (STDMETHODCALLTYPE *CreateEllipsisTrimmingSign)(
751         IDWriteFactory1 *This,
752         IDWriteTextFormat *format,
753         IDWriteInlineObject **trimming_sign);
754 
755     HRESULT (STDMETHODCALLTYPE *CreateTextAnalyzer)(
756         IDWriteFactory1 *This,
757         IDWriteTextAnalyzer **analyzer);
758 
759     HRESULT (STDMETHODCALLTYPE *CreateNumberSubstitution)(
760         IDWriteFactory1 *This,
761         DWRITE_NUMBER_SUBSTITUTION_METHOD method,
762         const WCHAR *locale,
763         WINBOOL ignore_user_override,
764         IDWriteNumberSubstitution **substitution);
765 
766     HRESULT (STDMETHODCALLTYPE *CreateGlyphRunAnalysis)(
767         IDWriteFactory1 *This,
768         const DWRITE_GLYPH_RUN *glyph_run,
769         FLOAT pixels_per_dip,
770         const DWRITE_MATRIX *transform,
771         DWRITE_RENDERING_MODE rendering_mode,
772         DWRITE_MEASURING_MODE measuring_mode,
773         FLOAT baseline_x,
774         FLOAT baseline_y,
775         IDWriteGlyphRunAnalysis **analysis);
776 
777     /*** IDWriteFactory1 methods ***/
778     HRESULT (STDMETHODCALLTYPE *GetEudcFontCollection)(
779         IDWriteFactory1 *This,
780         IDWriteFontCollection **collection,
781         WINBOOL check_for_updates);
782 
783     HRESULT (STDMETHODCALLTYPE *IDWriteFactory1_CreateCustomRenderingParams)(
784         IDWriteFactory1 *This,
785         FLOAT gamma,
786         FLOAT enhcontrast,
787         FLOAT enhcontrast_grayscale,
788         FLOAT cleartype_level,
789         DWRITE_PIXEL_GEOMETRY geometry,
790         DWRITE_RENDERING_MODE mode,
791         IDWriteRenderingParams1 **params);
792 
793     END_INTERFACE
794 } IDWriteFactory1Vtbl;
795 
796 interface IDWriteFactory1 {
797     CONST_VTBL IDWriteFactory1Vtbl* lpVtbl;
798 };
799 
800 #ifdef COBJMACROS
801 #ifndef WIDL_C_INLINE_WRAPPERS
802 /*** IUnknown methods ***/
803 #define IDWriteFactory1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
804 #define IDWriteFactory1_AddRef(This) (This)->lpVtbl->AddRef(This)
805 #define IDWriteFactory1_Release(This) (This)->lpVtbl->Release(This)
806 /*** IDWriteFactory methods ***/
807 #define IDWriteFactory1_GetSystemFontCollection(This,collection,check_for_updates) (This)->lpVtbl->GetSystemFontCollection(This,collection,check_for_updates)
808 #define IDWriteFactory1_CreateCustomFontCollection(This,loader,key,key_size,collection) (This)->lpVtbl->CreateCustomFontCollection(This,loader,key,key_size,collection)
809 #define IDWriteFactory1_RegisterFontCollectionLoader(This,loader) (This)->lpVtbl->RegisterFontCollectionLoader(This,loader)
810 #define IDWriteFactory1_UnregisterFontCollectionLoader(This,loader) (This)->lpVtbl->UnregisterFontCollectionLoader(This,loader)
811 #define IDWriteFactory1_CreateFontFileReference(This,path,writetime,font_file) (This)->lpVtbl->CreateFontFileReference(This,path,writetime,font_file)
812 #define IDWriteFactory1_CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file) (This)->lpVtbl->CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file)
813 #define IDWriteFactory1_CreateFontFace(This,facetype,files_number,font_files,index,sim_flags,font_face) (This)->lpVtbl->CreateFontFace(This,facetype,files_number,font_files,index,sim_flags,font_face)
814 #define IDWriteFactory1_CreateRenderingParams(This,params) (This)->lpVtbl->CreateRenderingParams(This,params)
815 #define IDWriteFactory1_CreateMonitorRenderingParams(This,monitor,params) (This)->lpVtbl->CreateMonitorRenderingParams(This,monitor,params)
816 #define IDWriteFactory1_RegisterFontFileLoader(This,loader) (This)->lpVtbl->RegisterFontFileLoader(This,loader)
817 #define IDWriteFactory1_UnregisterFontFileLoader(This,loader) (This)->lpVtbl->UnregisterFontFileLoader(This,loader)
818 #define IDWriteFactory1_CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format) (This)->lpVtbl->CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format)
819 #define IDWriteFactory1_CreateTypography(This,typography) (This)->lpVtbl->CreateTypography(This,typography)
820 #define IDWriteFactory1_GetGdiInterop(This,gdi_interop) (This)->lpVtbl->GetGdiInterop(This,gdi_interop)
821 #define IDWriteFactory1_CreateTextLayout(This,string,len,format,max_width,max_height,layout) (This)->lpVtbl->CreateTextLayout(This,string,len,format,max_width,max_height,layout)
822 #define IDWriteFactory1_CreateGdiCompatibleTextLayout(This,string,len,format,layout_width,layout_height,pixels_per_dip,transform,use_gdi_natural,layout) (This)->lpVtbl->CreateGdiCompatibleTextLayout(This,string,len,format,layout_width,layout_height,pixels_per_dip,transform,use_gdi_natural,layout)
823 #define IDWriteFactory1_CreateEllipsisTrimmingSign(This,format,trimming_sign) (This)->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign)
824 #define IDWriteFactory1_CreateTextAnalyzer(This,analyzer) (This)->lpVtbl->CreateTextAnalyzer(This,analyzer)
825 #define IDWriteFactory1_CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution) (This)->lpVtbl->CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution)
826 #define IDWriteFactory1_CreateGlyphRunAnalysis(This,glyph_run,pixels_per_dip,transform,rendering_mode,measuring_mode,baseline_x,baseline_y,analysis) (This)->lpVtbl->CreateGlyphRunAnalysis(This,glyph_run,pixels_per_dip,transform,rendering_mode,measuring_mode,baseline_x,baseline_y,analysis)
827 /*** IDWriteFactory1 methods ***/
828 #define IDWriteFactory1_GetEudcFontCollection(This,collection,check_for_updates) (This)->lpVtbl->GetEudcFontCollection(This,collection,check_for_updates)
829 #define IDWriteFactory1_CreateCustomRenderingParams(This,gamma,enhcontrast,enhcontrast_grayscale,cleartype_level,geometry,mode,params) (This)->lpVtbl->IDWriteFactory1_CreateCustomRenderingParams(This,gamma,enhcontrast,enhcontrast_grayscale,cleartype_level,geometry,mode,params)
830 #else
831 /*** IUnknown methods ***/
832 static FORCEINLINE HRESULT IDWriteFactory1_QueryInterface(IDWriteFactory1* This,REFIID riid,void **ppvObject) {
833     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
834 }
835 static FORCEINLINE ULONG IDWriteFactory1_AddRef(IDWriteFactory1* This) {
836     return This->lpVtbl->AddRef(This);
837 }
838 static FORCEINLINE ULONG IDWriteFactory1_Release(IDWriteFactory1* This) {
839     return This->lpVtbl->Release(This);
840 }
841 /*** IDWriteFactory methods ***/
842 static FORCEINLINE HRESULT IDWriteFactory1_GetSystemFontCollection(IDWriteFactory1* This,IDWriteFontCollection **collection,WINBOOL check_for_updates) {
843     return This->lpVtbl->GetSystemFontCollection(This,collection,check_for_updates);
844 }
845 static FORCEINLINE HRESULT IDWriteFactory1_CreateCustomFontCollection(IDWriteFactory1* This,IDWriteFontCollectionLoader *loader,const void *key,UINT32 key_size,IDWriteFontCollection **collection) {
846     return This->lpVtbl->CreateCustomFontCollection(This,loader,key,key_size,collection);
847 }
848 static FORCEINLINE HRESULT IDWriteFactory1_RegisterFontCollectionLoader(IDWriteFactory1* This,IDWriteFontCollectionLoader *loader) {
849     return This->lpVtbl->RegisterFontCollectionLoader(This,loader);
850 }
851 static FORCEINLINE HRESULT IDWriteFactory1_UnregisterFontCollectionLoader(IDWriteFactory1* This,IDWriteFontCollectionLoader *loader) {
852     return This->lpVtbl->UnregisterFontCollectionLoader(This,loader);
853 }
854 static FORCEINLINE HRESULT IDWriteFactory1_CreateFontFileReference(IDWriteFactory1* This,const WCHAR *path,const FILETIME *writetime,IDWriteFontFile **font_file) {
855     return This->lpVtbl->CreateFontFileReference(This,path,writetime,font_file);
856 }
857 static FORCEINLINE HRESULT IDWriteFactory1_CreateCustomFontFileReference(IDWriteFactory1* This,const void *reference_key,UINT32 key_size,IDWriteFontFileLoader *loader,IDWriteFontFile **font_file) {
858     return This->lpVtbl->CreateCustomFontFileReference(This,reference_key,key_size,loader,font_file);
859 }
860 static FORCEINLINE HRESULT IDWriteFactory1_CreateFontFace(IDWriteFactory1* This,DWRITE_FONT_FACE_TYPE facetype,UINT32 files_number,IDWriteFontFile *const *font_files,UINT32 index,DWRITE_FONT_SIMULATIONS sim_flags,IDWriteFontFace **font_face) {
861     return This->lpVtbl->CreateFontFace(This,facetype,files_number,font_files,index,sim_flags,font_face);
862 }
863 static FORCEINLINE HRESULT IDWriteFactory1_CreateRenderingParams(IDWriteFactory1* This,IDWriteRenderingParams **params) {
864     return This->lpVtbl->CreateRenderingParams(This,params);
865 }
866 static FORCEINLINE HRESULT IDWriteFactory1_CreateMonitorRenderingParams(IDWriteFactory1* This,HMONITOR monitor,IDWriteRenderingParams **params) {
867     return This->lpVtbl->CreateMonitorRenderingParams(This,monitor,params);
868 }
869 static FORCEINLINE HRESULT IDWriteFactory1_RegisterFontFileLoader(IDWriteFactory1* This,IDWriteFontFileLoader *loader) {
870     return This->lpVtbl->RegisterFontFileLoader(This,loader);
871 }
872 static FORCEINLINE HRESULT IDWriteFactory1_UnregisterFontFileLoader(IDWriteFactory1* This,IDWriteFontFileLoader *loader) {
873     return This->lpVtbl->UnregisterFontFileLoader(This,loader);
874 }
875 static FORCEINLINE HRESULT IDWriteFactory1_CreateTextFormat(IDWriteFactory1* This,const WCHAR *family_name,IDWriteFontCollection *collection,DWRITE_FONT_WEIGHT weight,DWRITE_FONT_STYLE style,DWRITE_FONT_STRETCH stretch,FLOAT size,const WCHAR *locale,IDWriteTextFormat **format) {
876     return This->lpVtbl->CreateTextFormat(This,family_name,collection,weight,style,stretch,size,locale,format);
877 }
878 static FORCEINLINE HRESULT IDWriteFactory1_CreateTypography(IDWriteFactory1* This,IDWriteTypography **typography) {
879     return This->lpVtbl->CreateTypography(This,typography);
880 }
881 static FORCEINLINE HRESULT IDWriteFactory1_GetGdiInterop(IDWriteFactory1* This,IDWriteGdiInterop **gdi_interop) {
882     return This->lpVtbl->GetGdiInterop(This,gdi_interop);
883 }
884 static FORCEINLINE HRESULT IDWriteFactory1_CreateTextLayout(IDWriteFactory1* This,const WCHAR *string,UINT32 len,IDWriteTextFormat *format,FLOAT max_width,FLOAT max_height,IDWriteTextLayout **layout) {
885     return This->lpVtbl->CreateTextLayout(This,string,len,format,max_width,max_height,layout);
886 }
887 static FORCEINLINE HRESULT IDWriteFactory1_CreateGdiCompatibleTextLayout(IDWriteFactory1* This,const WCHAR *string,UINT32 len,IDWriteTextFormat *format,FLOAT layout_width,FLOAT layout_height,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,WINBOOL use_gdi_natural,IDWriteTextLayout **layout) {
888     return This->lpVtbl->CreateGdiCompatibleTextLayout(This,string,len,format,layout_width,layout_height,pixels_per_dip,transform,use_gdi_natural,layout);
889 }
890 static FORCEINLINE HRESULT IDWriteFactory1_CreateEllipsisTrimmingSign(IDWriteFactory1* This,IDWriteTextFormat *format,IDWriteInlineObject **trimming_sign) {
891     return This->lpVtbl->CreateEllipsisTrimmingSign(This,format,trimming_sign);
892 }
893 static FORCEINLINE HRESULT IDWriteFactory1_CreateTextAnalyzer(IDWriteFactory1* This,IDWriteTextAnalyzer **analyzer) {
894     return This->lpVtbl->CreateTextAnalyzer(This,analyzer);
895 }
896 static FORCEINLINE HRESULT IDWriteFactory1_CreateNumberSubstitution(IDWriteFactory1* This,DWRITE_NUMBER_SUBSTITUTION_METHOD method,const WCHAR *locale,WINBOOL ignore_user_override,IDWriteNumberSubstitution **substitution) {
897     return This->lpVtbl->CreateNumberSubstitution(This,method,locale,ignore_user_override,substitution);
898 }
899 static FORCEINLINE HRESULT IDWriteFactory1_CreateGlyphRunAnalysis(IDWriteFactory1* This,const DWRITE_GLYPH_RUN *glyph_run,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,DWRITE_RENDERING_MODE rendering_mode,DWRITE_MEASURING_MODE measuring_mode,FLOAT baseline_x,FLOAT baseline_y,IDWriteGlyphRunAnalysis **analysis) {
900     return This->lpVtbl->CreateGlyphRunAnalysis(This,glyph_run,pixels_per_dip,transform,rendering_mode,measuring_mode,baseline_x,baseline_y,analysis);
901 }
902 /*** IDWriteFactory1 methods ***/
903 static FORCEINLINE HRESULT IDWriteFactory1_GetEudcFontCollection(IDWriteFactory1* This,IDWriteFontCollection **collection,WINBOOL check_for_updates) {
904     return This->lpVtbl->GetEudcFontCollection(This,collection,check_for_updates);
905 }
906 static FORCEINLINE HRESULT IDWriteFactory1_CreateCustomRenderingParams(IDWriteFactory1* This,FLOAT gamma,FLOAT enhcontrast,FLOAT enhcontrast_grayscale,FLOAT cleartype_level,DWRITE_PIXEL_GEOMETRY geometry,DWRITE_RENDERING_MODE mode,IDWriteRenderingParams1 **params) {
907     return This->lpVtbl->IDWriteFactory1_CreateCustomRenderingParams(This,gamma,enhcontrast,enhcontrast_grayscale,cleartype_level,geometry,mode,params);
908 }
909 #endif
910 #endif
911 
912 #endif
913 
914 
915 #endif  /* __IDWriteFactory1_INTERFACE_DEFINED__ */
916 
917 /*****************************************************************************
918  * IDWriteFontFace1 interface
919  */
920 #ifndef __IDWriteFontFace1_INTERFACE_DEFINED__
921 #define __IDWriteFontFace1_INTERFACE_DEFINED__
922 
923 DEFINE_GUID(IID_IDWriteFontFace1, 0xa71efdb4, 0x9fdb, 0x4838, 0xad,0x90, 0xcf,0xc3,0xbe,0x8c,0x3d,0xaf);
924 #if defined(__cplusplus) && !defined(CINTERFACE)
925 MIDL_INTERFACE("a71efdb4-9fdb-4838-ad90-cfc3be8c3daf")
926 IDWriteFontFace1 : public IDWriteFontFace
927 {
928     virtual void STDMETHODCALLTYPE GetMetrics(
929         DWRITE_FONT_METRICS1 *metrics) = 0;
930 
931     virtual HRESULT STDMETHODCALLTYPE GetGdiCompatibleMetrics(
932         FLOAT em_size,
933         FLOAT pixels_per_dip,
934         const DWRITE_MATRIX *transform,
935         DWRITE_FONT_METRICS1 *metrics) = 0;
936 
937     virtual void STDMETHODCALLTYPE GetCaretMetrics(
938         DWRITE_CARET_METRICS *metrics) = 0;
939 
940     virtual HRESULT STDMETHODCALLTYPE GetUnicodeRanges(
941         UINT32 max_count,
942         DWRITE_UNICODE_RANGE *ranges,
943         UINT32 *count) = 0;
944 
945     virtual WINBOOL STDMETHODCALLTYPE IsMonospacedFont(
946         ) = 0;
947 
948     virtual HRESULT STDMETHODCALLTYPE GetDesignGlyphAdvances(
949         UINT32 glyph_count,
950         const UINT16 *indices,
951         INT32 *advances,
952         WINBOOL is_sideways = FALSE) = 0;
953 
954     virtual HRESULT STDMETHODCALLTYPE GetGdiCompatibleGlyphAdvances(
955         FLOAT em_size,
956         FLOAT pixels_per_dip,
957         const DWRITE_MATRIX *transform,
958         WINBOOL use_gdi_natural,
959         WINBOOL is_sideways,
960         UINT32 glyph_count,
961         const UINT16 *indices,
962         INT32 *advances) = 0;
963 
964     virtual HRESULT STDMETHODCALLTYPE GetKerningPairAdjustments(
965         UINT32 glyph_count,
966         const UINT16 *indices,
967         INT32 *adjustments) = 0;
968 
969     virtual WINBOOL STDMETHODCALLTYPE HasKerningPairs(
970         ) = 0;
971 
972     virtual HRESULT STDMETHODCALLTYPE GetRecommendedRenderingMode(
973         FLOAT font_emsize,
974         FLOAT dpiX,
975         FLOAT dpiY,
976         const DWRITE_MATRIX *transform,
977         WINBOOL is_sideways,
978         DWRITE_OUTLINE_THRESHOLD threshold,
979         DWRITE_MEASURING_MODE measuring_mode,
980         DWRITE_RENDERING_MODE *rendering_mode) = 0;
981 
982     virtual HRESULT STDMETHODCALLTYPE GetVerticalGlyphVariants(
983         UINT32 glyph_count,
984         const UINT16 *nominal_indices,
985         UINT16 *vertical_indices) = 0;
986 
987     virtual WINBOOL STDMETHODCALLTYPE HasVerticalGlyphVariants(
988         ) = 0;
989 
990 };
991 #ifdef __CRT_UUID_DECL
992 __CRT_UUID_DECL(IDWriteFontFace1, 0xa71efdb4, 0x9fdb, 0x4838, 0xad,0x90, 0xcf,0xc3,0xbe,0x8c,0x3d,0xaf)
993 #endif
994 #else
995 typedef struct IDWriteFontFace1Vtbl {
996     BEGIN_INTERFACE
997 
998     /*** IUnknown methods ***/
999     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1000         IDWriteFontFace1 *This,
1001         REFIID riid,
1002         void **ppvObject);
1003 
1004     ULONG (STDMETHODCALLTYPE *AddRef)(
1005         IDWriteFontFace1 *This);
1006 
1007     ULONG (STDMETHODCALLTYPE *Release)(
1008         IDWriteFontFace1 *This);
1009 
1010     /*** IDWriteFontFace methods ***/
1011     DWRITE_FONT_FACE_TYPE (STDMETHODCALLTYPE *GetType)(
1012         IDWriteFontFace1 *This);
1013 
1014     HRESULT (STDMETHODCALLTYPE *GetFiles)(
1015         IDWriteFontFace1 *This,
1016         UINT32 *number_of_files,
1017         IDWriteFontFile **fontfiles);
1018 
1019     UINT32 (STDMETHODCALLTYPE *GetIndex)(
1020         IDWriteFontFace1 *This);
1021 
1022     DWRITE_FONT_SIMULATIONS (STDMETHODCALLTYPE *GetSimulations)(
1023         IDWriteFontFace1 *This);
1024 
1025     WINBOOL (STDMETHODCALLTYPE *IsSymbolFont)(
1026         IDWriteFontFace1 *This);
1027 
1028     void (STDMETHODCALLTYPE *GetMetrics)(
1029         IDWriteFontFace1 *This,
1030         DWRITE_FONT_METRICS *metrics);
1031 
1032     UINT16 (STDMETHODCALLTYPE *GetGlyphCount)(
1033         IDWriteFontFace1 *This);
1034 
1035     HRESULT (STDMETHODCALLTYPE *GetDesignGlyphMetrics)(
1036         IDWriteFontFace1 *This,
1037         const UINT16 *glyph_indices,
1038         UINT32 glyph_count,
1039         DWRITE_GLYPH_METRICS *metrics,
1040         WINBOOL is_sideways);
1041 
1042     HRESULT (STDMETHODCALLTYPE *GetGlyphIndices)(
1043         IDWriteFontFace1 *This,
1044         const UINT32 *codepoints,
1045         UINT32 count,
1046         UINT16 *glyph_indices);
1047 
1048     HRESULT (STDMETHODCALLTYPE *TryGetFontTable)(
1049         IDWriteFontFace1 *This,
1050         UINT32 table_tag,
1051         const void **table_data,
1052         UINT32 *table_size,
1053         void **context,
1054         WINBOOL *exists);
1055 
1056     void (STDMETHODCALLTYPE *ReleaseFontTable)(
1057         IDWriteFontFace1 *This,
1058         void *table_context);
1059 
1060     HRESULT (STDMETHODCALLTYPE *GetGlyphRunOutline)(
1061         IDWriteFontFace1 *This,
1062         FLOAT emSize,
1063         const UINT16 *glyph_indices,
1064         const FLOAT *glyph_advances,
1065         const DWRITE_GLYPH_OFFSET *glyph_offsets,
1066         UINT32 glyph_count,
1067         WINBOOL is_sideways,
1068         WINBOOL is_rtl,
1069         IDWriteGeometrySink *geometrysink);
1070 
1071     HRESULT (STDMETHODCALLTYPE *GetRecommendedRenderingMode)(
1072         IDWriteFontFace1 *This,
1073         FLOAT emSize,
1074         FLOAT pixels_per_dip,
1075         DWRITE_MEASURING_MODE mode,
1076         IDWriteRenderingParams *params,
1077         DWRITE_RENDERING_MODE *rendering_mode);
1078 
1079     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleMetrics)(
1080         IDWriteFontFace1 *This,
1081         FLOAT emSize,
1082         FLOAT pixels_per_dip,
1083         const DWRITE_MATRIX *transform,
1084         DWRITE_FONT_METRICS *metrics);
1085 
1086     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleGlyphMetrics)(
1087         IDWriteFontFace1 *This,
1088         FLOAT emSize,
1089         FLOAT pixels_per_dip,
1090         const DWRITE_MATRIX *transform,
1091         WINBOOL use_gdi_natural,
1092         const UINT16 *glyph_indices,
1093         UINT32 glyph_count,
1094         DWRITE_GLYPH_METRICS *metrics,
1095         WINBOOL is_sideways);
1096 
1097     /*** IDWriteFontFace1 methods ***/
1098     void (STDMETHODCALLTYPE *IDWriteFontFace1_GetMetrics)(
1099         IDWriteFontFace1 *This,
1100         DWRITE_FONT_METRICS1 *metrics);
1101 
1102     HRESULT (STDMETHODCALLTYPE *IDWriteFontFace1_GetGdiCompatibleMetrics)(
1103         IDWriteFontFace1 *This,
1104         FLOAT em_size,
1105         FLOAT pixels_per_dip,
1106         const DWRITE_MATRIX *transform,
1107         DWRITE_FONT_METRICS1 *metrics);
1108 
1109     void (STDMETHODCALLTYPE *GetCaretMetrics)(
1110         IDWriteFontFace1 *This,
1111         DWRITE_CARET_METRICS *metrics);
1112 
1113     HRESULT (STDMETHODCALLTYPE *GetUnicodeRanges)(
1114         IDWriteFontFace1 *This,
1115         UINT32 max_count,
1116         DWRITE_UNICODE_RANGE *ranges,
1117         UINT32 *count);
1118 
1119     WINBOOL (STDMETHODCALLTYPE *IsMonospacedFont)(
1120         IDWriteFontFace1 *This);
1121 
1122     HRESULT (STDMETHODCALLTYPE *GetDesignGlyphAdvances)(
1123         IDWriteFontFace1 *This,
1124         UINT32 glyph_count,
1125         const UINT16 *indices,
1126         INT32 *advances,
1127         WINBOOL is_sideways);
1128 
1129     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleGlyphAdvances)(
1130         IDWriteFontFace1 *This,
1131         FLOAT em_size,
1132         FLOAT pixels_per_dip,
1133         const DWRITE_MATRIX *transform,
1134         WINBOOL use_gdi_natural,
1135         WINBOOL is_sideways,
1136         UINT32 glyph_count,
1137         const UINT16 *indices,
1138         INT32 *advances);
1139 
1140     HRESULT (STDMETHODCALLTYPE *GetKerningPairAdjustments)(
1141         IDWriteFontFace1 *This,
1142         UINT32 glyph_count,
1143         const UINT16 *indices,
1144         INT32 *adjustments);
1145 
1146     WINBOOL (STDMETHODCALLTYPE *HasKerningPairs)(
1147         IDWriteFontFace1 *This);
1148 
1149     HRESULT (STDMETHODCALLTYPE *IDWriteFontFace1_GetRecommendedRenderingMode)(
1150         IDWriteFontFace1 *This,
1151         FLOAT font_emsize,
1152         FLOAT dpiX,
1153         FLOAT dpiY,
1154         const DWRITE_MATRIX *transform,
1155         WINBOOL is_sideways,
1156         DWRITE_OUTLINE_THRESHOLD threshold,
1157         DWRITE_MEASURING_MODE measuring_mode,
1158         DWRITE_RENDERING_MODE *rendering_mode);
1159 
1160     HRESULT (STDMETHODCALLTYPE *GetVerticalGlyphVariants)(
1161         IDWriteFontFace1 *This,
1162         UINT32 glyph_count,
1163         const UINT16 *nominal_indices,
1164         UINT16 *vertical_indices);
1165 
1166     WINBOOL (STDMETHODCALLTYPE *HasVerticalGlyphVariants)(
1167         IDWriteFontFace1 *This);
1168 
1169     END_INTERFACE
1170 } IDWriteFontFace1Vtbl;
1171 
1172 interface IDWriteFontFace1 {
1173     CONST_VTBL IDWriteFontFace1Vtbl* lpVtbl;
1174 };
1175 
1176 #ifdef COBJMACROS
1177 #ifndef WIDL_C_INLINE_WRAPPERS
1178 /*** IUnknown methods ***/
1179 #define IDWriteFontFace1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1180 #define IDWriteFontFace1_AddRef(This) (This)->lpVtbl->AddRef(This)
1181 #define IDWriteFontFace1_Release(This) (This)->lpVtbl->Release(This)
1182 /*** IDWriteFontFace methods ***/
1183 #define IDWriteFontFace1_GetType(This) (This)->lpVtbl->GetType(This)
1184 #define IDWriteFontFace1_GetFiles(This,number_of_files,fontfiles) (This)->lpVtbl->GetFiles(This,number_of_files,fontfiles)
1185 #define IDWriteFontFace1_GetIndex(This) (This)->lpVtbl->GetIndex(This)
1186 #define IDWriteFontFace1_GetSimulations(This) (This)->lpVtbl->GetSimulations(This)
1187 #define IDWriteFontFace1_IsSymbolFont(This) (This)->lpVtbl->IsSymbolFont(This)
1188 #define IDWriteFontFace1_GetGlyphCount(This) (This)->lpVtbl->GetGlyphCount(This)
1189 #define IDWriteFontFace1_GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways) (This)->lpVtbl->GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways)
1190 #define IDWriteFontFace1_GetGlyphIndices(This,codepoints,count,glyph_indices) (This)->lpVtbl->GetGlyphIndices(This,codepoints,count,glyph_indices)
1191 #define IDWriteFontFace1_TryGetFontTable(This,table_tag,table_data,table_size,context,exists) (This)->lpVtbl->TryGetFontTable(This,table_tag,table_data,table_size,context,exists)
1192 #define IDWriteFontFace1_ReleaseFontTable(This,table_context) (This)->lpVtbl->ReleaseFontTable(This,table_context)
1193 #define IDWriteFontFace1_GetGlyphRunOutline(This,emSize,glyph_indices,glyph_advances,glyph_offsets,glyph_count,is_sideways,is_rtl,geometrysink) (This)->lpVtbl->GetGlyphRunOutline(This,emSize,glyph_indices,glyph_advances,glyph_offsets,glyph_count,is_sideways,is_rtl,geometrysink)
1194 #define IDWriteFontFace1_GetGdiCompatibleGlyphMetrics(This,emSize,pixels_per_dip,transform,use_gdi_natural,glyph_indices,glyph_count,metrics,is_sideways) (This)->lpVtbl->GetGdiCompatibleGlyphMetrics(This,emSize,pixels_per_dip,transform,use_gdi_natural,glyph_indices,glyph_count,metrics,is_sideways)
1195 /*** IDWriteFontFace1 methods ***/
1196 #define IDWriteFontFace1_GetMetrics(This,metrics) (This)->lpVtbl->IDWriteFontFace1_GetMetrics(This,metrics)
1197 #define IDWriteFontFace1_GetGdiCompatibleMetrics(This,em_size,pixels_per_dip,transform,metrics) (This)->lpVtbl->IDWriteFontFace1_GetGdiCompatibleMetrics(This,em_size,pixels_per_dip,transform,metrics)
1198 #define IDWriteFontFace1_GetCaretMetrics(This,metrics) (This)->lpVtbl->GetCaretMetrics(This,metrics)
1199 #define IDWriteFontFace1_GetUnicodeRanges(This,max_count,ranges,count) (This)->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count)
1200 #define IDWriteFontFace1_IsMonospacedFont(This) (This)->lpVtbl->IsMonospacedFont(This)
1201 #define IDWriteFontFace1_GetDesignGlyphAdvances(This,glyph_count,indices,advances,is_sideways) (This)->lpVtbl->GetDesignGlyphAdvances(This,glyph_count,indices,advances,is_sideways)
1202 #define IDWriteFontFace1_GetGdiCompatibleGlyphAdvances(This,em_size,pixels_per_dip,transform,use_gdi_natural,is_sideways,glyph_count,indices,advances) (This)->lpVtbl->GetGdiCompatibleGlyphAdvances(This,em_size,pixels_per_dip,transform,use_gdi_natural,is_sideways,glyph_count,indices,advances)
1203 #define IDWriteFontFace1_GetKerningPairAdjustments(This,glyph_count,indices,adjustments) (This)->lpVtbl->GetKerningPairAdjustments(This,glyph_count,indices,adjustments)
1204 #define IDWriteFontFace1_HasKerningPairs(This) (This)->lpVtbl->HasKerningPairs(This)
1205 #define IDWriteFontFace1_GetRecommendedRenderingMode(This,font_emsize,dpiX,dpiY,transform,is_sideways,threshold,measuring_mode,rendering_mode) (This)->lpVtbl->IDWriteFontFace1_GetRecommendedRenderingMode(This,font_emsize,dpiX,dpiY,transform,is_sideways,threshold,measuring_mode,rendering_mode)
1206 #define IDWriteFontFace1_GetVerticalGlyphVariants(This,glyph_count,nominal_indices,vertical_indices) (This)->lpVtbl->GetVerticalGlyphVariants(This,glyph_count,nominal_indices,vertical_indices)
1207 #define IDWriteFontFace1_HasVerticalGlyphVariants(This) (This)->lpVtbl->HasVerticalGlyphVariants(This)
1208 #else
1209 /*** IUnknown methods ***/
1210 static FORCEINLINE HRESULT IDWriteFontFace1_QueryInterface(IDWriteFontFace1* This,REFIID riid,void **ppvObject) {
1211     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1212 }
1213 static FORCEINLINE ULONG IDWriteFontFace1_AddRef(IDWriteFontFace1* This) {
1214     return This->lpVtbl->AddRef(This);
1215 }
1216 static FORCEINLINE ULONG IDWriteFontFace1_Release(IDWriteFontFace1* This) {
1217     return This->lpVtbl->Release(This);
1218 }
1219 /*** IDWriteFontFace methods ***/
1220 static FORCEINLINE DWRITE_FONT_FACE_TYPE IDWriteFontFace1_GetType(IDWriteFontFace1* This) {
1221     return This->lpVtbl->GetType(This);
1222 }
1223 static FORCEINLINE HRESULT IDWriteFontFace1_GetFiles(IDWriteFontFace1* This,UINT32 *number_of_files,IDWriteFontFile **fontfiles) {
1224     return This->lpVtbl->GetFiles(This,number_of_files,fontfiles);
1225 }
1226 static FORCEINLINE UINT32 IDWriteFontFace1_GetIndex(IDWriteFontFace1* This) {
1227     return This->lpVtbl->GetIndex(This);
1228 }
1229 static FORCEINLINE DWRITE_FONT_SIMULATIONS IDWriteFontFace1_GetSimulations(IDWriteFontFace1* This) {
1230     return This->lpVtbl->GetSimulations(This);
1231 }
1232 static FORCEINLINE WINBOOL IDWriteFontFace1_IsSymbolFont(IDWriteFontFace1* This) {
1233     return This->lpVtbl->IsSymbolFont(This);
1234 }
1235 static FORCEINLINE UINT16 IDWriteFontFace1_GetGlyphCount(IDWriteFontFace1* This) {
1236     return This->lpVtbl->GetGlyphCount(This);
1237 }
1238 static FORCEINLINE HRESULT IDWriteFontFace1_GetDesignGlyphMetrics(IDWriteFontFace1* This,const UINT16 *glyph_indices,UINT32 glyph_count,DWRITE_GLYPH_METRICS *metrics,WINBOOL is_sideways) {
1239     return This->lpVtbl->GetDesignGlyphMetrics(This,glyph_indices,glyph_count,metrics,is_sideways);
1240 }
1241 static FORCEINLINE HRESULT IDWriteFontFace1_GetGlyphIndices(IDWriteFontFace1* This,const UINT32 *codepoints,UINT32 count,UINT16 *glyph_indices) {
1242     return This->lpVtbl->GetGlyphIndices(This,codepoints,count,glyph_indices);
1243 }
1244 static FORCEINLINE HRESULT IDWriteFontFace1_TryGetFontTable(IDWriteFontFace1* This,UINT32 table_tag,const void **table_data,UINT32 *table_size,void **context,WINBOOL *exists) {
1245     return This->lpVtbl->TryGetFontTable(This,table_tag,table_data,table_size,context,exists);
1246 }
1247 static FORCEINLINE void IDWriteFontFace1_ReleaseFontTable(IDWriteFontFace1* This,void *table_context) {
1248     This->lpVtbl->ReleaseFontTable(This,table_context);
1249 }
1250 static FORCEINLINE HRESULT IDWriteFontFace1_GetGlyphRunOutline(IDWriteFontFace1* This,FLOAT emSize,const UINT16 *glyph_indices,const FLOAT *glyph_advances,const DWRITE_GLYPH_OFFSET *glyph_offsets,UINT32 glyph_count,WINBOOL is_sideways,WINBOOL is_rtl,IDWriteGeometrySink *geometrysink) {
1251     return This->lpVtbl->GetGlyphRunOutline(This,emSize,glyph_indices,glyph_advances,glyph_offsets,glyph_count,is_sideways,is_rtl,geometrysink);
1252 }
1253 static FORCEINLINE HRESULT IDWriteFontFace1_GetGdiCompatibleGlyphMetrics(IDWriteFontFace1* This,FLOAT emSize,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,WINBOOL use_gdi_natural,const UINT16 *glyph_indices,UINT32 glyph_count,DWRITE_GLYPH_METRICS *metrics,WINBOOL is_sideways) {
1254     return This->lpVtbl->GetGdiCompatibleGlyphMetrics(This,emSize,pixels_per_dip,transform,use_gdi_natural,glyph_indices,glyph_count,metrics,is_sideways);
1255 }
1256 /*** IDWriteFontFace1 methods ***/
1257 static FORCEINLINE void IDWriteFontFace1_GetMetrics(IDWriteFontFace1* This,DWRITE_FONT_METRICS1 *metrics) {
1258     This->lpVtbl->IDWriteFontFace1_GetMetrics(This,metrics);
1259 }
1260 static FORCEINLINE HRESULT IDWriteFontFace1_GetGdiCompatibleMetrics(IDWriteFontFace1* This,FLOAT em_size,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,DWRITE_FONT_METRICS1 *metrics) {
1261     return This->lpVtbl->IDWriteFontFace1_GetGdiCompatibleMetrics(This,em_size,pixels_per_dip,transform,metrics);
1262 }
1263 static FORCEINLINE void IDWriteFontFace1_GetCaretMetrics(IDWriteFontFace1* This,DWRITE_CARET_METRICS *metrics) {
1264     This->lpVtbl->GetCaretMetrics(This,metrics);
1265 }
1266 static FORCEINLINE HRESULT IDWriteFontFace1_GetUnicodeRanges(IDWriteFontFace1* This,UINT32 max_count,DWRITE_UNICODE_RANGE *ranges,UINT32 *count) {
1267     return This->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count);
1268 }
1269 static FORCEINLINE WINBOOL IDWriteFontFace1_IsMonospacedFont(IDWriteFontFace1* This) {
1270     return This->lpVtbl->IsMonospacedFont(This);
1271 }
1272 static FORCEINLINE HRESULT IDWriteFontFace1_GetDesignGlyphAdvances(IDWriteFontFace1* This,UINT32 glyph_count,const UINT16 *indices,INT32 *advances,WINBOOL is_sideways) {
1273     return This->lpVtbl->GetDesignGlyphAdvances(This,glyph_count,indices,advances,is_sideways);
1274 }
1275 static FORCEINLINE HRESULT IDWriteFontFace1_GetGdiCompatibleGlyphAdvances(IDWriteFontFace1* This,FLOAT em_size,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,WINBOOL use_gdi_natural,WINBOOL is_sideways,UINT32 glyph_count,const UINT16 *indices,INT32 *advances) {
1276     return This->lpVtbl->GetGdiCompatibleGlyphAdvances(This,em_size,pixels_per_dip,transform,use_gdi_natural,is_sideways,glyph_count,indices,advances);
1277 }
1278 static FORCEINLINE HRESULT IDWriteFontFace1_GetKerningPairAdjustments(IDWriteFontFace1* This,UINT32 glyph_count,const UINT16 *indices,INT32 *adjustments) {
1279     return This->lpVtbl->GetKerningPairAdjustments(This,glyph_count,indices,adjustments);
1280 }
1281 static FORCEINLINE WINBOOL IDWriteFontFace1_HasKerningPairs(IDWriteFontFace1* This) {
1282     return This->lpVtbl->HasKerningPairs(This);
1283 }
1284 static FORCEINLINE HRESULT IDWriteFontFace1_GetRecommendedRenderingMode(IDWriteFontFace1* This,FLOAT font_emsize,FLOAT dpiX,FLOAT dpiY,const DWRITE_MATRIX *transform,WINBOOL is_sideways,DWRITE_OUTLINE_THRESHOLD threshold,DWRITE_MEASURING_MODE measuring_mode,DWRITE_RENDERING_MODE *rendering_mode) {
1285     return This->lpVtbl->IDWriteFontFace1_GetRecommendedRenderingMode(This,font_emsize,dpiX,dpiY,transform,is_sideways,threshold,measuring_mode,rendering_mode);
1286 }
1287 static FORCEINLINE HRESULT IDWriteFontFace1_GetVerticalGlyphVariants(IDWriteFontFace1* This,UINT32 glyph_count,const UINT16 *nominal_indices,UINT16 *vertical_indices) {
1288     return This->lpVtbl->GetVerticalGlyphVariants(This,glyph_count,nominal_indices,vertical_indices);
1289 }
1290 static FORCEINLINE WINBOOL IDWriteFontFace1_HasVerticalGlyphVariants(IDWriteFontFace1* This) {
1291     return This->lpVtbl->HasVerticalGlyphVariants(This);
1292 }
1293 #endif
1294 #endif
1295 
1296 #endif
1297 
1298 
1299 #endif  /* __IDWriteFontFace1_INTERFACE_DEFINED__ */
1300 
1301 /*****************************************************************************
1302  * IDWriteFont1 interface
1303  */
1304 #ifndef __IDWriteFont1_INTERFACE_DEFINED__
1305 #define __IDWriteFont1_INTERFACE_DEFINED__
1306 
1307 DEFINE_GUID(IID_IDWriteFont1, 0xacd16696, 0x8c14, 0x4f5d, 0x87,0x7e, 0xfe,0x3f,0xc1,0xd3,0x27,0x38);
1308 #if defined(__cplusplus) && !defined(CINTERFACE)
1309 MIDL_INTERFACE("acd16696-8c14-4f5d-877e-fe3fc1d32738")
1310 IDWriteFont1 : public IDWriteFont
1311 {
1312     virtual void STDMETHODCALLTYPE GetMetrics(
1313         DWRITE_FONT_METRICS1 *metrics) = 0;
1314 
1315     virtual void STDMETHODCALLTYPE GetPanose(
1316         DWRITE_PANOSE *panose) = 0;
1317 
1318     virtual HRESULT STDMETHODCALLTYPE GetUnicodeRanges(
1319         UINT32 max_count,
1320         DWRITE_UNICODE_RANGE *ranges,
1321         UINT32 *count) = 0;
1322 
1323     virtual WINBOOL STDMETHODCALLTYPE IsMonospacedFont(
1324         ) = 0;
1325 
1326 };
1327 #ifdef __CRT_UUID_DECL
1328 __CRT_UUID_DECL(IDWriteFont1, 0xacd16696, 0x8c14, 0x4f5d, 0x87,0x7e, 0xfe,0x3f,0xc1,0xd3,0x27,0x38)
1329 #endif
1330 #else
1331 typedef struct IDWriteFont1Vtbl {
1332     BEGIN_INTERFACE
1333 
1334     /*** IUnknown methods ***/
1335     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1336         IDWriteFont1 *This,
1337         REFIID riid,
1338         void **ppvObject);
1339 
1340     ULONG (STDMETHODCALLTYPE *AddRef)(
1341         IDWriteFont1 *This);
1342 
1343     ULONG (STDMETHODCALLTYPE *Release)(
1344         IDWriteFont1 *This);
1345 
1346     /*** IDWriteFont methods ***/
1347     HRESULT (STDMETHODCALLTYPE *GetFontFamily)(
1348         IDWriteFont1 *This,
1349         IDWriteFontFamily **family);
1350 
1351     DWRITE_FONT_WEIGHT (STDMETHODCALLTYPE *GetWeight)(
1352         IDWriteFont1 *This);
1353 
1354     DWRITE_FONT_STRETCH (STDMETHODCALLTYPE *GetStretch)(
1355         IDWriteFont1 *This);
1356 
1357     DWRITE_FONT_STYLE (STDMETHODCALLTYPE *GetStyle)(
1358         IDWriteFont1 *This);
1359 
1360     WINBOOL (STDMETHODCALLTYPE *IsSymbolFont)(
1361         IDWriteFont1 *This);
1362 
1363     HRESULT (STDMETHODCALLTYPE *GetFaceNames)(
1364         IDWriteFont1 *This,
1365         IDWriteLocalizedStrings **names);
1366 
1367     HRESULT (STDMETHODCALLTYPE *GetInformationalStrings)(
1368         IDWriteFont1 *This,
1369         DWRITE_INFORMATIONAL_STRING_ID stringid,
1370         IDWriteLocalizedStrings **strings,
1371         WINBOOL *exists);
1372 
1373     DWRITE_FONT_SIMULATIONS (STDMETHODCALLTYPE *GetSimulations)(
1374         IDWriteFont1 *This);
1375 
1376     void (STDMETHODCALLTYPE *GetMetrics)(
1377         IDWriteFont1 *This,
1378         DWRITE_FONT_METRICS *metrics);
1379 
1380     HRESULT (STDMETHODCALLTYPE *HasCharacter)(
1381         IDWriteFont1 *This,
1382         UINT32 value,
1383         WINBOOL *exists);
1384 
1385     HRESULT (STDMETHODCALLTYPE *CreateFontFace)(
1386         IDWriteFont1 *This,
1387         IDWriteFontFace **face);
1388 
1389     /*** IDWriteFont1 methods ***/
1390     void (STDMETHODCALLTYPE *IDWriteFont1_GetMetrics)(
1391         IDWriteFont1 *This,
1392         DWRITE_FONT_METRICS1 *metrics);
1393 
1394     void (STDMETHODCALLTYPE *GetPanose)(
1395         IDWriteFont1 *This,
1396         DWRITE_PANOSE *panose);
1397 
1398     HRESULT (STDMETHODCALLTYPE *GetUnicodeRanges)(
1399         IDWriteFont1 *This,
1400         UINT32 max_count,
1401         DWRITE_UNICODE_RANGE *ranges,
1402         UINT32 *count);
1403 
1404     WINBOOL (STDMETHODCALLTYPE *IsMonospacedFont)(
1405         IDWriteFont1 *This);
1406 
1407     END_INTERFACE
1408 } IDWriteFont1Vtbl;
1409 
1410 interface IDWriteFont1 {
1411     CONST_VTBL IDWriteFont1Vtbl* lpVtbl;
1412 };
1413 
1414 #ifdef COBJMACROS
1415 #ifndef WIDL_C_INLINE_WRAPPERS
1416 /*** IUnknown methods ***/
1417 #define IDWriteFont1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1418 #define IDWriteFont1_AddRef(This) (This)->lpVtbl->AddRef(This)
1419 #define IDWriteFont1_Release(This) (This)->lpVtbl->Release(This)
1420 /*** IDWriteFont methods ***/
1421 #define IDWriteFont1_GetFontFamily(This,family) (This)->lpVtbl->GetFontFamily(This,family)
1422 #define IDWriteFont1_GetWeight(This) (This)->lpVtbl->GetWeight(This)
1423 #define IDWriteFont1_GetStretch(This) (This)->lpVtbl->GetStretch(This)
1424 #define IDWriteFont1_GetStyle(This) (This)->lpVtbl->GetStyle(This)
1425 #define IDWriteFont1_IsSymbolFont(This) (This)->lpVtbl->IsSymbolFont(This)
1426 #define IDWriteFont1_GetFaceNames(This,names) (This)->lpVtbl->GetFaceNames(This,names)
1427 #define IDWriteFont1_GetInformationalStrings(This,stringid,strings,exists) (This)->lpVtbl->GetInformationalStrings(This,stringid,strings,exists)
1428 #define IDWriteFont1_GetSimulations(This) (This)->lpVtbl->GetSimulations(This)
1429 #define IDWriteFont1_HasCharacter(This,value,exists) (This)->lpVtbl->HasCharacter(This,value,exists)
1430 #define IDWriteFont1_CreateFontFace(This,face) (This)->lpVtbl->CreateFontFace(This,face)
1431 /*** IDWriteFont1 methods ***/
1432 #define IDWriteFont1_GetMetrics(This,metrics) (This)->lpVtbl->IDWriteFont1_GetMetrics(This,metrics)
1433 #define IDWriteFont1_GetPanose(This,panose) (This)->lpVtbl->GetPanose(This,panose)
1434 #define IDWriteFont1_GetUnicodeRanges(This,max_count,ranges,count) (This)->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count)
1435 #define IDWriteFont1_IsMonospacedFont(This) (This)->lpVtbl->IsMonospacedFont(This)
1436 #else
1437 /*** IUnknown methods ***/
1438 static FORCEINLINE HRESULT IDWriteFont1_QueryInterface(IDWriteFont1* This,REFIID riid,void **ppvObject) {
1439     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1440 }
1441 static FORCEINLINE ULONG IDWriteFont1_AddRef(IDWriteFont1* This) {
1442     return This->lpVtbl->AddRef(This);
1443 }
1444 static FORCEINLINE ULONG IDWriteFont1_Release(IDWriteFont1* This) {
1445     return This->lpVtbl->Release(This);
1446 }
1447 /*** IDWriteFont methods ***/
1448 static FORCEINLINE HRESULT IDWriteFont1_GetFontFamily(IDWriteFont1* This,IDWriteFontFamily **family) {
1449     return This->lpVtbl->GetFontFamily(This,family);
1450 }
1451 static FORCEINLINE DWRITE_FONT_WEIGHT IDWriteFont1_GetWeight(IDWriteFont1* This) {
1452     return This->lpVtbl->GetWeight(This);
1453 }
1454 static FORCEINLINE DWRITE_FONT_STRETCH IDWriteFont1_GetStretch(IDWriteFont1* This) {
1455     return This->lpVtbl->GetStretch(This);
1456 }
1457 static FORCEINLINE DWRITE_FONT_STYLE IDWriteFont1_GetStyle(IDWriteFont1* This) {
1458     return This->lpVtbl->GetStyle(This);
1459 }
1460 static FORCEINLINE WINBOOL IDWriteFont1_IsSymbolFont(IDWriteFont1* This) {
1461     return This->lpVtbl->IsSymbolFont(This);
1462 }
1463 static FORCEINLINE HRESULT IDWriteFont1_GetFaceNames(IDWriteFont1* This,IDWriteLocalizedStrings **names) {
1464     return This->lpVtbl->GetFaceNames(This,names);
1465 }
1466 static FORCEINLINE HRESULT IDWriteFont1_GetInformationalStrings(IDWriteFont1* This,DWRITE_INFORMATIONAL_STRING_ID stringid,IDWriteLocalizedStrings **strings,WINBOOL *exists) {
1467     return This->lpVtbl->GetInformationalStrings(This,stringid,strings,exists);
1468 }
1469 static FORCEINLINE DWRITE_FONT_SIMULATIONS IDWriteFont1_GetSimulations(IDWriteFont1* This) {
1470     return This->lpVtbl->GetSimulations(This);
1471 }
1472 static FORCEINLINE HRESULT IDWriteFont1_HasCharacter(IDWriteFont1* This,UINT32 value,WINBOOL *exists) {
1473     return This->lpVtbl->HasCharacter(This,value,exists);
1474 }
1475 static FORCEINLINE HRESULT IDWriteFont1_CreateFontFace(IDWriteFont1* This,IDWriteFontFace **face) {
1476     return This->lpVtbl->CreateFontFace(This,face);
1477 }
1478 /*** IDWriteFont1 methods ***/
1479 static FORCEINLINE void IDWriteFont1_GetMetrics(IDWriteFont1* This,DWRITE_FONT_METRICS1 *metrics) {
1480     This->lpVtbl->IDWriteFont1_GetMetrics(This,metrics);
1481 }
1482 static FORCEINLINE void IDWriteFont1_GetPanose(IDWriteFont1* This,DWRITE_PANOSE *panose) {
1483     This->lpVtbl->GetPanose(This,panose);
1484 }
1485 static FORCEINLINE HRESULT IDWriteFont1_GetUnicodeRanges(IDWriteFont1* This,UINT32 max_count,DWRITE_UNICODE_RANGE *ranges,UINT32 *count) {
1486     return This->lpVtbl->GetUnicodeRanges(This,max_count,ranges,count);
1487 }
1488 static FORCEINLINE WINBOOL IDWriteFont1_IsMonospacedFont(IDWriteFont1* This) {
1489     return This->lpVtbl->IsMonospacedFont(This);
1490 }
1491 #endif
1492 #endif
1493 
1494 #endif
1495 
1496 
1497 #endif  /* __IDWriteFont1_INTERFACE_DEFINED__ */
1498 
1499 /*****************************************************************************
1500  * IDWriteRenderingParams1 interface
1501  */
1502 #ifndef __IDWriteRenderingParams1_INTERFACE_DEFINED__
1503 #define __IDWriteRenderingParams1_INTERFACE_DEFINED__
1504 
1505 DEFINE_GUID(IID_IDWriteRenderingParams1, 0x94413cf4, 0xa6fc, 0x4248, 0x8b,0x50, 0x66,0x74,0x34,0x8f,0xca,0xd3);
1506 #if defined(__cplusplus) && !defined(CINTERFACE)
1507 MIDL_INTERFACE("94413cf4-a6fc-4248-8b50-6674348fcad3")
1508 IDWriteRenderingParams1 : public IDWriteRenderingParams
1509 {
1510     virtual FLOAT STDMETHODCALLTYPE GetGrayscaleEnhancedContrast(
1511         ) = 0;
1512 
1513 };
1514 #ifdef __CRT_UUID_DECL
1515 __CRT_UUID_DECL(IDWriteRenderingParams1, 0x94413cf4, 0xa6fc, 0x4248, 0x8b,0x50, 0x66,0x74,0x34,0x8f,0xca,0xd3)
1516 #endif
1517 #else
1518 typedef struct IDWriteRenderingParams1Vtbl {
1519     BEGIN_INTERFACE
1520 
1521     /*** IUnknown methods ***/
1522     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1523         IDWriteRenderingParams1 *This,
1524         REFIID riid,
1525         void **ppvObject);
1526 
1527     ULONG (STDMETHODCALLTYPE *AddRef)(
1528         IDWriteRenderingParams1 *This);
1529 
1530     ULONG (STDMETHODCALLTYPE *Release)(
1531         IDWriteRenderingParams1 *This);
1532 
1533     /*** IDWriteRenderingParams methods ***/
1534     FLOAT (STDMETHODCALLTYPE *GetGamma)(
1535         IDWriteRenderingParams1 *This);
1536 
1537     FLOAT (STDMETHODCALLTYPE *GetEnhancedContrast)(
1538         IDWriteRenderingParams1 *This);
1539 
1540     FLOAT (STDMETHODCALLTYPE *GetClearTypeLevel)(
1541         IDWriteRenderingParams1 *This);
1542 
1543     DWRITE_PIXEL_GEOMETRY (STDMETHODCALLTYPE *GetPixelGeometry)(
1544         IDWriteRenderingParams1 *This);
1545 
1546     DWRITE_RENDERING_MODE (STDMETHODCALLTYPE *GetRenderingMode)(
1547         IDWriteRenderingParams1 *This);
1548 
1549     /*** IDWriteRenderingParams1 methods ***/
1550     FLOAT (STDMETHODCALLTYPE *GetGrayscaleEnhancedContrast)(
1551         IDWriteRenderingParams1 *This);
1552 
1553     END_INTERFACE
1554 } IDWriteRenderingParams1Vtbl;
1555 
1556 interface IDWriteRenderingParams1 {
1557     CONST_VTBL IDWriteRenderingParams1Vtbl* lpVtbl;
1558 };
1559 
1560 #ifdef COBJMACROS
1561 #ifndef WIDL_C_INLINE_WRAPPERS
1562 /*** IUnknown methods ***/
1563 #define IDWriteRenderingParams1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1564 #define IDWriteRenderingParams1_AddRef(This) (This)->lpVtbl->AddRef(This)
1565 #define IDWriteRenderingParams1_Release(This) (This)->lpVtbl->Release(This)
1566 /*** IDWriteRenderingParams methods ***/
1567 #define IDWriteRenderingParams1_GetGamma(This) (This)->lpVtbl->GetGamma(This)
1568 #define IDWriteRenderingParams1_GetEnhancedContrast(This) (This)->lpVtbl->GetEnhancedContrast(This)
1569 #define IDWriteRenderingParams1_GetClearTypeLevel(This) (This)->lpVtbl->GetClearTypeLevel(This)
1570 #define IDWriteRenderingParams1_GetPixelGeometry(This) (This)->lpVtbl->GetPixelGeometry(This)
1571 #define IDWriteRenderingParams1_GetRenderingMode(This) (This)->lpVtbl->GetRenderingMode(This)
1572 /*** IDWriteRenderingParams1 methods ***/
1573 #define IDWriteRenderingParams1_GetGrayscaleEnhancedContrast(This) (This)->lpVtbl->GetGrayscaleEnhancedContrast(This)
1574 #else
1575 /*** IUnknown methods ***/
1576 static FORCEINLINE HRESULT IDWriteRenderingParams1_QueryInterface(IDWriteRenderingParams1* This,REFIID riid,void **ppvObject) {
1577     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1578 }
1579 static FORCEINLINE ULONG IDWriteRenderingParams1_AddRef(IDWriteRenderingParams1* This) {
1580     return This->lpVtbl->AddRef(This);
1581 }
1582 static FORCEINLINE ULONG IDWriteRenderingParams1_Release(IDWriteRenderingParams1* This) {
1583     return This->lpVtbl->Release(This);
1584 }
1585 /*** IDWriteRenderingParams methods ***/
1586 static FORCEINLINE FLOAT IDWriteRenderingParams1_GetGamma(IDWriteRenderingParams1* This) {
1587     return This->lpVtbl->GetGamma(This);
1588 }
1589 static FORCEINLINE FLOAT IDWriteRenderingParams1_GetEnhancedContrast(IDWriteRenderingParams1* This) {
1590     return This->lpVtbl->GetEnhancedContrast(This);
1591 }
1592 static FORCEINLINE FLOAT IDWriteRenderingParams1_GetClearTypeLevel(IDWriteRenderingParams1* This) {
1593     return This->lpVtbl->GetClearTypeLevel(This);
1594 }
1595 static FORCEINLINE DWRITE_PIXEL_GEOMETRY IDWriteRenderingParams1_GetPixelGeometry(IDWriteRenderingParams1* This) {
1596     return This->lpVtbl->GetPixelGeometry(This);
1597 }
1598 static FORCEINLINE DWRITE_RENDERING_MODE IDWriteRenderingParams1_GetRenderingMode(IDWriteRenderingParams1* This) {
1599     return This->lpVtbl->GetRenderingMode(This);
1600 }
1601 /*** IDWriteRenderingParams1 methods ***/
1602 static FORCEINLINE FLOAT IDWriteRenderingParams1_GetGrayscaleEnhancedContrast(IDWriteRenderingParams1* This) {
1603     return This->lpVtbl->GetGrayscaleEnhancedContrast(This);
1604 }
1605 #endif
1606 #endif
1607 
1608 #endif
1609 
1610 
1611 #endif  /* __IDWriteRenderingParams1_INTERFACE_DEFINED__ */
1612 
1613 /*****************************************************************************
1614  * IDWriteTextAnalyzer1 interface
1615  */
1616 #ifndef __IDWriteTextAnalyzer1_INTERFACE_DEFINED__
1617 #define __IDWriteTextAnalyzer1_INTERFACE_DEFINED__
1618 
1619 DEFINE_GUID(IID_IDWriteTextAnalyzer1, 0x80dad800, 0xe21f, 0x4e83, 0x96,0xce, 0xbf,0xcc,0xe5,0x00,0xdb,0x7c);
1620 #if defined(__cplusplus) && !defined(CINTERFACE)
1621 MIDL_INTERFACE("80dad800-e21f-4e83-96ce-bfcce500db7c")
1622 IDWriteTextAnalyzer1 : public IDWriteTextAnalyzer
1623 {
1624     virtual HRESULT STDMETHODCALLTYPE ApplyCharacterSpacing(
1625         FLOAT leading_spacing,
1626         FLOAT trailing_spacing,
1627         FLOAT min_advance_width,
1628         UINT32 len,
1629         UINT32 glyph_count,
1630         const UINT16 *clustermap,
1631         const FLOAT *advances,
1632         const DWRITE_GLYPH_OFFSET *offsets,
1633         const DWRITE_SHAPING_GLYPH_PROPERTIES *props,
1634         FLOAT *modified_advances,
1635         DWRITE_GLYPH_OFFSET *modified_offsets) = 0;
1636 
1637     virtual HRESULT STDMETHODCALLTYPE GetBaseline(
1638         IDWriteFontFace *face,
1639         DWRITE_BASELINE baseline,
1640         WINBOOL vertical,
1641         WINBOOL is_simulation_allowed,
1642         DWRITE_SCRIPT_ANALYSIS sa,
1643         const WCHAR *localeName,
1644         INT32 *baseline_coord,
1645         WINBOOL *exists) = 0;
1646 
1647     virtual HRESULT STDMETHODCALLTYPE AnalyzeVerticalGlyphOrientation(
1648         IDWriteTextAnalysisSource1 *source,
1649         UINT32 text_pos,
1650         UINT32 len,
1651         IDWriteTextAnalysisSink1 *sink) = 0;
1652 
1653     virtual HRESULT STDMETHODCALLTYPE GetGlyphOrientationTransform(
1654         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
1655         WINBOOL is_sideways,
1656         DWRITE_MATRIX *transform) = 0;
1657 
1658     virtual HRESULT STDMETHODCALLTYPE GetScriptProperties(
1659         DWRITE_SCRIPT_ANALYSIS sa,
1660         DWRITE_SCRIPT_PROPERTIES *props) = 0;
1661 
1662     virtual HRESULT STDMETHODCALLTYPE GetTextComplexity(
1663         const WCHAR *text,
1664         UINT32 len,
1665         IDWriteFontFace *face,
1666         WINBOOL *is_simple,
1667         UINT32 *len_read,
1668         UINT16 *indices) = 0;
1669 
1670     virtual HRESULT STDMETHODCALLTYPE GetJustificationOpportunities(
1671         IDWriteFontFace *face,
1672         FLOAT font_em_size,
1673         DWRITE_SCRIPT_ANALYSIS sa,
1674         UINT32 length,
1675         UINT32 glyph_count,
1676         const WCHAR *text,
1677         const UINT16 *clustermap,
1678         const DWRITE_SHAPING_GLYPH_PROPERTIES *prop,
1679         DWRITE_JUSTIFICATION_OPPORTUNITY *jo) = 0;
1680 
1681     virtual HRESULT STDMETHODCALLTYPE JustifyGlyphAdvances(
1682         FLOAT width,
1683         UINT32 glyph_count,
1684         const DWRITE_JUSTIFICATION_OPPORTUNITY *jo,
1685         const FLOAT *advances,
1686         const DWRITE_GLYPH_OFFSET *offsets,
1687         FLOAT *justifiedadvances,
1688         DWRITE_GLYPH_OFFSET *justifiedoffsets) = 0;
1689 
1690     virtual HRESULT STDMETHODCALLTYPE GetJustifiedGlyphs(
1691         IDWriteFontFace *face,
1692         FLOAT font_em_size,
1693         DWRITE_SCRIPT_ANALYSIS sa,
1694         UINT32 length,
1695         UINT32 glyph_count,
1696         UINT32 max_glyphcount,
1697         const UINT16 *clustermap,
1698         const UINT16 *indices,
1699         const FLOAT *advances,
1700         const FLOAT *justifiedadvances,
1701         const DWRITE_GLYPH_OFFSET *justifiedoffsets,
1702         const DWRITE_SHAPING_GLYPH_PROPERTIES *prop,
1703         UINT32 *actual_count,
1704         UINT16 *modified_clustermap,
1705         UINT16 *modified_indices,
1706         FLOAT *modified_advances,
1707         DWRITE_GLYPH_OFFSET *modified_offsets) = 0;
1708 
1709 };
1710 #ifdef __CRT_UUID_DECL
1711 __CRT_UUID_DECL(IDWriteTextAnalyzer1, 0x80dad800, 0xe21f, 0x4e83, 0x96,0xce, 0xbf,0xcc,0xe5,0x00,0xdb,0x7c)
1712 #endif
1713 #else
1714 typedef struct IDWriteTextAnalyzer1Vtbl {
1715     BEGIN_INTERFACE
1716 
1717     /*** IUnknown methods ***/
1718     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1719         IDWriteTextAnalyzer1 *This,
1720         REFIID riid,
1721         void **ppvObject);
1722 
1723     ULONG (STDMETHODCALLTYPE *AddRef)(
1724         IDWriteTextAnalyzer1 *This);
1725 
1726     ULONG (STDMETHODCALLTYPE *Release)(
1727         IDWriteTextAnalyzer1 *This);
1728 
1729     /*** IDWriteTextAnalyzer methods ***/
1730     HRESULT (STDMETHODCALLTYPE *AnalyzeScript)(
1731         IDWriteTextAnalyzer1 *This,
1732         IDWriteTextAnalysisSource *source,
1733         UINT32 position,
1734         UINT32 length,
1735         IDWriteTextAnalysisSink *sink);
1736 
1737     HRESULT (STDMETHODCALLTYPE *AnalyzeBidi)(
1738         IDWriteTextAnalyzer1 *This,
1739         IDWriteTextAnalysisSource *source,
1740         UINT32 position,
1741         UINT32 length,
1742         IDWriteTextAnalysisSink *sink);
1743 
1744     HRESULT (STDMETHODCALLTYPE *AnalyzeNumberSubstitution)(
1745         IDWriteTextAnalyzer1 *This,
1746         IDWriteTextAnalysisSource *source,
1747         UINT32 position,
1748         UINT32 length,
1749         IDWriteTextAnalysisSink *sink);
1750 
1751     HRESULT (STDMETHODCALLTYPE *AnalyzeLineBreakpoints)(
1752         IDWriteTextAnalyzer1 *This,
1753         IDWriteTextAnalysisSource *source,
1754         UINT32 position,
1755         UINT32 length,
1756         IDWriteTextAnalysisSink *sink);
1757 
1758     HRESULT (STDMETHODCALLTYPE *GetGlyphs)(
1759         IDWriteTextAnalyzer1 *This,
1760         const WCHAR *text,
1761         UINT32 length,
1762         IDWriteFontFace *font_face,
1763         WINBOOL is_sideways,
1764         WINBOOL is_rtl,
1765         const DWRITE_SCRIPT_ANALYSIS *analysis,
1766         const WCHAR *locale,
1767         IDWriteNumberSubstitution *substitution,
1768         const DWRITE_TYPOGRAPHIC_FEATURES **features,
1769         const UINT32 *feature_range_len,
1770         UINT32 feature_ranges,
1771         UINT32 max_glyph_count,
1772         UINT16 *clustermap,
1773         DWRITE_SHAPING_TEXT_PROPERTIES *text_props,
1774         UINT16 *glyph_indices,
1775         DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,
1776         UINT32 *actual_glyph_count);
1777 
1778     HRESULT (STDMETHODCALLTYPE *GetGlyphPlacements)(
1779         IDWriteTextAnalyzer1 *This,
1780         const WCHAR *text,
1781         const UINT16 *clustermap,
1782         DWRITE_SHAPING_TEXT_PROPERTIES *props,
1783         UINT32 text_len,
1784         const UINT16 *glyph_indices,
1785         const DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,
1786         UINT32 glyph_count,
1787         IDWriteFontFace *font_face,
1788         FLOAT fontEmSize,
1789         WINBOOL is_sideways,
1790         WINBOOL is_rtl,
1791         const DWRITE_SCRIPT_ANALYSIS *analysis,
1792         const WCHAR *locale,
1793         const DWRITE_TYPOGRAPHIC_FEATURES **features,
1794         const UINT32 *feature_range_len,
1795         UINT32 feature_ranges,
1796         FLOAT *glyph_advances,
1797         DWRITE_GLYPH_OFFSET *glyph_offsets);
1798 
1799     HRESULT (STDMETHODCALLTYPE *GetGdiCompatibleGlyphPlacements)(
1800         IDWriteTextAnalyzer1 *This,
1801         const WCHAR *text,
1802         const UINT16 *clustermap,
1803         DWRITE_SHAPING_TEXT_PROPERTIES *props,
1804         UINT32 text_len,
1805         const UINT16 *glyph_indices,
1806         const DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,
1807         UINT32 glyph_count,
1808         IDWriteFontFace *font_face,
1809         FLOAT fontEmSize,
1810         FLOAT pixels_per_dip,
1811         const DWRITE_MATRIX *transform,
1812         WINBOOL use_gdi_natural,
1813         WINBOOL is_sideways,
1814         WINBOOL is_rtl,
1815         const DWRITE_SCRIPT_ANALYSIS *analysis,
1816         const WCHAR *locale,
1817         const DWRITE_TYPOGRAPHIC_FEATURES **features,
1818         const UINT32 *feature_range_lengths,
1819         UINT32 feature_ranges,
1820         FLOAT *glyph_advances,
1821         DWRITE_GLYPH_OFFSET *glyph_offsets);
1822 
1823     /*** IDWriteTextAnalyzer1 methods ***/
1824     HRESULT (STDMETHODCALLTYPE *ApplyCharacterSpacing)(
1825         IDWriteTextAnalyzer1 *This,
1826         FLOAT leading_spacing,
1827         FLOAT trailing_spacing,
1828         FLOAT min_advance_width,
1829         UINT32 len,
1830         UINT32 glyph_count,
1831         const UINT16 *clustermap,
1832         const FLOAT *advances,
1833         const DWRITE_GLYPH_OFFSET *offsets,
1834         const DWRITE_SHAPING_GLYPH_PROPERTIES *props,
1835         FLOAT *modified_advances,
1836         DWRITE_GLYPH_OFFSET *modified_offsets);
1837 
1838     HRESULT (STDMETHODCALLTYPE *GetBaseline)(
1839         IDWriteTextAnalyzer1 *This,
1840         IDWriteFontFace *face,
1841         DWRITE_BASELINE baseline,
1842         WINBOOL vertical,
1843         WINBOOL is_simulation_allowed,
1844         DWRITE_SCRIPT_ANALYSIS sa,
1845         const WCHAR *localeName,
1846         INT32 *baseline_coord,
1847         WINBOOL *exists);
1848 
1849     HRESULT (STDMETHODCALLTYPE *AnalyzeVerticalGlyphOrientation)(
1850         IDWriteTextAnalyzer1 *This,
1851         IDWriteTextAnalysisSource1 *source,
1852         UINT32 text_pos,
1853         UINT32 len,
1854         IDWriteTextAnalysisSink1 *sink);
1855 
1856     HRESULT (STDMETHODCALLTYPE *GetGlyphOrientationTransform)(
1857         IDWriteTextAnalyzer1 *This,
1858         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
1859         WINBOOL is_sideways,
1860         DWRITE_MATRIX *transform);
1861 
1862     HRESULT (STDMETHODCALLTYPE *GetScriptProperties)(
1863         IDWriteTextAnalyzer1 *This,
1864         DWRITE_SCRIPT_ANALYSIS sa,
1865         DWRITE_SCRIPT_PROPERTIES *props);
1866 
1867     HRESULT (STDMETHODCALLTYPE *GetTextComplexity)(
1868         IDWriteTextAnalyzer1 *This,
1869         const WCHAR *text,
1870         UINT32 len,
1871         IDWriteFontFace *face,
1872         WINBOOL *is_simple,
1873         UINT32 *len_read,
1874         UINT16 *indices);
1875 
1876     HRESULT (STDMETHODCALLTYPE *GetJustificationOpportunities)(
1877         IDWriteTextAnalyzer1 *This,
1878         IDWriteFontFace *face,
1879         FLOAT font_em_size,
1880         DWRITE_SCRIPT_ANALYSIS sa,
1881         UINT32 length,
1882         UINT32 glyph_count,
1883         const WCHAR *text,
1884         const UINT16 *clustermap,
1885         const DWRITE_SHAPING_GLYPH_PROPERTIES *prop,
1886         DWRITE_JUSTIFICATION_OPPORTUNITY *jo);
1887 
1888     HRESULT (STDMETHODCALLTYPE *JustifyGlyphAdvances)(
1889         IDWriteTextAnalyzer1 *This,
1890         FLOAT width,
1891         UINT32 glyph_count,
1892         const DWRITE_JUSTIFICATION_OPPORTUNITY *jo,
1893         const FLOAT *advances,
1894         const DWRITE_GLYPH_OFFSET *offsets,
1895         FLOAT *justifiedadvances,
1896         DWRITE_GLYPH_OFFSET *justifiedoffsets);
1897 
1898     HRESULT (STDMETHODCALLTYPE *GetJustifiedGlyphs)(
1899         IDWriteTextAnalyzer1 *This,
1900         IDWriteFontFace *face,
1901         FLOAT font_em_size,
1902         DWRITE_SCRIPT_ANALYSIS sa,
1903         UINT32 length,
1904         UINT32 glyph_count,
1905         UINT32 max_glyphcount,
1906         const UINT16 *clustermap,
1907         const UINT16 *indices,
1908         const FLOAT *advances,
1909         const FLOAT *justifiedadvances,
1910         const DWRITE_GLYPH_OFFSET *justifiedoffsets,
1911         const DWRITE_SHAPING_GLYPH_PROPERTIES *prop,
1912         UINT32 *actual_count,
1913         UINT16 *modified_clustermap,
1914         UINT16 *modified_indices,
1915         FLOAT *modified_advances,
1916         DWRITE_GLYPH_OFFSET *modified_offsets);
1917 
1918     END_INTERFACE
1919 } IDWriteTextAnalyzer1Vtbl;
1920 
1921 interface IDWriteTextAnalyzer1 {
1922     CONST_VTBL IDWriteTextAnalyzer1Vtbl* lpVtbl;
1923 };
1924 
1925 #ifdef COBJMACROS
1926 #ifndef WIDL_C_INLINE_WRAPPERS
1927 /*** IUnknown methods ***/
1928 #define IDWriteTextAnalyzer1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1929 #define IDWriteTextAnalyzer1_AddRef(This) (This)->lpVtbl->AddRef(This)
1930 #define IDWriteTextAnalyzer1_Release(This) (This)->lpVtbl->Release(This)
1931 /*** IDWriteTextAnalyzer methods ***/
1932 #define IDWriteTextAnalyzer1_AnalyzeScript(This,source,position,length,sink) (This)->lpVtbl->AnalyzeScript(This,source,position,length,sink)
1933 #define IDWriteTextAnalyzer1_AnalyzeBidi(This,source,position,length,sink) (This)->lpVtbl->AnalyzeBidi(This,source,position,length,sink)
1934 #define IDWriteTextAnalyzer1_AnalyzeNumberSubstitution(This,source,position,length,sink) (This)->lpVtbl->AnalyzeNumberSubstitution(This,source,position,length,sink)
1935 #define IDWriteTextAnalyzer1_AnalyzeLineBreakpoints(This,source,position,length,sink) (This)->lpVtbl->AnalyzeLineBreakpoints(This,source,position,length,sink)
1936 #define IDWriteTextAnalyzer1_GetGlyphs(This,text,length,font_face,is_sideways,is_rtl,analysis,locale,substitution,features,feature_range_len,feature_ranges,max_glyph_count,clustermap,text_props,glyph_indices,glyph_props,actual_glyph_count) (This)->lpVtbl->GetGlyphs(This,text,length,font_face,is_sideways,is_rtl,analysis,locale,substitution,features,feature_range_len,feature_ranges,max_glyph_count,clustermap,text_props,glyph_indices,glyph_props,actual_glyph_count)
1937 #define IDWriteTextAnalyzer1_GetGlyphPlacements(This,text,clustermap,props,text_len,glyph_indices,glyph_props,glyph_count,font_face,fontEmSize,is_sideways,is_rtl,analysis,locale,features,feature_range_len,feature_ranges,glyph_advances,glyph_offsets) (This)->lpVtbl->GetGlyphPlacements(This,text,clustermap,props,text_len,glyph_indices,glyph_props,glyph_count,font_face,fontEmSize,is_sideways,is_rtl,analysis,locale,features,feature_range_len,feature_ranges,glyph_advances,glyph_offsets)
1938 #define IDWriteTextAnalyzer1_GetGdiCompatibleGlyphPlacements(This,text,clustermap,props,text_len,glyph_indices,glyph_props,glyph_count,font_face,fontEmSize,pixels_per_dip,transform,use_gdi_natural,is_sideways,is_rtl,analysis,locale,features,feature_range_lengths,feature_ranges,glyph_advances,glyph_offsets) (This)->lpVtbl->GetGdiCompatibleGlyphPlacements(This,text,clustermap,props,text_len,glyph_indices,glyph_props,glyph_count,font_face,fontEmSize,pixels_per_dip,transform,use_gdi_natural,is_sideways,is_rtl,analysis,locale,features,feature_range_lengths,feature_ranges,glyph_advances,glyph_offsets)
1939 /*** IDWriteTextAnalyzer1 methods ***/
1940 #define IDWriteTextAnalyzer1_ApplyCharacterSpacing(This,leading_spacing,trailing_spacing,min_advance_width,len,glyph_count,clustermap,advances,offsets,props,modified_advances,modified_offsets) (This)->lpVtbl->ApplyCharacterSpacing(This,leading_spacing,trailing_spacing,min_advance_width,len,glyph_count,clustermap,advances,offsets,props,modified_advances,modified_offsets)
1941 #define IDWriteTextAnalyzer1_GetBaseline(This,face,baseline,vertical,is_simulation_allowed,sa,localeName,baseline_coord,exists) (This)->lpVtbl->GetBaseline(This,face,baseline,vertical,is_simulation_allowed,sa,localeName,baseline_coord,exists)
1942 #define IDWriteTextAnalyzer1_AnalyzeVerticalGlyphOrientation(This,source,text_pos,len,sink) (This)->lpVtbl->AnalyzeVerticalGlyphOrientation(This,source,text_pos,len,sink)
1943 #define IDWriteTextAnalyzer1_GetGlyphOrientationTransform(This,angle,is_sideways,transform) (This)->lpVtbl->GetGlyphOrientationTransform(This,angle,is_sideways,transform)
1944 #define IDWriteTextAnalyzer1_GetScriptProperties(This,sa,props) (This)->lpVtbl->GetScriptProperties(This,sa,props)
1945 #define IDWriteTextAnalyzer1_GetTextComplexity(This,text,len,face,is_simple,len_read,indices) (This)->lpVtbl->GetTextComplexity(This,text,len,face,is_simple,len_read,indices)
1946 #define IDWriteTextAnalyzer1_GetJustificationOpportunities(This,face,font_em_size,sa,length,glyph_count,text,clustermap,prop,jo) (This)->lpVtbl->GetJustificationOpportunities(This,face,font_em_size,sa,length,glyph_count,text,clustermap,prop,jo)
1947 #define IDWriteTextAnalyzer1_JustifyGlyphAdvances(This,width,glyph_count,jo,advances,offsets,justifiedadvances,justifiedoffsets) (This)->lpVtbl->JustifyGlyphAdvances(This,width,glyph_count,jo,advances,offsets,justifiedadvances,justifiedoffsets)
1948 #define IDWriteTextAnalyzer1_GetJustifiedGlyphs(This,face,font_em_size,sa,length,glyph_count,max_glyphcount,clustermap,indices,advances,justifiedadvances,justifiedoffsets,prop,actual_count,modified_clustermap,modified_indices,modified_advances,modified_offsets) (This)->lpVtbl->GetJustifiedGlyphs(This,face,font_em_size,sa,length,glyph_count,max_glyphcount,clustermap,indices,advances,justifiedadvances,justifiedoffsets,prop,actual_count,modified_clustermap,modified_indices,modified_advances,modified_offsets)
1949 #else
1950 /*** IUnknown methods ***/
1951 static FORCEINLINE HRESULT IDWriteTextAnalyzer1_QueryInterface(IDWriteTextAnalyzer1* This,REFIID riid,void **ppvObject) {
1952     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1953 }
1954 static FORCEINLINE ULONG IDWriteTextAnalyzer1_AddRef(IDWriteTextAnalyzer1* This) {
1955     return This->lpVtbl->AddRef(This);
1956 }
1957 static FORCEINLINE ULONG IDWriteTextAnalyzer1_Release(IDWriteTextAnalyzer1* This) {
1958     return This->lpVtbl->Release(This);
1959 }
1960 /*** IDWriteTextAnalyzer methods ***/
1961 static FORCEINLINE HRESULT IDWriteTextAnalyzer1_AnalyzeScript(IDWriteTextAnalyzer1* This,IDWriteTextAnalysisSource *source,UINT32 position,UINT32 length,IDWriteTextAnalysisSink *sink) {
1962     return This->lpVtbl->AnalyzeScript(This,source,position,length,sink);
1963 }
1964 static FORCEINLINE HRESULT IDWriteTextAnalyzer1_AnalyzeBidi(IDWriteTextAnalyzer1* This,IDWriteTextAnalysisSource *source,UINT32 position,UINT32 length,IDWriteTextAnalysisSink *sink) {
1965     return This->lpVtbl->AnalyzeBidi(This,source,position,length,sink);
1966 }
1967 static FORCEINLINE HRESULT IDWriteTextAnalyzer1_AnalyzeNumberSubstitution(IDWriteTextAnalyzer1* This,IDWriteTextAnalysisSource *source,UINT32 position,UINT32 length,IDWriteTextAnalysisSink *sink) {
1968     return This->lpVtbl->AnalyzeNumberSubstitution(This,source,position,length,sink);
1969 }
1970 static FORCEINLINE HRESULT IDWriteTextAnalyzer1_AnalyzeLineBreakpoints(IDWriteTextAnalyzer1* This,IDWriteTextAnalysisSource *source,UINT32 position,UINT32 length,IDWriteTextAnalysisSink *sink) {
1971     return This->lpVtbl->AnalyzeLineBreakpoints(This,source,position,length,sink);
1972 }
1973 static FORCEINLINE HRESULT IDWriteTextAnalyzer1_GetGlyphs(IDWriteTextAnalyzer1* This,const WCHAR *text,UINT32 length,IDWriteFontFace *font_face,WINBOOL is_sideways,WINBOOL is_rtl,const DWRITE_SCRIPT_ANALYSIS *analysis,const WCHAR *locale,IDWriteNumberSubstitution *substitution,const DWRITE_TYPOGRAPHIC_FEATURES **features,const UINT32 *feature_range_len,UINT32 feature_ranges,UINT32 max_glyph_count,UINT16 *clustermap,DWRITE_SHAPING_TEXT_PROPERTIES *text_props,UINT16 *glyph_indices,DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,UINT32 *actual_glyph_count) {
1974     return This->lpVtbl->GetGlyphs(This,text,length,font_face,is_sideways,is_rtl,analysis,locale,substitution,features,feature_range_len,feature_ranges,max_glyph_count,clustermap,text_props,glyph_indices,glyph_props,actual_glyph_count);
1975 }
1976 static FORCEINLINE HRESULT IDWriteTextAnalyzer1_GetGlyphPlacements(IDWriteTextAnalyzer1* This,const WCHAR *text,const UINT16 *clustermap,DWRITE_SHAPING_TEXT_PROPERTIES *props,UINT32 text_len,const UINT16 *glyph_indices,const DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,UINT32 glyph_count,IDWriteFontFace *font_face,FLOAT fontEmSize,WINBOOL is_sideways,WINBOOL is_rtl,const DWRITE_SCRIPT_ANALYSIS *analysis,const WCHAR *locale,const DWRITE_TYPOGRAPHIC_FEATURES **features,const UINT32 *feature_range_len,UINT32 feature_ranges,FLOAT *glyph_advances,DWRITE_GLYPH_OFFSET *glyph_offsets) {
1977     return This->lpVtbl->GetGlyphPlacements(This,text,clustermap,props,text_len,glyph_indices,glyph_props,glyph_count,font_face,fontEmSize,is_sideways,is_rtl,analysis,locale,features,feature_range_len,feature_ranges,glyph_advances,glyph_offsets);
1978 }
1979 static FORCEINLINE HRESULT IDWriteTextAnalyzer1_GetGdiCompatibleGlyphPlacements(IDWriteTextAnalyzer1* This,const WCHAR *text,const UINT16 *clustermap,DWRITE_SHAPING_TEXT_PROPERTIES *props,UINT32 text_len,const UINT16 *glyph_indices,const DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props,UINT32 glyph_count,IDWriteFontFace *font_face,FLOAT fontEmSize,FLOAT pixels_per_dip,const DWRITE_MATRIX *transform,WINBOOL use_gdi_natural,WINBOOL is_sideways,WINBOOL is_rtl,const DWRITE_SCRIPT_ANALYSIS *analysis,const WCHAR *locale,const DWRITE_TYPOGRAPHIC_FEATURES **features,const UINT32 *feature_range_lengths,UINT32 feature_ranges,FLOAT *glyph_advances,DWRITE_GLYPH_OFFSET *glyph_offsets) {
1980     return This->lpVtbl->GetGdiCompatibleGlyphPlacements(This,text,clustermap,props,text_len,glyph_indices,glyph_props,glyph_count,font_face,fontEmSize,pixels_per_dip,transform,use_gdi_natural,is_sideways,is_rtl,analysis,locale,features,feature_range_lengths,feature_ranges,glyph_advances,glyph_offsets);
1981 }
1982 /*** IDWriteTextAnalyzer1 methods ***/
1983 static FORCEINLINE HRESULT IDWriteTextAnalyzer1_ApplyCharacterSpacing(IDWriteTextAnalyzer1* This,FLOAT leading_spacing,FLOAT trailing_spacing,FLOAT min_advance_width,UINT32 len,UINT32 glyph_count,const UINT16 *clustermap,const FLOAT *advances,const DWRITE_GLYPH_OFFSET *offsets,const DWRITE_SHAPING_GLYPH_PROPERTIES *props,FLOAT *modified_advances,DWRITE_GLYPH_OFFSET *modified_offsets) {
1984     return This->lpVtbl->ApplyCharacterSpacing(This,leading_spacing,trailing_spacing,min_advance_width,len,glyph_count,clustermap,advances,offsets,props,modified_advances,modified_offsets);
1985 }
1986 static FORCEINLINE HRESULT IDWriteTextAnalyzer1_GetBaseline(IDWriteTextAnalyzer1* This,IDWriteFontFace *face,DWRITE_BASELINE baseline,WINBOOL vertical,WINBOOL is_simulation_allowed,DWRITE_SCRIPT_ANALYSIS sa,const WCHAR *localeName,INT32 *baseline_coord,WINBOOL *exists) {
1987     return This->lpVtbl->GetBaseline(This,face,baseline,vertical,is_simulation_allowed,sa,localeName,baseline_coord,exists);
1988 }
1989 static FORCEINLINE HRESULT IDWriteTextAnalyzer1_AnalyzeVerticalGlyphOrientation(IDWriteTextAnalyzer1* This,IDWriteTextAnalysisSource1 *source,UINT32 text_pos,UINT32 len,IDWriteTextAnalysisSink1 *sink) {
1990     return This->lpVtbl->AnalyzeVerticalGlyphOrientation(This,source,text_pos,len,sink);
1991 }
1992 static FORCEINLINE HRESULT IDWriteTextAnalyzer1_GetGlyphOrientationTransform(IDWriteTextAnalyzer1* This,DWRITE_GLYPH_ORIENTATION_ANGLE angle,WINBOOL is_sideways,DWRITE_MATRIX *transform) {
1993     return This->lpVtbl->GetGlyphOrientationTransform(This,angle,is_sideways,transform);
1994 }
1995 static FORCEINLINE HRESULT IDWriteTextAnalyzer1_GetScriptProperties(IDWriteTextAnalyzer1* This,DWRITE_SCRIPT_ANALYSIS sa,DWRITE_SCRIPT_PROPERTIES *props) {
1996     return This->lpVtbl->GetScriptProperties(This,sa,props);
1997 }
1998 static FORCEINLINE HRESULT IDWriteTextAnalyzer1_GetTextComplexity(IDWriteTextAnalyzer1* This,const WCHAR *text,UINT32 len,IDWriteFontFace *face,WINBOOL *is_simple,UINT32 *len_read,UINT16 *indices) {
1999     return This->lpVtbl->GetTextComplexity(This,text,len,face,is_simple,len_read,indices);
2000 }
2001 static FORCEINLINE HRESULT IDWriteTextAnalyzer1_GetJustificationOpportunities(IDWriteTextAnalyzer1* This,IDWriteFontFace *face,FLOAT font_em_size,DWRITE_SCRIPT_ANALYSIS sa,UINT32 length,UINT32 glyph_count,const WCHAR *text,const UINT16 *clustermap,const DWRITE_SHAPING_GLYPH_PROPERTIES *prop,DWRITE_JUSTIFICATION_OPPORTUNITY *jo) {
2002     return This->lpVtbl->GetJustificationOpportunities(This,face,font_em_size,sa,length,glyph_count,text,clustermap,prop,jo);
2003 }
2004 static FORCEINLINE HRESULT IDWriteTextAnalyzer1_JustifyGlyphAdvances(IDWriteTextAnalyzer1* This,FLOAT width,UINT32 glyph_count,const DWRITE_JUSTIFICATION_OPPORTUNITY *jo,const FLOAT *advances,const DWRITE_GLYPH_OFFSET *offsets,FLOAT *justifiedadvances,DWRITE_GLYPH_OFFSET *justifiedoffsets) {
2005     return This->lpVtbl->JustifyGlyphAdvances(This,width,glyph_count,jo,advances,offsets,justifiedadvances,justifiedoffsets);
2006 }
2007 static FORCEINLINE HRESULT IDWriteTextAnalyzer1_GetJustifiedGlyphs(IDWriteTextAnalyzer1* This,IDWriteFontFace *face,FLOAT font_em_size,DWRITE_SCRIPT_ANALYSIS sa,UINT32 length,UINT32 glyph_count,UINT32 max_glyphcount,const UINT16 *clustermap,const UINT16 *indices,const FLOAT *advances,const FLOAT *justifiedadvances,const DWRITE_GLYPH_OFFSET *justifiedoffsets,const DWRITE_SHAPING_GLYPH_PROPERTIES *prop,UINT32 *actual_count,UINT16 *modified_clustermap,UINT16 *modified_indices,FLOAT *modified_advances,DWRITE_GLYPH_OFFSET *modified_offsets) {
2008     return This->lpVtbl->GetJustifiedGlyphs(This,face,font_em_size,sa,length,glyph_count,max_glyphcount,clustermap,indices,advances,justifiedadvances,justifiedoffsets,prop,actual_count,modified_clustermap,modified_indices,modified_advances,modified_offsets);
2009 }
2010 #endif
2011 #endif
2012 
2013 #endif
2014 
2015 
2016 #endif  /* __IDWriteTextAnalyzer1_INTERFACE_DEFINED__ */
2017 
2018 /*****************************************************************************
2019  * IDWriteTextAnalysisSource1 interface
2020  */
2021 #ifndef __IDWriteTextAnalysisSource1_INTERFACE_DEFINED__
2022 #define __IDWriteTextAnalysisSource1_INTERFACE_DEFINED__
2023 
2024 DEFINE_GUID(IID_IDWriteTextAnalysisSource1, 0x639cfad8, 0x0fb4, 0x4b21, 0xa5,0x8a, 0x06,0x79,0x20,0x12,0x00,0x09);
2025 #if defined(__cplusplus) && !defined(CINTERFACE)
2026 MIDL_INTERFACE("639cfad8-0fb4-4b21-a58a-067920120009")
2027 IDWriteTextAnalysisSource1 : public IDWriteTextAnalysisSource
2028 {
2029     virtual HRESULT STDMETHODCALLTYPE GetVerticalGlyphOrientation(
2030         UINT32 pos,
2031         UINT32 *length,
2032         DWRITE_VERTICAL_GLYPH_ORIENTATION *orientation,
2033         UINT8 *bidi_level) = 0;
2034 
2035 };
2036 #ifdef __CRT_UUID_DECL
2037 __CRT_UUID_DECL(IDWriteTextAnalysisSource1, 0x639cfad8, 0x0fb4, 0x4b21, 0xa5,0x8a, 0x06,0x79,0x20,0x12,0x00,0x09)
2038 #endif
2039 #else
2040 typedef struct IDWriteTextAnalysisSource1Vtbl {
2041     BEGIN_INTERFACE
2042 
2043     /*** IUnknown methods ***/
2044     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2045         IDWriteTextAnalysisSource1 *This,
2046         REFIID riid,
2047         void **ppvObject);
2048 
2049     ULONG (STDMETHODCALLTYPE *AddRef)(
2050         IDWriteTextAnalysisSource1 *This);
2051 
2052     ULONG (STDMETHODCALLTYPE *Release)(
2053         IDWriteTextAnalysisSource1 *This);
2054 
2055     /*** IDWriteTextAnalysisSource methods ***/
2056     HRESULT (STDMETHODCALLTYPE *GetTextAtPosition)(
2057         IDWriteTextAnalysisSource1 *This,
2058         UINT32 position,
2059         const WCHAR **text,
2060         UINT32 *text_len);
2061 
2062     HRESULT (STDMETHODCALLTYPE *GetTextBeforePosition)(
2063         IDWriteTextAnalysisSource1 *This,
2064         UINT32 position,
2065         const WCHAR **text,
2066         UINT32 *text_len);
2067 
2068     DWRITE_READING_DIRECTION (STDMETHODCALLTYPE *GetParagraphReadingDirection)(
2069         IDWriteTextAnalysisSource1 *This);
2070 
2071     HRESULT (STDMETHODCALLTYPE *GetLocaleName)(
2072         IDWriteTextAnalysisSource1 *This,
2073         UINT32 position,
2074         UINT32 *text_len,
2075         const WCHAR **locale);
2076 
2077     HRESULT (STDMETHODCALLTYPE *GetNumberSubstitution)(
2078         IDWriteTextAnalysisSource1 *This,
2079         UINT32 position,
2080         UINT32 *text_len,
2081         IDWriteNumberSubstitution **substitution);
2082 
2083     /*** IDWriteTextAnalysisSource1 methods ***/
2084     HRESULT (STDMETHODCALLTYPE *GetVerticalGlyphOrientation)(
2085         IDWriteTextAnalysisSource1 *This,
2086         UINT32 pos,
2087         UINT32 *length,
2088         DWRITE_VERTICAL_GLYPH_ORIENTATION *orientation,
2089         UINT8 *bidi_level);
2090 
2091     END_INTERFACE
2092 } IDWriteTextAnalysisSource1Vtbl;
2093 
2094 interface IDWriteTextAnalysisSource1 {
2095     CONST_VTBL IDWriteTextAnalysisSource1Vtbl* lpVtbl;
2096 };
2097 
2098 #ifdef COBJMACROS
2099 #ifndef WIDL_C_INLINE_WRAPPERS
2100 /*** IUnknown methods ***/
2101 #define IDWriteTextAnalysisSource1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2102 #define IDWriteTextAnalysisSource1_AddRef(This) (This)->lpVtbl->AddRef(This)
2103 #define IDWriteTextAnalysisSource1_Release(This) (This)->lpVtbl->Release(This)
2104 /*** IDWriteTextAnalysisSource methods ***/
2105 #define IDWriteTextAnalysisSource1_GetTextAtPosition(This,position,text,text_len) (This)->lpVtbl->GetTextAtPosition(This,position,text,text_len)
2106 #define IDWriteTextAnalysisSource1_GetTextBeforePosition(This,position,text,text_len) (This)->lpVtbl->GetTextBeforePosition(This,position,text,text_len)
2107 #define IDWriteTextAnalysisSource1_GetParagraphReadingDirection(This) (This)->lpVtbl->GetParagraphReadingDirection(This)
2108 #define IDWriteTextAnalysisSource1_GetLocaleName(This,position,text_len,locale) (This)->lpVtbl->GetLocaleName(This,position,text_len,locale)
2109 #define IDWriteTextAnalysisSource1_GetNumberSubstitution(This,position,text_len,substitution) (This)->lpVtbl->GetNumberSubstitution(This,position,text_len,substitution)
2110 /*** IDWriteTextAnalysisSource1 methods ***/
2111 #define IDWriteTextAnalysisSource1_GetVerticalGlyphOrientation(This,pos,length,orientation,bidi_level) (This)->lpVtbl->GetVerticalGlyphOrientation(This,pos,length,orientation,bidi_level)
2112 #else
2113 /*** IUnknown methods ***/
2114 static FORCEINLINE HRESULT IDWriteTextAnalysisSource1_QueryInterface(IDWriteTextAnalysisSource1* This,REFIID riid,void **ppvObject) {
2115     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2116 }
2117 static FORCEINLINE ULONG IDWriteTextAnalysisSource1_AddRef(IDWriteTextAnalysisSource1* This) {
2118     return This->lpVtbl->AddRef(This);
2119 }
2120 static FORCEINLINE ULONG IDWriteTextAnalysisSource1_Release(IDWriteTextAnalysisSource1* This) {
2121     return This->lpVtbl->Release(This);
2122 }
2123 /*** IDWriteTextAnalysisSource methods ***/
2124 static FORCEINLINE HRESULT IDWriteTextAnalysisSource1_GetTextAtPosition(IDWriteTextAnalysisSource1* This,UINT32 position,const WCHAR **text,UINT32 *text_len) {
2125     return This->lpVtbl->GetTextAtPosition(This,position,text,text_len);
2126 }
2127 static FORCEINLINE HRESULT IDWriteTextAnalysisSource1_GetTextBeforePosition(IDWriteTextAnalysisSource1* This,UINT32 position,const WCHAR **text,UINT32 *text_len) {
2128     return This->lpVtbl->GetTextBeforePosition(This,position,text,text_len);
2129 }
2130 static FORCEINLINE DWRITE_READING_DIRECTION IDWriteTextAnalysisSource1_GetParagraphReadingDirection(IDWriteTextAnalysisSource1* This) {
2131     return This->lpVtbl->GetParagraphReadingDirection(This);
2132 }
2133 static FORCEINLINE HRESULT IDWriteTextAnalysisSource1_GetLocaleName(IDWriteTextAnalysisSource1* This,UINT32 position,UINT32 *text_len,const WCHAR **locale) {
2134     return This->lpVtbl->GetLocaleName(This,position,text_len,locale);
2135 }
2136 static FORCEINLINE HRESULT IDWriteTextAnalysisSource1_GetNumberSubstitution(IDWriteTextAnalysisSource1* This,UINT32 position,UINT32 *text_len,IDWriteNumberSubstitution **substitution) {
2137     return This->lpVtbl->GetNumberSubstitution(This,position,text_len,substitution);
2138 }
2139 /*** IDWriteTextAnalysisSource1 methods ***/
2140 static FORCEINLINE HRESULT IDWriteTextAnalysisSource1_GetVerticalGlyphOrientation(IDWriteTextAnalysisSource1* This,UINT32 pos,UINT32 *length,DWRITE_VERTICAL_GLYPH_ORIENTATION *orientation,UINT8 *bidi_level) {
2141     return This->lpVtbl->GetVerticalGlyphOrientation(This,pos,length,orientation,bidi_level);
2142 }
2143 #endif
2144 #endif
2145 
2146 #endif
2147 
2148 
2149 #endif  /* __IDWriteTextAnalysisSource1_INTERFACE_DEFINED__ */
2150 
2151 /*****************************************************************************
2152  * IDWriteTextAnalysisSink1 interface
2153  */
2154 #ifndef __IDWriteTextAnalysisSink1_INTERFACE_DEFINED__
2155 #define __IDWriteTextAnalysisSink1_INTERFACE_DEFINED__
2156 
2157 DEFINE_GUID(IID_IDWriteTextAnalysisSink1, 0xb0d941a0, 0x85e7, 0x4d8b, 0x9f,0xd3, 0x5c,0xed,0x99,0x34,0x48,0x2a);
2158 #if defined(__cplusplus) && !defined(CINTERFACE)
2159 MIDL_INTERFACE("b0d941a0-85e7-4d8b-9fd3-5ced9934482a")
2160 IDWriteTextAnalysisSink1 : public IDWriteTextAnalysisSink
2161 {
2162     virtual HRESULT STDMETHODCALLTYPE SetGlyphOrientation(
2163         UINT32 pos,
2164         UINT32 length,
2165         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
2166         UINT8 adjusted_bidilevel,
2167         WINBOOL is_sideways,
2168         WINBOOL is_rtl) = 0;
2169 
2170 };
2171 #ifdef __CRT_UUID_DECL
2172 __CRT_UUID_DECL(IDWriteTextAnalysisSink1, 0xb0d941a0, 0x85e7, 0x4d8b, 0x9f,0xd3, 0x5c,0xed,0x99,0x34,0x48,0x2a)
2173 #endif
2174 #else
2175 typedef struct IDWriteTextAnalysisSink1Vtbl {
2176     BEGIN_INTERFACE
2177 
2178     /*** IUnknown methods ***/
2179     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2180         IDWriteTextAnalysisSink1 *This,
2181         REFIID riid,
2182         void **ppvObject);
2183 
2184     ULONG (STDMETHODCALLTYPE *AddRef)(
2185         IDWriteTextAnalysisSink1 *This);
2186 
2187     ULONG (STDMETHODCALLTYPE *Release)(
2188         IDWriteTextAnalysisSink1 *This);
2189 
2190     /*** IDWriteTextAnalysisSink methods ***/
2191     HRESULT (STDMETHODCALLTYPE *SetScriptAnalysis)(
2192         IDWriteTextAnalysisSink1 *This,
2193         UINT32 position,
2194         UINT32 length,
2195         const DWRITE_SCRIPT_ANALYSIS *scriptanalysis);
2196 
2197     HRESULT (STDMETHODCALLTYPE *SetLineBreakpoints)(
2198         IDWriteTextAnalysisSink1 *This,
2199         UINT32 position,
2200         UINT32 length,
2201         const DWRITE_LINE_BREAKPOINT *breakpoints);
2202 
2203     HRESULT (STDMETHODCALLTYPE *SetBidiLevel)(
2204         IDWriteTextAnalysisSink1 *This,
2205         UINT32 position,
2206         UINT32 length,
2207         UINT8 explicitLevel,
2208         UINT8 resolvedLevel);
2209 
2210     HRESULT (STDMETHODCALLTYPE *SetNumberSubstitution)(
2211         IDWriteTextAnalysisSink1 *This,
2212         UINT32 position,
2213         UINT32 length,
2214         IDWriteNumberSubstitution *substitution);
2215 
2216     /*** IDWriteTextAnalysisSink1 methods ***/
2217     HRESULT (STDMETHODCALLTYPE *SetGlyphOrientation)(
2218         IDWriteTextAnalysisSink1 *This,
2219         UINT32 pos,
2220         UINT32 length,
2221         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
2222         UINT8 adjusted_bidilevel,
2223         WINBOOL is_sideways,
2224         WINBOOL is_rtl);
2225 
2226     END_INTERFACE
2227 } IDWriteTextAnalysisSink1Vtbl;
2228 
2229 interface IDWriteTextAnalysisSink1 {
2230     CONST_VTBL IDWriteTextAnalysisSink1Vtbl* lpVtbl;
2231 };
2232 
2233 #ifdef COBJMACROS
2234 #ifndef WIDL_C_INLINE_WRAPPERS
2235 /*** IUnknown methods ***/
2236 #define IDWriteTextAnalysisSink1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2237 #define IDWriteTextAnalysisSink1_AddRef(This) (This)->lpVtbl->AddRef(This)
2238 #define IDWriteTextAnalysisSink1_Release(This) (This)->lpVtbl->Release(This)
2239 /*** IDWriteTextAnalysisSink methods ***/
2240 #define IDWriteTextAnalysisSink1_SetScriptAnalysis(This,position,length,scriptanalysis) (This)->lpVtbl->SetScriptAnalysis(This,position,length,scriptanalysis)
2241 #define IDWriteTextAnalysisSink1_SetLineBreakpoints(This,position,length,breakpoints) (This)->lpVtbl->SetLineBreakpoints(This,position,length,breakpoints)
2242 #define IDWriteTextAnalysisSink1_SetBidiLevel(This,position,length,explicitLevel,resolvedLevel) (This)->lpVtbl->SetBidiLevel(This,position,length,explicitLevel,resolvedLevel)
2243 #define IDWriteTextAnalysisSink1_SetNumberSubstitution(This,position,length,substitution) (This)->lpVtbl->SetNumberSubstitution(This,position,length,substitution)
2244 /*** IDWriteTextAnalysisSink1 methods ***/
2245 #define IDWriteTextAnalysisSink1_SetGlyphOrientation(This,pos,length,angle,adjusted_bidilevel,is_sideways,is_rtl) (This)->lpVtbl->SetGlyphOrientation(This,pos,length,angle,adjusted_bidilevel,is_sideways,is_rtl)
2246 #else
2247 /*** IUnknown methods ***/
2248 static FORCEINLINE HRESULT IDWriteTextAnalysisSink1_QueryInterface(IDWriteTextAnalysisSink1* This,REFIID riid,void **ppvObject) {
2249     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2250 }
2251 static FORCEINLINE ULONG IDWriteTextAnalysisSink1_AddRef(IDWriteTextAnalysisSink1* This) {
2252     return This->lpVtbl->AddRef(This);
2253 }
2254 static FORCEINLINE ULONG IDWriteTextAnalysisSink1_Release(IDWriteTextAnalysisSink1* This) {
2255     return This->lpVtbl->Release(This);
2256 }
2257 /*** IDWriteTextAnalysisSink methods ***/
2258 static FORCEINLINE HRESULT IDWriteTextAnalysisSink1_SetScriptAnalysis(IDWriteTextAnalysisSink1* This,UINT32 position,UINT32 length,const DWRITE_SCRIPT_ANALYSIS *scriptanalysis) {
2259     return This->lpVtbl->SetScriptAnalysis(This,position,length,scriptanalysis);
2260 }
2261 static FORCEINLINE HRESULT IDWriteTextAnalysisSink1_SetLineBreakpoints(IDWriteTextAnalysisSink1* This,UINT32 position,UINT32 length,const DWRITE_LINE_BREAKPOINT *breakpoints) {
2262     return This->lpVtbl->SetLineBreakpoints(This,position,length,breakpoints);
2263 }
2264 static FORCEINLINE HRESULT IDWriteTextAnalysisSink1_SetBidiLevel(IDWriteTextAnalysisSink1* This,UINT32 position,UINT32 length,UINT8 explicitLevel,UINT8 resolvedLevel) {
2265     return This->lpVtbl->SetBidiLevel(This,position,length,explicitLevel,resolvedLevel);
2266 }
2267 static FORCEINLINE HRESULT IDWriteTextAnalysisSink1_SetNumberSubstitution(IDWriteTextAnalysisSink1* This,UINT32 position,UINT32 length,IDWriteNumberSubstitution *substitution) {
2268     return This->lpVtbl->SetNumberSubstitution(This,position,length,substitution);
2269 }
2270 /*** IDWriteTextAnalysisSink1 methods ***/
2271 static FORCEINLINE HRESULT IDWriteTextAnalysisSink1_SetGlyphOrientation(IDWriteTextAnalysisSink1* This,UINT32 pos,UINT32 length,DWRITE_GLYPH_ORIENTATION_ANGLE angle,UINT8 adjusted_bidilevel,WINBOOL is_sideways,WINBOOL is_rtl) {
2272     return This->lpVtbl->SetGlyphOrientation(This,pos,length,angle,adjusted_bidilevel,is_sideways,is_rtl);
2273 }
2274 #endif
2275 #endif
2276 
2277 #endif
2278 
2279 
2280 #endif  /* __IDWriteTextAnalysisSink1_INTERFACE_DEFINED__ */
2281 
2282 /*****************************************************************************
2283  * IDWriteTextLayout1 interface
2284  */
2285 #ifndef __IDWriteTextLayout1_INTERFACE_DEFINED__
2286 #define __IDWriteTextLayout1_INTERFACE_DEFINED__
2287 
2288 DEFINE_GUID(IID_IDWriteTextLayout1, 0x9064d822, 0x80a7, 0x465c, 0xa9,0x86, 0xdf,0x65,0xf7,0x8b,0x8f,0xeb);
2289 #if defined(__cplusplus) && !defined(CINTERFACE)
2290 MIDL_INTERFACE("9064d822-80a7-465c-a986-df65f78b8feb")
2291 IDWriteTextLayout1 : public IDWriteTextLayout
2292 {
2293     virtual HRESULT STDMETHODCALLTYPE SetPairKerning(
2294         WINBOOL is_pairkerning_enabled,
2295         DWRITE_TEXT_RANGE range) = 0;
2296 
2297     virtual HRESULT STDMETHODCALLTYPE GetPairKerning(
2298         UINT32 position,
2299         WINBOOL *is_pairkerning_enabled,
2300         DWRITE_TEXT_RANGE *range) = 0;
2301 
2302     virtual HRESULT STDMETHODCALLTYPE SetCharacterSpacing(
2303         FLOAT leading_spacing,
2304         FLOAT trailing_spacing,
2305         FLOAT minimum_advance_width,
2306         DWRITE_TEXT_RANGE range) = 0;
2307 
2308     virtual HRESULT STDMETHODCALLTYPE GetCharacterSpacing(
2309         UINT32 position,
2310         FLOAT *leading_spacing,
2311         FLOAT *trailing_spacing,
2312         FLOAT *minimum_advance_width,
2313         DWRITE_TEXT_RANGE *range = 0) = 0;
2314 
2315 };
2316 #ifdef __CRT_UUID_DECL
2317 __CRT_UUID_DECL(IDWriteTextLayout1, 0x9064d822, 0x80a7, 0x465c, 0xa9,0x86, 0xdf,0x65,0xf7,0x8b,0x8f,0xeb)
2318 #endif
2319 #else
2320 typedef struct IDWriteTextLayout1Vtbl {
2321     BEGIN_INTERFACE
2322 
2323     /*** IUnknown methods ***/
2324     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2325         IDWriteTextLayout1 *This,
2326         REFIID riid,
2327         void **ppvObject);
2328 
2329     ULONG (STDMETHODCALLTYPE *AddRef)(
2330         IDWriteTextLayout1 *This);
2331 
2332     ULONG (STDMETHODCALLTYPE *Release)(
2333         IDWriteTextLayout1 *This);
2334 
2335     /*** IDWriteTextFormat methods ***/
2336     HRESULT (STDMETHODCALLTYPE *SetTextAlignment)(
2337         IDWriteTextLayout1 *This,
2338         DWRITE_TEXT_ALIGNMENT alignment);
2339 
2340     HRESULT (STDMETHODCALLTYPE *SetParagraphAlignment)(
2341         IDWriteTextLayout1 *This,
2342         DWRITE_PARAGRAPH_ALIGNMENT alignment);
2343 
2344     HRESULT (STDMETHODCALLTYPE *SetWordWrapping)(
2345         IDWriteTextLayout1 *This,
2346         DWRITE_WORD_WRAPPING wrapping);
2347 
2348     HRESULT (STDMETHODCALLTYPE *SetReadingDirection)(
2349         IDWriteTextLayout1 *This,
2350         DWRITE_READING_DIRECTION direction);
2351 
2352     HRESULT (STDMETHODCALLTYPE *SetFlowDirection)(
2353         IDWriteTextLayout1 *This,
2354         DWRITE_FLOW_DIRECTION direction);
2355 
2356     HRESULT (STDMETHODCALLTYPE *SetIncrementalTabStop)(
2357         IDWriteTextLayout1 *This,
2358         FLOAT tabstop);
2359 
2360     HRESULT (STDMETHODCALLTYPE *SetTrimming)(
2361         IDWriteTextLayout1 *This,
2362         const DWRITE_TRIMMING *trimming,
2363         IDWriteInlineObject *trimming_sign);
2364 
2365     HRESULT (STDMETHODCALLTYPE *SetLineSpacing)(
2366         IDWriteTextLayout1 *This,
2367         DWRITE_LINE_SPACING_METHOD spacing,
2368         FLOAT line_spacing,
2369         FLOAT baseline);
2370 
2371     DWRITE_TEXT_ALIGNMENT (STDMETHODCALLTYPE *GetTextAlignment)(
2372         IDWriteTextLayout1 *This);
2373 
2374     DWRITE_PARAGRAPH_ALIGNMENT (STDMETHODCALLTYPE *GetParagraphAlignment)(
2375         IDWriteTextLayout1 *This);
2376 
2377     DWRITE_WORD_WRAPPING (STDMETHODCALLTYPE *GetWordWrapping)(
2378         IDWriteTextLayout1 *This);
2379 
2380     DWRITE_READING_DIRECTION (STDMETHODCALLTYPE *GetReadingDirection)(
2381         IDWriteTextLayout1 *This);
2382 
2383     DWRITE_FLOW_DIRECTION (STDMETHODCALLTYPE *GetFlowDirection)(
2384         IDWriteTextLayout1 *This);
2385 
2386     FLOAT (STDMETHODCALLTYPE *GetIncrementalTabStop)(
2387         IDWriteTextLayout1 *This);
2388 
2389     HRESULT (STDMETHODCALLTYPE *GetTrimming)(
2390         IDWriteTextLayout1 *This,
2391         DWRITE_TRIMMING *options,
2392         IDWriteInlineObject **trimming_sign);
2393 
2394     HRESULT (STDMETHODCALLTYPE *GetLineSpacing)(
2395         IDWriteTextLayout1 *This,
2396         DWRITE_LINE_SPACING_METHOD *method,
2397         FLOAT *spacing,
2398         FLOAT *baseline);
2399 
2400     HRESULT (STDMETHODCALLTYPE *GetFontCollection)(
2401         IDWriteTextLayout1 *This,
2402         IDWriteFontCollection **collection);
2403 
2404     UINT32 (STDMETHODCALLTYPE *GetFontFamilyNameLength)(
2405         IDWriteTextLayout1 *This);
2406 
2407     HRESULT (STDMETHODCALLTYPE *GetFontFamilyName)(
2408         IDWriteTextLayout1 *This,
2409         WCHAR *name,
2410         UINT32 size);
2411 
2412     DWRITE_FONT_WEIGHT (STDMETHODCALLTYPE *GetFontWeight)(
2413         IDWriteTextLayout1 *This);
2414 
2415     DWRITE_FONT_STYLE (STDMETHODCALLTYPE *GetFontStyle)(
2416         IDWriteTextLayout1 *This);
2417 
2418     DWRITE_FONT_STRETCH (STDMETHODCALLTYPE *GetFontStretch)(
2419         IDWriteTextLayout1 *This);
2420 
2421     FLOAT (STDMETHODCALLTYPE *GetFontSize)(
2422         IDWriteTextLayout1 *This);
2423 
2424     UINT32 (STDMETHODCALLTYPE *GetLocaleNameLength)(
2425         IDWriteTextLayout1 *This);
2426 
2427     HRESULT (STDMETHODCALLTYPE *GetLocaleName)(
2428         IDWriteTextLayout1 *This,
2429         WCHAR *name,
2430         UINT32 size);
2431 
2432     /*** IDWriteTextLayout methods ***/
2433     HRESULT (STDMETHODCALLTYPE *SetMaxWidth)(
2434         IDWriteTextLayout1 *This,
2435         FLOAT maxWidth);
2436 
2437     HRESULT (STDMETHODCALLTYPE *SetMaxHeight)(
2438         IDWriteTextLayout1 *This,
2439         FLOAT maxHeight);
2440 
2441     HRESULT (STDMETHODCALLTYPE *SetFontCollection)(
2442         IDWriteTextLayout1 *This,
2443         IDWriteFontCollection *collection,
2444         DWRITE_TEXT_RANGE range);
2445 
2446     HRESULT (STDMETHODCALLTYPE *SetFontFamilyName)(
2447         IDWriteTextLayout1 *This,
2448         const WCHAR *name,
2449         DWRITE_TEXT_RANGE range);
2450 
2451     HRESULT (STDMETHODCALLTYPE *SetFontWeight)(
2452         IDWriteTextLayout1 *This,
2453         DWRITE_FONT_WEIGHT weight,
2454         DWRITE_TEXT_RANGE range);
2455 
2456     HRESULT (STDMETHODCALLTYPE *SetFontStyle)(
2457         IDWriteTextLayout1 *This,
2458         DWRITE_FONT_STYLE style,
2459         DWRITE_TEXT_RANGE range);
2460 
2461     HRESULT (STDMETHODCALLTYPE *SetFontStretch)(
2462         IDWriteTextLayout1 *This,
2463         DWRITE_FONT_STRETCH stretch,
2464         DWRITE_TEXT_RANGE range);
2465 
2466     HRESULT (STDMETHODCALLTYPE *SetFontSize)(
2467         IDWriteTextLayout1 *This,
2468         FLOAT size,
2469         DWRITE_TEXT_RANGE range);
2470 
2471     HRESULT (STDMETHODCALLTYPE *SetUnderline)(
2472         IDWriteTextLayout1 *This,
2473         WINBOOL underline,
2474         DWRITE_TEXT_RANGE range);
2475 
2476     HRESULT (STDMETHODCALLTYPE *SetStrikethrough)(
2477         IDWriteTextLayout1 *This,
2478         WINBOOL strikethrough,
2479         DWRITE_TEXT_RANGE range);
2480 
2481     HRESULT (STDMETHODCALLTYPE *SetDrawingEffect)(
2482         IDWriteTextLayout1 *This,
2483         IUnknown *effect,
2484         DWRITE_TEXT_RANGE range);
2485 
2486     HRESULT (STDMETHODCALLTYPE *SetInlineObject)(
2487         IDWriteTextLayout1 *This,
2488         IDWriteInlineObject *object,
2489         DWRITE_TEXT_RANGE range);
2490 
2491     HRESULT (STDMETHODCALLTYPE *SetTypography)(
2492         IDWriteTextLayout1 *This,
2493         IDWriteTypography *typography,
2494         DWRITE_TEXT_RANGE range);
2495 
2496     HRESULT (STDMETHODCALLTYPE *SetLocaleName)(
2497         IDWriteTextLayout1 *This,
2498         const WCHAR *locale,
2499         DWRITE_TEXT_RANGE range);
2500 
2501     FLOAT (STDMETHODCALLTYPE *GetMaxWidth)(
2502         IDWriteTextLayout1 *This);
2503 
2504     FLOAT (STDMETHODCALLTYPE *GetMaxHeight)(
2505         IDWriteTextLayout1 *This);
2506 
2507     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontCollection)(
2508         IDWriteTextLayout1 *This,
2509         UINT32 pos,
2510         IDWriteFontCollection **collection,
2511         DWRITE_TEXT_RANGE *range);
2512 
2513     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontFamilyNameLength)(
2514         IDWriteTextLayout1 *This,
2515         UINT32 pos,
2516         UINT32 *len,
2517         DWRITE_TEXT_RANGE *range);
2518 
2519     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontFamilyName)(
2520         IDWriteTextLayout1 *This,
2521         UINT32 position,
2522         WCHAR *name,
2523         UINT32 name_size,
2524         DWRITE_TEXT_RANGE *range);
2525 
2526     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontWeight)(
2527         IDWriteTextLayout1 *This,
2528         UINT32 position,
2529         DWRITE_FONT_WEIGHT *weight,
2530         DWRITE_TEXT_RANGE *range);
2531 
2532     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontStyle)(
2533         IDWriteTextLayout1 *This,
2534         UINT32 currentPosition,
2535         DWRITE_FONT_STYLE *style,
2536         DWRITE_TEXT_RANGE *range);
2537 
2538     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontStretch)(
2539         IDWriteTextLayout1 *This,
2540         UINT32 position,
2541         DWRITE_FONT_STRETCH *stretch,
2542         DWRITE_TEXT_RANGE *range);
2543 
2544     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetFontSize)(
2545         IDWriteTextLayout1 *This,
2546         UINT32 position,
2547         FLOAT *size,
2548         DWRITE_TEXT_RANGE *range);
2549 
2550     HRESULT (STDMETHODCALLTYPE *GetUnderline)(
2551         IDWriteTextLayout1 *This,
2552         UINT32 position,
2553         WINBOOL *has_underline,
2554         DWRITE_TEXT_RANGE *range);
2555 
2556     HRESULT (STDMETHODCALLTYPE *GetStrikethrough)(
2557         IDWriteTextLayout1 *This,
2558         UINT32 position,
2559         WINBOOL *has_strikethrough,
2560         DWRITE_TEXT_RANGE *range);
2561 
2562     HRESULT (STDMETHODCALLTYPE *GetDrawingEffect)(
2563         IDWriteTextLayout1 *This,
2564         UINT32 position,
2565         IUnknown **effect,
2566         DWRITE_TEXT_RANGE *range);
2567 
2568     HRESULT (STDMETHODCALLTYPE *GetInlineObject)(
2569         IDWriteTextLayout1 *This,
2570         UINT32 position,
2571         IDWriteInlineObject **object,
2572         DWRITE_TEXT_RANGE *range);
2573 
2574     HRESULT (STDMETHODCALLTYPE *GetTypography)(
2575         IDWriteTextLayout1 *This,
2576         UINT32 position,
2577         IDWriteTypography **typography,
2578         DWRITE_TEXT_RANGE *range);
2579 
2580     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetLocaleNameLength)(
2581         IDWriteTextLayout1 *This,
2582         UINT32 position,
2583         UINT32 *length,
2584         DWRITE_TEXT_RANGE *range);
2585 
2586     HRESULT (STDMETHODCALLTYPE *IDWriteTextLayout_GetLocaleName)(
2587         IDWriteTextLayout1 *This,
2588         UINT32 position,
2589         WCHAR *name,
2590         UINT32 name_size,
2591         DWRITE_TEXT_RANGE *range);
2592 
2593     HRESULT (STDMETHODCALLTYPE *Draw)(
2594         IDWriteTextLayout1 *This,
2595         void *context,
2596         IDWriteTextRenderer *renderer,
2597         FLOAT originX,
2598         FLOAT originY);
2599 
2600     HRESULT (STDMETHODCALLTYPE *GetLineMetrics)(
2601         IDWriteTextLayout1 *This,
2602         DWRITE_LINE_METRICS *metrics,
2603         UINT32 max_count,
2604         UINT32 *actual_count);
2605 
2606     HRESULT (STDMETHODCALLTYPE *GetMetrics)(
2607         IDWriteTextLayout1 *This,
2608         DWRITE_TEXT_METRICS *metrics);
2609 
2610     HRESULT (STDMETHODCALLTYPE *GetOverhangMetrics)(
2611         IDWriteTextLayout1 *This,
2612         DWRITE_OVERHANG_METRICS *overhangs);
2613 
2614     HRESULT (STDMETHODCALLTYPE *GetClusterMetrics)(
2615         IDWriteTextLayout1 *This,
2616         DWRITE_CLUSTER_METRICS *metrics,
2617         UINT32 max_count,
2618         UINT32 *act_count);
2619 
2620     HRESULT (STDMETHODCALLTYPE *DetermineMinWidth)(
2621         IDWriteTextLayout1 *This,
2622         FLOAT *min_width);
2623 
2624     HRESULT (STDMETHODCALLTYPE *HitTestPoint)(
2625         IDWriteTextLayout1 *This,
2626         FLOAT pointX,
2627         FLOAT pointY,
2628         WINBOOL *is_trailinghit,
2629         WINBOOL *is_inside,
2630         DWRITE_HIT_TEST_METRICS *metrics);
2631 
2632     HRESULT (STDMETHODCALLTYPE *HitTestTextPosition)(
2633         IDWriteTextLayout1 *This,
2634         UINT32 textPosition,
2635         WINBOOL is_trailinghit,
2636         FLOAT *pointX,
2637         FLOAT *pointY,
2638         DWRITE_HIT_TEST_METRICS *metrics);
2639 
2640     HRESULT (STDMETHODCALLTYPE *HitTestTextRange)(
2641         IDWriteTextLayout1 *This,
2642         UINT32 textPosition,
2643         UINT32 textLength,
2644         FLOAT originX,
2645         FLOAT originY,
2646         DWRITE_HIT_TEST_METRICS *metrics,
2647         UINT32 max_metricscount,
2648         UINT32 *actual_metricscount);
2649 
2650     /*** IDWriteTextLayout1 methods ***/
2651     HRESULT (STDMETHODCALLTYPE *SetPairKerning)(
2652         IDWriteTextLayout1 *This,
2653         WINBOOL is_pairkerning_enabled,
2654         DWRITE_TEXT_RANGE range);
2655 
2656     HRESULT (STDMETHODCALLTYPE *GetPairKerning)(
2657         IDWriteTextLayout1 *This,
2658         UINT32 position,
2659         WINBOOL *is_pairkerning_enabled,
2660         DWRITE_TEXT_RANGE *range);
2661 
2662     HRESULT (STDMETHODCALLTYPE *SetCharacterSpacing)(
2663         IDWriteTextLayout1 *This,
2664         FLOAT leading_spacing,
2665         FLOAT trailing_spacing,
2666         FLOAT minimum_advance_width,
2667         DWRITE_TEXT_RANGE range);
2668 
2669     HRESULT (STDMETHODCALLTYPE *GetCharacterSpacing)(
2670         IDWriteTextLayout1 *This,
2671         UINT32 position,
2672         FLOAT *leading_spacing,
2673         FLOAT *trailing_spacing,
2674         FLOAT *minimum_advance_width,
2675         DWRITE_TEXT_RANGE *range);
2676 
2677     END_INTERFACE
2678 } IDWriteTextLayout1Vtbl;
2679 
2680 interface IDWriteTextLayout1 {
2681     CONST_VTBL IDWriteTextLayout1Vtbl* lpVtbl;
2682 };
2683 
2684 #ifdef COBJMACROS
2685 #ifndef WIDL_C_INLINE_WRAPPERS
2686 /*** IUnknown methods ***/
2687 #define IDWriteTextLayout1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2688 #define IDWriteTextLayout1_AddRef(This) (This)->lpVtbl->AddRef(This)
2689 #define IDWriteTextLayout1_Release(This) (This)->lpVtbl->Release(This)
2690 /*** IDWriteTextFormat methods ***/
2691 #define IDWriteTextLayout1_SetTextAlignment(This,alignment) (This)->lpVtbl->SetTextAlignment(This,alignment)
2692 #define IDWriteTextLayout1_SetParagraphAlignment(This,alignment) (This)->lpVtbl->SetParagraphAlignment(This,alignment)
2693 #define IDWriteTextLayout1_SetWordWrapping(This,wrapping) (This)->lpVtbl->SetWordWrapping(This,wrapping)
2694 #define IDWriteTextLayout1_SetReadingDirection(This,direction) (This)->lpVtbl->SetReadingDirection(This,direction)
2695 #define IDWriteTextLayout1_SetFlowDirection(This,direction) (This)->lpVtbl->SetFlowDirection(This,direction)
2696 #define IDWriteTextLayout1_SetIncrementalTabStop(This,tabstop) (This)->lpVtbl->SetIncrementalTabStop(This,tabstop)
2697 #define IDWriteTextLayout1_SetTrimming(This,trimming,trimming_sign) (This)->lpVtbl->SetTrimming(This,trimming,trimming_sign)
2698 #define IDWriteTextLayout1_SetLineSpacing(This,spacing,line_spacing,baseline) (This)->lpVtbl->SetLineSpacing(This,spacing,line_spacing,baseline)
2699 #define IDWriteTextLayout1_GetTextAlignment(This) (This)->lpVtbl->GetTextAlignment(This)
2700 #define IDWriteTextLayout1_GetParagraphAlignment(This) (This)->lpVtbl->GetParagraphAlignment(This)
2701 #define IDWriteTextLayout1_GetWordWrapping(This) (This)->lpVtbl->GetWordWrapping(This)
2702 #define IDWriteTextLayout1_GetReadingDirection(This) (This)->lpVtbl->GetReadingDirection(This)
2703 #define IDWriteTextLayout1_GetFlowDirection(This) (This)->lpVtbl->GetFlowDirection(This)
2704 #define IDWriteTextLayout1_GetIncrementalTabStop(This) (This)->lpVtbl->GetIncrementalTabStop(This)
2705 #define IDWriteTextLayout1_GetTrimming(This,options,trimming_sign) (This)->lpVtbl->GetTrimming(This,options,trimming_sign)
2706 #define IDWriteTextLayout1_GetLineSpacing(This,method,spacing,baseline) (This)->lpVtbl->GetLineSpacing(This,method,spacing,baseline)
2707 /*** IDWriteTextLayout methods ***/
2708 #define IDWriteTextLayout1_SetMaxWidth(This,maxWidth) (This)->lpVtbl->SetMaxWidth(This,maxWidth)
2709 #define IDWriteTextLayout1_SetMaxHeight(This,maxHeight) (This)->lpVtbl->SetMaxHeight(This,maxHeight)
2710 #define IDWriteTextLayout1_SetFontCollection(This,collection,range) (This)->lpVtbl->SetFontCollection(This,collection,range)
2711 #define IDWriteTextLayout1_SetFontFamilyName(This,name,range) (This)->lpVtbl->SetFontFamilyName(This,name,range)
2712 #define IDWriteTextLayout1_SetFontWeight(This,weight,range) (This)->lpVtbl->SetFontWeight(This,weight,range)
2713 #define IDWriteTextLayout1_SetFontStyle(This,style,range) (This)->lpVtbl->SetFontStyle(This,style,range)
2714 #define IDWriteTextLayout1_SetFontStretch(This,stretch,range) (This)->lpVtbl->SetFontStretch(This,stretch,range)
2715 #define IDWriteTextLayout1_SetFontSize(This,size,range) (This)->lpVtbl->SetFontSize(This,size,range)
2716 #define IDWriteTextLayout1_SetUnderline(This,underline,range) (This)->lpVtbl->SetUnderline(This,underline,range)
2717 #define IDWriteTextLayout1_SetStrikethrough(This,strikethrough,range) (This)->lpVtbl->SetStrikethrough(This,strikethrough,range)
2718 #define IDWriteTextLayout1_SetDrawingEffect(This,effect,range) (This)->lpVtbl->SetDrawingEffect(This,effect,range)
2719 #define IDWriteTextLayout1_SetInlineObject(This,object,range) (This)->lpVtbl->SetInlineObject(This,object,range)
2720 #define IDWriteTextLayout1_SetTypography(This,typography,range) (This)->lpVtbl->SetTypography(This,typography,range)
2721 #define IDWriteTextLayout1_SetLocaleName(This,locale,range) (This)->lpVtbl->SetLocaleName(This,locale,range)
2722 #define IDWriteTextLayout1_GetMaxWidth(This) (This)->lpVtbl->GetMaxWidth(This)
2723 #define IDWriteTextLayout1_GetMaxHeight(This) (This)->lpVtbl->GetMaxHeight(This)
2724 #define IDWriteTextLayout1_GetFontCollection(This,pos,collection,range) (This)->lpVtbl->IDWriteTextLayout_GetFontCollection(This,pos,collection,range)
2725 #define IDWriteTextLayout1_GetFontFamilyNameLength(This,pos,len,range) (This)->lpVtbl->IDWriteTextLayout_GetFontFamilyNameLength(This,pos,len,range)
2726 #define IDWriteTextLayout1_GetFontFamilyName(This,position,name,name_size,range) (This)->lpVtbl->IDWriteTextLayout_GetFontFamilyName(This,position,name,name_size,range)
2727 #define IDWriteTextLayout1_GetFontWeight(This,position,weight,range) (This)->lpVtbl->IDWriteTextLayout_GetFontWeight(This,position,weight,range)
2728 #define IDWriteTextLayout1_GetFontStyle(This,currentPosition,style,range) (This)->lpVtbl->IDWriteTextLayout_GetFontStyle(This,currentPosition,style,range)
2729 #define IDWriteTextLayout1_GetFontStretch(This,position,stretch,range) (This)->lpVtbl->IDWriteTextLayout_GetFontStretch(This,position,stretch,range)
2730 #define IDWriteTextLayout1_GetFontSize(This,position,size,range) (This)->lpVtbl->IDWriteTextLayout_GetFontSize(This,position,size,range)
2731 #define IDWriteTextLayout1_GetUnderline(This,position,has_underline,range) (This)->lpVtbl->GetUnderline(This,position,has_underline,range)
2732 #define IDWriteTextLayout1_GetStrikethrough(This,position,has_strikethrough,range) (This)->lpVtbl->GetStrikethrough(This,position,has_strikethrough,range)
2733 #define IDWriteTextLayout1_GetDrawingEffect(This,position,effect,range) (This)->lpVtbl->GetDrawingEffect(This,position,effect,range)
2734 #define IDWriteTextLayout1_GetInlineObject(This,position,object,range) (This)->lpVtbl->GetInlineObject(This,position,object,range)
2735 #define IDWriteTextLayout1_GetTypography(This,position,typography,range) (This)->lpVtbl->GetTypography(This,position,typography,range)
2736 #define IDWriteTextLayout1_GetLocaleNameLength(This,position,length,range) (This)->lpVtbl->IDWriteTextLayout_GetLocaleNameLength(This,position,length,range)
2737 #define IDWriteTextLayout1_GetLocaleName(This,position,name,name_size,range) (This)->lpVtbl->IDWriteTextLayout_GetLocaleName(This,position,name,name_size,range)
2738 #define IDWriteTextLayout1_Draw(This,context,renderer,originX,originY) (This)->lpVtbl->Draw(This,context,renderer,originX,originY)
2739 #define IDWriteTextLayout1_GetLineMetrics(This,metrics,max_count,actual_count) (This)->lpVtbl->GetLineMetrics(This,metrics,max_count,actual_count)
2740 #define IDWriteTextLayout1_GetMetrics(This,metrics) (This)->lpVtbl->GetMetrics(This,metrics)
2741 #define IDWriteTextLayout1_GetOverhangMetrics(This,overhangs) (This)->lpVtbl->GetOverhangMetrics(This,overhangs)
2742 #define IDWriteTextLayout1_GetClusterMetrics(This,metrics,max_count,act_count) (This)->lpVtbl->GetClusterMetrics(This,metrics,max_count,act_count)
2743 #define IDWriteTextLayout1_DetermineMinWidth(This,min_width) (This)->lpVtbl->DetermineMinWidth(This,min_width)
2744 #define IDWriteTextLayout1_HitTestPoint(This,pointX,pointY,is_trailinghit,is_inside,metrics) (This)->lpVtbl->HitTestPoint(This,pointX,pointY,is_trailinghit,is_inside,metrics)
2745 #define IDWriteTextLayout1_HitTestTextPosition(This,textPosition,is_trailinghit,pointX,pointY,metrics) (This)->lpVtbl->HitTestTextPosition(This,textPosition,is_trailinghit,pointX,pointY,metrics)
2746 #define IDWriteTextLayout1_HitTestTextRange(This,textPosition,textLength,originX,originY,metrics,max_metricscount,actual_metricscount) (This)->lpVtbl->HitTestTextRange(This,textPosition,textLength,originX,originY,metrics,max_metricscount,actual_metricscount)
2747 /*** IDWriteTextLayout1 methods ***/
2748 #define IDWriteTextLayout1_SetPairKerning(This,is_pairkerning_enabled,range) (This)->lpVtbl->SetPairKerning(This,is_pairkerning_enabled,range)
2749 #define IDWriteTextLayout1_GetPairKerning(This,position,is_pairkerning_enabled,range) (This)->lpVtbl->GetPairKerning(This,position,is_pairkerning_enabled,range)
2750 #define IDWriteTextLayout1_SetCharacterSpacing(This,leading_spacing,trailing_spacing,minimum_advance_width,range) (This)->lpVtbl->SetCharacterSpacing(This,leading_spacing,trailing_spacing,minimum_advance_width,range)
2751 #define IDWriteTextLayout1_GetCharacterSpacing(This,position,leading_spacing,trailing_spacing,minimum_advance_width,range) (This)->lpVtbl->GetCharacterSpacing(This,position,leading_spacing,trailing_spacing,minimum_advance_width,range)
2752 #else
2753 /*** IUnknown methods ***/
2754 static FORCEINLINE HRESULT IDWriteTextLayout1_QueryInterface(IDWriteTextLayout1* This,REFIID riid,void **ppvObject) {
2755     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2756 }
2757 static FORCEINLINE ULONG IDWriteTextLayout1_AddRef(IDWriteTextLayout1* This) {
2758     return This->lpVtbl->AddRef(This);
2759 }
2760 static FORCEINLINE ULONG IDWriteTextLayout1_Release(IDWriteTextLayout1* This) {
2761     return This->lpVtbl->Release(This);
2762 }
2763 /*** IDWriteTextFormat methods ***/
2764 static FORCEINLINE HRESULT IDWriteTextLayout1_SetTextAlignment(IDWriteTextLayout1* This,DWRITE_TEXT_ALIGNMENT alignment) {
2765     return This->lpVtbl->SetTextAlignment(This,alignment);
2766 }
2767 static FORCEINLINE HRESULT IDWriteTextLayout1_SetParagraphAlignment(IDWriteTextLayout1* This,DWRITE_PARAGRAPH_ALIGNMENT alignment) {
2768     return This->lpVtbl->SetParagraphAlignment(This,alignment);
2769 }
2770 static FORCEINLINE HRESULT IDWriteTextLayout1_SetWordWrapping(IDWriteTextLayout1* This,DWRITE_WORD_WRAPPING wrapping) {
2771     return This->lpVtbl->SetWordWrapping(This,wrapping);
2772 }
2773 static FORCEINLINE HRESULT IDWriteTextLayout1_SetReadingDirection(IDWriteTextLayout1* This,DWRITE_READING_DIRECTION direction) {
2774     return This->lpVtbl->SetReadingDirection(This,direction);
2775 }
2776 static FORCEINLINE HRESULT IDWriteTextLayout1_SetFlowDirection(IDWriteTextLayout1* This,DWRITE_FLOW_DIRECTION direction) {
2777     return This->lpVtbl->SetFlowDirection(This,direction);
2778 }
2779 static FORCEINLINE HRESULT IDWriteTextLayout1_SetIncrementalTabStop(IDWriteTextLayout1* This,FLOAT tabstop) {
2780     return This->lpVtbl->SetIncrementalTabStop(This,tabstop);
2781 }
2782 static FORCEINLINE HRESULT IDWriteTextLayout1_SetTrimming(IDWriteTextLayout1* This,const DWRITE_TRIMMING *trimming,IDWriteInlineObject *trimming_sign) {
2783     return This->lpVtbl->SetTrimming(This,trimming,trimming_sign);
2784 }
2785 static FORCEINLINE HRESULT IDWriteTextLayout1_SetLineSpacing(IDWriteTextLayout1* This,DWRITE_LINE_SPACING_METHOD spacing,FLOAT line_spacing,FLOAT baseline) {
2786     return This->lpVtbl->SetLineSpacing(This,spacing,line_spacing,baseline);
2787 }
2788 static FORCEINLINE DWRITE_TEXT_ALIGNMENT IDWriteTextLayout1_GetTextAlignment(IDWriteTextLayout1* This) {
2789     return This->lpVtbl->GetTextAlignment(This);
2790 }
2791 static FORCEINLINE DWRITE_PARAGRAPH_ALIGNMENT IDWriteTextLayout1_GetParagraphAlignment(IDWriteTextLayout1* This) {
2792     return This->lpVtbl->GetParagraphAlignment(This);
2793 }
2794 static FORCEINLINE DWRITE_WORD_WRAPPING IDWriteTextLayout1_GetWordWrapping(IDWriteTextLayout1* This) {
2795     return This->lpVtbl->GetWordWrapping(This);
2796 }
2797 static FORCEINLINE DWRITE_READING_DIRECTION IDWriteTextLayout1_GetReadingDirection(IDWriteTextLayout1* This) {
2798     return This->lpVtbl->GetReadingDirection(This);
2799 }
2800 static FORCEINLINE DWRITE_FLOW_DIRECTION IDWriteTextLayout1_GetFlowDirection(IDWriteTextLayout1* This) {
2801     return This->lpVtbl->GetFlowDirection(This);
2802 }
2803 static FORCEINLINE FLOAT IDWriteTextLayout1_GetIncrementalTabStop(IDWriteTextLayout1* This) {
2804     return This->lpVtbl->GetIncrementalTabStop(This);
2805 }
2806 static FORCEINLINE HRESULT IDWriteTextLayout1_GetTrimming(IDWriteTextLayout1* This,DWRITE_TRIMMING *options,IDWriteInlineObject **trimming_sign) {
2807     return This->lpVtbl->GetTrimming(This,options,trimming_sign);
2808 }
2809 static FORCEINLINE HRESULT IDWriteTextLayout1_GetLineSpacing(IDWriteTextLayout1* This,DWRITE_LINE_SPACING_METHOD *method,FLOAT *spacing,FLOAT *baseline) {
2810     return This->lpVtbl->GetLineSpacing(This,method,spacing,baseline);
2811 }
2812 /*** IDWriteTextLayout methods ***/
2813 static FORCEINLINE HRESULT IDWriteTextLayout1_SetMaxWidth(IDWriteTextLayout1* This,FLOAT maxWidth) {
2814     return This->lpVtbl->SetMaxWidth(This,maxWidth);
2815 }
2816 static FORCEINLINE HRESULT IDWriteTextLayout1_SetMaxHeight(IDWriteTextLayout1* This,FLOAT maxHeight) {
2817     return This->lpVtbl->SetMaxHeight(This,maxHeight);
2818 }
2819 static FORCEINLINE HRESULT IDWriteTextLayout1_SetFontCollection(IDWriteTextLayout1* This,IDWriteFontCollection *collection,DWRITE_TEXT_RANGE range) {
2820     return This->lpVtbl->SetFontCollection(This,collection,range);
2821 }
2822 static FORCEINLINE HRESULT IDWriteTextLayout1_SetFontFamilyName(IDWriteTextLayout1* This,const WCHAR *name,DWRITE_TEXT_RANGE range) {
2823     return This->lpVtbl->SetFontFamilyName(This,name,range);
2824 }
2825 static FORCEINLINE HRESULT IDWriteTextLayout1_SetFontWeight(IDWriteTextLayout1* This,DWRITE_FONT_WEIGHT weight,DWRITE_TEXT_RANGE range) {
2826     return This->lpVtbl->SetFontWeight(This,weight,range);
2827 }
2828 static FORCEINLINE HRESULT IDWriteTextLayout1_SetFontStyle(IDWriteTextLayout1* This,DWRITE_FONT_STYLE style,DWRITE_TEXT_RANGE range) {
2829     return This->lpVtbl->SetFontStyle(This,style,range);
2830 }
2831 static FORCEINLINE HRESULT IDWriteTextLayout1_SetFontStretch(IDWriteTextLayout1* This,DWRITE_FONT_STRETCH stretch,DWRITE_TEXT_RANGE range) {
2832     return This->lpVtbl->SetFontStretch(This,stretch,range);
2833 }
2834 static FORCEINLINE HRESULT IDWriteTextLayout1_SetFontSize(IDWriteTextLayout1* This,FLOAT size,DWRITE_TEXT_RANGE range) {
2835     return This->lpVtbl->SetFontSize(This,size,range);
2836 }
2837 static FORCEINLINE HRESULT IDWriteTextLayout1_SetUnderline(IDWriteTextLayout1* This,WINBOOL underline,DWRITE_TEXT_RANGE range) {
2838     return This->lpVtbl->SetUnderline(This,underline,range);
2839 }
2840 static FORCEINLINE HRESULT IDWriteTextLayout1_SetStrikethrough(IDWriteTextLayout1* This,WINBOOL strikethrough,DWRITE_TEXT_RANGE range) {
2841     return This->lpVtbl->SetStrikethrough(This,strikethrough,range);
2842 }
2843 static FORCEINLINE HRESULT IDWriteTextLayout1_SetDrawingEffect(IDWriteTextLayout1* This,IUnknown *effect,DWRITE_TEXT_RANGE range) {
2844     return This->lpVtbl->SetDrawingEffect(This,effect,range);
2845 }
2846 static FORCEINLINE HRESULT IDWriteTextLayout1_SetInlineObject(IDWriteTextLayout1* This,IDWriteInlineObject *object,DWRITE_TEXT_RANGE range) {
2847     return This->lpVtbl->SetInlineObject(This,object,range);
2848 }
2849 static FORCEINLINE HRESULT IDWriteTextLayout1_SetTypography(IDWriteTextLayout1* This,IDWriteTypography *typography,DWRITE_TEXT_RANGE range) {
2850     return This->lpVtbl->SetTypography(This,typography,range);
2851 }
2852 static FORCEINLINE HRESULT IDWriteTextLayout1_SetLocaleName(IDWriteTextLayout1* This,const WCHAR *locale,DWRITE_TEXT_RANGE range) {
2853     return This->lpVtbl->SetLocaleName(This,locale,range);
2854 }
2855 static FORCEINLINE FLOAT IDWriteTextLayout1_GetMaxWidth(IDWriteTextLayout1* This) {
2856     return This->lpVtbl->GetMaxWidth(This);
2857 }
2858 static FORCEINLINE FLOAT IDWriteTextLayout1_GetMaxHeight(IDWriteTextLayout1* This) {
2859     return This->lpVtbl->GetMaxHeight(This);
2860 }
2861 static FORCEINLINE HRESULT IDWriteTextLayout1_GetFontCollection(IDWriteTextLayout1* This,UINT32 pos,IDWriteFontCollection **collection,DWRITE_TEXT_RANGE *range) {
2862     return This->lpVtbl->IDWriteTextLayout_GetFontCollection(This,pos,collection,range);
2863 }
2864 static FORCEINLINE HRESULT IDWriteTextLayout1_GetFontFamilyNameLength(IDWriteTextLayout1* This,UINT32 pos,UINT32 *len,DWRITE_TEXT_RANGE *range) {
2865     return This->lpVtbl->IDWriteTextLayout_GetFontFamilyNameLength(This,pos,len,range);
2866 }
2867 static FORCEINLINE HRESULT IDWriteTextLayout1_GetFontFamilyName(IDWriteTextLayout1* This,UINT32 position,WCHAR *name,UINT32 name_size,DWRITE_TEXT_RANGE *range) {
2868     return This->lpVtbl->IDWriteTextLayout_GetFontFamilyName(This,position,name,name_size,range);
2869 }
2870 static FORCEINLINE HRESULT IDWriteTextLayout1_GetFontWeight(IDWriteTextLayout1* This,UINT32 position,DWRITE_FONT_WEIGHT *weight,DWRITE_TEXT_RANGE *range) {
2871     return This->lpVtbl->IDWriteTextLayout_GetFontWeight(This,position,weight,range);
2872 }
2873 static FORCEINLINE HRESULT IDWriteTextLayout1_GetFontStyle(IDWriteTextLayout1* This,UINT32 currentPosition,DWRITE_FONT_STYLE *style,DWRITE_TEXT_RANGE *range) {
2874     return This->lpVtbl->IDWriteTextLayout_GetFontStyle(This,currentPosition,style,range);
2875 }
2876 static FORCEINLINE HRESULT IDWriteTextLayout1_GetFontStretch(IDWriteTextLayout1* This,UINT32 position,DWRITE_FONT_STRETCH *stretch,DWRITE_TEXT_RANGE *range) {
2877     return This->lpVtbl->IDWriteTextLayout_GetFontStretch(This,position,stretch,range);
2878 }
2879 static FORCEINLINE HRESULT IDWriteTextLayout1_GetFontSize(IDWriteTextLayout1* This,UINT32 position,FLOAT *size,DWRITE_TEXT_RANGE *range) {
2880     return This->lpVtbl->IDWriteTextLayout_GetFontSize(This,position,size,range);
2881 }
2882 static FORCEINLINE HRESULT IDWriteTextLayout1_GetUnderline(IDWriteTextLayout1* This,UINT32 position,WINBOOL *has_underline,DWRITE_TEXT_RANGE *range) {
2883     return This->lpVtbl->GetUnderline(This,position,has_underline,range);
2884 }
2885 static FORCEINLINE HRESULT IDWriteTextLayout1_GetStrikethrough(IDWriteTextLayout1* This,UINT32 position,WINBOOL *has_strikethrough,DWRITE_TEXT_RANGE *range) {
2886     return This->lpVtbl->GetStrikethrough(This,position,has_strikethrough,range);
2887 }
2888 static FORCEINLINE HRESULT IDWriteTextLayout1_GetDrawingEffect(IDWriteTextLayout1* This,UINT32 position,IUnknown **effect,DWRITE_TEXT_RANGE *range) {
2889     return This->lpVtbl->GetDrawingEffect(This,position,effect,range);
2890 }
2891 static FORCEINLINE HRESULT IDWriteTextLayout1_GetInlineObject(IDWriteTextLayout1* This,UINT32 position,IDWriteInlineObject **object,DWRITE_TEXT_RANGE *range) {
2892     return This->lpVtbl->GetInlineObject(This,position,object,range);
2893 }
2894 static FORCEINLINE HRESULT IDWriteTextLayout1_GetTypography(IDWriteTextLayout1* This,UINT32 position,IDWriteTypography **typography,DWRITE_TEXT_RANGE *range) {
2895     return This->lpVtbl->GetTypography(This,position,typography,range);
2896 }
2897 static FORCEINLINE HRESULT IDWriteTextLayout1_GetLocaleNameLength(IDWriteTextLayout1* This,UINT32 position,UINT32 *length,DWRITE_TEXT_RANGE *range) {
2898     return This->lpVtbl->IDWriteTextLayout_GetLocaleNameLength(This,position,length,range);
2899 }
2900 static FORCEINLINE HRESULT IDWriteTextLayout1_GetLocaleName(IDWriteTextLayout1* This,UINT32 position,WCHAR *name,UINT32 name_size,DWRITE_TEXT_RANGE *range) {
2901     return This->lpVtbl->IDWriteTextLayout_GetLocaleName(This,position,name,name_size,range);
2902 }
2903 static FORCEINLINE HRESULT IDWriteTextLayout1_Draw(IDWriteTextLayout1* This,void *context,IDWriteTextRenderer *renderer,FLOAT originX,FLOAT originY) {
2904     return This->lpVtbl->Draw(This,context,renderer,originX,originY);
2905 }
2906 static FORCEINLINE HRESULT IDWriteTextLayout1_GetLineMetrics(IDWriteTextLayout1* This,DWRITE_LINE_METRICS *metrics,UINT32 max_count,UINT32 *actual_count) {
2907     return This->lpVtbl->GetLineMetrics(This,metrics,max_count,actual_count);
2908 }
2909 static FORCEINLINE HRESULT IDWriteTextLayout1_GetMetrics(IDWriteTextLayout1* This,DWRITE_TEXT_METRICS *metrics) {
2910     return This->lpVtbl->GetMetrics(This,metrics);
2911 }
2912 static FORCEINLINE HRESULT IDWriteTextLayout1_GetOverhangMetrics(IDWriteTextLayout1* This,DWRITE_OVERHANG_METRICS *overhangs) {
2913     return This->lpVtbl->GetOverhangMetrics(This,overhangs);
2914 }
2915 static FORCEINLINE HRESULT IDWriteTextLayout1_GetClusterMetrics(IDWriteTextLayout1* This,DWRITE_CLUSTER_METRICS *metrics,UINT32 max_count,UINT32 *act_count) {
2916     return This->lpVtbl->GetClusterMetrics(This,metrics,max_count,act_count);
2917 }
2918 static FORCEINLINE HRESULT IDWriteTextLayout1_DetermineMinWidth(IDWriteTextLayout1* This,FLOAT *min_width) {
2919     return This->lpVtbl->DetermineMinWidth(This,min_width);
2920 }
2921 static FORCEINLINE HRESULT IDWriteTextLayout1_HitTestPoint(IDWriteTextLayout1* This,FLOAT pointX,FLOAT pointY,WINBOOL *is_trailinghit,WINBOOL *is_inside,DWRITE_HIT_TEST_METRICS *metrics) {
2922     return This->lpVtbl->HitTestPoint(This,pointX,pointY,is_trailinghit,is_inside,metrics);
2923 }
2924 static FORCEINLINE HRESULT IDWriteTextLayout1_HitTestTextPosition(IDWriteTextLayout1* This,UINT32 textPosition,WINBOOL is_trailinghit,FLOAT *pointX,FLOAT *pointY,DWRITE_HIT_TEST_METRICS *metrics) {
2925     return This->lpVtbl->HitTestTextPosition(This,textPosition,is_trailinghit,pointX,pointY,metrics);
2926 }
2927 static FORCEINLINE HRESULT IDWriteTextLayout1_HitTestTextRange(IDWriteTextLayout1* This,UINT32 textPosition,UINT32 textLength,FLOAT originX,FLOAT originY,DWRITE_HIT_TEST_METRICS *metrics,UINT32 max_metricscount,UINT32 *actual_metricscount) {
2928     return This->lpVtbl->HitTestTextRange(This,textPosition,textLength,originX,originY,metrics,max_metricscount,actual_metricscount);
2929 }
2930 /*** IDWriteTextLayout1 methods ***/
2931 static FORCEINLINE HRESULT IDWriteTextLayout1_SetPairKerning(IDWriteTextLayout1* This,WINBOOL is_pairkerning_enabled,DWRITE_TEXT_RANGE range) {
2932     return This->lpVtbl->SetPairKerning(This,is_pairkerning_enabled,range);
2933 }
2934 static FORCEINLINE HRESULT IDWriteTextLayout1_GetPairKerning(IDWriteTextLayout1* This,UINT32 position,WINBOOL *is_pairkerning_enabled,DWRITE_TEXT_RANGE *range) {
2935     return This->lpVtbl->GetPairKerning(This,position,is_pairkerning_enabled,range);
2936 }
2937 static FORCEINLINE HRESULT IDWriteTextLayout1_SetCharacterSpacing(IDWriteTextLayout1* This,FLOAT leading_spacing,FLOAT trailing_spacing,FLOAT minimum_advance_width,DWRITE_TEXT_RANGE range) {
2938     return This->lpVtbl->SetCharacterSpacing(This,leading_spacing,trailing_spacing,minimum_advance_width,range);
2939 }
2940 static FORCEINLINE HRESULT IDWriteTextLayout1_GetCharacterSpacing(IDWriteTextLayout1* This,UINT32 position,FLOAT *leading_spacing,FLOAT *trailing_spacing,FLOAT *minimum_advance_width,DWRITE_TEXT_RANGE *range) {
2941     return This->lpVtbl->GetCharacterSpacing(This,position,leading_spacing,trailing_spacing,minimum_advance_width,range);
2942 }
2943 #endif
2944 #endif
2945 
2946 #endif
2947 
2948 
2949 #endif  /* __IDWriteTextLayout1_INTERFACE_DEFINED__ */
2950 
2951 typedef enum DWRITE_TEXT_ANTIALIAS_MODE {
2952     DWRITE_TEXT_ANTIALIAS_MODE_CLEARTYPE = 0,
2953     DWRITE_TEXT_ANTIALIAS_MODE_GRAYSCALE = 1
2954 } DWRITE_TEXT_ANTIALIAS_MODE;
2955 /*****************************************************************************
2956  * IDWriteBitmapRenderTarget1 interface
2957  */
2958 #ifndef __IDWriteBitmapRenderTarget1_INTERFACE_DEFINED__
2959 #define __IDWriteBitmapRenderTarget1_INTERFACE_DEFINED__
2960 
2961 DEFINE_GUID(IID_IDWriteBitmapRenderTarget1, 0x791e8298, 0x3ef3, 0x4230, 0x98,0x80, 0xc9,0xbd,0xec,0xc4,0x20,0x64);
2962 #if defined(__cplusplus) && !defined(CINTERFACE)
2963 MIDL_INTERFACE("791e8298-3ef3-4230-9880-c9bdecc42064")
2964 IDWriteBitmapRenderTarget1 : public IDWriteBitmapRenderTarget
2965 {
2966     virtual DWRITE_TEXT_ANTIALIAS_MODE STDMETHODCALLTYPE GetTextAntialiasMode(
2967         ) = 0;
2968 
2969     virtual HRESULT STDMETHODCALLTYPE SetTextAntialiasMode(
2970         DWRITE_TEXT_ANTIALIAS_MODE mode) = 0;
2971 
2972 };
2973 #ifdef __CRT_UUID_DECL
2974 __CRT_UUID_DECL(IDWriteBitmapRenderTarget1, 0x791e8298, 0x3ef3, 0x4230, 0x98,0x80, 0xc9,0xbd,0xec,0xc4,0x20,0x64)
2975 #endif
2976 #else
2977 typedef struct IDWriteBitmapRenderTarget1Vtbl {
2978     BEGIN_INTERFACE
2979 
2980     /*** IUnknown methods ***/
2981     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2982         IDWriteBitmapRenderTarget1 *This,
2983         REFIID riid,
2984         void **ppvObject);
2985 
2986     ULONG (STDMETHODCALLTYPE *AddRef)(
2987         IDWriteBitmapRenderTarget1 *This);
2988 
2989     ULONG (STDMETHODCALLTYPE *Release)(
2990         IDWriteBitmapRenderTarget1 *This);
2991 
2992     /*** IDWriteBitmapRenderTarget methods ***/
2993     HRESULT (STDMETHODCALLTYPE *DrawGlyphRun)(
2994         IDWriteBitmapRenderTarget1 *This,
2995         FLOAT baselineOriginX,
2996         FLOAT baselineOriginY,
2997         DWRITE_MEASURING_MODE measuring_mode,
2998         const DWRITE_GLYPH_RUN *glyph_run,
2999         IDWriteRenderingParams *params,
3000         COLORREF textColor,
3001         RECT *blackbox_rect);
3002 
3003     HDC (STDMETHODCALLTYPE *GetMemoryDC)(
3004         IDWriteBitmapRenderTarget1 *This);
3005 
3006     FLOAT (STDMETHODCALLTYPE *GetPixelsPerDip)(
3007         IDWriteBitmapRenderTarget1 *This);
3008 
3009     HRESULT (STDMETHODCALLTYPE *SetPixelsPerDip)(
3010         IDWriteBitmapRenderTarget1 *This,
3011         FLOAT pixels_per_dip);
3012 
3013     HRESULT (STDMETHODCALLTYPE *GetCurrentTransform)(
3014         IDWriteBitmapRenderTarget1 *This,
3015         DWRITE_MATRIX *transform);
3016 
3017     HRESULT (STDMETHODCALLTYPE *SetCurrentTransform)(
3018         IDWriteBitmapRenderTarget1 *This,
3019         const DWRITE_MATRIX *transform);
3020 
3021     HRESULT (STDMETHODCALLTYPE *GetSize)(
3022         IDWriteBitmapRenderTarget1 *This,
3023         SIZE *size);
3024 
3025     HRESULT (STDMETHODCALLTYPE *Resize)(
3026         IDWriteBitmapRenderTarget1 *This,
3027         UINT32 width,
3028         UINT32 height);
3029 
3030     /*** IDWriteBitmapRenderTarget1 methods ***/
3031     DWRITE_TEXT_ANTIALIAS_MODE (STDMETHODCALLTYPE *GetTextAntialiasMode)(
3032         IDWriteBitmapRenderTarget1 *This);
3033 
3034     HRESULT (STDMETHODCALLTYPE *SetTextAntialiasMode)(
3035         IDWriteBitmapRenderTarget1 *This,
3036         DWRITE_TEXT_ANTIALIAS_MODE mode);
3037 
3038     END_INTERFACE
3039 } IDWriteBitmapRenderTarget1Vtbl;
3040 
3041 interface IDWriteBitmapRenderTarget1 {
3042     CONST_VTBL IDWriteBitmapRenderTarget1Vtbl* lpVtbl;
3043 };
3044 
3045 #ifdef COBJMACROS
3046 #ifndef WIDL_C_INLINE_WRAPPERS
3047 /*** IUnknown methods ***/
3048 #define IDWriteBitmapRenderTarget1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3049 #define IDWriteBitmapRenderTarget1_AddRef(This) (This)->lpVtbl->AddRef(This)
3050 #define IDWriteBitmapRenderTarget1_Release(This) (This)->lpVtbl->Release(This)
3051 /*** IDWriteBitmapRenderTarget methods ***/
3052 #define IDWriteBitmapRenderTarget1_DrawGlyphRun(This,baselineOriginX,baselineOriginY,measuring_mode,glyph_run,params,textColor,blackbox_rect) (This)->lpVtbl->DrawGlyphRun(This,baselineOriginX,baselineOriginY,measuring_mode,glyph_run,params,textColor,blackbox_rect)
3053 #define IDWriteBitmapRenderTarget1_GetMemoryDC(This) (This)->lpVtbl->GetMemoryDC(This)
3054 #define IDWriteBitmapRenderTarget1_GetPixelsPerDip(This) (This)->lpVtbl->GetPixelsPerDip(This)
3055 #define IDWriteBitmapRenderTarget1_SetPixelsPerDip(This,pixels_per_dip) (This)->lpVtbl->SetPixelsPerDip(This,pixels_per_dip)
3056 #define IDWriteBitmapRenderTarget1_GetCurrentTransform(This,transform) (This)->lpVtbl->GetCurrentTransform(This,transform)
3057 #define IDWriteBitmapRenderTarget1_SetCurrentTransform(This,transform) (This)->lpVtbl->SetCurrentTransform(This,transform)
3058 #define IDWriteBitmapRenderTarget1_GetSize(This,size) (This)->lpVtbl->GetSize(This,size)
3059 #define IDWriteBitmapRenderTarget1_Resize(This,width,height) (This)->lpVtbl->Resize(This,width,height)
3060 /*** IDWriteBitmapRenderTarget1 methods ***/
3061 #define IDWriteBitmapRenderTarget1_GetTextAntialiasMode(This) (This)->lpVtbl->GetTextAntialiasMode(This)
3062 #define IDWriteBitmapRenderTarget1_SetTextAntialiasMode(This,mode) (This)->lpVtbl->SetTextAntialiasMode(This,mode)
3063 #else
3064 /*** IUnknown methods ***/
3065 static FORCEINLINE HRESULT IDWriteBitmapRenderTarget1_QueryInterface(IDWriteBitmapRenderTarget1* This,REFIID riid,void **ppvObject) {
3066     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3067 }
3068 static FORCEINLINE ULONG IDWriteBitmapRenderTarget1_AddRef(IDWriteBitmapRenderTarget1* This) {
3069     return This->lpVtbl->AddRef(This);
3070 }
3071 static FORCEINLINE ULONG IDWriteBitmapRenderTarget1_Release(IDWriteBitmapRenderTarget1* This) {
3072     return This->lpVtbl->Release(This);
3073 }
3074 /*** IDWriteBitmapRenderTarget methods ***/
3075 static FORCEINLINE HRESULT IDWriteBitmapRenderTarget1_DrawGlyphRun(IDWriteBitmapRenderTarget1* This,FLOAT baselineOriginX,FLOAT baselineOriginY,DWRITE_MEASURING_MODE measuring_mode,const DWRITE_GLYPH_RUN *glyph_run,IDWriteRenderingParams *params,COLORREF textColor,RECT *blackbox_rect) {
3076     return This->lpVtbl->DrawGlyphRun(This,baselineOriginX,baselineOriginY,measuring_mode,glyph_run,params,textColor,blackbox_rect);
3077 }
3078 static FORCEINLINE HDC IDWriteBitmapRenderTarget1_GetMemoryDC(IDWriteBitmapRenderTarget1* This) {
3079     return This->lpVtbl->GetMemoryDC(This);
3080 }
3081 static FORCEINLINE FLOAT IDWriteBitmapRenderTarget1_GetPixelsPerDip(IDWriteBitmapRenderTarget1* This) {
3082     return This->lpVtbl->GetPixelsPerDip(This);
3083 }
3084 static FORCEINLINE HRESULT IDWriteBitmapRenderTarget1_SetPixelsPerDip(IDWriteBitmapRenderTarget1* This,FLOAT pixels_per_dip) {
3085     return This->lpVtbl->SetPixelsPerDip(This,pixels_per_dip);
3086 }
3087 static FORCEINLINE HRESULT IDWriteBitmapRenderTarget1_GetCurrentTransform(IDWriteBitmapRenderTarget1* This,DWRITE_MATRIX *transform) {
3088     return This->lpVtbl->GetCurrentTransform(This,transform);
3089 }
3090 static FORCEINLINE HRESULT IDWriteBitmapRenderTarget1_SetCurrentTransform(IDWriteBitmapRenderTarget1* This,const DWRITE_MATRIX *transform) {
3091     return This->lpVtbl->SetCurrentTransform(This,transform);
3092 }
3093 static FORCEINLINE HRESULT IDWriteBitmapRenderTarget1_GetSize(IDWriteBitmapRenderTarget1* This,SIZE *size) {
3094     return This->lpVtbl->GetSize(This,size);
3095 }
3096 static FORCEINLINE HRESULT IDWriteBitmapRenderTarget1_Resize(IDWriteBitmapRenderTarget1* This,UINT32 width,UINT32 height) {
3097     return This->lpVtbl->Resize(This,width,height);
3098 }
3099 /*** IDWriteBitmapRenderTarget1 methods ***/
3100 static FORCEINLINE DWRITE_TEXT_ANTIALIAS_MODE IDWriteBitmapRenderTarget1_GetTextAntialiasMode(IDWriteBitmapRenderTarget1* This) {
3101     return This->lpVtbl->GetTextAntialiasMode(This);
3102 }
3103 static FORCEINLINE HRESULT IDWriteBitmapRenderTarget1_SetTextAntialiasMode(IDWriteBitmapRenderTarget1* This,DWRITE_TEXT_ANTIALIAS_MODE mode) {
3104     return This->lpVtbl->SetTextAntialiasMode(This,mode);
3105 }
3106 #endif
3107 #endif
3108 
3109 #endif
3110 
3111 
3112 #endif  /* __IDWriteBitmapRenderTarget1_INTERFACE_DEFINED__ */
3113 
3114 /* Begin additional prototypes for all interfaces */
3115 
3116 
3117 /* End additional prototypes */
3118 
3119 #ifdef __cplusplus
3120 }
3121 #endif
3122 
3123 #endif /* __dwrite_1_h__ */
3124