/* * Copyright 2012 Nikolay Sivov for CodeWeavers * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ import "unknwn.idl"; import "dcommon.h"; interface IDWriteFactory; interface IDWriteFontCollection; interface IDWriteFontFamily; interface IDWriteFontFace; interface IDWriteInlineObject; interface ID2D1SimplifiedGeometrySink; typedef ID2D1SimplifiedGeometrySink IDWriteGeometrySink; cpp_quote("#ifndef _WINDEF_") /* already defined in windef.h but needed for WIDL */ typedef void *HMONITOR; cpp_quote("#endif /* _WINDEF_ */") cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") cpp_quote("#undef GetGlyphIndices") cpp_quote("#endif") typedef enum DWRITE_FACTORY_TYPE { DWRITE_FACTORY_TYPE_SHARED, DWRITE_FACTORY_TYPE_ISOLATED } DWRITE_FACTORY_TYPE; typedef enum DWRITE_FONT_FILE_TYPE { DWRITE_FONT_FILE_TYPE_UNKNOWN, DWRITE_FONT_FILE_TYPE_CFF, DWRITE_FONT_FILE_TYPE_TRUETYPE, DWRITE_FONT_FILE_TYPE_TRUETYPE_COLLECTION, DWRITE_FONT_FILE_TYPE_TYPE1_PFM, DWRITE_FONT_FILE_TYPE_TYPE1_PFB, DWRITE_FONT_FILE_TYPE_VECTOR, DWRITE_FONT_FILE_TYPE_BITMAP } DWRITE_FONT_FILE_TYPE; typedef enum DWRITE_FONT_FACE_TYPE { DWRITE_FONT_FACE_TYPE_CFF, DWRITE_FONT_FACE_TYPE_TRUETYPE, DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION, DWRITE_FONT_FACE_TYPE_TYPE1, DWRITE_FONT_FACE_TYPE_VECTOR, DWRITE_FONT_FACE_TYPE_BITMAP, DWRITE_FONT_FACE_TYPE_UNKNOWN } DWRITE_FONT_FACE_TYPE; typedef enum DWRITE_FONT_WEIGHT { DWRITE_FONT_WEIGHT_THIN = 100, DWRITE_FONT_WEIGHT_EXTRA_LIGHT = 200, DWRITE_FONT_WEIGHT_ULTRA_LIGHT = 200, DWRITE_FONT_WEIGHT_LIGHT = 300, DWRITE_FONT_WEIGHT_NORMAL = 400, DWRITE_FONT_WEIGHT_REGULAR = 400, DWRITE_FONT_WEIGHT_MEDIUM = 500, DWRITE_FONT_WEIGHT_DEMI_BOLD = 600, DWRITE_FONT_WEIGHT_SEMI_BOLD = 600, DWRITE_FONT_WEIGHT_BOLD = 700, DWRITE_FONT_WEIGHT_EXTRA_BOLD = 800, DWRITE_FONT_WEIGHT_ULTRA_BOLD = 800, DWRITE_FONT_WEIGHT_BLACK = 900, DWRITE_FONT_WEIGHT_HEAVY = 900, DWRITE_FONT_WEIGHT_EXTRA_BLACK = 950, DWRITE_FONT_WEIGHT_ULTRA_BLACK = 950 } DWRITE_FONT_WEIGHT; typedef enum DWRITE_FONT_STRETCH { DWRITE_FONT_STRETCH_UNDEFINED = 0, DWRITE_FONT_STRETCH_ULTRA_CONDENSED = 1, DWRITE_FONT_STRETCH_EXTRA_CONDENSED = 2, DWRITE_FONT_STRETCH_CONDENSED = 3, DWRITE_FONT_STRETCH_SEMI_CONDENSED = 4, DWRITE_FONT_STRETCH_NORMAL = 5, DWRITE_FONT_STRETCH_MEDIUM = 5, DWRITE_FONT_STRETCH_SEMI_EXPANDED = 6, DWRITE_FONT_STRETCH_EXPANDED = 7, DWRITE_FONT_STRETCH_EXTRA_EXPANDED = 8, DWRITE_FONT_STRETCH_ULTRA_EXPANDED = 9 } DWRITE_FONT_STRETCH; typedef enum DWRITE_FONT_STYLE { DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STYLE_OBLIQUE, DWRITE_FONT_STYLE_ITALIC } DWRITE_FONT_STYLE; typedef enum DWRITE_INFORMATIONAL_STRING_ID { DWRITE_INFORMATIONAL_STRING_NONE, DWRITE_INFORMATIONAL_STRING_COPYRIGHT_NOTICE, DWRITE_INFORMATIONAL_STRING_VERSION_STRINGS, DWRITE_INFORMATIONAL_STRING_TRADEMARK, DWRITE_INFORMATIONAL_STRING_MANUFACTURER, DWRITE_INFORMATIONAL_STRING_DESIGNER, DWRITE_INFORMATIONAL_STRING_DESIGNER_URL, DWRITE_INFORMATIONAL_STRING_DESCRIPTION, DWRITE_INFORMATIONAL_STRING_FONT_VENDOR_URL, DWRITE_INFORMATIONAL_STRING_LICENSE_DESCRIPTION, DWRITE_INFORMATIONAL_STRING_LICENSE_INFO_URL, DWRITE_INFORMATIONAL_STRING_WIN32_FAMILY_NAMES, DWRITE_INFORMATIONAL_STRING_WIN32_SUBFAMILY_NAMES, DWRITE_INFORMATIONAL_STRING_PREFERRED_FAMILY_NAMES, DWRITE_INFORMATIONAL_STRING_PREFERRED_SUBFAMILY_NAMES, DWRITE_INFORMATIONAL_STRING_SAMPLE_TEXT } DWRITE_INFORMATIONAL_STRING_ID; typedef enum DWRITE_FONT_SIMULATIONS { DWRITE_FONT_SIMULATIONS_NONE = 0x0000, DWRITE_FONT_SIMULATIONS_BOLD = 0x0001, DWRITE_FONT_SIMULATIONS_OBLIQUE = 0x0002 } DWRITE_FONT_SIMULATIONS; typedef enum DWRITE_PIXEL_GEOMETRY { DWRITE_PIXEL_GEOMETRY_FLAT, DWRITE_PIXEL_GEOMETRY_RGB, DWRITE_PIXEL_GEOMETRY_BGR } DWRITE_PIXEL_GEOMETRY; typedef enum DWRITE_RENDERING_MODE { DWRITE_RENDERING_MODE_DEFAULT, DWRITE_RENDERING_MODE_ALIASED, DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC, DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL, DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL, DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC, DWRITE_RENDERING_MODE_OUTLINE } DWRITE_RENDERING_MODE; typedef enum DWRITE_TEXT_ALIGNMENT { DWRITE_TEXT_ALIGNMENT_LEADING, DWRITE_TEXT_ALIGNMENT_TRAILING, DWRITE_TEXT_ALIGNMENT_CENTER } DWRITE_TEXT_ALIGNMENT; typedef enum DWRITE_PARAGRAPH_ALIGNMENT { DWRITE_PARAGRAPH_ALIGNMENT_NEAR, DWRITE_PARAGRAPH_ALIGNMENT_FAR, DWRITE_PARAGRAPH_ALIGNMENT_CENTER } DWRITE_PARAGRAPH_ALIGNMENT; typedef enum DWRITE_WORD_WRAPPING { DWRITE_WORD_WRAPPING_WRAP, DWRITE_WORD_WRAPPING_NO_WRAP } DWRITE_WORD_WRAPPING; typedef enum DWRITE_READING_DIRECTION { DWRITE_READING_DIRECTION_LEFT_TO_RIGHT, DWRITE_READING_DIRECTION_RIGHT_TO_LEFT } DWRITE_READING_DIRECTION; typedef enum DWRITE_FLOW_DIRECTION { DWRITE_FLOW_DIRECTION_TOP_TO_BOTTOM } DWRITE_FLOW_DIRECTION; typedef enum DWRITE_TRIMMING_GRANULARITY { DWRITE_TRIMMING_GRANULARITY_NONE, DWRITE_TRIMMING_GRANULARITY_CHARACTER, DWRITE_TRIMMING_GRANULARITY_WORD } DWRITE_TRIMMING_GRANULARITY; typedef enum DWRITE_BREAK_CONDITION { DWRITE_BREAK_CONDITION_NEUTRAL, DWRITE_BREAK_CONDITION_CAN_BREAK, DWRITE_BREAK_CONDITION_MAY_NOT_BREAK, DWRITE_BREAK_CONDITION_MUST_BREAK } DWRITE_BREAK_CONDITION; typedef enum DWRITE_LINE_SPACING_METHOD { DWRITE_LINE_SPACING_METHOD_DEFAULT, DWRITE_LINE_SPACING_METHOD_UNIFORM } DWRITE_LINE_SPACING_METHOD; typedef enum DWRITE_FONT_FEATURE_TAG { DWRITE_FONT_FEATURE_TAG_ALTERNATIVE_FRACTIONS = 0x63726661, /* 'afrc' */ DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS_FROM_CAPITALS = 0x63703263, /* 'c2pc' */ DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS_FROM_CAPITALS = 0x63733263, /* 'c2sc' */ DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_ALTERNATES = 0x746c6163, /* 'calt' */ DWRITE_FONT_FEATURE_TAG_CASE_SENSITIVE_FORMS = 0x65736163, /* 'case' */ DWRITE_FONT_FEATURE_TAG_GLYPH_COMPOSITION_DECOMPOSITION = 0x706d6363, /* 'ccmp' */ DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_LIGATURES = 0x67696c63, /* 'clig' */ DWRITE_FONT_FEATURE_TAG_CAPITAL_SPACING = 0x70737063, /* 'cpsp' */ DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_SWASH = 0x68777363, /* 'cswh' */ DWRITE_FONT_FEATURE_TAG_CURSIVE_POSITIONING = 0x73727563, /* 'curs' */ DWRITE_FONT_FEATURE_TAG_DEFAULT = 0x746c6664, /* 'dflt' */ DWRITE_FONT_FEATURE_TAG_DISCRETIONARY_LIGATURES = 0x67696c64, /* 'dlig' */ DWRITE_FONT_FEATURE_TAG_EXPERT_FORMS = 0x74707865, /* 'expt' */ DWRITE_FONT_FEATURE_TAG_FRACTIONS = 0x63617266, /* 'frac' */ DWRITE_FONT_FEATURE_TAG_FULL_WIDTH = 0x64697766, /* 'fwid' */ DWRITE_FONT_FEATURE_TAG_HALF_FORMS = 0x666c6168, /* 'half' */ DWRITE_FONT_FEATURE_TAG_HALANT_FORMS = 0x6e6c6168, /* 'haln' */ DWRITE_FONT_FEATURE_TAG_ALTERNATE_HALF_WIDTH = 0x746c6168, /* 'halt' */ DWRITE_FONT_FEATURE_TAG_HISTORICAL_FORMS = 0x74736968, /* 'hist' */ DWRITE_FONT_FEATURE_TAG_HORIZONTAL_KANA_ALTERNATES = 0x616e6b68, /* 'hkna' */ DWRITE_FONT_FEATURE_TAG_HISTORICAL_LIGATURES = 0x67696c68, /* 'hlig' */ DWRITE_FONT_FEATURE_TAG_HALF_WIDTH = 0x64697768, /* 'hwid' */ DWRITE_FONT_FEATURE_TAG_HOJO_KANJI_FORMS = 0x6f6a6f68, /* 'hojo' */ DWRITE_FONT_FEATURE_TAG_JIS04_FORMS = 0x3430706a, /* 'jp04' */ DWRITE_FONT_FEATURE_TAG_JIS78_FORMS = 0x3837706a, /* 'jp78' */ DWRITE_FONT_FEATURE_TAG_JIS83_FORMS = 0x3338706a, /* 'jp83' */ DWRITE_FONT_FEATURE_TAG_JIS90_FORMS = 0x3039706a, /* 'jp90' */ DWRITE_FONT_FEATURE_TAG_KERNING = 0x6e72656b, /* 'kern' */ DWRITE_FONT_FEATURE_TAG_STANDARD_LIGATURES = 0x6167696c, /* 'liga' */ DWRITE_FONT_FEATURE_TAG_LINING_FIGURES = 0x6d756e6c, /* 'lnum' */ DWRITE_FONT_FEATURE_TAG_LOCALIZED_FORMS = 0x6c636f6c, /* 'locl' */ DWRITE_FONT_FEATURE_TAG_MARK_POSITIONING = 0x6b72616d, /* 'mark' */ DWRITE_FONT_FEATURE_TAG_MATHEMATICAL_GREEK = 0x6b72676d, /* 'mgrk' */ DWRITE_FONT_FEATURE_TAG_MARK_TO_MARK_POSITIONING = 0x6b6d6b6d, /* 'mkmk' */ DWRITE_FONT_FEATURE_TAG_ALTERNATE_ANNOTATION_FORMS = 0x746c616e, /* 'nalt' */ DWRITE_FONT_FEATURE_TAG_NLC_KANJI_FORMS = 0x6b636c6e, /* 'nlck' */ DWRITE_FONT_FEATURE_TAG_OLD_STYLE_FIGURES = 0x6d756e6f, /* 'onum' */ DWRITE_FONT_FEATURE_TAG_ORDINALS = 0x6e64726f, /* 'ordn' */ DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_ALTERNATE_WIDTH = 0x746c6170, /* 'palt' */ DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS = 0x70616370, /* 'pcap' */ DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_FIGURES = 0x6d756e70, /* 'pnum' */ DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_WIDTHS = 0x64697770, /* 'pwid' */ DWRITE_FONT_FEATURE_TAG_QUARTER_WIDTHS = 0x64697771, /* 'qwid' */ DWRITE_FONT_FEATURE_TAG_REQUIRED_LIGATURES = 0x67696c72, /* 'rlig' */ DWRITE_FONT_FEATURE_TAG_RUBY_NOTATION_FORMS = 0x79627572, /* 'ruby' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_ALTERNATES = 0x746c6173, /* 'salt' */ DWRITE_FONT_FEATURE_TAG_SCIENTIFIC_INFERIORS = 0x666e6973, /* 'sinf' */ DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS = 0x70636d73, /* 'smcp' */ DWRITE_FONT_FEATURE_TAG_SIMPLIFIED_FORMS = 0x6c706d73, /* 'smpl' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_1 = 0x31307373, /* 'ss01' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_2 = 0x32307373, /* 'ss02' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_3 = 0x33307373, /* 'ss03' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_4 = 0x34307373, /* 'ss04' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_5 = 0x35307373, /* 'ss05' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_6 = 0x36307373, /* 'ss06' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_7 = 0x37307373, /* 'ss07' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_8 = 0x38307373, /* 'ss08' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_9 = 0x39307373, /* 'ss09' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_10 = 0x30317373, /* 'ss10' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_11 = 0x31317373, /* 'ss11' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_12 = 0x32317373, /* 'ss12' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_13 = 0x33317373, /* 'ss13' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_14 = 0x34317373, /* 'ss14' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_15 = 0x35317373, /* 'ss15' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_16 = 0x36317373, /* 'ss16' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_17 = 0x37317373, /* 'ss17' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_18 = 0x38317373, /* 'ss18' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_19 = 0x39317373, /* 'ss19' */ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_20 = 0x30327373, /* 'ss20' */ DWRITE_FONT_FEATURE_TAG_SUBSCRIPT = 0x73627573, /* 'subs' */ DWRITE_FONT_FEATURE_TAG_SUPERSCRIPT = 0x73707573, /* 'sups' */ DWRITE_FONT_FEATURE_TAG_SWASH = 0x68737773, /* 'swsh' */ DWRITE_FONT_FEATURE_TAG_TITLING = 0x6c746974, /* 'titl' */ DWRITE_FONT_FEATURE_TAG_TRADITIONAL_NAME_FORMS = 0x6d616e74, /* 'tnam' */ DWRITE_FONT_FEATURE_TAG_TABULAR_FIGURES = 0x6d756e74, /* 'tnum' */ DWRITE_FONT_FEATURE_TAG_TRADITIONAL_FORMS = 0x64617274, /* 'trad' */ DWRITE_FONT_FEATURE_TAG_THIRD_WIDTHS = 0x64697774, /* 'twid' */ DWRITE_FONT_FEATURE_TAG_UNICASE = 0x63696e75, /* 'unic' */ DWRITE_FONT_FEATURE_TAG_SLASHED_ZERO = 0x6f72657a, /* 'zero' */ } DWRITE_FONT_FEATURE_TAG; typedef enum DWRITE_SCRIPT_SHAPES { DWRITE_SCRIPT_SHAPES_DEFAULT = 0, DWRITE_SCRIPT_SHAPES_NO_VISUAL = 1 } DWRITE_SCRIPT_SHAPES; typedef enum DWRITE_NUMBER_SUBSTITUTION_METHOD { DWRITE_NUMBER_SUBSTITUTION_METHOD_FROM_CULTURE, DWRITE_NUMBER_SUBSTITUTION_METHOD_CONTEXTUAL, DWRITE_NUMBER_SUBSTITUTION_METHOD_NONE, DWRITE_NUMBER_SUBSTITUTION_METHOD_NATIONAL, DWRITE_NUMBER_SUBSTITUTION_METHOD_TRADITIONAL } DWRITE_NUMBER_SUBSTITUTION_METHOD; typedef enum DWRITE_TEXTURE_TYPE { DWRITE_TEXTURE_ALIASED_1x1, DWRITE_TEXTURE_CLEARTYPE_3x1 } DWRITE_TEXTURE_TYPE; typedef struct DWRITE_FONT_METRICS { UINT16 designUnitsPerEm; UINT16 ascent; UINT16 descent; INT16 lineGap; UINT16 capHeight; UINT16 xHeight; INT16 underlinePosition; UINT16 underlineThickness; INT16 strikethroughPosition; UINT16 strikethroughThickness; } DWRITE_FONT_METRICS; typedef struct DWRITE_GLYPH_METRICS { INT32 leftSideBearing; UINT32 advanceWidth; INT32 rightSideBearing; INT32 topSideBearing; UINT32 advanceHeight; INT32 bottomSideBearing; INT32 verticalOriginY; } DWRITE_GLYPH_METRICS; typedef struct DWRITE_GLYPH_OFFSET { FLOAT advanceOffset; FLOAT ascenderOffset; } DWRITE_GLYPH_OFFSET; typedef struct DWRITE_MATRIX { FLOAT m11; FLOAT m12; FLOAT m21; FLOAT m22; FLOAT dx; FLOAT dy; } DWRITE_MATRIX; typedef struct DWRITE_TRIMMING { DWRITE_TRIMMING_GRANULARITY granularity; UINT32 delimiter; UINT32 delimiterCount; } DWRITE_TRIMMING; typedef struct DWRITE_GLYPH_RUN { IDWriteFontFace* fontFace; FLOAT fontEmSize; UINT32 glyphCount; UINT16 const* glyphIndices; FLOAT const* glyphAdvances; DWRITE_GLYPH_OFFSET const* glyphOffsets; BOOL isSideways; UINT32 bidiLevel; } DWRITE_GLYPH_RUN; typedef struct DWRITE_GLYPH_RUN_DESCRIPTION { WCHAR const* localeName; WCHAR const* string; UINT32 stringLength; UINT16 const* clusterMap; UINT32 textPosition; } DWRITE_GLYPH_RUN_DESCRIPTION; typedef struct DWRITE_UNDERLINE { FLOAT width; FLOAT thickness; FLOAT offset; FLOAT runHeight; DWRITE_READING_DIRECTION readingDirection; DWRITE_FLOW_DIRECTION flowDirection; WCHAR const* localeName; DWRITE_MEASURING_MODE measuringMode; } DWRITE_UNDERLINE; typedef struct DWRITE_STRIKETHROUGH { FLOAT width; FLOAT thickness; FLOAT offset; DWRITE_READING_DIRECTION readingDirection; DWRITE_FLOW_DIRECTION flowDirection; WCHAR const* localeName; DWRITE_MEASURING_MODE measuringMode; } DWRITE_STRIKETHROUGH; typedef struct DWRITE_INLINE_OBJECT_METRICS { FLOAT width; FLOAT height; FLOAT baseline; BOOL supportsSideways; } DWRITE_INLINE_OBJECT_METRICS; typedef struct DWRITE_OVERHANG_METRICS { FLOAT left; FLOAT top; FLOAT right; FLOAT bottom; } DWRITE_OVERHANG_METRICS; typedef struct DWRITE_FONT_FEATURE { DWRITE_FONT_FEATURE_TAG nameTag; UINT32 parameter; } DWRITE_FONT_FEATURE; typedef struct DWRITE_TEXT_RANGE { UINT32 startPosition; UINT32 length; } DWRITE_TEXT_RANGE; typedef struct DWRITE_LINE_METRICS { UINT32 length; UINT32 trailingWhitespaceLength; UINT32 newlineLength; FLOAT height; FLOAT baseline; BOOL isTrimmed; } DWRITE_LINE_METRICS; typedef struct DWRITE_TEXT_METRICS { FLOAT left; FLOAT top; FLOAT width; FLOAT widthIncludingTrailingWhitespace; FLOAT height; FLOAT layoutWidth; FLOAT layoutHeight; UINT32 maxBidiReorderingDepth; UINT32 lineCount; } DWRITE_TEXT_METRICS; typedef struct DWRITE_CLUSTER_METRICS { FLOAT width; UINT16 length; UINT16 canWrapLineAfter : 1; UINT16 isWhitespace : 1; UINT16 isNewline : 1; UINT16 isSoftHyphen : 1; UINT16 isRightToLeft : 1; UINT16 padding : 11; } DWRITE_CLUSTER_METRICS; typedef struct DWRITE_HIT_TEST_METRICS { UINT32 textPosition; UINT32 length; FLOAT left; FLOAT top; FLOAT width; FLOAT height; UINT32 bidiLevel; BOOL isText; BOOL isTrimmed; } DWRITE_HIT_TEST_METRICS; typedef struct DWRITE_SCRIPT_ANALYSIS { UINT16 script; DWRITE_SCRIPT_SHAPES shapes; } DWRITE_SCRIPT_ANALYSIS; typedef struct DWRITE_LINE_BREAKPOINT { UINT8 breakConditionBefore : 2; UINT8 breakConditionAfter : 2; UINT8 isWhitespace : 1; UINT8 isSoftHyphen : 1; UINT8 padding : 2; } DWRITE_LINE_BREAKPOINT; typedef struct DWRITE_TYPOGRAPHIC_FEATURES { DWRITE_FONT_FEATURE* features; UINT32 featureCount; } DWRITE_TYPOGRAPHIC_FEATURES; typedef struct DWRITE_SHAPING_TEXT_PROPERTIES { UINT16 isShapedAlone : 1; UINT16 reserved : 15; } DWRITE_SHAPING_TEXT_PROPERTIES; typedef struct DWRITE_SHAPING_GLYPH_PROPERTIES { UINT16 justification : 4; UINT16 isClusterStart : 1; UINT16 isDiacritic : 1; UINT16 isZeroWidthSpace : 1; UINT16 reserved : 9; } DWRITE_SHAPING_GLYPH_PROPERTIES; [ local, object, uuid(6d4865fe-0ab8-4d91-8f62-5dd6be34a3e0) ] interface IDWriteFontFileStream : IUnknown { HRESULT ReadFileFragment( void const **fragment_start, UINT64 offset, UINT64 fragment_size, void **fragment_context); void ReleaseFileFragment(void *fragment_context); HRESULT GetFileSize(UINT64 *size); HRESULT GetLastWriteTime(UINT64 *last_writetime); } [ local, object, uuid(727cad4e-d6af-4c9e-8a08-d695b11caa49) ] interface IDWriteFontFileLoader : IUnknown { HRESULT CreateStreamFromKey( void const *key, UINT32 key_size, IDWriteFontFileStream **stream); } [ local, object, uuid(739d886a-cef5-47dc-8769-1a8b41bebbb0) ] interface IDWriteFontFile : IUnknown { HRESULT GetReferenceKey( void const **key, UINT32 *key_size); HRESULT GetLoader(IDWriteFontFileLoader **loader); HRESULT Analyze( BOOL *is_supported_fonttype, DWRITE_FONT_FILE_TYPE *file_type, DWRITE_FONT_FACE_TYPE *face_type, UINT32 *faces_num); } [ local, object, uuid(72755049-5ff7-435d-8348-4be97cfa6c7c) ] interface IDWriteFontFileEnumerator : IUnknown { HRESULT MoveNext(BOOL *has_current_file); HRESULT GetCurrentFontFile(IDWriteFontFile **font_file); }; [ local, object, uuid(cca920e4-52f0-492b-bfa8-29c72ee0a468) ] interface IDWriteFontCollectionLoader : IUnknown { HRESULT CreateEnumeratorFromKey( IDWriteFactory* factory, void const* key, UINT32 key_size, IDWriteFontFileEnumerator **enumerator); } [ local, object, uuid(08256209-099a-4b34-b86d-c22b110e7771) ] interface IDWriteLocalizedStrings : IUnknown { UINT32 GetCount(); HRESULT FindLocaleName( WCHAR const *locale_name, UINT32 *index, BOOL *exists); HRESULT GetLocaleNameLength(UINT32 index, UINT32 *length); HRESULT GetLocaleName(UINT32 index, WCHAR *locale_name, UINT32 size); HRESULT GetStringLength(UINT32 index, UINT32 *length); HRESULT GetString(UINT32 index, WCHAR *buffer, UINT32 size); } [ local, object, uuid(2f0da53a-2add-47cd-82ee-d9ec34688e75) ] interface IDWriteRenderingParams : IUnknown { FLOAT GetGamma(); FLOAT GetEnhancedContrast(); FLOAT GetClearTypeLevel(); DWRITE_PIXEL_GEOMETRY GetPixelGeometry(); DWRITE_RENDERING_MODE GetRenderingMode(); } [ local, object, uuid(5f49804d-7024-4d43-bfa9-d25984f53849) ] interface IDWriteFontFace : IUnknown { DWRITE_FONT_FACE_TYPE GetType(); HRESULT GetFiles(UINT32 *number_of_files, IDWriteFontFile **fontfiles); UINT32 GetIndex(); DWRITE_FONT_SIMULATIONS GetSimulations(); BOOL IsSymbolFont(); void GetMetrics(DWRITE_FONT_METRICS *metrics); UINT16 GetGlyphCount(); HRESULT GetDesignGlyphMetrics( UINT16 const *glyph_indices, UINT32 glyph_count, DWRITE_GLYPH_METRICS *metrics, [defaultvalue(FALSE)] BOOL is_sideways); HRESULT GetGlyphIndices( UINT32 const *codepoints, UINT32 count, UINT16 *glyph_indices); HRESULT TryGetFontTable( UINT32 table_tag, const void **table_data, UINT32 *table_size, void **context, BOOL *exists); void ReleaseFontTable(void *table_context); HRESULT GetGlyphRunOutline( FLOAT emSize, UINT16 const *glyph_indices, FLOAT const* glyph_advances, DWRITE_GLYPH_OFFSET const *glyph_offsets, UINT32 glyph_count, BOOL is_sideways, BOOL is_rtl, IDWriteGeometrySink *geometrysink); HRESULT GetRecommendedRenderingMode( FLOAT emSize, FLOAT pixels_per_dip, DWRITE_MEASURING_MODE mode, IDWriteRenderingParams* params, DWRITE_RENDERING_MODE* rendering_mode); HRESULT GetGdiCompatibleMetrics( FLOAT emSize, FLOAT pixels_per_dip, DWRITE_MATRIX const *transform, DWRITE_FONT_METRICS *metrics); HRESULT GetGdiCompatibleGlyphMetrics( FLOAT emSize, FLOAT pixels_per_dip, DWRITE_MATRIX const *transform, BOOL use_gdi_natural, UINT16 const *glyph_indices, UINT32 glyph_count, DWRITE_GLYPH_METRICS *metrics, [defaultvalue(FALSE)] BOOL is_sideways); } [ local, object, uuid(acd16696-8c14-4f5d-877e-fe3fc1d32737) ] interface IDWriteFont : IUnknown { HRESULT GetFontFamily(IDWriteFontFamily **family); DWRITE_FONT_WEIGHT GetWeight(); DWRITE_FONT_STRETCH GetStretch(); DWRITE_FONT_STYLE GetStyle(); BOOL IsSymbolFont(); HRESULT GetFaceNames(IDWriteLocalizedStrings **names); HRESULT GetInformationalStrings( DWRITE_INFORMATIONAL_STRING_ID stringid, IDWriteLocalizedStrings **strings, BOOL *exists); DWRITE_FONT_SIMULATIONS GetSimulations(); void GetMetrics(DWRITE_FONT_METRICS *metrics); HRESULT HasCharacter(UINT32 value, BOOL *exists); HRESULT CreateFontFace(IDWriteFontFace **face); } [ local, object, uuid(1a0d8438-1d97-4ec1-aef9-a2fb86ed6acb) ] interface IDWriteFontList : IUnknown { HRESULT GetFontCollection(IDWriteFontCollection **collection); UINT32 GetFontCount(); HRESULT GetFont(UINT32 index, IDWriteFont **font); } [ local, object, uuid(da20d8ef-812a-4c43-9802-62ec4abd7add) ] interface IDWriteFontFamily : IDWriteFontList { HRESULT GetFamilyNames(IDWriteLocalizedStrings **names); HRESULT GetFirstMatchingFont( DWRITE_FONT_WEIGHT weight, DWRITE_FONT_STRETCH stretch, DWRITE_FONT_STYLE style, IDWriteFont **font); HRESULT GetMatchingFonts( DWRITE_FONT_WEIGHT weight, DWRITE_FONT_STRETCH stretch, DWRITE_FONT_STYLE style, IDWriteFontList **fonts); } [ local, object, uuid(a84cee02-3eea-4eee-a827-87c1a02a0fcc) ] interface IDWriteFontCollection : IUnknown { UINT32 GetFontFamilyCount(); HRESULT GetFontFamily(UINT32 index, IDWriteFontFamily **family); HRESULT FindFamilyName(WCHAR const *name, UINT32 *index, BOOL *exists); HRESULT GetFontFromFontFace(IDWriteFontFace *face, IDWriteFont **font); } [ local, object, uuid(eaf3a2da-ecf4-4d24-b644-b34f6842024b) ] interface IDWritePixelSnapping : IUnknown { HRESULT IsPixelSnappingDisabled( void *client_drawingcontext, BOOL *disabled); HRESULT GetCurrentTransform( void *client_drawingcontext, DWRITE_MATRIX *transform); HRESULT GetPixelsPerDip( void *client_drawingcontext, FLOAT *pixels_per_dip); } [ local, object, uuid(ef8a8135-5cc6-45fe-8825-c5a0724eb819) ] interface IDWriteTextRenderer : IDWritePixelSnapping { HRESULT DrawGlyphRun( void* client_drawingcontext, FLOAT baselineOriginX, FLOAT baselineOriginY, DWRITE_MEASURING_MODE mode, DWRITE_GLYPH_RUN const *glyph_run, DWRITE_GLYPH_RUN_DESCRIPTION const *run_descr, IUnknown *drawing_effect); HRESULT DrawUnderline( void *client_drawingcontext, FLOAT baselineOriginX, FLOAT baselineOriginY, DWRITE_UNDERLINE const* underline, IUnknown *drawing_effect); HRESULT DrawStrikethrough( void *client_drawingcontext, FLOAT baselineOriginX, FLOAT baselineOriginY, DWRITE_STRIKETHROUGH const* strikethrough, IUnknown *drawing_effect); HRESULT DrawInlineObject( void *client_drawingcontext, FLOAT originX, FLOAT originY, IDWriteInlineObject *object, BOOL is_sideways, BOOL is_rtl, IUnknown *drawing_effect); } [ local, object, uuid(8339fde3-106f-47ab-8373-1c6295eb10b3) ] interface IDWriteInlineObject : IUnknown { HRESULT Draw( void* client_drawingontext, IDWriteTextRenderer* renderer, FLOAT originX, FLOAT originY, BOOL is_sideways, BOOL is_rtl, IUnknown *drawing_effect); HRESULT GetMetrics(DWRITE_INLINE_OBJECT_METRICS *metrics); HRESULT GetOverhangMetrics(DWRITE_OVERHANG_METRICS *overhangs); HRESULT GetBreakConditions( DWRITE_BREAK_CONDITION* condition_before, DWRITE_BREAK_CONDITION* condition_after); } [ local, object, uuid(9c906818-31d7-4fd3-a151-7c5e225db55a) ] interface IDWriteTextFormat : IUnknown { HRESULT SetTextAlignment(DWRITE_TEXT_ALIGNMENT alignment); HRESULT SetParagraphAlignment(DWRITE_PARAGRAPH_ALIGNMENT alignment); HRESULT SetWordWrapping(DWRITE_WORD_WRAPPING wrapping); HRESULT SetReadingDirection(DWRITE_READING_DIRECTION direction); HRESULT SetFlowDirection(DWRITE_FLOW_DIRECTION direction); HRESULT SetIncrementalTabStop(FLOAT tabstop); HRESULT SetTrimming(DWRITE_TRIMMING const *trimming, IDWriteInlineObject *trimming_sign); HRESULT SetLineSpacing(DWRITE_LINE_SPACING_METHOD spacing, FLOAT line_spacing, FLOAT baseline); DWRITE_TEXT_ALIGNMENT GetTextAlignment(); DWRITE_PARAGRAPH_ALIGNMENT GetParagraphAlignment(); DWRITE_WORD_WRAPPING GetWordWrapping(); DWRITE_READING_DIRECTION GetReadingDirection(); DWRITE_FLOW_DIRECTION GetFlowDirection(); FLOAT GetIncrementalTabStop(); HRESULT GetTrimming(DWRITE_TRIMMING *options, IDWriteInlineObject **trimming_sign); HRESULT GetLineSpacing( DWRITE_LINE_SPACING_METHOD *method, FLOAT *spacing, FLOAT *baseline); HRESULT GetFontCollection(IDWriteFontCollection **collection); UINT32 GetFontFamilyNameLength(); HRESULT GetFontFamilyName(WCHAR *name, UINT32 size); DWRITE_FONT_WEIGHT GetFontWeight(); DWRITE_FONT_STYLE GetFontStyle(); DWRITE_FONT_STRETCH GetFontStretch(); FLOAT GetFontSize(); UINT32 GetLocaleNameLength(); HRESULT GetLocaleName(WCHAR *name, UINT32 size); } [ local, object, uuid(55f1112b-1dc2-4b3c-9541-f46894ed85b6) ] interface IDWriteTypography : IUnknown { HRESULT AddFontFeature(DWRITE_FONT_FEATURE feature); UINT32 GetFontFeatureCount(); HRESULT GetFontFeature(UINT32 index, DWRITE_FONT_FEATURE *feature); } [ local, object, uuid(5e5a32a3-8dff-4773-9ff6-0696eab77267) ] interface IDWriteBitmapRenderTarget : IUnknown { HRESULT DrawGlyphRun( FLOAT baselineOriginX, FLOAT baselineOriginY, DWRITE_MEASURING_MODE measuring_mode, DWRITE_GLYPH_RUN const* glyph_run, IDWriteRenderingParams* params, COLORREF textColor, [defaultvalue(NULL)] RECT *blackbox_rect); HDC GetMemoryDC(); FLOAT GetPixelsPerDip(); HRESULT SetPixelsPerDip(FLOAT pixels_per_dip); HRESULT GetCurrentTransform(DWRITE_MATRIX *transform); HRESULT SetCurrentTransform(DWRITE_MATRIX const *transform); HRESULT GetSize(SIZE *size); HRESULT Resize(UINT32 width, UINT32 height); } cpp_quote("#ifndef _WINGDI_") /* already defined in wingdi.h but needed for WIDL */ #define LF_FACESIZE 32 typedef struct tagLOGFONTW { LONG lfHeight; LONG lfWidth; LONG lfEscapement; LONG lfOrientation; LONG lfWeight; BYTE lfItalic; BYTE lfUnderline; BYTE lfStrikeOut; BYTE lfCharSet; BYTE lfOutPrecision; BYTE lfClipPrecision; BYTE lfQuality; BYTE lfPitchAndFamily; WCHAR lfFaceName[LF_FACESIZE]; } LOGFONTW, *PLOGFONTW, *LPLOGFONTW; cpp_quote("#endif /* _WINGDI_ */") [ local, object, uuid(1edd9491-9853-4299-898f-6432983b6f3a) ] interface IDWriteGdiInterop : IUnknown { HRESULT CreateFontFromLOGFONT(LOGFONTW const *logfont, IDWriteFont **font); HRESULT ConvertFontToLOGFONT( IDWriteFont* font, LOGFONTW* logfont, BOOL *is_systemfont); HRESULT ConvertFontFaceToLOGFONT(IDWriteFontFace* font, LOGFONTW* logfont); HRESULT CreateFontFaceFromHdc(HDC hdc, IDWriteFontFace **fontface); HRESULT CreateBitmapRenderTarget(HDC hdc, UINT32 width, UINT32 height, IDWriteBitmapRenderTarget **target); } [ local, object, uuid(53737037-6d14-410b-9bfe-0b182bb70961) ] interface IDWriteTextLayout : IDWriteTextFormat { HRESULT SetMaxWidth(FLOAT maxWidth); HRESULT SetMaxHeight(FLOAT maxHeight); HRESULT SetFontCollection(IDWriteFontCollection* collection, DWRITE_TEXT_RANGE range); HRESULT SetFontFamilyName(WCHAR const *name, DWRITE_TEXT_RANGE range); HRESULT SetFontWeight(DWRITE_FONT_WEIGHT weight, DWRITE_TEXT_RANGE range); HRESULT SetFontStyle(DWRITE_FONT_STYLE style, DWRITE_TEXT_RANGE range); HRESULT SetFontStretch(DWRITE_FONT_STRETCH stretch, DWRITE_TEXT_RANGE range); HRESULT SetFontSize(FLOAT size, DWRITE_TEXT_RANGE range); HRESULT SetUnderline(BOOL underline, DWRITE_TEXT_RANGE range); HRESULT SetStrikethrough(BOOL strikethrough, DWRITE_TEXT_RANGE range); HRESULT SetDrawingEffect(IUnknown* effect, DWRITE_TEXT_RANGE range); HRESULT SetInlineObject(IDWriteInlineObject *object, DWRITE_TEXT_RANGE range); HRESULT SetTypography(IDWriteTypography* typography, DWRITE_TEXT_RANGE range); HRESULT SetLocaleName(WCHAR const* locale, DWRITE_TEXT_RANGE range); FLOAT GetMaxWidth(); FLOAT GetMaxHeight(); HRESULT GetFontCollection( UINT32 pos, IDWriteFontCollection** collection, [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); HRESULT GetFontFamilyNameLength( UINT32 pos, UINT32* len, [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); HRESULT GetFontFamilyName( UINT32 position, WCHAR* name, UINT32 name_size, [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); HRESULT GetFontWeight( UINT32 position, DWRITE_FONT_WEIGHT *weight, [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); HRESULT GetFontStyle( UINT32 currentPosition, DWRITE_FONT_STYLE *style, [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); HRESULT GetFontStretch( UINT32 position, DWRITE_FONT_STRETCH *stretch, [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); HRESULT GetFontSize( UINT32 position, FLOAT *size, [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); HRESULT GetUnderline( UINT32 position, BOOL *has_underline, [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); HRESULT GetStrikethrough( UINT32 position, BOOL *has_strikethrough, [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); HRESULT GetDrawingEffect( UINT32 position, IUnknown **effect, [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); HRESULT GetInlineObject( UINT32 position, IDWriteInlineObject **object, [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); HRESULT GetTypography( UINT32 position, IDWriteTypography** typography, [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); HRESULT GetLocaleNameLength( UINT32 position, UINT32* length, [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); HRESULT GetLocaleName( UINT32 position, WCHAR* name, UINT32 name_size, [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); HRESULT Draw( void *context, IDWriteTextRenderer* renderer, FLOAT originX, FLOAT originY); HRESULT GetLineMetrics( DWRITE_LINE_METRICS *metrics, UINT32 max_count, UINT32 *actual_count); HRESULT GetMetrics(DWRITE_TEXT_METRICS *metrics); HRESULT GetOverhangMetrics(DWRITE_OVERHANG_METRICS *overhangs); HRESULT GetClusterMetrics( DWRITE_CLUSTER_METRICS *metrics, UINT32 max_count, UINT32* act_count); HRESULT DetermineMinWidth(FLOAT* min_width); HRESULT HitTestPoint( FLOAT pointX, FLOAT pointY, BOOL* is_trailinghit, BOOL* is_inside, DWRITE_HIT_TEST_METRICS *metrics); HRESULT HitTestTextPosition( UINT32 textPosition, BOOL is_trailinghit, FLOAT* pointX, FLOAT* pointY, DWRITE_HIT_TEST_METRICS *metrics); HRESULT HitTestTextRange( UINT32 textPosition, UINT32 textLength, FLOAT originX, FLOAT originY, DWRITE_HIT_TEST_METRICS *metrics, UINT32 max_metricscount, UINT32* actual_metricscount); } [ local, object, uuid(14885cc9-bab0-4f90-b6ed-5c366a2cd03d) ] interface IDWriteNumberSubstitution : IUnknown { } [ local, object, uuid(688e1a58-5094-47c8-adc8-fbcea60ae92b) ] interface IDWriteTextAnalysisSource : IUnknown { HRESULT GetTextAtPosition( UINT32 position, WCHAR const** text, UINT32* text_len); HRESULT GetTextBeforePosition( UINT32 position, WCHAR const** text, UINT32* text_len); DWRITE_READING_DIRECTION GetParagraphReadingDirection(); HRESULT GetLocaleName( UINT32 position, UINT32* text_len, WCHAR const** locale); HRESULT GetNumberSubstitution( UINT32 position, UINT32* text_len, IDWriteNumberSubstitution **substitution); } [ local, object, uuid(5810cd44-0ca0-4701-b3fa-bec5182ae4f6) ] interface IDWriteTextAnalysisSink : IUnknown { HRESULT SetScriptAnalysis( UINT32 position, UINT32 length, DWRITE_SCRIPT_ANALYSIS const* scriptanalysis); HRESULT SetLineBreakpoints( UINT32 position, UINT32 length, DWRITE_LINE_BREAKPOINT const* breakpoints); HRESULT SetBidiLevel( UINT32 position, UINT32 length, UINT8 explicitLevel, UINT8 resolvedLevel); HRESULT SetNumberSubstitution( UINT32 position, UINT32 length, IDWriteNumberSubstitution* substitution); } [ local, object, uuid(b7e6163e-7f46-43b4-84b3-e4e6249c365d) ] interface IDWriteTextAnalyzer : IUnknown { HRESULT AnalyzeScript( IDWriteTextAnalysisSource* source, UINT32 position, UINT32 length, IDWriteTextAnalysisSink* sink); HRESULT AnalyzeBidi( IDWriteTextAnalysisSource* source, UINT32 position, UINT32 length, IDWriteTextAnalysisSink* sink); HRESULT AnalyzeNumberSubstitution( IDWriteTextAnalysisSource* source, UINT32 position, UINT32 length, IDWriteTextAnalysisSink* sink); HRESULT AnalyzeLineBreakpoints( IDWriteTextAnalysisSource* source, UINT32 position, UINT32 length, IDWriteTextAnalysisSink* sink); HRESULT GetGlyphs( WCHAR const* text, UINT32 length, IDWriteFontFace* font_face, BOOL is_sideways, BOOL is_rtl, DWRITE_SCRIPT_ANALYSIS const* analysis, WCHAR const* locale, IDWriteNumberSubstitution* substitution, DWRITE_TYPOGRAPHIC_FEATURES const** features, UINT32 const* 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); HRESULT GetGlyphPlacements( WCHAR const* text, UINT16 const* clustermap, DWRITE_SHAPING_TEXT_PROPERTIES* props, UINT32 text_len, UINT16 const* glyph_indices, DWRITE_SHAPING_GLYPH_PROPERTIES const* glyph_props, UINT32 glyph_count, IDWriteFontFace * font_face, FLOAT fontEmSize, BOOL is_sideways, BOOL is_rtl, DWRITE_SCRIPT_ANALYSIS const* analysis, WCHAR const* locale, DWRITE_TYPOGRAPHIC_FEATURES const** features, UINT32 const* feature_range_len, UINT32 feature_ranges, FLOAT* glyph_advances, DWRITE_GLYPH_OFFSET* glyph_offsets); HRESULT GetGdiCompatibleGlyphPlacements( WCHAR const* text, UINT16 const* clustermap, DWRITE_SHAPING_TEXT_PROPERTIES* props, UINT32 text_len, UINT16 const* glyph_indices, DWRITE_SHAPING_GLYPH_PROPERTIES const* glyph_props, UINT32 glyph_count, IDWriteFontFace * font_face, FLOAT fontEmSize, FLOAT pixels_per_dip, DWRITE_MATRIX const* transform, BOOL use_gdi_natural, BOOL is_sideways, BOOL is_rtl, DWRITE_SCRIPT_ANALYSIS const* analysis, WCHAR const* locale, DWRITE_TYPOGRAPHIC_FEATURES const** features, UINT32 const* feature_range_lengths, UINT32 feature_ranges, FLOAT* glyph_advances, DWRITE_GLYPH_OFFSET* glyph_offsets); } [ local, object, uuid(7d97dbf7-e085-42d4-81e3-6a883bded118) ] interface IDWriteGlyphRunAnalysis : IUnknown { HRESULT GetAlphaTextureBounds(DWRITE_TEXTURE_TYPE type, RECT* bounds); HRESULT CreateAlphaTexture(DWRITE_TEXTURE_TYPE type, RECT const* bounds, BYTE* alphaValues, UINT32 bufferSize); HRESULT GetAlphaBlendParams( IDWriteRenderingParams* renderingParams, FLOAT* blendGamma, FLOAT* blendEnhancedContrast, FLOAT* blendClearTypeLevel); } [ local, object, uuid(b859ee5a-d838-4b5b-a2e8-1adc7d93db48) ] interface IDWriteFactory : IUnknown { HRESULT GetSystemFontCollection(IDWriteFontCollection **collection, [defaultvalue(FALSE)] BOOL check_for_updates); HRESULT CreateCustomFontCollection( IDWriteFontCollectionLoader *loader, void const *key, UINT32 key_size, IDWriteFontCollection **collection); HRESULT RegisterFontCollectionLoader(IDWriteFontCollectionLoader *loader); HRESULT UnregisterFontCollectionLoader(IDWriteFontCollectionLoader *loader); HRESULT CreateFontFileReference( WCHAR const *path, FILETIME const *writetime, IDWriteFontFile **font_file); HRESULT CreateCustomFontFileReference( void const *reference_key, UINT32 key_size, IDWriteFontFileLoader *loader, IDWriteFontFile **font_file); HRESULT CreateFontFace( DWRITE_FONT_FACE_TYPE facetype, UINT32 files_number, IDWriteFontFile* const* font_files, UINT32 index, DWRITE_FONT_SIMULATIONS sim_flags, IDWriteFontFace **font_face); HRESULT CreateRenderingParams(IDWriteRenderingParams **params); HRESULT CreateMonitorRenderingParams( HMONITOR monitor, IDWriteRenderingParams **params); HRESULT CreateCustomRenderingParams( FLOAT gamma, FLOAT enhancedContrast, FLOAT cleartype_level, DWRITE_PIXEL_GEOMETRY geometry, DWRITE_RENDERING_MODE mode, IDWriteRenderingParams **params); HRESULT RegisterFontFileLoader(IDWriteFontFileLoader *loader); HRESULT UnregisterFontFileLoader(IDWriteFontFileLoader *loader); HRESULT CreateTextFormat( WCHAR const* family_name, IDWriteFontCollection *collection, DWRITE_FONT_WEIGHT weight, DWRITE_FONT_STYLE style, DWRITE_FONT_STRETCH stretch, FLOAT size, WCHAR const *locale, IDWriteTextFormat **format); HRESULT CreateTypography(IDWriteTypography **typography); HRESULT GetGdiInterop(IDWriteGdiInterop **gdi_interop); HRESULT CreateTextLayout( WCHAR const* string, UINT32 len, IDWriteTextFormat *format, FLOAT max_width, FLOAT max_height, IDWriteTextLayout **layout); HRESULT CreateGdiCompatibleTextLayout( WCHAR const* string, UINT32 len, IDWriteTextFormat *format, FLOAT layout_width, FLOAT layout_height, FLOAT pixels_per_dip, DWRITE_MATRIX const* transform, BOOL use_gdi_natural, IDWriteTextLayout **layout); HRESULT CreateEllipsisTrimmingSign( IDWriteTextFormat *format, IDWriteInlineObject **trimming_sign); HRESULT CreateTextAnalyzer(IDWriteTextAnalyzer **analyzer); HRESULT CreateNumberSubstitution( DWRITE_NUMBER_SUBSTITUTION_METHOD method, WCHAR const* locale, BOOL ignore_user_override, IDWriteNumberSubstitution **substitution); HRESULT CreateGlyphRunAnalysis( DWRITE_GLYPH_RUN const *glyph_run, FLOAT pixels_per_dip, DWRITE_MATRIX const* transform, DWRITE_RENDERING_MODE rendering_mode, DWRITE_MEASURING_MODE measuring_mode, FLOAT baseline_x, FLOAT baseline_y, IDWriteGlyphRunAnalysis **analysis); } cpp_quote("HRESULT WINAPI DWriteCreateFactory(DWRITE_FACTORY_TYPE,REFIID,IUnknown**);") /* error codes */ cpp_quote("#define FACILITY_DWRITE 0x898") cpp_quote("#define DWRITE_ERR_BASE 0x5000") cpp_quote("#define MAKE_DWRITE_HR(severity, code) MAKE_HRESULT(severity, FACILITY_DWRITE, (DWRITE_ERR_BASE + code))") cpp_quote("#define MAKE_DWRITE_HR_ERR(code) MAKE_DWRITE_HR(SEVERITY_ERROR, code)") cpp_quote("#define DWRITE_E_FILEFORMAT MAKE_DWRITE_HR_ERR(0x0)") cpp_quote("#define DWRITE_E_UNEXPECTED MAKE_DWRITE_HR_ERR(0x1)") cpp_quote("#define DWRITE_E_NOFONT MAKE_DWRITE_HR_ERR(0x2)") cpp_quote("#define DWRITE_E_FILENOTFOUND MAKE_DWRITE_HR_ERR(0x3)") cpp_quote("#define DWRITE_E_FILEACCESS MAKE_DWRITE_HR_ERR(0x4)") cpp_quote("#define DWRITE_E_FONTCOLLECTIONOBSOLETE MAKE_DWRITE_HR_ERR(0x5)") cpp_quote("#define DWRITE_E_ALREADYREGISTERED MAKE_DWRITE_HR_ERR(0x6)")