1use shared::basetsd::{INT16, INT32, UINT16, UINT32, UINT8};
8use shared::minwindef::{BOOL, FLOAT};
9use um::dcommon::DWRITE_MEASURING_MODE;
10use um::dwrite::{
11 DWRITE_GLYPH_OFFSET, DWRITE_MATRIX, DWRITE_PIXEL_GEOMETRY, DWRITE_RENDERING_MODE,
12 DWRITE_SCRIPT_ANALYSIS, DWRITE_SHAPING_GLYPH_PROPERTIES, DWRITE_TEXT_RANGE,
13 IDWriteBitmapRenderTarget, IDWriteBitmapRenderTargetVtbl, IDWriteFactory, IDWriteFactoryVtbl,
14 IDWriteFont, IDWriteFontCollection, IDWriteFontFace, IDWriteFontFaceVtbl, IDWriteFontVtbl,
15 IDWriteRenderingParams, IDWriteRenderingParamsVtbl, IDWriteTextAnalysisSink,
16 IDWriteTextAnalysisSinkVtbl, IDWriteTextAnalysisSource, IDWriteTextAnalysisSourceVtbl,
17 IDWriteTextAnalyzer, IDWriteTextAnalyzerVtbl, IDWriteTextLayout, IDWriteTextLayoutVtbl,
18};
19use um::winnt::{HRESULT, WCHAR};
20ENUM!{enum DWRITE_PANOSE_FAMILY {
21 DWRITE_PANOSE_FAMILY_ANY = 0x0, DWRITE_PANOSE_FAMILY_NO_FIT = 0x1, DWRITE_PANOSE_FAMILY_TEXT_DISPLAY = 0x2, DWRITE_PANOSE_FAMILY_SCRIPT = 0x3, DWRITE_PANOSE_FAMILY_DECORATIVE = 0x4, DWRITE_PANOSE_FAMILY_SYMBOL = 0x5, DWRITE_PANOSE_FAMILY_PICTORIAL = 0x5, }}
29ENUM!{enum DWRITE_PANOSE_SERIF_STYLE {
30 DWRITE_PANOSE_SERIF_STYLE_ANY = 0x0, DWRITE_PANOSE_SERIF_STYLE_NO_FIT = 0x1, DWRITE_PANOSE_SERIF_STYLE_COVE = 0x2, DWRITE_PANOSE_SERIF_STYLE_OBTUSE_COVE = 0x3, DWRITE_PANOSE_SERIF_STYLE_SQUARE_COVE = 0x4, DWRITE_PANOSE_SERIF_STYLE_OBTUSE_SQUARE_COVE = 0x5, DWRITE_PANOSE_SERIF_STYLE_SQUARE = 0x6, DWRITE_PANOSE_SERIF_STYLE_THIN = 0x7, DWRITE_PANOSE_SERIF_STYLE_OVAL = 0x8, DWRITE_PANOSE_SERIF_STYLE_EXAGGERATED = 0x9, DWRITE_PANOSE_SERIF_STYLE_TRIANGLE = 0xA, DWRITE_PANOSE_SERIF_STYLE_NORMAL_SANS = 0xB, DWRITE_PANOSE_SERIF_STYLE_OBTUSE_SANS = 0xC, DWRITE_PANOSE_SERIF_STYLE_PERPENDICULAR_SANS = 0xD, DWRITE_PANOSE_SERIF_STYLE_FLARED = 0xE, DWRITE_PANOSE_SERIF_STYLE_ROUNDED = 0xF, DWRITE_PANOSE_SERIF_STYLE_SCRIPT = 0x10, DWRITE_PANOSE_SERIF_STYLE_PERP_SANS = 0xD, DWRITE_PANOSE_SERIF_STYLE_BONE = 0x8, }}
50ENUM!{enum DWRITE_PANOSE_WEIGHT {
51 DWRITE_PANOSE_WEIGHT_ANY = 0x0, DWRITE_PANOSE_WEIGHT_NO_FIT = 0x1, DWRITE_PANOSE_WEIGHT_VERY_LIGHT = 0x2, DWRITE_PANOSE_WEIGHT_LIGHT = 0x3, DWRITE_PANOSE_WEIGHT_THIN = 0x4, DWRITE_PANOSE_WEIGHT_BOOK = 0x5, DWRITE_PANOSE_WEIGHT_MEDIUM = 0x6, DWRITE_PANOSE_WEIGHT_DEMI = 0x7, DWRITE_PANOSE_WEIGHT_BOLD = 0x8, DWRITE_PANOSE_WEIGHT_HEAVY = 0x9, DWRITE_PANOSE_WEIGHT_BLACK = 0xA, DWRITE_PANOSE_WEIGHT_EXTRA_BLACK = 0xB, DWRITE_PANOSE_WEIGHT_NORD = 0xB, }}
65ENUM!{enum DWRITE_PANOSE_PROPORTION {
66 DWRITE_PANOSE_PROPORTION_ANY = 0x0, DWRITE_PANOSE_PROPORTION_NO_FIT = 0x1, DWRITE_PANOSE_PROPORTION_OLD_STYLE = 0x2, DWRITE_PANOSE_PROPORTION_MODERN = 0x3, DWRITE_PANOSE_PROPORTION_EVEN_WIDTH = 0x4, DWRITE_PANOSE_PROPORTION_EXPANDED = 0x5, DWRITE_PANOSE_PROPORTION_CONDENSED = 0x6, DWRITE_PANOSE_PROPORTION_VERY_EXPANDED = 0x7, DWRITE_PANOSE_PROPORTION_VERY_CONDENSED = 0x8, DWRITE_PANOSE_PROPORTION_MONOSPACED = 0x9, }}
77ENUM!{enum DWRITE_PANOSE_CONTRAST {
78 DWRITE_PANOSE_CONTRAST_ANY = 0x0, DWRITE_PANOSE_CONTRAST_NO_FIT = 0x1, DWRITE_PANOSE_CONTRAST_NONE = 0x2, DWRITE_PANOSE_CONTRAST_VERY_LOW = 0x3, DWRITE_PANOSE_CONTRAST_LOW = 0x4, DWRITE_PANOSE_CONTRAST_MEDIUM_LOW = 0x5, DWRITE_PANOSE_CONTRAST_MEDIUM = 0x6, DWRITE_PANOSE_CONTRAST_MEDIUM_HIGH = 0x7, DWRITE_PANOSE_CONTRAST_HIGH = 0x8, DWRITE_PANOSE_CONTRAST_VERY_HIGH = 0x9, DWRITE_PANOSE_CONTRAST_HORIZONTAL_LOW = 0xA, DWRITE_PANOSE_CONTRAST_HORIZONTAL_MEDIUM = 0xB, DWRITE_PANOSE_CONTRAST_HORIZONTAL_HIGH = 0xC, DWRITE_PANOSE_CONTRAST_BROKEN = 0xD, }}
93ENUM!{enum DWRITE_PANOSE_STROKE_VARIATION {
94 DWRITE_PANOSE_STROKE_VARIATION_ANY = 0x0, DWRITE_PANOSE_STROKE_VARIATION_NO_FIT = 0x1, DWRITE_PANOSE_STROKE_VARIATION_NO_VARIATION = 0x2, DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_DIAGONAL = 0x3, DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_TRANSITIONAL = 0x4, DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_VERTICAL = 0x5, DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_HORIZONTAL = 0x6, DWRITE_PANOSE_STROKE_VARIATION_RAPID_VERTICAL = 0x7, DWRITE_PANOSE_STROKE_VARIATION_RAPID_HORIZONTAL = 0x8, DWRITE_PANOSE_STROKE_VARIATION_INSTANT_VERTICAL = 0x9, DWRITE_PANOSE_STROKE_VARIATION_INSTANT_HORIZONTAL = 0xA, }}
106ENUM!{enum DWRITE_PANOSE_ARM_STYLE {
107 DWRITE_PANOSE_ARM_STYLE_ANY = 0x0, DWRITE_PANOSE_ARM_STYLE_NO_FIT = 0x1, DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_HORIZONTAL = 0x2, DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_WEDGE = 0x3, DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_VERTICAL = 0x4, DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_SINGLE_SERIF = 0x5, DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_DOUBLE_SERIF = 0x6, DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_HORIZONTAL = 0x7, DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_WEDGE = 0x8, DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_VERTICAL = 0x9, DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_SINGLE_SERIF = 0xA, DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_DOUBLE_SERIF = 0xB, DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_HORZ = 0x2, DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_VERT = 0x4, DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_HORZ = 0x7, DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_WEDGE = 0x8, DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_VERT = 0x9, DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_SINGLE_SERIF = 0xA, DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_DOUBLE_SERIF = 0xB, }}
127ENUM!{enum DWRITE_PANOSE_LETTERFORM {
128 DWRITE_PANOSE_LETTERFORM_ANY = 0x0, DWRITE_PANOSE_LETTERFORM_NO_FIT = 0x1, DWRITE_PANOSE_LETTERFORM_NORMAL_CONTACT = 0x2, DWRITE_PANOSE_LETTERFORM_NORMAL_WEIGHTED = 0x3, DWRITE_PANOSE_LETTERFORM_NORMAL_BOXED = 0x4, DWRITE_PANOSE_LETTERFORM_NORMAL_FLATTENED = 0x5, DWRITE_PANOSE_LETTERFORM_NORMAL_ROUNDED = 0x6, DWRITE_PANOSE_LETTERFORM_NORMAL_OFF_CENTER = 0x7, DWRITE_PANOSE_LETTERFORM_NORMAL_SQUARE = 0x8, DWRITE_PANOSE_LETTERFORM_OBLIQUE_CONTACT = 0x9, DWRITE_PANOSE_LETTERFORM_OBLIQUE_WEIGHTED = 0xA, DWRITE_PANOSE_LETTERFORM_OBLIQUE_BOXED = 0xB, DWRITE_PANOSE_LETTERFORM_OBLIQUE_FLATTENED = 0xC, DWRITE_PANOSE_LETTERFORM_OBLIQUE_ROUNDED = 0xD, DWRITE_PANOSE_LETTERFORM_OBLIQUE_OFF_CENTER = 0xE, DWRITE_PANOSE_LETTERFORM_OBLIQUE_SQUARE = 0xF, }}
145ENUM!{enum DWRITE_PANOSE_MIDLINE {
146 DWRITE_PANOSE_MIDLINE_ANY = 0x0, DWRITE_PANOSE_MIDLINE_NO_FIT = 0x1, DWRITE_PANOSE_MIDLINE_STANDARD_TRIMMED = 0x2, DWRITE_PANOSE_MIDLINE_STANDARD_POINTED = 0x3, DWRITE_PANOSE_MIDLINE_STANDARD_SERIFED = 0x4, DWRITE_PANOSE_MIDLINE_HIGH_TRIMMED = 0x5, DWRITE_PANOSE_MIDLINE_HIGH_POINTED = 0x6, DWRITE_PANOSE_MIDLINE_HIGH_SERIFED = 0x7, DWRITE_PANOSE_MIDLINE_CONSTANT_TRIMMED = 0x8, DWRITE_PANOSE_MIDLINE_CONSTANT_POINTED = 0x9, DWRITE_PANOSE_MIDLINE_CONSTANT_SERIFED = 0xA, DWRITE_PANOSE_MIDLINE_LOW_TRIMMED = 0xB, DWRITE_PANOSE_MIDLINE_LOW_POINTED = 0xC, DWRITE_PANOSE_MIDLINE_LOW_SERIFED = 0xD, }}
161ENUM!{enum DWRITE_PANOSE_XHEIGHT {
162 DWRITE_PANOSE_XHEIGHT_ANY = 0x0, DWRITE_PANOSE_XHEIGHT_NO_FIT = 0x1, DWRITE_PANOSE_XHEIGHT_CONSTANT_SMALL = 0x2, DWRITE_PANOSE_XHEIGHT_CONSTANT_STANDARD = 0x3, DWRITE_PANOSE_XHEIGHT_CONSTANT_LARGE = 0x4, DWRITE_PANOSE_XHEIGHT_DUCKING_SMALL = 0x5, DWRITE_PANOSE_XHEIGHT_DUCKING_STANDARD = 0x6, DWRITE_PANOSE_XHEIGHT_DUCKING_LARGE = 0x7, DWRITE_PANOSE_XHEIGHT_CONSTANT_STD = 0x3, DWRITE_PANOSE_XHEIGHT_DUCKING_STD = 0x6, }}
173ENUM!{enum DWRITE_PANOSE_TOOL_KIND {
174 DWRITE_PANOSE_TOOL_KIND_ANY = 0x0, DWRITE_PANOSE_TOOL_KIND_NO_FIT = 0x1, DWRITE_PANOSE_TOOL_KIND_FLAT_NIB = 0x2, DWRITE_PANOSE_TOOL_KIND_PRESSURE_POINT = 0x3, DWRITE_PANOSE_TOOL_KIND_ENGRAVED = 0x4, DWRITE_PANOSE_TOOL_KIND_BALL = 0x5, DWRITE_PANOSE_TOOL_KIND_BRUSH = 0x6, DWRITE_PANOSE_TOOL_KIND_ROUGH = 0x7, DWRITE_PANOSE_TOOL_KIND_FELT_PEN_BRUSH_TIP = 0x8, DWRITE_PANOSE_TOOL_KIND_WILD_BRUSH = 0x9, }}
185ENUM!{enum DWRITE_PANOSE_SPACING {
186 DWRITE_PANOSE_SPACING_ANY = 0x0, DWRITE_PANOSE_SPACING_NO_FIT = 0x1, DWRITE_PANOSE_SPACING_PROPORTIONAL_SPACED = 0x2, DWRITE_PANOSE_SPACING_MONOSPACED = 0x3, }}
191ENUM!{enum DWRITE_PANOSE_ASPECT_RATIO {
192 DWRITE_PANOSE_ASPECT_RATIO_ANY = 0x0, DWRITE_PANOSE_ASPECT_RATIO_NO_FIT = 0x1, DWRITE_PANOSE_ASPECT_RATIO_VERY_CONDENSED = 0x2, DWRITE_PANOSE_ASPECT_RATIO_CONDENSED = 0x3, DWRITE_PANOSE_ASPECT_RATIO_NORMAL = 0x4, DWRITE_PANOSE_ASPECT_RATIO_EXPANDED = 0x5, DWRITE_PANOSE_ASPECT_RATIO_VERY_EXPANDED = 0x6, }}
200ENUM!{enum DWRITE_PANOSE_SCRIPT_TOPOLOGY {
201 DWRITE_PANOSE_SCRIPT_TOPOLOGY_ANY = 0x0, DWRITE_PANOSE_SCRIPT_TOPOLOGY_NO_FIT = 0x1, DWRITE_PANOSE_SCRIPT_TOPOLOGY_ROMAN_DISCONNECTED = 0x2, DWRITE_PANOSE_SCRIPT_TOPOLOGY_ROMAN_TRAILING = 0x3, DWRITE_PANOSE_SCRIPT_TOPOLOGY_ROMAN_CONNECTED = 0x4, DWRITE_PANOSE_SCRIPT_TOPOLOGY_CURSIVE_DISCONNECTED = 0x5, DWRITE_PANOSE_SCRIPT_TOPOLOGY_CURSIVE_TRAILING = 0x6, DWRITE_PANOSE_SCRIPT_TOPOLOGY_CURSIVE_CONNECTED = 0x7, DWRITE_PANOSE_SCRIPT_TOPOLOGY_BLACKLETTER_DISCONNECTED = 0x8, DWRITE_PANOSE_SCRIPT_TOPOLOGY_BLACKLETTER_TRAILING = 0x9, DWRITE_PANOSE_SCRIPT_TOPOLOGY_BLACKLETTER_CONNECTED = 0xA, }}
213ENUM!{enum DWRITE_PANOSE_SCRIPT_FORM {
214 DWRITE_PANOSE_SCRIPT_FORM_ANY = 0x0, DWRITE_PANOSE_SCRIPT_FORM_NO_FIT = 0x1, DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_NO_WRAPPING = 0x2, DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_SOME_WRAPPING = 0x3, DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_MORE_WRAPPING = 0x4, DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_EXTREME_WRAPPING = 0x5, DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_NO_WRAPPING = 0x6, DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_SOME_WRAPPING = 0x7, DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_MORE_WRAPPING = 0x8, DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_EXTREME_WRAPPING = 0x9, DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_NO_WRAPPING = 0xA, DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_SOME_WRAPPING = 0xB, DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_MORE_WRAPPING = 0xC, DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_EXTREME_WRAPPING = 0xD, }}
229ENUM!{enum DWRITE_PANOSE_FINIALS {
230 DWRITE_PANOSE_FINIALS_ANY = 0x0, DWRITE_PANOSE_FINIALS_NO_FIT = 0x1, DWRITE_PANOSE_FINIALS_NONE_NO_LOOPS = 0x2, DWRITE_PANOSE_FINIALS_NONE_CLOSED_LOOPS = 0x3, DWRITE_PANOSE_FINIALS_NONE_OPEN_LOOPS = 0x4, DWRITE_PANOSE_FINIALS_SHARP_NO_LOOPS = 0x5, DWRITE_PANOSE_FINIALS_SHARP_CLOSED_LOOPS = 0x6, DWRITE_PANOSE_FINIALS_SHARP_OPEN_LOOPS = 0x7, DWRITE_PANOSE_FINIALS_TAPERED_NO_LOOPS = 0x8, DWRITE_PANOSE_FINIALS_TAPERED_CLOSED_LOOPS = 0x9, DWRITE_PANOSE_FINIALS_TAPERED_OPEN_LOOPS = 0xA, DWRITE_PANOSE_FINIALS_ROUND_NO_LOOPS = 0xB, DWRITE_PANOSE_FINIALS_ROUND_CLOSED_LOOPS = 0xC, DWRITE_PANOSE_FINIALS_ROUND_OPEN_LOOPS = 0xD, }}
245ENUM!{enum DWRITE_PANOSE_XASCENT {
246 DWRITE_PANOSE_XASCENT_ANY = 0x0, DWRITE_PANOSE_XASCENT_NO_FIT = 0x1, DWRITE_PANOSE_XASCENT_VERY_LOW = 0x2, DWRITE_PANOSE_XASCENT_LOW = 0x3, DWRITE_PANOSE_XASCENT_MEDIUM = 0x4, DWRITE_PANOSE_XASCENT_HIGH = 0x5, DWRITE_PANOSE_XASCENT_VERY_HIGH = 0x6, }}
254ENUM!{enum DWRITE_PANOSE_DECORATIVE_CLASS {
255 DWRITE_PANOSE_DECORATIVE_CLASS_ANY = 0x0, DWRITE_PANOSE_DECORATIVE_CLASS_NO_FIT = 0x1, DWRITE_PANOSE_DECORATIVE_CLASS_DERIVATIVE = 0x2, DWRITE_PANOSE_DECORATIVE_CLASS_NONSTANDARD_TOPOLOGY = 0x3, DWRITE_PANOSE_DECORATIVE_CLASS_NONSTANDARD_ELEMENTS = 0x4, DWRITE_PANOSE_DECORATIVE_CLASS_NONSTANDARD_ASPECT = 0x5, DWRITE_PANOSE_DECORATIVE_CLASS_INITIALS = 0x6, DWRITE_PANOSE_DECORATIVE_CLASS_CARTOON = 0x7, DWRITE_PANOSE_DECORATIVE_CLASS_PICTURE_STEMS = 0x8, DWRITE_PANOSE_DECORATIVE_CLASS_ORNAMENTED = 0x9, DWRITE_PANOSE_DECORATIVE_CLASS_TEXT_AND_BACKGROUND = 0xA, DWRITE_PANOSE_DECORATIVE_CLASS_COLLAGE = 0xB, DWRITE_PANOSE_DECORATIVE_CLASS_MONTAGE = 0xC, }}
269ENUM!{enum DWRITE_PANOSE_ASPECT {
270 DWRITE_PANOSE_ASPECT_ANY = 0x0, DWRITE_PANOSE_ASPECT_NO_FIT = 0x1, DWRITE_PANOSE_ASPECT_SUPER_CONDENSED = 0x2, DWRITE_PANOSE_ASPECT_VERY_CONDENSED = 0x3, DWRITE_PANOSE_ASPECT_CONDENSED = 0x4, DWRITE_PANOSE_ASPECT_NORMAL = 0x5, DWRITE_PANOSE_ASPECT_EXTENDED = 0x6, DWRITE_PANOSE_ASPECT_VERY_EXTENDED = 0x7, DWRITE_PANOSE_ASPECT_SUPER_EXTENDED = 0x8, DWRITE_PANOSE_ASPECT_MONOSPACED = 0x9, }}
281ENUM!{enum DWRITE_PANOSE_FILL {
282 DWRITE_PANOSE_FILL_ANY = 0x0, DWRITE_PANOSE_FILL_NO_FIT = 0x1, DWRITE_PANOSE_FILL_STANDARD_SOLID_FILL = 0x2, DWRITE_PANOSE_FILL_NO_FILL = 0x3, DWRITE_PANOSE_FILL_PATTERNED_FILL = 0x4, DWRITE_PANOSE_FILL_COMPLEX_FILL = 0x5, DWRITE_PANOSE_FILL_SHAPED_FILL = 0x6, DWRITE_PANOSE_FILL_DRAWN_DISTRESSED = 0x7, }}
291ENUM!{enum DWRITE_PANOSE_LINING {
292 DWRITE_PANOSE_LINING_ANY = 0x0, DWRITE_PANOSE_LINING_NO_FIT = 0x1, DWRITE_PANOSE_LINING_NONE = 0x2, DWRITE_PANOSE_LINING_INLINE = 0x3, DWRITE_PANOSE_LINING_OUTLINE = 0x4, DWRITE_PANOSE_LINING_ENGRAVED = 0x5, DWRITE_PANOSE_LINING_SHADOW = 0x6, DWRITE_PANOSE_LINING_RELIEF = 0x7, DWRITE_PANOSE_LINING_BACKDROP = 0x8, }}
302ENUM!{enum DWRITE_PANOSE_DECORATIVE_TOPOLOGY {
303 DWRITE_PANOSE_DECORATIVE_TOPOLOGY_ANY = 0x0, DWRITE_PANOSE_DECORATIVE_TOPOLOGY_NO_FIT = 0x1, DWRITE_PANOSE_DECORATIVE_TOPOLOGY_STANDARD = 0x2, DWRITE_PANOSE_DECORATIVE_TOPOLOGY_SQUARE = 0x3, DWRITE_PANOSE_DECORATIVE_TOPOLOGY_MULTIPLE_SEGMENT = 0x4, DWRITE_PANOSE_DECORATIVE_TOPOLOGY_ART_DECO = 0x5, DWRITE_PANOSE_DECORATIVE_TOPOLOGY_UNEVEN_WEIGHTING = 0x6, DWRITE_PANOSE_DECORATIVE_TOPOLOGY_DIVERSE_ARMS = 0x7, DWRITE_PANOSE_DECORATIVE_TOPOLOGY_DIVERSE_FORMS = 0x8, DWRITE_PANOSE_DECORATIVE_TOPOLOGY_LOMBARDIC_FORMS = 0x9, DWRITE_PANOSE_DECORATIVE_TOPOLOGY_UPPER_CASE_IN_LOWER_CASE = 0xA, DWRITE_PANOSE_DECORATIVE_TOPOLOGY_IMPLIED_TOPOLOGY = 0xB, DWRITE_PANOSE_DECORATIVE_TOPOLOGY_HORSESHOE_E_AND_A = 0xC, DWRITE_PANOSE_DECORATIVE_TOPOLOGY_CURSIVE = 0xD, DWRITE_PANOSE_DECORATIVE_TOPOLOGY_BLACKLETTER = 0xE, DWRITE_PANOSE_DECORATIVE_TOPOLOGY_SWASH_VARIANCE = 0xF, }}
320ENUM!{enum DWRITE_PANOSE_CHARACTER_RANGES {
321 DWRITE_PANOSE_CHARACTER_RANGES_ANY = 0x0, DWRITE_PANOSE_CHARACTER_RANGES_NO_FIT = 0x1, DWRITE_PANOSE_CHARACTER_RANGES_EXTENDED_COLLECTION = 0x2, DWRITE_PANOSE_CHARACTER_RANGES_LITERALS = 0x3, DWRITE_PANOSE_CHARACTER_RANGES_NO_LOWER_CASE = 0x4, DWRITE_PANOSE_CHARACTER_RANGES_SMALL_CAPS = 0x5, }}
328ENUM!{enum DWRITE_PANOSE_SYMBOL_KIND {
329 DWRITE_PANOSE_SYMBOL_KIND_ANY = 0x0, DWRITE_PANOSE_SYMBOL_KIND_NO_FIT = 0x1, DWRITE_PANOSE_SYMBOL_KIND_MONTAGES = 0x2, DWRITE_PANOSE_SYMBOL_KIND_PICTURES = 0x3, DWRITE_PANOSE_SYMBOL_KIND_SHAPES = 0x4, DWRITE_PANOSE_SYMBOL_KIND_SCIENTIFIC = 0x5, DWRITE_PANOSE_SYMBOL_KIND_MUSIC = 0x6, DWRITE_PANOSE_SYMBOL_KIND_EXPERT = 0x7, DWRITE_PANOSE_SYMBOL_KIND_PATTERNS = 0x8, DWRITE_PANOSE_SYMBOL_KIND_BOARDERS = 0x9, DWRITE_PANOSE_SYMBOL_KIND_ICONS = 0xA, DWRITE_PANOSE_SYMBOL_KIND_LOGOS = 0xB, DWRITE_PANOSE_SYMBOL_KIND_INDUSTRY_SPECIFIC = 0xC, }}
343ENUM!{enum DWRITE_PANOSE_SYMBOL_ASPECT_RATIO {
344 DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_ANY = 0x0, DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NO_FIT = 0x1, DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NO_WIDTH = 0x2, DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_EXCEPTIONALLY_WIDE = 0x3, DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_SUPER_WIDE = 0x4, DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_VERY_WIDE = 0x5, DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_WIDE = 0x6, DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NORMAL = 0x7, DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NARROW = 0x8, DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_VERY_NARROW = 0x9, }}
355ENUM!{enum DWRITE_OUTLINE_THRESHOLD {
356 DWRITE_OUTLINE_THRESHOLD_ANTIALIASED = 0x0, DWRITE_OUTLINE_THRESHOLD_ALIASED = 0x1, }}
359ENUM!{enum DWRITE_BASELINE {
360 DWRITE_BASELINE_DEFAULT = 0x0, DWRITE_BASELINE_ROMAN = 0x1, DWRITE_BASELINE_CENTRAL = 0x2, DWRITE_BASELINE_MATH = 0x3, DWRITE_BASELINE_HANGING = 0x4, DWRITE_BASELINE_IDEOGRAPHIC_BOTTOM = 0x5, DWRITE_BASELINE_IDEOGRAPHIC_TOP = 0x6, DWRITE_BASELINE_MINIMUM = 0x7, DWRITE_BASELINE_MAXIMUM = 0x8, }}
370ENUM!{enum DWRITE_VERTICAL_GLYPH_ORIENTATION {
371 DWRITE_VERTICAL_GLYPH_ORIENTATION_DEFAULT = 0x0, DWRITE_VERTICAL_GLYPH_ORIENTATION_STACKED = 0x1, }}
374ENUM!{enum DWRITE_GLYPH_ORIENTATION_ANGLE {
375 DWRITE_GLYPH_ORIENTATION_ANGLE_0_DEGREES = 0x0, DWRITE_GLYPH_ORIENTATION_ANGLE_90_DEGREES = 0x1, DWRITE_GLYPH_ORIENTATION_ANGLE_180_DEGREES = 0x2, DWRITE_GLYPH_ORIENTATION_ANGLE_270_DEGREES = 0x3, }}
380STRUCT!{struct DWRITE_FONT_METRICS1 {
381 designUnitsPerEm: UINT16,
382 ascent: UINT16,
383 descent: UINT16,
384 lineGap: INT16,
385 capHeight: UINT16,
386 xHeight: UINT16,
387 underlinePosition: INT16,
388 underlineThickness: UINT16,
389 strikethroughPosition: INT16,
390 strikethroughThickness: UINT16,
391 glyphBoxLeft: INT16,
392 glyphBoxTop: INT16,
393 glyphBoxRight: INT16,
394 glyphBoxBottom: INT16,
395 subscriptPositionX: INT16,
396 subscriptPositionY: INT16,
397 subscriptSizeX: INT16,
398 subscriptSizeY: INT16,
399 superscriptPositionX: INT16,
400 superscriptPositionY: INT16,
401 superscriptSizeX: INT16,
402 superscriptSizeY: INT16,
403 hasTypographicMetrics: BOOL,
404}}
405STRUCT!{struct DWRITE_CARET_METRICS {
406 slopeRise: INT16,
407 slopeRun: INT16,
408 offset: INT16,
409}}
410STRUCT!{struct DWRITE_PANOSE_text {
411 familyKind: UINT8,
412 serifStyle: UINT8,
413 weight: UINT8,
414 proportion: UINT8,
415 contrast: UINT8,
416 strokeVariation: UINT8,
417 armStyle: UINT8,
418 letterform: UINT8,
419 midline: UINT8,
420 xHeight: UINT8,
421}}
422STRUCT!{struct DWRITE_PANOSE_script {
423 familyKind: UINT8,
424 toolKind: UINT8,
425 weight: UINT8,
426 spacing: UINT8,
427 aspectRatio: UINT8,
428 contrast: UINT8,
429 scriptTopology: UINT8,
430 scriptForm: UINT8,
431 finials: UINT8,
432 xAscent: UINT8,
433}}
434STRUCT!{struct DWRITE_PANOSE_decorative {
435 familyKind: UINT8,
436 decorativeClass: UINT8,
437 weight: UINT8,
438 aspect: UINT8,
439 contrast: UINT8,
440 serifVariant: UINT8,
441 fill: UINT8,
442 lining: UINT8,
443 decorativeTopology: UINT8,
444 characterRange: UINT8,
445}}
446STRUCT!{struct DWRITE_PANOSE_symbol {
447 familyKind: UINT8,
448 symbolKind: UINT8,
449 weight: UINT8,
450 spacing: UINT8,
451 aspectRatioAndContrast: UINT8,
452 aspectRatio94: UINT8,
453 aspectRatio119: UINT8,
454 aspectRatio157: UINT8,
455 aspectRatio163: UINT8,
456 aspectRatio211: UINT8,
457}}
458UNION!{union DWRITE_PANOSE {
459 [u8; 10],
460 values values_mut: [UINT8; 10],
461 familyKind familyKind_mut: UINT8,
462 text text_mut: DWRITE_PANOSE_text,
463 script script_mut: DWRITE_PANOSE_script,
464 decorative decorative_mut: DWRITE_PANOSE_decorative,
465 symbol symbol_mut: DWRITE_PANOSE_symbol,
466}}
467STRUCT!{struct DWRITE_UNICODE_RANGE {
468 first: UINT32,
469 last: UINT32,
470}}
471STRUCT!{struct DWRITE_SCRIPT_PROPERTIES {
472 isoScriptCode: UINT32,
473 isoScriptNumber: UINT32,
474 clusterLookahead: UINT32,
475 justificationCharacter: UINT32,
476 bitfield0: UINT32,
477}}
478BITFIELD!{DWRITE_SCRIPT_PROPERTIES bitfield0: UINT32 [
479 restrictCaretToClusters set_restrictCaretToClusters[0..1],
480 usesWordDividers set_usesWordDividers[1..2],
481 isDiscreteWriting set_isDiscreteWriting[2..3],
482 isBlockWriting set_isBlockWriting[3..4],
483 isDistributedWithinCluster set_isDistributedWithinCluster[4..5],
484 isConnectedWriting set_isConnectedWriting[5..6],
485 isCursiveWriting set_isCursiveWriting[6..7],
486 reserved set_reserved[7..32],
487]}
488STRUCT!{struct DWRITE_JUSTIFICATION_OPPORTUNITY {
489 expansionMinimum: FLOAT,
490 expansionMaximum: FLOAT,
491 compressionMaximum: FLOAT,
492 bitfield0: UINT32,
493}}
494BITFIELD!{DWRITE_JUSTIFICATION_OPPORTUNITY bitfield0: UINT32 [
495 expansionPriority set_expansionPriority[0..8],
496 compressionPriority set_compressionPriority[8..16],
497 allowResidualExpansion set_allowResidualExpansion[16..17],
498 allowResidualCompression set_allowResidualCompression[17..18],
499 applyToLeadingEdge set_applyToLeadingEdge[18..19],
500 applyToTrailingEdge set_applyToTrailingEdge[19..20],
501 reserved set_reserved[20..32],
502]}
503RIDL!{#[uuid(0x30572f99, 0xdac6, 0x41db, 0xa1, 0x6e, 0x04, 0x86, 0x30, 0x7e, 0x60, 0x6a)]
504interface IDWriteFactory1(IDWriteFactory1Vtbl): IDWriteFactory(IDWriteFactoryVtbl) {
505 fn GetEudcFontCollection(
506 fontCollection: *mut *mut IDWriteFontCollection,
507 checkForUpdates: BOOL,
508 ) -> HRESULT,
509 fn CreateCustomRenderingParams(
510 gamma: FLOAT,
511 enhancedContrast: FLOAT,
512 enhancedContrastGrayscale: FLOAT,
513 clearTypeLevel: FLOAT,
514 pixelGeometry: DWRITE_PIXEL_GEOMETRY,
515 renderingMode: DWRITE_RENDERING_MODE,
516 renderingParams: *mut *mut IDWriteRenderingParams1,
517 ) -> HRESULT,
518}}
519RIDL!{#[uuid(0xa71efdb4, 0x9fdb, 0x4838, 0xad, 0x90, 0xcf, 0xc3, 0xbe, 0x8c, 0x3d, 0xaf)]
520interface IDWriteFontFace1(IDWriteFontFace1Vtbl): IDWriteFontFace(IDWriteFontFaceVtbl) {
521 fn GetMetrics(
522 fontMetrics: *mut DWRITE_FONT_METRICS1,
523 ) -> (),
524 fn GetGdiCompatibleMetrics(
525 emSize: FLOAT,
526 pixelsPerDip: FLOAT,
527 transform: *const DWRITE_MATRIX,
528 fontMetrics: *mut DWRITE_FONT_METRICS1,
529 ) -> HRESULT,
530 fn GetCaretMetrics(
531 caretMetrics: *mut DWRITE_CARET_METRICS,
532 ) -> (),
533 fn GetUnicodeRanges(
534 maxRangeCount: UINT32,
535 unicodeRanges: *mut DWRITE_UNICODE_RANGE,
536 actualRangeCount: *mut UINT32,
537 ) -> HRESULT,
538 fn IsMonospacedFont() -> BOOL,
539 fn GetDesignGlyphAdvances(
540 glyphCount: UINT32,
541 glyphIndices: *const UINT16,
542 glyphAdvances: *mut INT32,
543 isSideways: BOOL,
544 ) -> HRESULT,
545 fn GetGdiCompatibleGlyphAdvances(
546 emSize: FLOAT,
547 pixelsPerDip: FLOAT,
548 transform: *const DWRITE_MATRIX,
549 useGdiNatural: BOOL,
550 isSideways: BOOL,
551 glyphCount: UINT32,
552 glyphIndices: *const UINT16,
553 glyphAdvances: *mut INT32,
554 ) -> HRESULT,
555 fn GetKerningPairAdjustments(
556 glyphCount: UINT32,
557 glyphIndices: *const UINT16,
558 glyphAdvanceAdjustments: *mut INT32,
559 ) -> HRESULT,
560 fn HasKerningPairs() -> BOOL,
561 fn GetRecommendedRenderingMode(
562 fontEmSize: FLOAT,
563 dpiX: FLOAT,
564 dpiY: FLOAT,
565 transform: *const DWRITE_MATRIX,
566 isSideways: BOOL,
567 outlineThreshold: DWRITE_OUTLINE_THRESHOLD,
568 measuringMode: DWRITE_MEASURING_MODE,
569 renderingMode: *mut DWRITE_RENDERING_MODE,
570 ) -> HRESULT,
571 fn GetVerticalGlyphVariants(
572 glyphCount: UINT32,
573 nominalGlyphIndices: *const UINT16,
574 verticalGlyphIndices: *mut UINT16,
575 ) -> HRESULT,
576 fn HasVerticalGlyphVariants() -> BOOL,
577}}
578RIDL!{#[uuid(0xacd16696, 0x8c14, 0x4f5d, 0x87, 0x7e, 0xfe, 0x3f, 0xc1, 0xd3, 0x27, 0x38)]
579interface IDWriteFont1(IDWriteFont1Vtbl): IDWriteFont(IDWriteFontVtbl) {
580 fn GetMetrics(
581 fontMetrics: *mut DWRITE_FONT_METRICS1,
582 ) -> (),
583 fn GetPanose(
584 panose: *mut DWRITE_PANOSE,
585 ) -> (),
586 fn GetUnicodeRanges(
587 maxRangeCount: UINT32,
588 unicodeRanges: *mut DWRITE_UNICODE_RANGE,
589 actualRangeCount: *mut UINT32,
590 ) -> HRESULT,
591 fn IsMonospacedFont() -> BOOL,
592}}
593RIDL!{#[uuid(0x94413cf4, 0xa6fc, 0x4248, 0x8b, 0x50, 0x66, 0x74, 0x34, 0x8f, 0xca, 0xd3)]
594interface IDWriteRenderingParams1(IDWriteRenderingParams1Vtbl):
595 IDWriteRenderingParams(IDWriteRenderingParamsVtbl) {
596 fn GetGrayscaleEnhancedContrast() -> FLOAT,
597}}
598RIDL!{#[uuid(0x80dad800, 0xe21f, 0x4e83, 0x96, 0xce, 0xbf, 0xcc, 0xe5, 0x00, 0xdb, 0x7c)]
599interface IDWriteTextAnalyzer1(IDWriteTextAnalyzer1Vtbl):
600 IDWriteTextAnalyzer(IDWriteTextAnalyzerVtbl) {
601 fn ApplyCharacterSpacing(
602 leadingSpacing: FLOAT,
603 trailingSpacing: FLOAT,
604 minimumAdvanceWidth: FLOAT,
605 textLength: UINT32,
606 glyphCount: UINT32,
607 clusterMap: *const UINT16,
608 glyphAdvances: *const FLOAT,
609 glyphOffsets: *const DWRITE_GLYPH_OFFSET,
610 glyphProperties: *const DWRITE_SHAPING_GLYPH_PROPERTIES,
611 modifiedGlyphAdvances: *mut FLOAT,
612 modifiedGlyphOffsets: *mut DWRITE_GLYPH_OFFSET,
613 ) -> HRESULT,
614 fn GetBaseline(
615 fontFace: *mut IDWriteFontFace,
616 baseline: DWRITE_BASELINE,
617 isVertical: BOOL,
618 isSimulationAllowed: BOOL,
619 scriptAnalysis: DWRITE_SCRIPT_ANALYSIS,
620 localeName: *const WCHAR,
621 baselineCoordinate: *mut INT32,
622 exists: *mut BOOL,
623 ) -> HRESULT,
624 fn AnalyzeVerticalGlyphOrientation(
625 analysisSource: *mut IDWriteTextAnalysisSource1,
626 textPosition: UINT32,
627 textLength: UINT32,
628 analysisSink: *mut IDWriteTextAnalysisSink1,
629 ) -> HRESULT,
630 fn GetGlyphOrientationTransform(
631 glyphOrientationAngle: DWRITE_GLYPH_ORIENTATION_ANGLE,
632 isSideways: BOOL,
633 transform: *mut DWRITE_MATRIX,
634 ) -> HRESULT,
635 fn GetScriptProperties(
636 scriptAnalysis: DWRITE_SCRIPT_ANALYSIS,
637 scriptProperties: *mut DWRITE_SCRIPT_PROPERTIES,
638 ) -> HRESULT,
639 fn GetTextComplexity(
640 textString: *const WCHAR,
641 textLength: UINT32,
642 fontFace: *mut IDWriteFontFace,
643 isTextSimple: *mut BOOL,
644 textLengthRead: *mut UINT32,
645 glyphIndices: *mut UINT16,
646 ) -> HRESULT,
647 fn GetJustificationOpportunities(
648 fontFace: *mut IDWriteFontFace,
649 fontEmSize: FLOAT,
650 scriptAnalysis: DWRITE_SCRIPT_ANALYSIS,
651 textLength: UINT32,
652 glyphCount: UINT32,
653 textString: *const WCHAR,
654 clusterMap: *const UINT16,
655 glyphProperties: *const DWRITE_SHAPING_GLYPH_PROPERTIES,
656 justificationOpportunities: *mut DWRITE_JUSTIFICATION_OPPORTUNITY,
657 ) -> HRESULT,
658 fn JustifyGlyphAdvances(
659 lineWidth: FLOAT,
660 glyphCount: UINT32,
661 justificationOpportunities: *const DWRITE_JUSTIFICATION_OPPORTUNITY,
662 glyphAdvances: *const FLOAT,
663 glyphOffsets: *const DWRITE_GLYPH_OFFSET,
664 justifiedGlyphAdvances: *mut FLOAT,
665 justifiedGlyphOffsets: *mut DWRITE_GLYPH_OFFSET,
666 ) -> HRESULT,
667 fn GetJustifiedGlyphs(
668 fontFace: *mut IDWriteFontFace,
669 fontEmSize: FLOAT,
670 scriptAnalysis: DWRITE_SCRIPT_ANALYSIS,
671 textLength: UINT32,
672 glyphCount: UINT32,
673 maxGlyphCount: UINT32,
674 clusterMap: *const UINT16,
675 glyphIndices: *const UINT16,
676 glyphAdvances: *const FLOAT,
677 justifiedGlyphAdvances: *const FLOAT,
678 justifiedGlyphOffsets: *const DWRITE_GLYPH_OFFSET,
679 glyphProperties: *const DWRITE_SHAPING_GLYPH_PROPERTIES,
680 actualGlyphCount: *mut UINT32,
681 modifiedClusterMap: *mut UINT16,
682 modifiedGlyphIndices: *mut UINT16,
683 modifiedGlyphAdvances: *mut FLOAT,
684 modifiedGlyphOffsets: *mut DWRITE_GLYPH_OFFSET,
685 ) -> HRESULT,
686}}
687RIDL!{#[uuid(0x639cfad8, 0x0fb4, 0x4b21, 0xa5, 0x8a, 0x06, 0x79, 0x20, 0x12, 0x00, 0x09)]
688interface IDWriteTextAnalysisSource1(IDWriteTextAnalysisSource1Vtbl):
689 IDWriteTextAnalysisSource(IDWriteTextAnalysisSourceVtbl) {
690 fn GetVerticalGlyphOrientation(
691 textPosition: UINT32,
692 textLength: *mut UINT32,
693 glyphOrientation: *mut DWRITE_VERTICAL_GLYPH_ORIENTATION,
694 bidiLevel: *mut UINT8,
695 ) -> HRESULT,
696}}
697RIDL!{#[uuid(0xb0d941a0, 0x85e7, 0x4d8b, 0x9f, 0xd3, 0x5c, 0xed, 0x99, 0x34, 0x48, 0x2a)]
698interface IDWriteTextAnalysisSink1(IDWriteTextAnalysisSink1Vtbl):
699 IDWriteTextAnalysisSink(IDWriteTextAnalysisSinkVtbl) {
700 fn SetGlyphOrientation(
701 textPosition: UINT32,
702 textLength: UINT32,
703 glyphOrientationAngle: DWRITE_GLYPH_ORIENTATION_ANGLE,
704 adjustedBidiLevel: UINT8,
705 isSideways: BOOL,
706 isRightToLeft: BOOL,
707 ) -> HRESULT,
708}}
709RIDL!{#[uuid(0x9064d822, 0x80a7, 0x465c, 0xa9, 0x86, 0xdf, 0x65, 0xf7, 0x8b, 0x8f, 0xeb)]
710interface IDWriteTextLayout1(IDWriteTextLayout1Vtbl):
711 IDWriteTextLayout(IDWriteTextLayoutVtbl) {
712 fn SetPairKerning(
713 isPairKerningEnabled: BOOL,
714 textRange: DWRITE_TEXT_RANGE,
715 ) -> HRESULT,
716 fn GetPairKerning(
717 currentPosition: UINT32,
718 isPairKerningEnabled: *mut BOOL,
719 textRange: *mut DWRITE_TEXT_RANGE,
720 ) -> HRESULT,
721 fn SetCharacterSpacing(
722 leadingSpacing: FLOAT,
723 trailingSpacing: FLOAT,
724 minimumAdvanceWidth: FLOAT,
725 textRange: DWRITE_TEXT_RANGE,
726 ) -> HRESULT,
727 fn GetCharacterSpacing(
728 currentPosition: UINT32,
729 leadingSpacing: *mut FLOAT,
730 trailingSpacing: *mut FLOAT,
731 minimumAdvanceWidth: *mut FLOAT,
732 textRange: *mut DWRITE_TEXT_RANGE,
733 ) -> HRESULT,
734}}
735ENUM!{enum DWRITE_TEXT_ANTIALIAS_MODE {
736 DWRITE_TEXT_ANTIALIAS_MODE_CLEARTYPE = 0x0, DWRITE_TEXT_ANTIALIAS_MODE_GRAYSCALE = 0x1, }}
739RIDL!{#[uuid(0x791e8298, 0x3ef3, 0x4230, 0x98, 0x80, 0xc9, 0xbd, 0xec, 0xc4, 0x20, 0x64)]
740interface IDWriteBitmapRenderTarget1(IDWriteBitmapRenderTarget1Vtbl):
741 IDWriteBitmapRenderTarget(IDWriteBitmapRenderTargetVtbl) {
742 fn GetTextAntialiasMode() -> DWRITE_TEXT_ANTIALIAS_MODE,
743 fn SetTextAntialiasMode(
744 antialiasMode: DWRITE_TEXT_ANTIALIAS_MODE,
745 ) -> HRESULT,
746}}