d3dx9: Implement D3DXSHEvalSphericalLight.
[wine] / include / dwrite_1.idl
1 /*
2  * Copyright 2013 Nikolay Sivov for CodeWeavers
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 import "dwrite.idl";
20
21 typedef enum DWRITE_PANOSE_FAMILY
22 {
23     DWRITE_PANOSE_FAMILY_ANY,
24     DWRITE_PANOSE_FAMILY_NO_FIT,
25     DWRITE_PANOSE_FAMILY_TEXT_DISPLAY,
26     DWRITE_PANOSE_FAMILY_SCRIPT,
27     DWRITE_PANOSE_FAMILY_DECORATIVE,
28     DWRITE_PANOSE_FAMILY_SYMBOL,
29     DWRITE_PANOSE_FAMILY_PICTORIAL = DWRITE_PANOSE_FAMILY_SYMBOL
30 } DWRITE_PANOSE_FAMILY;
31
32 typedef enum DWRITE_PANOSE_SERIF_STYLE
33 {
34     DWRITE_PANOSE_SERIF_STYLE_ANY,
35     DWRITE_PANOSE_SERIF_STYLE_NO_FIT,
36     DWRITE_PANOSE_SERIF_STYLE_COVE,
37     DWRITE_PANOSE_SERIF_STYLE_OBTUSE_COVE,
38     DWRITE_PANOSE_SERIF_STYLE_SQUARE_COVE,
39     DWRITE_PANOSE_SERIF_STYLE_OBTUSE_SQUARE_COVE,
40     DWRITE_PANOSE_SERIF_STYLE_SQUARE,
41     DWRITE_PANOSE_SERIF_STYLE_THIN,
42     DWRITE_PANOSE_SERIF_STYLE_OVAL,
43     DWRITE_PANOSE_SERIF_STYLE_EXAGGERATED,
44     DWRITE_PANOSE_SERIF_STYLE_TRIANGLE,
45     DWRITE_PANOSE_SERIF_STYLE_NORMAL_SANS,
46     DWRITE_PANOSE_SERIF_STYLE_OBTUSE_SANS,
47     DWRITE_PANOSE_SERIF_STYLE_PERPENDICULAR_SANS,
48     DWRITE_PANOSE_SERIF_STYLE_FLARED,
49     DWRITE_PANOSE_SERIF_STYLE_ROUNDED,
50     DWRITE_PANOSE_SERIF_STYLE_SCRIPT,
51     DWRITE_PANOSE_SERIF_STYLE_PERP_SANS = DWRITE_PANOSE_SERIF_STYLE_PERPENDICULAR_SANS,
52     DWRITE_PANOSE_SERIF_STYLE_BONE = DWRITE_PANOSE_SERIF_STYLE_OVAL
53 } DWRITE_PANOSE_SERIF_STYLE;
54
55 typedef enum DWRITE_PANOSE_WEIGHT
56 {
57     DWRITE_PANOSE_WEIGHT_ANY,
58     DWRITE_PANOSE_WEIGHT_NO_FIT,
59     DWRITE_PANOSE_WEIGHT_VERY_LIGHT,
60     DWRITE_PANOSE_WEIGHT_LIGHT,
61     DWRITE_PANOSE_WEIGHT_THIN,
62     DWRITE_PANOSE_WEIGHT_BOOK,
63     DWRITE_PANOSE_WEIGHT_MEDIUM,
64     DWRITE_PANOSE_WEIGHT_DEMI,
65     DWRITE_PANOSE_WEIGHT_BOLD,
66     DWRITE_PANOSE_WEIGHT_HEAVY,
67     DWRITE_PANOSE_WEIGHT_BLACK,
68     DWRITE_PANOSE_WEIGHT_EXTRA_BLACK,
69     DWRITE_PANOSE_WEIGHT_NORD = DWRITE_PANOSE_WEIGHT_EXTRA_BLACK
70 } DWRITE_PANOSE_WEIGHT;
71
72 typedef enum DWRITE_PANOSE_PROPORTION
73 {
74     DWRITE_PANOSE_PROPORTION_ANY,
75     DWRITE_PANOSE_PROPORTION_NO_FIT,
76     DWRITE_PANOSE_PROPORTION_OLD_STYLE,
77     DWRITE_PANOSE_PROPORTION_MODERN,
78     DWRITE_PANOSE_PROPORTION_EVEN_WIDTH,
79     DWRITE_PANOSE_PROPORTION_EXPANDED,
80     DWRITE_PANOSE_PROPORTION_CONDENSED,
81     DWRITE_PANOSE_PROPORTION_VERY_EXPANDED,
82     DWRITE_PANOSE_PROPORTION_VERY_CONDENSED,
83     DWRITE_PANOSE_PROPORTION_MONOSPACED
84 } DWRITE_PANOSE_PROPORTION;
85
86 typedef enum DWRITE_PANOSE_CONTRAST
87 {
88     DWRITE_PANOSE_CONTRAST_ANY,
89     DWRITE_PANOSE_CONTRAST_NO_FIT,
90     DWRITE_PANOSE_CONTRAST_NONE,
91     DWRITE_PANOSE_CONTRAST_VERY_LOW,
92     DWRITE_PANOSE_CONTRAST_LOW,
93     DWRITE_PANOSE_CONTRAST_MEDIUM_LOW,
94     DWRITE_PANOSE_CONTRAST_MEDIUM,
95     DWRITE_PANOSE_CONTRAST_MEDIUM_HIGH,
96     DWRITE_PANOSE_CONTRAST_HIGH,
97     DWRITE_PANOSE_CONTRAST_VERY_HIGH,
98     DWRITE_PANOSE_CONTRAST_HORIZONTAL_LOW,
99     DWRITE_PANOSE_CONTRAST_HORIZONTAL_MEDIUM,
100     DWRITE_PANOSE_CONTRAST_HORIZONTAL_HIGH,
101     DWRITE_PANOSE_CONTRAST_BROKEN
102 } DWRITE_PANOSE_CONTRAST;
103
104 typedef enum DWRITE_PANOSE_STROKE_VARIATION
105 {
106     DWRITE_PANOSE_STROKE_VARIATION_ANY,
107     DWRITE_PANOSE_STROKE_VARIATION_NO_FIT,
108     DWRITE_PANOSE_STROKE_VARIATION_NO_VARIATION,
109     DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_DIAGONAL,
110     DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_TRANSITIONAL,
111     DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_VERTICAL,
112     DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_HORIZONTAL,
113     DWRITE_PANOSE_STROKE_VARIATION_RAPID_VERTICAL,
114     DWRITE_PANOSE_STROKE_VARIATION_RAPID_HORIZONTAL,
115     DWRITE_PANOSE_STROKE_VARIATION_INSTANT_VERTICAL,
116     DWRITE_PANOSE_STROKE_VARIATION_INSTANT_HORIZONTAL
117 } DWRITE_PANOSE_STROKE_VARIANTION;
118
119 typedef enum DWRITE_PANOSE_ARM_STYLE
120 {
121     DWRITE_PANOSE_ARM_STYLE_ANY,
122     DWRITE_PANOSE_ARM_STYLE_NO_FIT,
123     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_HORIZONTAL,
124     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_WEDGE,
125     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_VERTICAL,
126     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_SINGLE_SERIF,
127     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_DOUBLE_SERIF,
128     DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_HORIZONTAL,
129     DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_WEDGE,
130     DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_VERTICAL,
131     DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_SINGLE_SERIF,
132     DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_DOUBLE_SERIF,
133     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_HORZ = DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_HORIZONTAL,
134     DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_VERT = DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_VERTICAL,
135     DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_HORZ = DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_HORIZONTAL,
136     DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_WEDGE = DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_WEDGE,
137     DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_VERT = DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_VERTICAL,
138     DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_SINGLE_SERIF = DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_SINGLE_SERIF,
139     DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_DOUBLE_SERIF = DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_DOUBLE_SERIF
140 } DWRITE_PANOSE_ARM_STYLE;
141
142 typedef enum DWRITE_PANOSE_LETTERFORM
143 {
144     DWRITE_PANOSE_LETTERFORM_ANY,
145     DWRITE_PANOSE_LETTERFORM_NO_FIT,
146     DWRITE_PANOSE_LETTERFORM_NORMAL_CONTACT,
147     DWRITE_PANOSE_LETTERFORM_NORMAL_WEIGHTED,
148     DWRITE_PANOSE_LETTERFORM_NORMAL_BOXED,
149     DWRITE_PANOSE_LETTERFORM_NORMAL_FLATTENED,
150     DWRITE_PANOSE_LETTERFORM_NORMAL_ROUNDED,
151     DWRITE_PANOSE_LETTERFORM_NORMAL_OFF_CENTER,
152     DWRITE_PANOSE_LETTERFORM_NORMAL_SQUARE,
153     DWRITE_PANOSE_LETTERFORM_OBLIQUE_CONTACT,
154     DWRITE_PANOSE_LETTERFORM_OBLIQUE_WEIGHTED,
155     DWRITE_PANOSE_LETTERFORM_OBLIQUE_BOXED,
156     DWRITE_PANOSE_LETTERFORM_OBLIQUE_FLATTENED,
157     DWRITE_PANOSE_LETTERFORM_OBLIQUE_ROUNDED,
158     DWRITE_PANOSE_LETTERFORM_OBLIQUE_OFF_CENTER,
159     DWRITE_PANOSE_LETTERFORM_OBLIQUE_SQUARE
160 } DWRITE_PANOSE_LETTERFORM;
161
162 typedef enum DWRITE_PANOSE_MIDLINE
163 {
164     DWRITE_PANOSE_MIDLINE_ANY,
165     DWRITE_PANOSE_MIDLINE_NO_FIT,
166     DWRITE_PANOSE_MIDLINE_STANDARD_TRIMMED,
167     DWRITE_PANOSE_MIDLINE_STANDARD_POINTED,
168     DWRITE_PANOSE_MIDLINE_STANDARD_SERIFED,
169     DWRITE_PANOSE_MIDLINE_HIGH_TRIMMED,
170     DWRITE_PANOSE_MIDLINE_HIGH_POINTED,
171     DWRITE_PANOSE_MIDLINE_HIGH_SERIFED,
172     DWRITE_PANOSE_MIDLINE_CONSTANT_TRIMMED,
173     DWRITE_PANOSE_MIDLINE_CONSTANT_POINTED,
174     DWRITE_PANOSE_MIDLINE_CONSTANT_SERIFED,
175     DWRITE_PANOSE_MIDLINE_LOW_TRIMMED,
176     DWRITE_PANOSE_MIDLINE_LOW_POINTED,
177     DWRITE_PANOSE_MIDLINE_LOW_SERIFED
178 } DWRITE_PANOSE_MIDLINE;
179
180 typedef enum DWRITE_PANOSE_XHEIGHT
181 {
182     DWRITE_PANOSE_XHEIGHT_ANY,
183     DWRITE_PANOSE_XHEIGHT_NO_FIT,
184     DWRITE_PANOSE_XHEIGHT_CONSTANT_SMALL,
185     DWRITE_PANOSE_XHEIGHT_CONSTANT_STANDARD,
186     DWRITE_PANOSE_XHEIGHT_CONSTANT_LARGE,
187     DWRITE_PANOSE_XHEIGHT_DUCKING_SMALL,
188     DWRITE_PANOSE_XHEIGHT_DUCKING_STANDARD,
189     DWRITE_PANOSE_XHEIGHT_DUCKING_LARGE,
190     DWRITE_PANOSE_XHEIGHT_CONSTANT_STD = DWRITE_PANOSE_XHEIGHT_CONSTANT_STANDARD,
191     DWRITE_PANOSE_XHEIGHT_DUCKING_STD = DWRITE_PANOSE_XHEIGHT_DUCKING_STANDARD
192 } DWRITE_PANOSE_XHEIGHT;
193
194 typedef enum DWRITE_PANOSE_TOOL_KIND
195 {
196     DWRITE_PANOSE_TOOL_KIND_ANY,
197     DWRITE_PANOSE_TOOL_KIND_NO_FIT,
198     DWRITE_PANOSE_TOOL_KIND_FLAT_NIB,
199     DWRITE_PANOSE_TOOL_KIND_PRESSURE_POINT,
200     DWRITE_PANOSE_TOOL_KIND_ENGRAVED,
201     DWRITE_PANOSE_TOOL_KIND_BALL,
202     DWRITE_PANOSE_TOOL_KIND_BRUSH,
203     DWRITE_PANOSE_TOOL_KIND_ROUGH,
204     DWRITE_PANOSE_TOOL_KIND_FELT_PEN_BRUSH_TIP,
205     DWRITE_PANOSE_TOOL_KIND_WILD_BRUSH
206 } DWRITE_PANOSE_TOOL_KIND;
207
208 typedef enum DWRITE_PANOSE_SPACING
209 {
210     DWRITE_PANOSE_SPACING_ANY,
211     DWRITE_PANOSE_SPACING_NO_FIT,
212     DWRITE_PANOSE_SPACING_PROPORTIONAL_SPACED,
213     DWRITE_PANOSE_SPACING_MONOSPACED
214 } DWRITE_PANOSE_SPACING;
215
216 typedef enum DWRITE_PANOSE_ASPECT_RATIO
217 {
218     DWRITE_PANOSE_ASPECT_RATIO_ANY,
219     DWRITE_PANOSE_ASPECT_RATIO_NO_FIT,
220     DWRITE_PANOSE_ASPECT_RATIO_VERY_CONDENSED,
221     DWRITE_PANOSE_ASPECT_RATIO_CONDENSED,
222     DWRITE_PANOSE_ASPECT_RATIO_NORMAL,
223     DWRITE_PANOSE_ASPECT_RATIO_EXPANDED,
224     DWRITE_PANOSE_ASPECT_RATIO_VERY_EXPANDED
225 } DWRITE_PANOSE_ASPECT_RATIO;
226
227 typedef enum DWRITE_PANOSE_SCRIPT_TOPOLOGY
228 {
229     DWRITE_PANOSE_SCRIPT_TOPOLOGY_ANY,
230     DWRITE_PANOSE_SCRIPT_TOPOLOGY_NO_FIT,
231     DWRITE_PANOSE_SCRIPT_TOPOLOGY_ROMAN_DISCONNECTED,
232     DWRITE_PANOSE_SCRIPT_TOPOLOGY_ROMAN_TRAILING,
233     DWRITE_PANOSE_SCRIPT_TOPOLOGY_ROMAN_CONNECTED,
234     DWRITE_PANOSE_SCRIPT_TOPOLOGY_CURSIVE_DISCONNECTED,
235     DWRITE_PANOSE_SCRIPT_TOPOLOGY_CURSIVE_TRAILING,
236     DWRITE_PANOSE_SCRIPT_TOPOLOGY_CURSIVE_CONNECTED,
237     DWRITE_PANOSE_SCRIPT_TOPOLOGY_BLACKLETTER_DISCONNECTED,
238     DWRITE_PANOSE_SCRIPT_TOPOLOGY_BLACKLETTER_TRAILING,
239     DWRITE_PANOSE_SCRIPT_TOPOLOGY_BLACKLETTER_CONNECTED
240 } DWRITE_PANOSE_SCRIPT_TOPOLOGY;
241
242 typedef enum DWRITE_PANOSE_SCRIPT_FORM
243 {
244     DWRITE_PANOSE_SCRIPT_FORM_ANY,
245     DWRITE_PANOSE_SCRIPT_FORM_NO_FIT,
246     DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_NO_WRAPPING,
247     DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_SOME_WRAPPING,
248     DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_MORE_WRAPPING,
249     DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_EXTREME_WRAPPING,
250     DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_NO_WRAPPING,
251     DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_SOME_WRAPPING,
252     DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_MORE_WRAPPING,
253     DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_EXTREME_WRAPPING,
254     DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_NO_WRAPPING,
255     DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_SOME_WRAPPING,
256     DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_MORE_WRAPPING,
257     DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_EXTREME_WRAPPING
258 } DWRITE_PANOSE_SCRIPT_FORM;
259
260 typedef enum DWRITE_PANOSE_FINIALS
261 {
262     DWRITE_PANOSE_FINIALS_ANY,
263     DWRITE_PANOSE_FINIALS_NO_FIT,
264     DWRITE_PANOSE_FINIALS_NONE_NO_LOOPS,
265     DWRITE_PANOSE_FINIALS_NONE_CLOSED_LOOPS,
266     DWRITE_PANOSE_FINIALS_NONE_OPEN_LOOPS,
267     DWRITE_PANOSE_FINIALS_SHARP_NO_LOOPS,
268     DWRITE_PANOSE_FINIALS_SHARP_CLOSED_LOOPS,
269     DWRITE_PANOSE_FINIALS_SHARP_OPEN_LOOPS,
270     DWRITE_PANOSE_FINIALS_TAPERED_NO_LOOPS,
271     DWRITE_PANOSE_FINIALS_TAPERED_CLOSED_LOOPS,
272     DWRITE_PANOSE_FINIALS_TAPERED_OPEN_LOOPS,
273     DWRITE_PANOSE_FINIALS_ROUND_NO_LOOPS,
274     DWRITE_PANOSE_FINIALS_ROUND_CLOSED_LOOPS,
275     DWRITE_PANOSE_FINIALS_ROUND_OPEN_LOOPS
276 } DWRITE_PANOSE_FINIALS;
277
278 typedef enum DWRITE_PANOSE_XASCENT
279 {
280     DWRITE_PANOSE_XASCENT_ANY,
281     DWRITE_PANOSE_XASCENT_NO_FIT,
282     DWRITE_PANOSE_XASCENT_VERY_LOW,
283     DWRITE_PANOSE_XASCENT_LOW,
284     DWRITE_PANOSE_XASCENT_MEDIUM,
285     DWRITE_PANOSE_XASCENT_HIGH,
286     DWRITE_PANOSE_XASCENT_VERY_HIGH
287 } DWRITE_PANOSE_XASCENT;
288
289 typedef enum DWRITE_PANOSE_DECORATIVE_CLASS
290 {
291     DWRITE_PANOSE_DECORATIVE_CLASS_ANY,
292     DWRITE_PANOSE_DECORATIVE_CLASS_NO_FIT,
293     DWRITE_PANOSE_DECORATIVE_CLASS_DERIVATIVE,
294     DWRITE_PANOSE_DECORATIVE_CLASS_NONSTANDARD_TOPOLOGY,
295     DWRITE_PANOSE_DECORATIVE_CLASS_NONSTANDARD_ELEMENTS,
296     DWRITE_PANOSE_DECORATIVE_CLASS_NONSTANDARD_ASPECT,
297     DWRITE_PANOSE_DECORATIVE_CLASS_INITIALS,
298     DWRITE_PANOSE_DECORATIVE_CLASS_CARTOON,
299     DWRITE_PANOSE_DECORATIVE_CLASS_PICTURE_STEMS,
300     DWRITE_PANOSE_DECORATIVE_CLASS_ORNAMENTED,
301     DWRITE_PANOSE_DECORATIVE_CLASS_TEXT_AND_BACKGROUND,
302     DWRITE_PANOSE_DECORATIVE_CLASS_COLLAGE,
303     DWRITE_PANOSE_DECORATIVE_CLASS_MONTAGE
304 } DWRITE_PANOSE_DECORATIVE_CLASS;
305
306 typedef enum DWRITE_PANOSE_ASPECT
307 {
308     DWRITE_PANOSE_ASPECT_ANY,
309     DWRITE_PANOSE_ASPECT_NO_FIT,
310     DWRITE_PANOSE_ASPECT_SUPER_CONDENSED,
311     DWRITE_PANOSE_ASPECT_VERY_CONDENSED,
312     DWRITE_PANOSE_ASPECT_CONDENSED,
313     DWRITE_PANOSE_ASPECT_NORMAL,
314     DWRITE_PANOSE_ASPECT_EXTENDED,
315     DWRITE_PANOSE_ASPECT_VERY_EXTENDED,
316     DWRITE_PANOSE_ASPECT_SUPER_EXTENDED,
317     DWRITE_PANOSE_ASPECT_MONOSPACED
318 } DWRITE_PANOSE_ASPECT;
319
320 typedef enum DWRITE_PANOSE_FILL
321 {
322     DWRITE_PANOSE_FILL_ANY,
323     DWRITE_PANOSE_FILL_NO_FIT,
324     DWRITE_PANOSE_FILL_STANDARD_SOLID_FILL,
325     DWRITE_PANOSE_FILL_NO_FILL,
326     DWRITE_PANOSE_FILL_PATTERNED_FILL,
327     DWRITE_PANOSE_FILL_COMPLEX_FILL,
328     DWRITE_PANOSE_FILL_SHAPED_FILL,
329     DWRITE_PANOSE_FILL_DRAWN_DISTRESSED
330 } DWRITE_PANOSE_FILL;
331
332 typedef enum DWRITE_PANOSE_LINING
333 {
334     DWRITE_PANOSE_LINING_ANY,
335     DWRITE_PANOSE_LINING_NO_FIT,
336     DWRITE_PANOSE_LINING_NONE,
337     DWRITE_PANOSE_LINING_INLINE,
338     DWRITE_PANOSE_LINING_OUTLINE,
339     DWRITE_PANOSE_LINING_ENGRAVED,
340     DWRITE_PANOSE_LINING_SHADOW,
341     DWRITE_PANOSE_LINING_RELIEF,
342     DWRITE_PANOSE_LINING_BACKDROP
343 } DWRITE_PANOSE_LINING;
344
345 typedef enum DWRITE_PANOSE_DECORATIVE_TOPOLOGY
346 {
347     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_ANY,
348     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_NO_FIT,
349     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_STANDARD,
350     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_SQUARE,
351     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_MULTIPLE_SEGMENT,
352     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_ART_DECO,
353     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_UNEVEN_WEIGHTING,
354     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_DIVERSE_ARMS,
355     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_DIVERSE_FORMS,
356     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_LOMBARDIC_FORMS,
357     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_UPPER_CASE_IN_LOWER_CASE,
358     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_IMPLIED_TOPOLOGY,
359     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_HORSESHOE_E_AND_A,
360     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_CURSIVE,
361     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_BLACKLETTER,
362     DWRITE_PANOSE_DECORATIVE_TOPOLOGY_SWASH_VARIANCE
363 } DWRITE_PANOSE_DECORATIVE_TOPOLOGY;
364
365 typedef enum DWRITE_PANOSE_CHARACTER_RANGES
366 {
367     DWRITE_PANOSE_CHARACTER_RANGES_ANY,
368     DWRITE_PANOSE_CHARACTER_RANGES_NO_FIT,
369     DWRITE_PANOSE_CHARACTER_RANGES_EXTENDED_COLLECTION,
370     DWRITE_PANOSE_CHARACTER_RANGES_LITERALS,
371     DWRITE_PANOSE_CHARACTER_RANGES_NO_LOWER_CASE,
372     DWRITE_PANOSE_CHARACTER_RANGES_SMALL_CAPS
373 } DWRITE_PANOSE_CHARACTER_RANGES;
374
375 typedef enum DWRITE_PANOSE_SYMBOL_KIND
376 {
377     DWRITE_PANOSE_SYMBOL_KIND_ANY,
378     DWRITE_PANOSE_SYMBOL_KIND_NO_FIT,
379     DWRITE_PANOSE_SYMBOL_KIND_MONTAGES,
380     DWRITE_PANOSE_SYMBOL_KIND_PICTURES,
381     DWRITE_PANOSE_SYMBOL_KIND_SHAPES,
382     DWRITE_PANOSE_SYMBOL_KIND_SCIENTIFIC,
383     DWRITE_PANOSE_SYMBOL_KIND_MUSIC,
384     DWRITE_PANOSE_SYMBOL_KIND_EXPERT,
385     DWRITE_PANOSE_SYMBOL_KIND_PATTERNS,
386     DWRITE_PANOSE_SYMBOL_KIND_BOARDERS,
387     DWRITE_PANOSE_SYMBOL_KIND_ICONS,
388     DWRITE_PANOSE_SYMBOL_KIND_LOGOS,
389     DWRITE_PANOSE_SYMBOL_KIND_INDUSTRY_SPECIFIC
390 } DWRITE_PANOSE_SYMBOL_KIND;
391
392 typedef enum DWRITE_PANOSE_SYMBOL_ASPECT_RATIO
393 {
394     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_ANY,
395     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NO_FIT,
396     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NO_WIDTH,
397     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_EXCEPTIONALLY_WIDE,
398     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_SUPER_WIDE,
399     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_VERY_WIDE,
400     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_WIDE,
401     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NORMAL,
402     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NARROW,
403     DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_VERY_NARROW
404 } DWRITE_PANOSE_SYMBOL_ASPECT_RATIO;
405
406 typedef enum DWRITE_OUTLINE_THRESHOLD
407 {
408     DWRITE_OUTLINE_THRESHOLD_ANTIALIASED,
409     DWRITE_OUTLINE_THRESHOLD_ALIASED
410 } DWRITE_OUTLINE_THRESHOLD;
411
412 typedef enum DWRITE_BASELINE
413 {
414     DWRITE_BASELINE_DEFAULT,
415     DWRITE_BASELINE_ROMAN,
416     DWRITE_BASELINE_CENTRAL,
417     DWRITE_BASELINE_MATH,
418     DWRITE_BASELINE_HANGING,
419     DWRITE_BASELINE_IDEOGRAPHIC_BOTTOM,
420     DWRITE_BASELINE_IDEOGRAPHIC_TOP,
421     DWRITE_BASELINE_MINIMUM,
422     DWRITE_BASELINE_MAXIMUM
423 } DWRITE_BASELINE;
424
425 typedef enum DWRITE_VERTICAL_GLYPH_ORIENTATION
426 {
427     DWRITE_VERTICAL_GLYPH_ORIENTATION_DEFAULT,
428     DWRITE_VERTICAL_GLYPH_ORIENTATION_STACKED
429 } DWRITE_VERTICAL_GLYPH_ORIENTATION;
430
431 typedef enum DWRITE_GLYPH_ORIENTATION_ANGLE
432 {
433     DWRITE_GLYPH_ORIENTATION_ANGLE_0_DEGREES,
434     DWRITE_GLYPH_ORIENTATION_ANGLE_90_DEGREES,
435     DWRITE_GLYPH_ORIENTATION_ANGLE_180_DEGREES,
436     DWRITE_GLYPH_ORIENTATION_ANGLE_270_DEGREES
437 } DWRITE_GLYPH_ORIENTATION_ANGLE;
438
439 typedef struct DWRITE_FONT_METRICS1
440 {
441     UINT16 designUnitsPerEm;
442     UINT16 ascent;
443     UINT16 descent;
444     INT16 lineGap;
445     UINT16 capHeight;
446     UINT16 xHeight;
447     INT16 underlinePosition;
448     UINT16 underlineThickness;
449     INT16 strikethroughPosition;
450     UINT16 strikethroughThickness;
451     INT16 glyphBoxLeft;
452     INT16 glyphBoxTop;
453     INT16 glyphBoxRight;
454     INT16 glyphBoxBottom;
455     INT16 subscriptPositionX;
456     INT16 subscriptPositionY;
457     INT16 subscriptSizeX;
458     INT16 subscriptSizeY;
459     INT16 superscriptPositionX;
460     INT16 superscriptPositionY;
461     INT16 superscriptSizeX;
462     INT16 superscriptSizeY;
463     BOOL hasTypographicMetrics;
464 } DWRITE_FONT_METRICS1;
465
466 typedef struct DWRITE_CARET_METRICS
467 {
468     INT16 slopeRise;
469     INT16 slopeRun;
470     INT16 offset;
471 } DWRITE_CARET_METRICS;
472
473 typedef union DWRITE_PANOSE
474 {
475     UINT8 values[10];
476     UINT8 familyKind;
477     struct
478     {
479         UINT8 familyKind;
480         UINT8 serifStyle;
481         UINT8 weight;
482         UINT8 proportion;
483         UINT8 contrast;
484         UINT8 strokeVariation;
485         UINT8 armStyle;
486         UINT8 letterform;
487         UINT8 midline;
488         UINT8 xHeight;
489     } text;
490     struct
491     {
492         UINT8 familyKind;
493         UINT8 toolKind;
494         UINT8 weight;
495         UINT8 spacing;
496         UINT8 aspectRatio;
497         UINT8 contrast;
498         UINT8 scriptTopology;
499         UINT8 scriptForm;
500         UINT8 finials;
501         UINT8 xAscent;
502     } script;
503     struct
504     {
505         UINT8 familyKind;
506         UINT8 decorativeClass;
507         UINT8 weight;
508         UINT8 aspect;
509         UINT8 contrast;
510         UINT8 serifVariant;
511         UINT8 fill;
512         UINT8 lining;
513         UINT8 decorativeTopology;
514         UINT8 characterRange;
515     } decorative;
516     struct
517     {
518         UINT8 familyKind;
519         UINT8 symbolKind;
520         UINT8 weight;
521         UINT8 spacing;
522         UINT8 aspectRatioAndContrast;
523         UINT8 aspectRatio94;
524         UINT8 aspectRatio119;
525         UINT8 aspectRatio157;
526         UINT8 aspectRatio163;
527         UINT8 aspectRatio211;
528     } symbol;
529 } DWRITE_PANOSE;
530
531 typedef struct DWRITE_UNICODE_RANGE
532 {
533     UINT32 first;
534     UINT32 last;
535 } DWRITE_UNICODE_RANGE;
536
537 typedef struct DWRITE_SCRIPT_PROPERTIES
538 {
539     UINT32 isoScriptCode;
540     UINT32 isoScriptNumber;
541     UINT32 clusterLookahead;
542     UINT32 justificationCharacter;
543     UINT32 restrictCaretToClusters : 1;
544     UINT32 usesWordDividers : 1;
545     UINT32 isDiscreteWriting : 1;
546     UINT32 isBlockWriting : 1;
547     UINT32 isDistributedWithinCluster : 1;
548     UINT32 isConnectedWriting : 1;
549     UINT32 isCursiveWriting : 1;
550     UINT32 reserved : 25;
551 } DWRITE_SCRIPT_PROPERTIES;
552
553 typedef struct DWRITE_JUSTIFICATION_OPPORTUNITY
554 {
555     FLOAT expansionMinimum;
556     FLOAT expansionMaximum;
557     FLOAT compressionMaximum;
558     UINT32 expansionPriority : 8;
559     UINT32 compressionPriority : 8;
560     UINT32 allowResidualExpansion : 1;
561     UINT32 allowResidualCompression : 1;
562     UINT32 applyToLeadingEdge : 1;
563     UINT32 applyToTrailingEdge : 1;
564     UINT32 reserved : 12;
565 } DWRITE_JUSTIFICATION_OPPORTUNITY;
566
567 interface IDWriteTextAnalysisSource1;
568 interface IDWriteTextAnalysisSink1;
569 interface IDWriteRenderingParams1;
570
571 [
572 local,
573 object,
574 uuid(30572f99-dac6-41db-a16e-0486307e606a)
575 ]
576 interface IDWriteFactory1 : IDWriteFactory
577 {
578     HRESULT GetEudcFontCollection(IDWriteFontCollection **collection,
579                                   [defaultvalue(FALSE)] BOOL check_for_updates);
580     HRESULT CreateCustomRenderingParams(FLOAT gamma,
581                                         FLOAT enhcontrast,
582                                         FLOAT enhcontrast_grayscale,
583                                         FLOAT cleartype_level,
584                                         DWRITE_PIXEL_GEOMETRY geometry,
585                                         DWRITE_RENDERING_MODE mode,
586                                         IDWriteRenderingParams1** params);
587 };
588
589 [
590 local,
591 object,
592 uuid(a71efdb4-9fdb-4838-ad90-cfc3be8c3daf)
593 ]
594 interface IDWriteFontFace1 : IDWriteFontFace
595 {
596     HRESULT GetMetrics(DWRITE_FONT_METRICS1 *metrics);
597     HRESULT GetGdiCompatibleMetrics(FLOAT em_size,
598                                     FLOAT pixels_per_dip,
599                                     const DWRITE_MATRIX *transform,
600                                     DWRITE_FONT_METRICS1 *metrics);
601     void GetCaretMetrics(DWRITE_CARET_METRICS *metrics);
602     HRESULT GetUnicodeRanges(UINT32 max_count,
603                              DWRITE_UNICODE_RANGE *ranges,
604                              UINT32 *count);
605     BOOL IsMonospacedFont();
606     HRESULT GetDesignGlyphAdvances(UINT32 glyph_count,
607                                    UINT16 const *indices,
608                                    INT32 *advances,
609                                    [defaultvalue(FALSE)] BOOL is_sideways);
610     HRESULT GetGdiCompatibleGlyphAdvances(FLOAT em_size,
611                                           FLOAT pixels_per_dip,
612                                           const DWRITE_MATRIX *transform,
613                                           BOOL use_gdi_natural,
614                                           BOOL is_sideways,
615                                           UINT32 glyph_count,
616                                           const UINT16 *indices,
617                                           INT32 *advances);
618
619     HRESULT GetKerningPairAdjustments(UINT32 glyph_count,
620                                       const UINT16 *indices,
621                                       INT32 *adjustments);
622     BOOL HasKerningPairs();
623     HRESULT GetRecommendedRenderingMode(FLOAT font_emsize,
624                                         FLOAT dpiX,
625                                         FLOAT dpiY,
626                                         const DWRITE_MATRIX *transform,
627                                         BOOL is_sideways,
628                                         DWRITE_OUTLINE_THRESHOLD threshold,
629                                         DWRITE_MEASURING_MODE measuring_mode,
630                                         DWRITE_RENDERING_MODE *rendering_mode);
631
632     HRESULT GetVerticalGlyphVariants(UINT32 glyph_count,
633                                      const UINT16 *nominal_indices,
634                                      UINT16 *vertical_indices);
635     BOOL HasVerticalGlyphVariants();
636 };
637
638 [
639 local,
640 object,
641 uuid(acd16696-8c14-4f5d-877e-fe3fc1d32738)
642 ]
643 interface IDWriteFont1 : IDWriteFont
644 {
645     void GetMetrics(DWRITE_FONT_METRICS1 *metrics);
646     void GetPanose(DWRITE_PANOSE *panose);
647     HRESULT GetUnicodeRanges(UINT32 max_count,
648                              DWRITE_UNICODE_RANGE *ranges,
649                              UINT32 *count);
650     BOOL IsMonospacedFont();
651 };
652
653 [
654 local,
655 object,
656 uuid(94413cf4-a6fc-4248-8b50-6674348fcad3)
657 ]
658 interface IDWriteRenderingParams1 : IDWriteRenderingParams
659 {
660     FLOAT GetGrayscaleEnhancedContrast();
661 };
662
663 [
664 local,
665 object,
666 uuid(80dad800-e21f-4e83-96ce-bfcce500db7c)
667 ]
668 interface IDWriteTextAnalyzer1 : IDWriteTextAnalyzer
669 {
670     HRESULT ApplyCharacterSpacing(FLOAT leading_spacing,
671                                   FLOAT trailing_spacing,
672                                   FLOAT min_advance_width,
673                                   UINT32 len,
674                                   UINT32 glyph_count,
675                                   UINT16 const *clustermap,
676                                   FLOAT const *advances,
677                                   DWRITE_GLYPH_OFFSET const *offsets,
678                                   /*DWRITE_SHAPING_GLYPH_PROPERTIES const *properties, */
679                                   FLOAT *modified_advances,
680                                   DWRITE_GLYPH_OFFSET *modified_offsets);
681     HRESULT GetBaseline(IDWriteFontFace *face,
682                         DWRITE_BASELINE baseline,
683                         BOOL vertical,
684                         BOOL is_simulation_allowed,
685                         DWRITE_SCRIPT_ANALYSIS sa,
686                         const WCHAR *localeName,
687                         INT32 *baseline_coord,
688                         BOOL *exists);
689
690     HRESULT AnalyzeVerticalGlyphOrientation(
691         IDWriteTextAnalysisSource1* source,
692         UINT32 text_pos,
693         UINT32 len,
694         IDWriteTextAnalysisSink1 *sink);
695
696     HRESULT GetGlyphOrientationTransform(
697         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
698         BOOL is_sideways,
699         DWRITE_MATRIX *transform);
700
701 /*
702  *    HRESULT GetScriptProperties(DWRITE_SCRIPT_ANALYSIS sa,
703  *        DWRITE_SCRIPT_PROPERTIES *properties);
704  */
705
706     HRESULT GetTextComplexity(const WCHAR *text,
707                               UINT32 len,
708                               IDWriteFontFace *face,
709                               BOOL *is_simple,
710                               UINT32 *len_read,
711                               UINT16 *indices);
712     HRESULT GetJustificationOpportunities(
713         IDWriteFontFace *face,
714         FLOAT font_em_size,
715         DWRITE_SCRIPT_ANALYSIS sa,
716         UINT32 length,
717         UINT32 glyph_count,
718         const WCHAR *text,
719         const UINT16 *clustermap,
720         const DWRITE_SHAPING_GLYPH_PROPERTIES *prop,
721         DWRITE_JUSTIFICATION_OPPORTUNITY *jo);
722
723     HRESULT JustifyGlyphAdvances(
724         FLOAT width,
725         UINT32 glyph_count,
726         const DWRITE_JUSTIFICATION_OPPORTUNITY *jo,
727         const FLOAT *advances,
728         const DWRITE_GLYPH_OFFSET *offsets,
729         FLOAT *justifiedadvances,
730         DWRITE_GLYPH_OFFSET *justifiedoffsets);
731
732     HRESULT GetJustifiedGlyphs(
733         IDWriteFontFace *face,
734         FLOAT font_em_size,
735         DWRITE_SCRIPT_ANALYSIS sa,
736         UINT32 length,
737         UINT32 glyph_count,
738         UINT32 max_glyphcount,
739         const UINT16 *clustermap,
740         const UINT16 *indices,
741         const FLOAT *advances,
742         const FLOAT *justifiedadvances,
743         const DWRITE_GLYPH_OFFSET *justifiedoffsets,
744         const DWRITE_SHAPING_GLYPH_PROPERTIES *prop,
745         UINT32 *actual_count,
746         UINT16 *modified_clustermap,
747         UINT16 *modified_indices,
748         FLOAT *modified_advances,
749         DWRITE_GLYPH_OFFSET *modified_offsets);
750 };
751
752 [
753 local,
754 object,
755 uuid(639cfad8-0fb4-4b21-a58a-067920120009)
756 ]
757 interface IDWriteTextAnalysisSource1 : IDWriteTextAnalysisSource
758 {
759     HRESULT GetVerticalGlyphOrientation(
760         UINT32 pos,
761         UINT32 *length,
762         DWRITE_VERTICAL_GLYPH_ORIENTATION *orientation,
763         UINT8 *bidi_level);
764 };
765
766 [
767 local,
768 object,
769 uuid(b0d941a0-85e7-4d8b-9fd3-5ced9934482a)
770 ]
771 interface IDWriteTextAnalysisSink1 : IDWriteTextAnalysisSink
772 {
773     HRESULT SetGlyphOrientation(
774         UINT32 pos,
775         UINT32 length,
776         DWRITE_GLYPH_ORIENTATION_ANGLE angle,
777         UINT8 adjusted_bidilevel,
778         BOOL is_sideways,
779         BOOL is_rtl);
780 };
781
782 [
783 local,
784 object,
785 uuid(9064d822-80a7-465c-a986-df65f78b8feb)
786 ]
787 interface IDWriteTextLayout1 : IDWriteTextLayout
788 {
789     HRESULT SetPairKerning(
790         BOOL is_pairkerning_enabled,
791         DWRITE_TEXT_RANGE range);
792
793     HRESULT GetPairKerning(
794         UINT32 position,
795         BOOL *is_pairkerning_enabled,
796         DWRITE_TEXT_RANGE *range);
797
798     HRESULT SetCharacterSpacing(
799         FLOAT leading_spacing,
800         FLOAT trailing_spacing,
801         FLOAT minimum_advance_width,
802         DWRITE_TEXT_RANGE range);
803
804     HRESULT GetCharacterSpacing(
805         UINT32 position,
806         FLOAT* leading_spacing,
807         FLOAT* trailing_spacing,
808         FLOAT* minimum_advance_width,
809         [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range);
810 };
811
812 typedef enum DWRITE_TEXT_ANTIALIAS_MODE
813 {
814     DWRITE_TEXT_ANTIALIAS_MODE_CLEARTYPE,
815     DWRITE_TEXT_ANTIALIAS_MODE_GRAYSCALE
816 } DWRITE_TEXT_ANTIALIAS_MODE;
817
818 [
819 local,
820 object,
821 uuid(791e8298-3ef3-4230-9880-c9bdecc42064)
822 ]
823 interface IDWriteBitmapRenderTarget1 : IDWriteBitmapRenderTarget
824 {
825     DWRITE_TEXT_ANTIALIAS_MODE GetTextAntialiasMode();
826     HRESULT SetTextAntialiasMode(DWRITE_TEXT_ANTIALIAS_MODE mode);
827 };