| // Licensed under the Apache License, Version 2.0 |
| // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
| // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. |
| // All files in the project carrying such notice may not be copied, modified, or distributed |
| // except according to those terms. |
| //! DirectX Typography Services public API definitions. |
| use ctypes::c_void; |
| use shared::basetsd::{INT16, INT32, UINT16, UINT32, UINT64, UINT8}; |
| use shared::guiddef::REFIID; |
| use shared::minwindef::{BOOL, BYTE, FILETIME, FLOAT}; |
| use shared::windef::{COLORREF, HDC, HMONITOR, RECT, SIZE}; |
| use shared::winerror::SEVERITY_ERROR; |
| use um::d2d1::ID2D1SimplifiedGeometrySink; |
| use um::dcommon::DWRITE_MEASURING_MODE; |
| use um::unknwnbase::{IUnknown, IUnknownVtbl}; |
| use um::wingdi::LOGFONTW; |
| use um::winnt::{HRESULT, WCHAR}; |
| ENUM!{enum DWRITE_FONT_FILE_TYPE { |
| DWRITE_FONT_FILE_TYPE_UNKNOWN, |
| DWRITE_FONT_FILE_TYPE_CFF, |
| DWRITE_FONT_FILE_TYPE_TRUETYPE, |
| DWRITE_FONT_FILE_TYPE_OPENTYPE_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_TRUETYPE_COLLECTION = DWRITE_FONT_FILE_TYPE_OPENTYPE_COLLECTION, |
| }} |
| ENUM!{enum DWRITE_FONT_FACE_TYPE { |
| DWRITE_FONT_FACE_TYPE_CFF, |
| DWRITE_FONT_FACE_TYPE_TRUETYPE, |
| DWRITE_FONT_FACE_TYPE_OPENTYPE_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_RAW_CFF, |
| DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION = DWRITE_FONT_FACE_TYPE_OPENTYPE_COLLECTION, |
| }} |
| ENUM!{enum DWRITE_FONT_SIMULATIONS { |
| DWRITE_FONT_SIMULATIONS_NONE = 0x0000, |
| DWRITE_FONT_SIMULATIONS_BOLD = 0x0001, |
| DWRITE_FONT_SIMULATIONS_OBLIQUE = 0x0002, |
| }} |
| ENUM!{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_SEMI_LIGHT = 350, |
| 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, |
| }} |
| ENUM!{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, |
| }} |
| ENUM!{enum DWRITE_FONT_STYLE { |
| DWRITE_FONT_STYLE_NORMAL, |
| DWRITE_FONT_STYLE_OBLIQUE, |
| DWRITE_FONT_STYLE_ITALIC, |
| }} |
| ENUM!{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_FULL_NAME, |
| DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_NAME, |
| DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_CID_NAME, |
| DWRITE_INFORMATIONAL_STRING_WWS_FAMILY_NAME, |
| DWRITE_INFORMATIONAL_STRING_DESIGN_SCRIPT_LANGUAGE_TAG, |
| DWRITE_INFORMATIONAL_STRING_SUPPORTED_SCRIPT_LANGUAGE_TAG, |
| }} |
| STRUCT!{struct DWRITE_FONT_METRICS { |
| designUnitsPerEm: UINT16, |
| ascent: UINT16, |
| descent: UINT16, |
| lineGap: INT16, |
| capHeight: UINT16, |
| xHeight: UINT16, |
| underlinePosition: INT16, |
| underlineThickness: UINT16, |
| strikethroughPosition: INT16, |
| strikethroughThickness: UINT16, |
| }} |
| STRUCT!{struct DWRITE_GLYPH_METRICS { |
| leftSideBearing: INT32, |
| advanceWidth: UINT32, |
| rightSideBearing: INT32, |
| topSideBearing: INT32, |
| advanceHeight: UINT32, |
| bottomSideBearing: INT32, |
| verticalOriginY: INT32, |
| }} |
| STRUCT!{struct DWRITE_GLYPH_OFFSET { |
| advanceOffset: FLOAT, |
| ascenderOffset: FLOAT, |
| }} |
| ENUM!{enum DWRITE_FACTORY_TYPE { |
| DWRITE_FACTORY_TYPE_SHARED, |
| DWRITE_FACTORY_TYPE_ISOLATED, |
| }} |
| RIDL!{#[uuid(0x727cad4e, 0xd6af, 0x4c9e, 0x8a, 0x08, 0xd6, 0x95, 0xb1, 0x1c, 0xaa, 0x49)] |
| interface IDWriteFontFileLoader(IDWriteFontFileLoaderVtbl): IUnknown(IUnknownVtbl) { |
| fn CreateStreamFromKey( |
| fontFileReferenceKey: *const c_void, |
| fontFileReferenceKeySize: UINT32, |
| fontFileStream: *mut *mut IDWriteFontFileStream, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0xb2d9f3ec, 0xc9fe, 0x4a11, 0xa2, 0xec, 0xd8, 0x62, 0x08, 0xf7, 0xc0, 0xa2)] |
| interface IDWriteLocalFontFileLoader(IDWriteLocalFontFileLoaderVtbl): |
| IDWriteFontFileLoader(IDWriteFontFileLoaderVtbl) { |
| fn GetFilePathLengthFromKey( |
| fontFileReferenceKey: *const c_void, |
| fontFileReferenceKeySize: UINT32, |
| filePathLength: *mut UINT32, |
| ) -> HRESULT, |
| fn GetFilePathFromKey( |
| fontFileReferenceKey: *const c_void, |
| fontFileReferenceKeySize: UINT32, |
| filePath: *mut WCHAR, |
| filePathSize: UINT32, |
| ) -> HRESULT, |
| fn GetLastWriteTimeFromKey( |
| fontFileReferenceKey: *const c_void, |
| fontFileReferenceKeySize: UINT32, |
| lastWriteTime: *mut FILETIME, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0x6d4865fe, 0x0ab8, 0x4d91, 0x8f, 0x62, 0x5d, 0xd6, 0xbe, 0x34, 0xa3, 0xe0)] |
| interface IDWriteFontFileStream(IDWriteFontFileStreamVtbl): IUnknown(IUnknownVtbl) { |
| fn ReadFileFragment( |
| fragmentStart: *mut *const c_void, |
| fileOffset: UINT64, |
| fragmentSize: UINT64, |
| fragmentContext: *mut *mut c_void, |
| ) -> HRESULT, |
| fn ReleaseFileFragment( |
| fragmentContext: *mut c_void, |
| ) -> (), |
| fn GetFileSize( |
| fileSize: *mut UINT64, |
| ) -> HRESULT, |
| fn GetLastWriteTime( |
| lastWriteTime: *mut UINT64, |
| ) -> HRESULT, |
| }} |
| ENUM!{enum DWRITE_OUTLINE_THRESHOLD { |
| DWRITE_OUTLINE_THRESHOLD_ANTIALIASED, |
| DWRITE_OUTLINE_THRESHOLD_ALIASED, |
| }} |
| STRUCT!{struct DWRITE_FONT_METRICS1 { |
| designUnitsPerEm: UINT16, |
| ascent: UINT16, |
| descent: UINT16, |
| lineGap: INT16, |
| capHeight: UINT16, |
| xHeight: UINT16, |
| underlinePosition: INT16, |
| underlineThickness: UINT16, |
| strikethroughPosition: INT16, |
| strikethroughThickness: UINT16, |
| glyphBoxLeft: INT16, |
| glyphBoxTop: INT16, |
| glyphBoxRight: INT16, |
| glyphBoxBottom: INT16, |
| subscriptPositionX: INT16, |
| subscriptPositionY: INT16, |
| subscriptSizeX: INT16, |
| subscriptSizeY: INT16, |
| superscriptPositionX: INT16, |
| superscriptPositionY: INT16, |
| superscriptSizeX: INT16, |
| superscriptSizeY: INT16, |
| hasTypographicMetrics: BOOL, |
| }} |
| STRUCT!{struct DWRITE_UNICODE_RANGE { |
| first: UINT32, |
| last: UINT32, |
| }} |
| STRUCT!{struct DWRITE_CARET_METRICS { |
| slopeRise: INT16, |
| slopeRun: INT16, |
| offset: INT16, |
| }} |
| #[inline] |
| pub fn DWRITE_MAKE_OPENTYPE_TAG(a: u8, b: u8, c: u8, d: u8) -> u32 { |
| ((d as u32) << 24) | ((c as u32) << 16) | ((b as u32) << 8) | (a as u32) |
| } |
| RIDL!{#[uuid(0x739d886a, 0xcef5, 0x47dc, 0x87, 0x69, 0x1a, 0x8b, 0x41, 0xbe, 0xbb, 0xb0)] |
| interface IDWriteFontFile(IDWriteFontFileVtbl): IUnknown(IUnknownVtbl) { |
| fn GetReferenceKey( |
| fontFileReferenceKey: *mut *const c_void, |
| fontFileReferenceKeySize: *mut UINT32, |
| ) -> HRESULT, |
| fn GetLoader( |
| fontFileLoader: *mut *mut IDWriteFontFileLoader, |
| ) -> HRESULT, |
| fn Analyze( |
| isSupportedFontType: *mut BOOL, |
| fontFileType: *mut DWRITE_FONT_FILE_TYPE, |
| fontFaceType: *mut DWRITE_FONT_FACE_TYPE, |
| numberOfFaces: *mut UINT32, |
| ) -> HRESULT, |
| }} |
| ENUM!{enum DWRITE_PIXEL_GEOMETRY { |
| DWRITE_PIXEL_GEOMETRY_FLAT, |
| DWRITE_PIXEL_GEOMETRY_RGB, |
| DWRITE_PIXEL_GEOMETRY_BGR, |
| }} |
| ENUM!{enum DWRITE_RENDERING_MODE { |
| DWRITE_RENDERING_MODE_DEFAULT, |
| DWRITE_RENDERING_MODE_ALIASED, |
| DWRITE_RENDERING_MODE_GDI_CLASSIC, |
| DWRITE_RENDERING_MODE_GDI_NATURAL, |
| DWRITE_RENDERING_MODE_NATURAL, |
| DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC, |
| DWRITE_RENDERING_MODE_OUTLINE, |
| DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC = DWRITE_RENDERING_MODE_GDI_CLASSIC, |
| DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL = DWRITE_RENDERING_MODE_GDI_NATURAL, |
| DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL = DWRITE_RENDERING_MODE_NATURAL, |
| DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC = DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC, |
| }} |
| STRUCT!{struct DWRITE_MATRIX { |
| m11: FLOAT, |
| m12: FLOAT, |
| m21: FLOAT, |
| m22: FLOAT, |
| dx: FLOAT, |
| dy: FLOAT, |
| }} |
| RIDL!{#[uuid(0x2f0da53a, 0x2add, 0x47cd, 0x82, 0xee, 0xd9, 0xec, 0x34, 0x68, 0x8e, 0x75)] |
| interface IDWriteRenderingParams(IDWriteRenderingParamsVtbl): IUnknown(IUnknownVtbl) { |
| fn GetGamma() -> FLOAT, |
| fn GetEnhancedContrast() -> FLOAT, |
| fn GetClearTypeLevel() -> FLOAT, |
| fn GetPixelGeometry() -> DWRITE_PIXEL_GEOMETRY, |
| fn GetRenderingMode() -> DWRITE_RENDERING_MODE, |
| }} |
| pub type IDWriteGeometrySink = ID2D1SimplifiedGeometrySink; |
| RIDL!{#[uuid(0x5f49804d, 0x7024, 0x4d43, 0xbf, 0xa9, 0xd2, 0x59, 0x84, 0xf5, 0x38, 0x49)] |
| interface IDWriteFontFace(IDWriteFontFaceVtbl): IUnknown(IUnknownVtbl) { |
| fn GetType() -> DWRITE_FONT_FACE_TYPE, |
| fn GetFiles( |
| numberOfFiles: *mut UINT32, |
| fontFiles: *mut *mut IDWriteFontFile, |
| ) -> HRESULT, |
| fn GetIndex() -> UINT32, |
| fn GetSimulations() -> DWRITE_FONT_SIMULATIONS, |
| fn IsSymbolFont() -> BOOL, |
| fn GetMetrics( |
| fontFaceMetrics: *mut DWRITE_FONT_METRICS, |
| ) -> (), |
| fn GetGlyphCount() -> UINT16, |
| fn GetDesignGlyphMetrics( |
| glyphIndices: *const UINT16, |
| glyphCount: UINT32, |
| glyphMetrics: *mut DWRITE_GLYPH_METRICS, |
| isSideways: BOOL, |
| ) -> HRESULT, |
| fn GetGlyphIndices( |
| codePoints: *const UINT32, |
| codePointCount: UINT32, |
| glyphIndices: *mut UINT16, |
| ) -> HRESULT, |
| fn TryGetFontTable( |
| openTypeTableTag: UINT32, |
| tableData: *mut *const c_void, |
| tableSize: *mut UINT32, |
| tableContext: *mut *mut c_void, |
| exists: *mut BOOL, |
| ) -> HRESULT, |
| fn ReleaseFontTable( |
| tableContext: *mut c_void, |
| ) -> HRESULT, |
| fn GetGlyphRunOutline( |
| emSize: FLOAT, |
| glyphIndices: *const UINT16, |
| glyphAdvances: *const FLOAT, |
| glyphOffsets: *const DWRITE_GLYPH_OFFSET, |
| glyphCount: UINT32, |
| isSideways: BOOL, |
| isRightToLeft: BOOL, |
| geometrySink: *mut IDWriteGeometrySink, |
| ) -> HRESULT, |
| fn GetRecommendedRenderingMode( |
| emSize: FLOAT, |
| pixelsPerDip: FLOAT, |
| measuringMode: DWRITE_MEASURING_MODE, |
| renderingParams: *mut IDWriteRenderingParams, |
| renderingMode: *mut DWRITE_RENDERING_MODE, |
| ) -> HRESULT, |
| fn GetGdiCompatibleMetrics( |
| emSize: FLOAT, |
| pixelsPerDip: FLOAT, |
| transform: *const DWRITE_MATRIX, |
| fontFaceMetrics: *mut DWRITE_FONT_METRICS, |
| ) -> HRESULT, |
| fn GetGdiCompatibleGlyphMetrics( |
| enSize: FLOAT, |
| pixelsPerDip: FLOAT, |
| transform: *const DWRITE_MATRIX, |
| useGdiNatrual: BOOL, |
| glyphIndices: *const UINT16, |
| glyphCount: UINT32, |
| glyphMetrics: *mut DWRITE_GLYPH_METRICS, |
| isSideways: BOOL, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0xa71efdb4, 0x9fdb, 0x4838, 0xad, 0x90, 0xcf, 0xc3, 0xbe, 0x8c, 0x3d, 0xaf)] |
| interface IDWriteFontFace1(IDWriteFontFace1Vtbl): IDWriteFontFace(IDWriteFontFaceVtbl) { |
| fn GetMetrics( |
| fontFaceMetrics: *mut DWRITE_FONT_METRICS1, |
| ) -> (), |
| fn GetGdiCompatibleMetrics( |
| emSize: FLOAT, |
| pixelsPerDip: FLOAT, |
| transform: *const DWRITE_MATRIX, |
| fontFaceMetrics: *mut DWRITE_FONT_METRICS1, |
| ) -> HRESULT, |
| fn GetCaretMetrics( |
| caretMetrics: *mut DWRITE_CARET_METRICS, |
| ) -> (), |
| fn GetUnicodeRanges( |
| maxRangeCount: UINT32, |
| unicodeRanges: *mut DWRITE_UNICODE_RANGE, |
| actualRangeCount: *mut UINT32, |
| ) -> HRESULT, |
| fn IsMonoSpacedFont() -> BOOL, |
| fn GetDesignGlyphAdvances( |
| glyphCount: UINT32, |
| glyphIndices: *const UINT16, |
| glyphAdvances: *mut INT32, |
| isSideways: BOOL, |
| ) -> HRESULT, |
| fn GetGdiCompatibleGlyphAdvance( |
| emSize: FLOAT, |
| pixelsPerDip: FLOAT, |
| transform: *const DWRITE_MATRIX, |
| useGdiNatural: BOOL, |
| isSideways: BOOL, |
| glyphCount: UINT32, |
| glyphIndices: *const UINT16, |
| glyphAdvances: *mut INT32, |
| ) -> HRESULT, |
| fn GetKerningPairAdjustments( |
| glyphCount: UINT32, |
| glyphIndices: *const UINT16, |
| glyphAdvanceAdjustments: *mut INT32, |
| ) -> HRESULT, |
| fn HasKerningPairs() -> BOOL, |
| fn GetRecommendedRenderingMode( |
| fontEmSize: FLOAT, |
| dpiX: FLOAT, |
| dpiY: FLOAT, |
| transform: *const DWRITE_MATRIX, |
| isSideways: BOOL, |
| outlineThreshold: DWRITE_OUTLINE_THRESHOLD, |
| measuringMode: DWRITE_MEASURING_MODE, |
| renderingMode: *mut DWRITE_RENDERING_MODE, |
| ) -> HRESULT, |
| fn GetVerticalGlyphVariants( |
| nominalGlyphIndices: *const UINT16, |
| verticalGlyphIndices: *mut UINT16, |
| ) -> HRESULT, |
| fn HasVerticalGlyphVariants() -> BOOL, |
| }} |
| RIDL!{#[uuid(0xcca920e4, 0x52f0, 0x492b, 0xbf, 0xa8, 0x29, 0xc7, 0x2e, 0xe0, 0xa4, 0x68)] |
| interface IDWriteFontCollectionLoader(IDWriteFontCollectionLoaderVtbl): |
| IUnknown(IUnknownVtbl) { |
| fn CreateEnumeratorFromKey( |
| factory: *mut IDWriteFactory, |
| collectionKey: *const c_void, |
| collectionKeySize: UINT32, |
| fontFileEnumerator: *mut *mut IDWriteFontFileEnumerator, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0x72755049, 0x5ff7, 0x435d, 0x83, 0x48, 0x4b, 0xe9, 0x7c, 0xfa, 0x6c, 0x7c)] |
| interface IDWriteFontFileEnumerator(IDWriteFontFileEnumeratorVtbl): IUnknown(IUnknownVtbl) { |
| fn MoveNext( |
| hasCurrentFile: *mut BOOL, |
| ) -> HRESULT, |
| fn GetCurrentFontFile( |
| fontFile: *mut *mut IDWriteFontFile, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0x08256209, 0x099a, 0x4b34, 0xb8, 0x6d, 0xc2, 0x2b, 0x11, 0x0e, 0x77, 0x71)] |
| interface IDWriteLocalizedStrings(IDWriteLocalizedStringsVtbl): IUnknown(IUnknownVtbl) { |
| fn GetCount() -> UINT32, |
| fn FindLocaleName( |
| localeName: *const WCHAR, |
| index: *mut UINT32, |
| exists: *mut BOOL, |
| ) -> HRESULT, |
| fn GetLocaleNameLength( |
| index: UINT32, |
| length: *mut UINT32, |
| ) -> HRESULT, |
| fn GetLocaleName( |
| index: UINT32, |
| localeName: *mut WCHAR, |
| size: UINT32, |
| ) -> HRESULT, |
| fn GetStringLength( |
| index: UINT32, |
| length: *mut UINT32, |
| ) -> HRESULT, |
| fn GetString( |
| index: UINT32, |
| stringBuffer: *mut WCHAR, |
| size: UINT32, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0xa84cee02, 0x3eea, 0x4eee, 0xa8, 0x27, 0x87, 0xc1, 0xa0, 0x2a, 0x0f, 0xcc)] |
| interface IDWriteFontCollection(IDWriteFontCollectionVtbl): IUnknown(IUnknownVtbl) { |
| fn GetFontFamilyCount() -> UINT32, |
| fn GetFontFamily( |
| index: UINT32, |
| fontFamily: *mut *mut IDWriteFontFamily, |
| ) -> HRESULT, |
| fn FindFamilyName( |
| familyName: *const WCHAR, |
| index: *mut UINT32, |
| exists: *mut BOOL, |
| ) -> HRESULT, |
| fn GetFontFromFontFace( |
| fontFace: *mut IDWriteFontFace, |
| font: *mut *mut IDWriteFont, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0x1a0d8438, 0x1d97, 0x4ec1, 0xae, 0xf9, 0xa2, 0xfb, 0x86, 0xed, 0x6a, 0xcb)] |
| interface IDWriteFontList(IDWriteFontListVtbl): IUnknown(IUnknownVtbl) { |
| fn GetFontCollection( |
| fontCollection: *mut *mut IDWriteFontCollection, |
| ) -> HRESULT, |
| fn GetFontCount() -> UINT32, |
| fn GetFont( |
| index: UINT32, |
| font: *mut *mut IDWriteFont, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0xda20d8ef, 0x812a, 0x4c43, 0x98, 0x02, 0x62, 0xec, 0x4a, 0xbd, 0x7a, 0xdd)] |
| interface IDWriteFontFamily(IDWriteFontFamilyVtbl): IDWriteFontList(IDWriteFontListVtbl) { |
| fn GetFamilyNames( |
| names: *mut *mut IDWriteLocalizedStrings, |
| ) -> HRESULT, |
| fn GetFirstMatchingFont( |
| weight: DWRITE_FONT_WEIGHT, |
| stretch: DWRITE_FONT_STRETCH, |
| style: DWRITE_FONT_STYLE, |
| matchingFont: *mut *mut IDWriteFont, |
| ) -> HRESULT, |
| fn GetMatchingFonts( |
| weight: DWRITE_FONT_WEIGHT, |
| stretch: DWRITE_FONT_STRETCH, |
| style: DWRITE_FONT_STYLE, |
| matchingFonts: *mut *mut IDWriteFontList, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0xacd16696, 0x8c14, 0x4f5d, 0x87, 0x7e, 0xfe, 0x3f, 0xc1, 0xd3, 0x27, 0x37)] |
| interface IDWriteFont(IDWriteFontVtbl): IUnknown(IUnknownVtbl) { |
| fn GetFontFamily( |
| fontFamily: *mut *mut IDWriteFontFamily, |
| ) -> HRESULT, |
| fn GetWeight() -> DWRITE_FONT_WEIGHT, |
| fn GetStretch() -> DWRITE_FONT_STRETCH, |
| fn GetStyle() -> DWRITE_FONT_STYLE, |
| fn IsSymbolFont() -> BOOL, |
| fn GetFaceNames( |
| names: *mut *mut IDWriteLocalizedStrings, |
| ) -> HRESULT, |
| fn GetInformationalStrings( |
| informationalStringId: DWRITE_INFORMATIONAL_STRING_ID, |
| informationalStrings: *mut *mut IDWriteLocalizedStrings, |
| exists: *mut BOOL, |
| ) -> HRESULT, |
| fn GetSimulations() -> DWRITE_FONT_SIMULATIONS, |
| fn GetMetrics( |
| fontMetrics: *mut DWRITE_FONT_METRICS, |
| ) -> (), |
| fn HasCharacter( |
| unicodeValue: UINT32, |
| exists: *mut BOOL, |
| ) -> HRESULT, |
| fn CreateFontFace( |
| fontFace: *mut *mut IDWriteFontFace, |
| ) -> HRESULT, |
| }} |
| ENUM!{enum DWRITE_READING_DIRECTION { |
| DWRITE_READING_DIRECTION_LEFT_TO_RIGHT = 0, |
| DWRITE_READING_DIRECTION_RIGHT_TO_LEFT = 1, |
| DWRITE_READING_DIRECTION_TOP_TO_BOTTOM = 2, |
| DWRITE_READING_DIRECTION_BOTTOM_TO_TOP = 3, |
| }} |
| ENUM!{enum DWRITE_FLOW_DIRECTION { |
| DWRITE_FLOW_DIRECTION_TOP_TO_BOTTOM = 0, |
| DWRITE_FLOW_DIRECTION_BOTTOM_TO_TOP = 1, |
| DWRITE_FLOW_DIRECTION_LEFT_TO_RIGHT = 2, |
| DWRITE_FLOW_DIRECTION_RIGHT_TO_LEFT = 3, |
| }} |
| ENUM!{enum DWRITE_TEXT_ALIGNMENT { |
| DWRITE_TEXT_ALIGNMENT_LEADING, |
| DWRITE_TEXT_ALIGNMENT_TRAILING, |
| DWRITE_TEXT_ALIGNMENT_CENTER, |
| DWRITE_TEXT_ALIGNMENT_JUSTIFIED, |
| }} |
| ENUM!{enum DWRITE_PARAGRAPH_ALIGNMENT { |
| DWRITE_PARAGRAPH_ALIGNMENT_NEAR, |
| DWRITE_PARAGRAPH_ALIGNMENT_FAR, |
| DWRITE_PARAGRAPH_ALIGNMENT_CENTER, |
| }} |
| ENUM!{enum DWRITE_WORD_WRAPPING { |
| DWRITE_WORD_WRAPPING_WRAP = 0, |
| DWRITE_WORD_WRAPPING_NO_WRAP = 1, |
| DWRITE_WORD_WRAPPING_EMERGENCY_BREAK = 2, |
| DWRITE_WORD_WRAPPING_WHOLE_WORD = 3, |
| DWRITE_WORD_WRAPPING_CHARACTER = 4, |
| }} |
| ENUM!{enum DWRITE_LINE_SPACING_METHOD { |
| DWRITE_LINE_SPACING_METHOD_DEFAULT, |
| DWRITE_LINE_SPACING_METHOD_UNIFORM, |
| DWRITE_LINE_SPACING_METHOD_PROPORTIONAL, |
| }} |
| ENUM!{enum DWRITE_TRIMMING_GRANULARITY { |
| DWRITE_TRIMMING_GRANULARITY_NONE, |
| DWRITE_TRIMMING_GRANULARITY_CHARACTER, |
| DWRITE_TRIMMING_GRANULARITY_WORD, |
| }} |
| ENUM!{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_VERTICAL_WRITING = 0x74726576, // 'vert' |
| DWRITE_FONT_FEATURE_TAG_VERTICAL_ALTERNATES_AND_ROTATION = 0x32747276, // 'vrt2' |
| DWRITE_FONT_FEATURE_TAG_SLASHED_ZERO = 0x6f72657a, // 'zero' |
| }} |
| STRUCT!{struct DWRITE_TEXT_RANGE { |
| startPosition: UINT32, |
| length: UINT32, |
| }} |
| STRUCT!{struct DWRITE_FONT_FEATURE { |
| nameTag: DWRITE_FONT_FEATURE_TAG, |
| parameter: UINT32, |
| }} |
| STRUCT!{struct DWRITE_TYPOGRAPHIC_FEATURES { |
| features: *mut DWRITE_FONT_FEATURE, |
| featureCount: UINT32, |
| }} |
| STRUCT!{struct DWRITE_TRIMMING { |
| granularity: DWRITE_TRIMMING_GRANULARITY, |
| delimiter: UINT32, |
| delimiterCount: UINT32, |
| }} |
| RIDL!{#[uuid(0x9c906818, 0x31d7, 0x4fd3, 0xa1, 0x51, 0x7c, 0x5e, 0x22, 0x5d, 0xb5, 0x5a)] |
| interface IDWriteTextFormat(IDWriteTextFormatVtbl): IUnknown(IUnknownVtbl) { |
| fn SetTextAlignment( |
| textAlignment: DWRITE_TEXT_ALIGNMENT, |
| ) -> HRESULT, |
| fn SetParagraphAlignment( |
| paragraphAlignment: DWRITE_PARAGRAPH_ALIGNMENT, |
| ) -> HRESULT, |
| fn SetWordWrapping( |
| wordWrapping: DWRITE_WORD_WRAPPING, |
| ) -> HRESULT, |
| fn SetReadingDirection( |
| readingDirection: DWRITE_READING_DIRECTION, |
| ) -> HRESULT, |
| fn SetFlowDirection( |
| flowDirection: DWRITE_FLOW_DIRECTION, |
| ) -> HRESULT, |
| fn SetIncrementalTabStop( |
| incrementalTabStop: FLOAT, |
| ) -> HRESULT, |
| fn SetTrimming( |
| trimmingOptions: *const DWRITE_TRIMMING, |
| trimmingSign: *mut IDWriteInlineObject, |
| ) -> HRESULT, |
| fn SetLineSpacing( |
| lineSpacingMethod: DWRITE_LINE_SPACING_METHOD, |
| lineSpacing: FLOAT, |
| baseLine: FLOAT, |
| ) -> HRESULT, |
| fn GetTextAlignment() -> DWRITE_TEXT_ALIGNMENT, |
| fn GetParagraphAlignment() -> DWRITE_PARAGRAPH_ALIGNMENT, |
| fn GetWordWrapping() -> DWRITE_WORD_WRAPPING, |
| fn GetReadingDirection() -> DWRITE_READING_DIRECTION, |
| fn GetFlowDirection() -> DWRITE_FLOW_DIRECTION, |
| fn GetIncrementalTabStop() -> FLOAT, |
| fn GetTrimming( |
| trimmingOptions: *mut DWRITE_TRIMMING, |
| trimmingSign: *mut *mut IDWriteInlineObject, |
| ) -> HRESULT, |
| fn GetLineSpacing( |
| lineSpacingMethod: *mut DWRITE_LINE_SPACING_METHOD, |
| lineSpacing: *mut FLOAT, |
| baseline: *mut FLOAT, |
| ) -> HRESULT, |
| fn GetFontCollection( |
| fontCollection: *mut *mut IDWriteFontCollection, |
| ) -> HRESULT, |
| fn GetFontFamilyNameLength() -> UINT32, |
| fn GetFontFamilyName( |
| fontFamilyName: *mut WCHAR, |
| nameSize: UINT32, |
| ) -> HRESULT, |
| fn GetFontWeight() -> DWRITE_FONT_WEIGHT, |
| fn GetFontStyle() -> DWRITE_FONT_STYLE, |
| fn GetFontStretch() -> DWRITE_FONT_STRETCH, |
| fn GetFontSize() -> FLOAT, |
| fn GetLocaleNameLength() -> UINT32, |
| fn GetLocaleName( |
| localeName: *mut WCHAR, |
| nameSize: UINT32, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0x55f1112b, 0x1dc2, 0x4b3c, 0x95, 0x41, 0xf4, 0x68, 0x94, 0xed, 0x85, 0xb6)] |
| interface IDWriteTypography(IDWriteTypographyVtbl): IUnknown(IUnknownVtbl) { |
| fn AddFontFeature( |
| fontFeature: DWRITE_FONT_FEATURE, |
| ) -> HRESULT, |
| fn GetFontFeatureCount() -> UINT32, |
| fn GetFontFeature( |
| fontFeatureIndex: UINT32, |
| fontFeature: *mut DWRITE_FONT_FEATURE, |
| ) -> HRESULT, |
| }} |
| ENUM!{enum DWRITE_SCRIPT_SHAPES { |
| DWRITE_SCRIPT_SHAPES_DEFAULT = 0, |
| DWRITE_SCRIPT_SHAPES_NO_VISUAL = 1, |
| }} |
| STRUCT!{struct DWRITE_SCRIPT_ANALYSIS { |
| script: UINT16, |
| shapes: DWRITE_SCRIPT_SHAPES, |
| }} |
| ENUM!{enum DWRITE_BREAK_CONDITION { |
| DWRITE_BREAK_CONDITION_NEUTRAL, |
| DWRITE_BREAK_CONDITION_CAN_BREAK, |
| DWRITE_BREAK_CONDITION_MAY_NOT_BREAK, |
| DWRITE_BREAK_CONDITION_MUST_BREAK, |
| }} |
| STRUCT!{struct DWRITE_LINE_BREAKPOINT { |
| bit_fields: UINT8, |
| }} |
| BITFIELD!{DWRITE_LINE_BREAKPOINT bit_fields: UINT8 [ |
| breakConditionBefore set_breakConditionBefore[0..2], |
| breakConditionAfter set_breakConditionAfter[2..4], |
| isWhitespace set_isWhitespace[4..5], |
| isSoftHyphen set_isSoftHyphen[5..6], |
| padding set_padding[6..8], |
| ]} |
| ENUM!{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, |
| }} |
| RIDL!{#[uuid(0x14885cc9, 0xbab0, 0x4f90, 0xb6, 0xed, 0x5c, 0x36, 0x6a, 0x2c, 0xd0, 0x3d)] |
| interface IDWriteNumberSubstitution(IDWriteNumberSubstitutionVtbl): IUnknown(IUnknownVtbl) {}} |
| STRUCT!{struct DWRITE_SHAPING_TEXT_PROPERTIES { |
| bit_fields: UINT16, |
| }} |
| BITFIELD!{DWRITE_SHAPING_TEXT_PROPERTIES bit_fields: UINT16 [ |
| isShapedAlone set_isShapedAlone[0..1], |
| reserved set_reserved[1..16], |
| ]} |
| STRUCT!{struct DWRITE_SHAPING_GLYPH_PROPERTIES { |
| bit_fields: UINT16, |
| }} |
| BITFIELD!{DWRITE_SHAPING_GLYPH_PROPERTIES bit_fields: UINT16 [ |
| justification set_justification[0..4], |
| isClusterStart set_isClusterStart[4..5], |
| isDiacritic set_isDiacritic[5..6], |
| isZeroWidthSpace set_isZeroWidthSpace[6..7], |
| reserved set_reserved[7..16], |
| ]} |
| RIDL!{#[uuid(0x688e1a58, 0x5094, 0x47c8, 0xad, 0xc8, 0xfb, 0xce, 0xa6, 0x0a, 0xe9, 0x2b)] |
| interface IDWriteTextAnalysisSource(IDWriteTextAnalysisSourceVtbl): IUnknown(IUnknownVtbl) { |
| fn GetTextAtPosition( |
| textPosition: UINT32, |
| textString: *mut *const WCHAR, |
| textLength: *mut UINT32, |
| ) -> HRESULT, |
| fn GetTextBeforePosition( |
| textPosition: UINT32, |
| textString: *mut *const WCHAR, |
| textLength: *mut UINT32, |
| ) -> HRESULT, |
| fn GetParagraphReadingDirection() -> DWRITE_READING_DIRECTION, |
| fn GetLocaleName( |
| textPosition: UINT32, |
| textLength: *mut UINT32, |
| localeName: *mut *const WCHAR, |
| ) -> HRESULT, |
| fn GetNumberSubstitution( |
| textPosition: UINT32, |
| textLength: *mut UINT32, |
| numberSubstitution: *mut *mut IDWriteNumberSubstitution, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0x5810cd44, 0x0ca0, 0x4701, 0xb3, 0xfa, 0xbe, 0xc5, 0x18, 0x2a, 0xe4, 0xf6)] |
| interface IDWriteTextAnalysisSink(IDWriteTextAnalysisSinkVtbl): IUnknown(IUnknownVtbl) { |
| fn SetScriptAnalysis( |
| textPosition: UINT32, |
| textLength: UINT32, |
| scriptAnalysis: *const DWRITE_SCRIPT_ANALYSIS, |
| ) -> HRESULT, |
| fn SetLineBreakpoints( |
| textPosition: UINT32, |
| textLength: UINT32, |
| lineBreakpoints: *const DWRITE_LINE_BREAKPOINT, |
| ) -> HRESULT, |
| fn SetBidiLevel( |
| textPosition: UINT32, |
| textLength: UINT32, |
| explicitLevel: UINT8, |
| resolvedLevel: UINT8, |
| ) -> HRESULT, |
| fn SetNumberSubstitution( |
| textPosition: UINT32, |
| textLength: UINT32, |
| numberSubstitution: *mut IDWriteNumberSubstitution, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0xb7e6163e, 0x7f46, 0x43b4, 0x84, 0xb3, 0xe4, 0xe6, 0x24, 0x9c, 0x36, 0x5d)] |
| interface IDWriteTextAnalyzer(IDWriteTextAnalyzerVtbl): IUnknown(IUnknownVtbl) { |
| fn AnalyzeScript( |
| analysisSource: *mut IDWriteTextAnalysisSource, |
| textPosition: UINT32, |
| textLength: UINT32, |
| analysisSink: *mut IDWriteTextAnalysisSink, |
| ) -> HRESULT, |
| fn AnalyzeBidi( |
| analysisSource: *mut IDWriteTextAnalysisSource, |
| textPosition: UINT32, |
| textLength: UINT32, |
| analysisSink: *mut IDWriteTextAnalysisSink, |
| ) -> HRESULT, |
| fn AnalyzeNumberSubstitution( |
| analysisSource: *mut IDWriteTextAnalysisSource, |
| textPosition: UINT32, |
| textLength: UINT32, |
| analysisSink: *mut IDWriteTextAnalysisSink, |
| ) -> HRESULT, |
| fn AnalyzeLineBreakpoints( |
| analysisSource: *mut IDWriteTextAnalysisSource, |
| textPosition: UINT32, |
| textLength: UINT32, |
| analysisSink: *mut IDWriteTextAnalysisSink, |
| ) -> HRESULT, |
| fn GetGlyphs( |
| textString: *const WCHAR, |
| textLength: UINT32, |
| fontFace: *mut IDWriteFontFace, |
| isSideways: BOOL, |
| isRightToLeft: BOOL, |
| scriptAnalysis: *const DWRITE_SCRIPT_ANALYSIS, |
| localeName: *const WCHAR, |
| numberSubstitution: *mut IDWriteNumberSubstitution, |
| features: *mut *const DWRITE_TYPOGRAPHIC_FEATURES, |
| featureRangeLengths: *const UINT32, |
| featureRanges: UINT32, |
| maxGlyphCount: UINT32, |
| clusterMap: *mut UINT16, |
| textProps: *mut DWRITE_SHAPING_TEXT_PROPERTIES, |
| glyphIndices: *mut UINT16, |
| glyphProps: *mut DWRITE_SHAPING_GLYPH_PROPERTIES, |
| actualGlyphCount: *mut UINT32, |
| ) -> HRESULT, |
| fn GetGlyphPlacements( |
| textString: *const WCHAR, |
| clusterMap: *const UINT16, |
| textProps: *mut DWRITE_SHAPING_TEXT_PROPERTIES, |
| textLength: UINT32, |
| glyphIndices: *const UINT16, |
| glyphProps: *const DWRITE_SHAPING_GLYPH_PROPERTIES, |
| glyphCount: UINT32, |
| fontFace: *mut IDWriteFontFace, |
| fontEmSize: FLOAT, |
| isSideways: BOOL, |
| isRightToLeft: BOOL, |
| scriptAnalysis: *const DWRITE_SCRIPT_ANALYSIS, |
| localeName: *const WCHAR, |
| features: *mut *const DWRITE_TYPOGRAPHIC_FEATURES, |
| featureRangeLengths: *const UINT32, |
| featureRanges: UINT32, |
| glyphAdvances: *mut FLOAT, |
| glyphOffsets: *mut DWRITE_GLYPH_OFFSET, |
| ) -> HRESULT, |
| fn GetGdiCompatibleGlyphPlacements( |
| textString: *const WCHAR, |
| clusterMap: *const UINT16, |
| textProps: *mut DWRITE_SHAPING_TEXT_PROPERTIES, |
| textLength: UINT32, |
| glyphIndices: *const UINT16, |
| glyphProps: *const DWRITE_SHAPING_GLYPH_PROPERTIES, |
| glyphCount: UINT32, |
| fontFace: *mut IDWriteFontFace, |
| fontEmSize: FLOAT, |
| pixelsPerDip: FLOAT, |
| transform: *const DWRITE_MATRIX, |
| useGdiNatrual: BOOL, |
| isSideways: BOOL, |
| isRightToLeft: BOOL, |
| scriptAnalysis: *const DWRITE_SCRIPT_ANALYSIS, |
| localeName: *const WCHAR, |
| features: *mut *const DWRITE_TYPOGRAPHIC_FEATURES, |
| featureRangeLengths: *const UINT32, |
| featureRanges: UINT32, |
| glyphAdvances: *mut FLOAT, |
| glyphOffsets: *mut DWRITE_GLYPH_OFFSET, |
| ) -> HRESULT, |
| }} |
| STRUCT!{struct DWRITE_GLYPH_RUN { |
| fontFace: *mut IDWriteFontFace, |
| fontEmSize: FLOAT, |
| glyphCount: UINT32, |
| glyphIndices: *const UINT16, |
| glyphAdvances: *const FLOAT, |
| glyphOffsets: *const DWRITE_GLYPH_OFFSET, |
| isSideways: BOOL, |
| bidiLevel: UINT32, |
| }} |
| STRUCT!{struct DWRITE_GLYPH_RUN_DESCRIPTION { |
| localeName: *const WCHAR, |
| string: *const WCHAR, |
| stringLength: UINT32, |
| clusterMap: *const UINT16, |
| textPosition: UINT32, |
| }} |
| STRUCT!{struct DWRITE_UNDERLINE { |
| width: FLOAT, |
| thickness: FLOAT, |
| offset: FLOAT, |
| runHeight: FLOAT, |
| readingDirection: DWRITE_READING_DIRECTION, |
| flowDirection: DWRITE_FLOW_DIRECTION, |
| localeName: *const WCHAR, |
| measuringMode: DWRITE_MEASURING_MODE, |
| }} |
| STRUCT!{struct DWRITE_STRIKETHROUGH { |
| width: FLOAT, |
| thickness: FLOAT, |
| offset: FLOAT, |
| readingDirection: DWRITE_READING_DIRECTION, |
| flowDirection: DWRITE_FLOW_DIRECTION, |
| localeName: *const WCHAR, |
| measuringMode: DWRITE_MEASURING_MODE, |
| }} |
| STRUCT!{struct DWRITE_LINE_METRICS { |
| length: UINT32, |
| trailingWhitespaceLength: UINT32, |
| newlineLength: UINT32, |
| height: FLOAT, |
| baseline: FLOAT, |
| isTrimmed: BOOL, |
| }} |
| STRUCT!{struct DWRITE_CLUSTER_METRICS { |
| width: FLOAT, |
| length: UINT16, |
| bit_fields: UINT16, |
| }} |
| BITFIELD!{DWRITE_CLUSTER_METRICS bit_fields: UINT16 [ |
| canWrapLineAfter set_canWrapLineAfter[0..1], |
| isWhitespace set_isWhitespace[1..2], |
| isNewline set_isNewline[2..3], |
| isSoftHyphen set_isSoftHyphen[3..4], |
| isRightToLeft set_isRightToLeft[4..5], |
| padding set_padding[5..16], |
| ]} |
| STRUCT!{struct DWRITE_TEXT_METRICS { |
| left: FLOAT, |
| top: FLOAT, |
| width: FLOAT, |
| widthIncludingTrailingWhitespace: FLOAT, |
| height: FLOAT, |
| layoutWidth: FLOAT, |
| layoutHeight: FLOAT, |
| maxBidiReorderingDepth: UINT32, |
| lineCount: UINT32, |
| }} |
| STRUCT!{struct DWRITE_INLINE_OBJECT_METRICS { |
| width: FLOAT, |
| height: FLOAT, |
| baseline: FLOAT, |
| supportsSideways: BOOL, |
| }} |
| STRUCT!{struct DWRITE_OVERHANG_METRICS { |
| left: FLOAT, |
| top: FLOAT, |
| right: FLOAT, |
| bottom: FLOAT, |
| }} |
| STRUCT!{struct DWRITE_HIT_TEST_METRICS { |
| textPosition: UINT32, |
| length: UINT32, |
| left: FLOAT, |
| top: FLOAT, |
| width: FLOAT, |
| height: FLOAT, |
| bidiLevel: UINT32, |
| isText: BOOL, |
| isTrimmed: BOOL, |
| }} |
| RIDL!{#[uuid(0x8339fde3, 0x106f, 0x47ab, 0x83, 0x73, 0x1c, 0x62, 0x95, 0xeb, 0x10, 0xb3)] |
| interface IDWriteInlineObject(IDWriteInlineObjectVtbl): IUnknown(IUnknownVtbl) { |
| fn Draw( |
| clientDrawingContext: *mut c_void, |
| renderer: *mut IDWriteTextRenderer, |
| originX: FLOAT, |
| originY: FLOAT, |
| isSideways: BOOL, |
| isRightToLeft: BOOL, |
| clientDrawingEffect: *mut IUnknown, |
| ) -> HRESULT, |
| fn GetMetrics( |
| metrics: *mut DWRITE_INLINE_OBJECT_METRICS, |
| ) -> HRESULT, |
| fn GetOverhangMetrics( |
| overhangs: *mut DWRITE_OVERHANG_METRICS, |
| ) -> HRESULT, |
| fn GetBreakConditions( |
| breakConditionBefore: *mut DWRITE_BREAK_CONDITION, |
| breakConditionAfter: *mut DWRITE_BREAK_CONDITION, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0xeaf3a2da, 0xecf4, 0x4d24, 0xb6, 0x44, 0xb3, 0x4f, 0x68, 0x42, 0x02, 0x4b)] |
| interface IDWritePixelSnapping(IDWritePixelSnappingVtbl): IUnknown(IUnknownVtbl) { |
| fn IsPixelSnappingDisabled( |
| clientDrawingContext: *mut c_void, |
| isDisabled: *mut BOOL, |
| ) -> HRESULT, |
| fn GetCurrentTransform( |
| clientDrawingContext: *mut c_void, |
| transform: *mut DWRITE_MATRIX, |
| ) -> HRESULT, |
| fn GetPixelsPerDip( |
| clientDrawingContext: *mut c_void, |
| pixelsPerDip: *mut FLOAT, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0xef8a8135, 0x5cc6, 0x45fe, 0x88, 0x25, 0xc5, 0xa0, 0x72, 0x4e, 0xb8, 0x19)] |
| interface IDWriteTextRenderer(IDWriteTextRendererVtbl): |
| IDWritePixelSnapping(IDWritePixelSnappingVtbl) { |
| fn DrawGlyphRun( |
| clientDrawingContext: *mut c_void, |
| baselineOriginX: FLOAT, |
| baselineOriginY: FLOAT, |
| measuringMode: DWRITE_MEASURING_MODE, |
| glyphRun: *const DWRITE_GLYPH_RUN, |
| glyphRunDescription: *const DWRITE_GLYPH_RUN_DESCRIPTION, |
| clientDrawingEffect: *mut IUnknown, |
| ) -> HRESULT, |
| fn DrawUnderline( |
| clientDrawingContext: *mut c_void, |
| baselineOriginX: FLOAT, |
| baselineOriginY: FLOAT, |
| underline: *const DWRITE_UNDERLINE, |
| clientDrawingEffect: *mut IUnknown, |
| ) -> HRESULT, |
| fn DrawStrikethrough( |
| clientDrawingContext: *mut c_void, |
| baselineOriginX: FLOAT, |
| baselineOriginY: FLOAT, |
| strikethrough: *const DWRITE_STRIKETHROUGH, |
| clientDrawingEffect: *mut IUnknown, |
| ) -> HRESULT, |
| fn DrawInlineObject( |
| clientDrawingContext: *mut c_void, |
| baselineOriginX: FLOAT, |
| baselineOriginY: FLOAT, |
| inlineObject: *mut IDWriteInlineObject, |
| isSideways: BOOL, |
| isRightToLeft: BOOL, |
| clientDrawingEffect: *mut IUnknown, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0x53737037, 0x6d14, 0x410b, 0x9b, 0xfe, 0x0b, 0x18, 0x2b, 0xb7, 0x09, 0x61)] |
| interface IDWriteTextLayout(IDWriteTextLayoutVtbl): |
| IDWriteTextFormat(IDWriteTextFormatVtbl) { |
| fn SetMaxWidth( |
| maxWidth: FLOAT, |
| ) -> HRESULT, |
| fn SetMaxHeight( |
| maxHeight: FLOAT, |
| ) -> HRESULT, |
| fn SetFontCollection( |
| fontCollection: *mut IDWriteFontCollection, |
| textRange: DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn SetFontFamilyName( |
| fontFamilyName: *const WCHAR, |
| textRange: DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn SetFontWeight( |
| fontWeight: DWRITE_FONT_WEIGHT, |
| textRange: DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn SetFontStyle( |
| fontStyle: DWRITE_FONT_STYLE, |
| textRange: DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn SetFontStretch( |
| fontStretch: DWRITE_FONT_STRETCH, |
| textRange: DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn SetFontSize( |
| fontSize: FLOAT, |
| textRange: DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn SetUnderline( |
| hasUnderline: BOOL, |
| textRange: DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn SetStrikethrough( |
| hasStrikethrough: BOOL, |
| textRange: DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn SetDrawingEffect( |
| drawingEffect: *mut IUnknown, |
| textRange: DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn SetInlineObject( |
| inlineObject: *mut IDWriteInlineObject, |
| textRange: DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn SetTypography( |
| typography: *mut IDWriteTypography, |
| textRange: DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn SetLocaleName( |
| localeName: *const WCHAR, |
| textRange: DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn GetMaxWidth() -> FLOAT, |
| fn GetMaxHeight() -> FLOAT, |
| fn GetFontCollection( |
| currentPosition: UINT32, |
| fontCollection: *mut *mut IDWriteFontCollection, |
| textRange: *mut DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn GetFontFamilyNameLength( |
| currentPosition: UINT32, |
| nameLength: *mut UINT32, |
| textRange: *mut DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn GetFontFamilyName( |
| currentPosition: UINT32, |
| fontFamilyName: *mut WCHAR, |
| nameSize: UINT32, |
| textRange: *mut DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn GetFontWeight( |
| currentPosition: UINT32, |
| fontWeight: *mut DWRITE_FONT_WEIGHT, |
| textRange: *mut DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn GetFontStyle( |
| currentPosition: UINT32, |
| fontStyle: *mut DWRITE_FONT_STYLE, |
| textRange: *mut DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn GetFontStretch( |
| currentPosition: UINT32, |
| fontStretch: *mut DWRITE_FONT_STRETCH, |
| textRange: *mut DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn GetFontSize( |
| currentPosition: UINT32, |
| fontSize: *mut FLOAT, |
| textRange: *mut DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn GetUnderline( |
| currentPosition: UINT32, |
| hasUnderline: *mut BOOL, |
| textRange: *mut DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn GetStrikethrough( |
| currentPosition: UINT32, |
| hasStrikethrough: *mut BOOL, |
| textRange: *mut DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn GetDrawingEffect( |
| currentPosition: UINT32, |
| drawingEffect: *mut *mut IUnknown, |
| textRange: *mut DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn GetInlineObject( |
| currentPosition: UINT32, |
| inlineObject: *mut *mut IDWriteInlineObject, |
| textRange: *mut DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn GetTypography( |
| currentPosition: UINT32, |
| typography: *mut *mut IDWriteTypography, |
| textRange: *mut DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn GetLocaleNameLength( |
| currentPosition: UINT32, |
| nameLength: *mut UINT32, |
| textRange: *mut DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn GetLocaleName( |
| currentPosition: UINT32, |
| localeName: *mut WCHAR, |
| nameSize: UINT32, |
| textRange: *mut DWRITE_TEXT_RANGE, |
| ) -> HRESULT, |
| fn Draw( |
| clientDrawingContext: *mut c_void, |
| renderer: *mut IDWriteTextRenderer, |
| originX: FLOAT, |
| originY: FLOAT, |
| ) -> HRESULT, |
| fn GetLineMetrics( |
| lineMetrics: *mut DWRITE_LINE_METRICS, |
| maxLineCount: UINT32, |
| actualLineCount: *mut UINT32, |
| ) -> HRESULT, |
| fn GetMetrics( |
| textMetrics: *mut DWRITE_TEXT_METRICS, |
| ) -> HRESULT, |
| fn GetOverhangMetrics( |
| overhangs: *mut DWRITE_OVERHANG_METRICS, |
| ) -> HRESULT, |
| fn GetClusterMetrics( |
| clusterMetrics: *mut DWRITE_CLUSTER_METRICS, |
| maxClusterCount: UINT32, |
| actualClusterCount: *mut UINT32, |
| ) -> HRESULT, |
| fn DetermineMinWidth( |
| minWidth: *mut FLOAT, |
| ) -> HRESULT, |
| fn HitTestPoint( |
| pointX: FLOAT, |
| pointY: FLOAT, |
| isTrailingHit: *mut BOOL, |
| isInside: *mut BOOL, |
| hitTestMetrics: *mut DWRITE_HIT_TEST_METRICS, |
| ) -> HRESULT, |
| fn HitTestTextPosition( |
| textPosition: UINT32, |
| isTrailingHit: BOOL, |
| pointX: *mut FLOAT, |
| pointY: *mut FLOAT, |
| hitTestMetrics: *mut DWRITE_HIT_TEST_METRICS, |
| ) -> HRESULT, |
| fn HitTestTextRange( |
| textPosition: UINT32, |
| textLength: UINT32, |
| originX: FLOAT, |
| originY: FLOAT, |
| hitTestMetrics: *mut DWRITE_HIT_TEST_METRICS, |
| maxHitTestMetricsCount: UINT32, |
| actualHitTestMetricsCount: *mut UINT32, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0x5e5a32a3, 0x8dff, 0x4773, 0x9f, 0xf6, 0x06, 0x96, 0xea, 0xb7, 0x72, 0x67)] |
| interface IDWriteBitmapRenderTarget(IDWriteBitmapRenderTargetVtbl): IUnknown(IUnknownVtbl) { |
| fn DrawGlyphRun( |
| baselineOriginX: FLOAT, |
| baselineOriginY: FLOAT, |
| measuringMode: DWRITE_MEASURING_MODE, |
| glyphRun: *const DWRITE_GLYPH_RUN, |
| renderingParams: *mut IDWriteRenderingParams, |
| textColor: COLORREF, |
| blackBoxRect: *mut RECT, |
| ) -> HRESULT, |
| fn GetMemoryDC() -> HDC, |
| fn GetPixelsPerDip() -> FLOAT, |
| fn SetPixelsPerDip( |
| pixelsPerDip: FLOAT, |
| ) -> HRESULT, |
| fn GetCurrentTransform( |
| transform: *mut DWRITE_MATRIX, |
| ) -> HRESULT, |
| fn SetCurrentTransform( |
| transform: *const DWRITE_MATRIX, |
| ) -> HRESULT, |
| fn GetSize( |
| size: *mut SIZE, |
| ) -> HRESULT, |
| fn Resize( |
| width: UINT32, |
| height: UINT32, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0x1edd9491, 0x9853, 0x4299, 0x89, 0x8f, 0x64, 0x32, 0x98, 0x3b, 0x6f, 0x3a)] |
| interface IDWriteGdiInterop(IDWriteGdiInteropVtbl): IUnknown(IUnknownVtbl) { |
| fn CreateFontFromLOGFONT( |
| logFont: *const LOGFONTW, |
| font: *mut *mut IDWriteFont, |
| ) -> HRESULT, |
| fn ConvertFontToLOGFONT( |
| font: *mut IDWriteFont, |
| logFont: *mut LOGFONTW, |
| isSystemFont: *mut BOOL, |
| ) -> HRESULT, |
| fn ConvertFontFaceToLOGFONT( |
| font: *mut IDWriteFontFace, |
| logFont: *mut LOGFONTW, |
| ) -> HRESULT, |
| fn CreateFontFaceFromHdc( |
| hdc: HDC, |
| fontFace: *mut *mut IDWriteFontFace, |
| ) -> HRESULT, |
| fn CreateBitmapRenderTarget( |
| hdc: HDC, |
| width: UINT32, |
| height: UINT32, |
| renderTarget: *mut *mut IDWriteBitmapRenderTarget, |
| ) -> HRESULT, |
| }} |
| ENUM!{enum DWRITE_TEXTURE_TYPE { |
| DWRITE_TEXTURE_ALIASED_1x1 = 0, |
| DWRITE_TEXTURE_CLEARTYPE_3x1 = 1, |
| }} |
| pub const DWRITE_ALPHA_MAX: BYTE = 255; |
| RIDL!{#[uuid(0x7d97dbf7, 0xe085, 0x42d4, 0x81, 0xe3, 0x6a, 0x88, 0x3b, 0xde, 0xd1, 0x18)] |
| interface IDWriteGlyphRunAnalysis(IDWriteGlyphRunAnalysisVtbl): IUnknown(IUnknownVtbl) { |
| fn GetAlphaTextureBounds( |
| textureType: DWRITE_TEXTURE_TYPE, |
| textureBounds: *mut RECT, |
| ) -> HRESULT, |
| fn CreateAlphaTexture( |
| textureType: DWRITE_TEXTURE_TYPE, |
| textureBounds: *const RECT, |
| alphaValues: *mut BYTE, |
| bufferSize: UINT32, |
| ) -> HRESULT, |
| fn GetAlphaBlendParams( |
| renderingParams: *mut IDWriteRenderingParams, |
| blendGamma: *mut FLOAT, |
| blendEnhancedContrast: *mut FLOAT, |
| blendClearTypeLevel: *mut FLOAT, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0xb859ee5a, 0xd838, 0x4b5b, 0xa2, 0xe8, 0x1a, 0xdc, 0x7d, 0x93, 0xdb, 0x48)] |
| interface IDWriteFactory(IDWriteFactoryVtbl): IUnknown(IUnknownVtbl) { |
| fn GetSystemFontCollection( |
| fontCollection: *mut *mut IDWriteFontCollection, |
| checkForUpdates: BOOL, |
| ) -> HRESULT, |
| fn CreateCustomFontCollection( |
| collectionLoader: *mut IDWriteFontCollectionLoader, |
| collectionKey: *const c_void, |
| collectionKeySize: UINT32, |
| fontCollection: *mut *mut IDWriteFontCollection, |
| ) -> HRESULT, |
| fn RegisterFontCollectionLoader( |
| fontCollectionLoader: *mut IDWriteFontCollectionLoader, |
| ) -> HRESULT, |
| fn UnregisterFontCollectionLoader( |
| fontCollectionLoader: *mut IDWriteFontCollectionLoader, |
| ) -> HRESULT, |
| fn CreateFontFileReference( |
| filePath: *const WCHAR, |
| lastWriteTime: *const FILETIME, |
| fontFile: *mut *mut IDWriteFontFile, |
| ) -> HRESULT, |
| fn CreateCustomFontFileReference( |
| fontFileReferenceKey: *const c_void, |
| fontFileReferenceKeySize: UINT32, |
| fontFileLoader: *mut IDWriteFontFileLoader, |
| fontFile: *mut *mut IDWriteFontFile, |
| ) -> HRESULT, |
| fn CreateFontFace( |
| fontFaceType: DWRITE_FONT_FACE_TYPE, |
| numberOfFiles: UINT32, |
| fontFiles: *const *mut IDWriteFontFile, |
| faceIndex: UINT32, |
| fontFaceSimulationFlags: DWRITE_FONT_SIMULATIONS, |
| fontFace: *mut *mut IDWriteFontFace, |
| ) -> HRESULT, |
| fn CreateRenderingParams( |
| renderingParams: *mut *mut IDWriteRenderingParams, |
| ) -> HRESULT, |
| fn CreateMonitorRenderingParams( |
| monitor: HMONITOR, |
| renderingParams: *mut *mut IDWriteRenderingParams, |
| ) -> HRESULT, |
| fn CreateCustomRenderingParams( |
| gamma: FLOAT, |
| enhancedContrast: FLOAT, |
| clearTypeLevel: FLOAT, |
| pixelGeometry: DWRITE_PIXEL_GEOMETRY, |
| renderingMode: DWRITE_RENDERING_MODE, |
| renderingParams: *mut *mut IDWriteRenderingParams, |
| ) -> HRESULT, |
| fn RegisterFontFileLoader( |
| fontFileLoader: *mut IDWriteFontFileLoader, |
| ) -> HRESULT, |
| fn UnregisterFontFileLoader( |
| fontFileLoader: *mut IDWriteFontFileLoader, |
| ) -> HRESULT, |
| fn CreateTextFormat( |
| fontFamilyName: *const WCHAR, |
| fontCollection: *mut IDWriteFontCollection, |
| fontWeight: DWRITE_FONT_WEIGHT, |
| fontStyle: DWRITE_FONT_STYLE, |
| fontStretch: DWRITE_FONT_STRETCH, |
| fontSize: FLOAT, |
| localeName: *const WCHAR, |
| textFormat: *mut *mut IDWriteTextFormat, |
| ) -> HRESULT, |
| fn CreateTypography( |
| typography: *mut *mut IDWriteTypography, |
| ) -> HRESULT, |
| fn GetGdiInterop( |
| gdiInterop: *mut *mut IDWriteGdiInterop, |
| ) -> HRESULT, |
| fn CreateTextLayout( |
| string: *const WCHAR, |
| stringLength: UINT32, |
| textFormat: *mut IDWriteTextFormat, |
| maxWidth: FLOAT, |
| maxHeight: FLOAT, |
| textLayout: *mut *mut IDWriteTextLayout, |
| ) -> HRESULT, |
| fn CreateGdiCompatibleTextLayout( |
| string: *const WCHAR, |
| stringLength: UINT32, |
| textFormat: *mut IDWriteTextFormat, |
| layoutWidth: FLOAT, |
| layoutHeight: FLOAT, |
| pixelsPerDip: FLOAT, |
| transform: *const DWRITE_MATRIX, |
| useGdiNatrual: BOOL, |
| textLayout: *mut *mut IDWriteTextLayout, |
| ) -> HRESULT, |
| fn CreateEllipsisTrimmingSign( |
| textFormat: *mut IDWriteTextFormat, |
| trimmingSign: *mut *mut IDWriteInlineObject, |
| ) -> HRESULT, |
| fn CreateTextAnalyzer( |
| textAnalyzer: *mut *mut IDWriteTextAnalyzer, |
| ) -> HRESULT, |
| fn CreateNumberSubstitution( |
| substitutionMethod: DWRITE_NUMBER_SUBSTITUTION_METHOD, |
| localeName: *const WCHAR, |
| ignoreUserOverride: BOOL, |
| numberSubstitution: *mut *mut IDWriteNumberSubstitution, |
| ) -> HRESULT, |
| fn CreateGlyphRunAnalysis( |
| glyphRun: *const DWRITE_GLYPH_RUN, |
| pixelsPerDip: FLOAT, |
| transform: *const DWRITE_MATRIX, |
| renderingMode: DWRITE_RENDERING_MODE, |
| measuringMode: DWRITE_MEASURING_MODE, |
| baselineOriginX: FLOAT, |
| baselineOriginY: FLOAT, |
| glyphRunAnalysis: *mut *mut IDWriteGlyphRunAnalysis, |
| ) -> HRESULT, |
| }} |
| pub const FACILITY_DWRITE: HRESULT = 0x898; |
| pub const DWRITE_ERR_BASE: HRESULT = 0x5000; |
| #[inline] |
| pub fn MAKE_DWRITE_HR(severity: HRESULT, code: HRESULT) -> HRESULT { |
| MAKE_HRESULT!(severity, FACILITY_DWRITE, DWRITE_ERR_BASE + code) |
| } |
| #[inline] |
| pub fn MAKE_DWRITE_HR_ERR(code: HRESULT) -> HRESULT { |
| MAKE_DWRITE_HR(SEVERITY_ERROR, code) |
| } |
| extern "system" { |
| pub fn DWriteCreateFactory( |
| factoryType: DWRITE_FACTORY_TYPE, iid: REFIID, factory: *mut *mut IUnknown, |
| ) -> HRESULT; |
| } |