mirror of
https://git.proxmox.com/git/rustc
synced 2025-08-14 08:32:57 +00:00
1039 lines
46 KiB
Rust
1039 lines
46 KiB
Rust
// Copyright © 2015, Connor Hilarides
|
|
// Licensed under the MIT License <LICENSE.md>
|
|
//! DirectX Typography Services public API definitions.
|
|
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_TRUETYPE_COLLECTION,
|
|
DWRITE_FONT_FILE_TYPE_TYPE1_PFM,
|
|
DWRITE_FONT_FILE_TYPE_TYPE1_PFB,
|
|
DWRITE_FONT_FILE_TYPE_VECTOR,
|
|
DWRITE_FONT_FILE_TYPE_BITMAP,
|
|
}}
|
|
ENUM!{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_RAW_CFF,
|
|
}}
|
|
FLAGS!{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,
|
|
}}
|
|
#[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!{interface IDWriteFontFileLoader(IDWriteFontFileLoaderVtbl): IUnknown(IUnknownVtbl) {
|
|
fn CreateStreamFromKey(
|
|
&mut self, fontFileReferenceKey: *const ::c_void, fontFileReferenceKeySize: ::UINT32,
|
|
fontFileStream: *mut *mut IDWriteFontFileStream
|
|
) -> ::HRESULT
|
|
}}
|
|
RIDL!{interface IDWriteLocalFontFileLoader(IDWriteLocalFontFileLoaderVtbl):
|
|
IDWriteFontFileLoader(IDWriteFontFileLoaderVtbl) {
|
|
fn GetFilePathLengthFromKey(
|
|
&mut self, fontFileReferenceKey: *const ::c_void, fontFileReferenceKeySize: ::UINT32,
|
|
filePathLength: *mut ::UINT32
|
|
) -> ::HRESULT,
|
|
fn GetFilePathFromKey(
|
|
&mut self, fontFileReferenceKey: *const ::c_void, fontFileReferenceKeySize: ::UINT32,
|
|
filePath: *mut ::WCHAR,
|
|
filePathSize: ::UINT32
|
|
) -> ::HRESULT,
|
|
fn GetLastWriteTimeFromKey(
|
|
&mut self, fontFileReferenceKey: *const ::c_void, fontFileReferenceKeySize: ::UINT32,
|
|
lastWriteTime: *mut ::FILETIME
|
|
) -> ::HRESULT
|
|
}}
|
|
RIDL!{interface IDWriteFontFileStream(IDWriteFontFileStreamVtbl): IUnknown(IUnknownVtbl) {
|
|
fn ReadFileFragment(
|
|
&mut self, fragmentStart: *mut *const ::c_void, fileOffset: ::UINT64,
|
|
fragmentSize: ::UINT64, fragmentContext: *mut *mut ::c_void
|
|
) -> ::HRESULT,
|
|
fn ReleaseFileFragment(&mut self, fragmentContext: *mut ::c_void) -> (),
|
|
fn GetFileSize(&mut self, fileSize: *mut ::UINT64) -> ::HRESULT,
|
|
fn GetLastWriteTime(&mut self, lastWriteTime: *mut ::UINT64) -> ::HRESULT
|
|
}}
|
|
RIDL!{interface IDWriteFontFile(IDWriteFontFileVtbl): IUnknown(IUnknownVtbl) {
|
|
fn GetReferenceKey(
|
|
&mut self, fontFileReferenceKey: *mut *const ::c_void,
|
|
fontFileReferenceKeySize: *mut ::UINT32
|
|
) -> ::HRESULT,
|
|
fn GetLoader(&mut self, fontFileLoader: *mut *mut IDWriteFontFileLoader) -> ::HRESULT,
|
|
fn Analyze(
|
|
&mut self, 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.0,
|
|
DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL = DWRITE_RENDERING_MODE_GDI_NATURAL.0,
|
|
DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL = DWRITE_RENDERING_MODE_NATURAL.0,
|
|
DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC = DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC.0,
|
|
}}
|
|
STRUCT!{struct DWRITE_MATRIX {
|
|
m11: ::FLOAT,
|
|
m12: ::FLOAT,
|
|
m21: ::FLOAT,
|
|
m22: ::FLOAT,
|
|
dx: ::FLOAT,
|
|
dy: ::FLOAT,
|
|
}}
|
|
RIDL!{interface IDWriteRenderingParams(IDWriteRenderingParamsVtbl): IUnknown(IUnknownVtbl) {
|
|
fn GetGamma(&mut self) -> ::FLOAT,
|
|
fn GetEnhancedContrast(&mut self) -> ::FLOAT,
|
|
fn GetClearTypeLevel(&mut self) -> ::FLOAT,
|
|
fn GetPixelGeometry(&mut self) -> DWRITE_PIXEL_GEOMETRY,
|
|
fn GetRenderingMode(&mut self) -> DWRITE_RENDERING_MODE
|
|
}}
|
|
pub type IDWriteGeometrySink = ::ID2D1SimplifiedGeometrySink;
|
|
RIDL!{interface IDWriteFontFace(IDWriteFontFaceVtbl): IUnknown(IUnknownVtbl) {
|
|
fn GetType(&mut self) -> DWRITE_FONT_FACE_TYPE,
|
|
fn GetFiles(
|
|
&mut self, numberOfFiles: *mut ::UINT32, fontFiles: *mut *mut IDWriteFontFile
|
|
) -> ::HRESULT,
|
|
fn GetIndex(&mut self) -> ::UINT32,
|
|
fn GetSimulations(&mut self) -> DWRITE_FONT_SIMULATIONS,
|
|
fn IsSymbolFont(&mut self) -> ::BOOL,
|
|
fn GetMetrics(&mut self, fontFaceMetrics: *mut DWRITE_FONT_METRICS) -> (),
|
|
fn GetGlyphCount(&mut self) -> ::UINT16,
|
|
fn GetDesignGlyphMetrics(
|
|
&mut self, glyphIndices: *const ::UINT16, glyphCount: ::UINT32,
|
|
glyphMetrics: *mut DWRITE_GLYPH_METRICS, isSideways: ::BOOL
|
|
) -> ::HRESULT,
|
|
fn GetGlyphIndices(
|
|
&mut self, codePoints: *const ::UINT32, codePointCount: ::UINT32,
|
|
glyphIndices: *mut ::UINT16
|
|
) -> ::HRESULT,
|
|
fn TryGetFontTable(
|
|
&mut self, openTypeTableTag: ::UINT32, tableData: *mut *const ::c_void,
|
|
tableSize: *mut ::UINT32, tableContext: *mut *mut ::c_void, exists: *mut ::BOOL
|
|
) -> ::HRESULT,
|
|
fn ReleaseFontTable(
|
|
&mut self, tableContext: *mut ::c_void
|
|
) -> ::HRESULT,
|
|
fn GetGlyphRunOutline(
|
|
&mut self, 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(
|
|
&mut self, emSize: ::FLOAT, pixelsPerDip: ::FLOAT, measuringMode: ::DWRITE_MEASURING_MODE,
|
|
renderingParams: *mut IDWriteRenderingParams, renderingMode: *mut DWRITE_RENDERING_MODE
|
|
) -> ::HRESULT,
|
|
fn GetGdiCompatibleMetrics(
|
|
&mut self, emSize: ::FLOAT, pixelsPerDip: ::FLOAT, transform: *const DWRITE_MATRIX,
|
|
fontFaceMetrics: *mut DWRITE_FONT_METRICS
|
|
) -> ::HRESULT,
|
|
fn GetGdiCompatibleGlyphMetrics(
|
|
&mut self, enSize: ::FLOAT, pixelsPerDip: ::FLOAT, transform: *const DWRITE_MATRIX,
|
|
useGdiNatrual: ::BOOL, glyphIndices: *const ::UINT16, glyphCount: ::UINT32,
|
|
glyphMetrics: *mut DWRITE_GLYPH_METRICS, isSideways: ::BOOL
|
|
) -> ::HRESULT
|
|
}}
|
|
RIDL!{interface IDWriteFontCollectionLoader(IDWriteFontCollectionLoaderVtbl):
|
|
IUnknown(IUnknownVtbl) {
|
|
fn CreateEnumeratorFromKey(
|
|
&mut self, factory: *mut IDWriteFactory, collectionKey: *const ::c_void,
|
|
collectionKeySize: ::UINT32, fontFileEnumerator: *mut *mut IDWriteFontFileEnumerator
|
|
) -> ::HRESULT
|
|
}}
|
|
RIDL!{interface IDWriteFontFileEnumerator(IDWriteFontFileEnumeratorVtbl): IUnknown(IUnknownVtbl) {
|
|
fn MoveNext(&mut self, hasCurrentFile: *mut ::BOOL) -> ::HRESULT,
|
|
fn GetCurrentFontFile(&mut self, fontFile: *mut *mut IDWriteFontFile) -> ::HRESULT
|
|
}}
|
|
RIDL!{interface IDWriteLocalizedStrings(IDWriteLocalizedStringsVtbl): IUnknown(IUnknownVtbl) {
|
|
fn GetCount(&mut self) -> ::UINT32,
|
|
fn FindLocaleName(
|
|
&mut self, localeName: *const ::WCHAR, index: *mut ::UINT32, exists: *mut ::BOOL
|
|
) -> ::HRESULT,
|
|
fn GetLocaleNameLength(&mut self, index: ::UINT32, length: *mut ::UINT32) -> ::HRESULT,
|
|
fn GetLocaleName(
|
|
&mut self, index: ::UINT32, localeName: *mut ::WCHAR, size: ::UINT32
|
|
) -> ::HRESULT,
|
|
fn GetStringLength(&mut self, index: ::UINT32, length: *mut ::UINT32) -> ::HRESULT,
|
|
fn GetString(
|
|
&mut self, index: ::UINT32, stringBuffer: *mut ::WCHAR, size: ::UINT32
|
|
) -> ::HRESULT
|
|
}}
|
|
RIDL!{interface IDWriteFontCollection(IDWriteFontCollectionVtbl): IUnknown(IUnknownVtbl) {
|
|
fn GetFontFamilyCount(&mut self) -> ::UINT32,
|
|
fn GetFontFamily(
|
|
&mut self, index: ::UINT32, fontFamily: *mut *mut IDWriteFontFamily
|
|
) -> ::HRESULT,
|
|
fn FindFamilyName(
|
|
&mut self, familyName: *const ::WCHAR, index: *mut ::UINT32, exists: *mut ::BOOL
|
|
) -> ::HRESULT,
|
|
fn GetFontFromFontFace(
|
|
&mut self, fontFace: *mut IDWriteFontFace, font: *mut *mut IDWriteFont
|
|
) -> ::HRESULT
|
|
}}
|
|
RIDL!{interface IDWriteFontList(IDWriteFontListVtbl): IUnknown(IUnknownVtbl) {
|
|
fn GetFontCollection(&mut self, fontCollection: *mut *mut IDWriteFontCollection) -> ::HRESULT,
|
|
fn GetFontCount(&mut self) -> ::UINT32,
|
|
fn GetFont(&mut self, index: ::UINT32, font: *mut *mut IDWriteFont) -> ::HRESULT
|
|
}}
|
|
RIDL!{interface IDWriteFontFamily(IDWriteFontFamilyVtbl): IDWriteFontList(IDWriteFontListVtbl) {
|
|
fn GetFamilyNames(&mut self, names: *mut *mut IDWriteLocalizedStrings) -> ::HRESULT,
|
|
fn GetFirstMatchingFont(
|
|
&mut self, weight: DWRITE_FONT_WEIGHT, stretch: DWRITE_FONT_STRETCH,
|
|
style: DWRITE_FONT_STYLE, matchingFont: *mut *mut IDWriteFont
|
|
) -> ::HRESULT,
|
|
fn GetMatchingFonts(
|
|
&mut self, weight: DWRITE_FONT_WEIGHT, stretch: DWRITE_FONT_STRETCH,
|
|
style: DWRITE_FONT_STYLE, matchingFonts: *mut *mut IDWriteFontList
|
|
) -> ::HRESULT
|
|
}}
|
|
RIDL!{interface IDWriteFont(IDWriteFontVtbl): IUnknown(IUnknownVtbl) {
|
|
fn GetFontFamily(&mut self, fontFamily: *mut *mut IDWriteFontFamily) -> ::HRESULT,
|
|
fn GetWeight(&mut self) -> DWRITE_FONT_WEIGHT,
|
|
fn GetStretch(&mut self) -> DWRITE_FONT_STRETCH,
|
|
fn GetStyle(&mut self) -> DWRITE_FONT_STYLE,
|
|
fn IsSymbolFont(&mut self) -> ::BOOL,
|
|
fn GetFaceNames(&mut self, names: *mut *mut IDWriteLocalizedStrings) -> ::HRESULT,
|
|
fn GetInformationalStrings(
|
|
&mut self, informationalStringId: DWRITE_INFORMATIONAL_STRING_ID,
|
|
informationalStrings: *mut *mut IDWriteLocalizedStrings, exists: *mut ::BOOL
|
|
) -> ::HRESULT,
|
|
fn GetSimulations(&mut self) -> DWRITE_FONT_SIMULATIONS,
|
|
fn GetMetrics(&mut self, fontMetrics: *mut DWRITE_FONT_METRICS) -> (),
|
|
fn HasCharacter(&mut self, unicodeValue: ::UINT32, exists: *mut ::BOOL) -> ::HRESULT,
|
|
fn CreateFontFace(&mut self, 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!{interface IDWriteTextFormat(IDWriteTextFormatVtbl): IUnknown(IUnknownVtbl) {
|
|
fn SetTextAlignment(&mut self, textAlignment: DWRITE_TEXT_ALIGNMENT) -> ::HRESULT,
|
|
fn SetParagraphAlignment(
|
|
&mut self, paragraphAlignment: DWRITE_PARAGRAPH_ALIGNMENT
|
|
) -> ::HRESULT,
|
|
fn SetWordWrapping(&mut self, wordWrapping: DWRITE_WORD_WRAPPING) -> ::HRESULT,
|
|
fn SetReadingDirection(&mut self, readingDirection: DWRITE_READING_DIRECTION) -> ::HRESULT,
|
|
fn SetFlowDirection(&mut self, flowDirection: DWRITE_FLOW_DIRECTION) -> ::HRESULT,
|
|
fn SetIncrementalTabStop(&mut self, incrementalTabStop: ::FLOAT) -> ::HRESULT,
|
|
fn SetTrimming(
|
|
&mut self, trimmingOptions: *const DWRITE_TRIMMING, trimmingSign: *mut IDWriteInlineObject
|
|
) -> ::HRESULT,
|
|
fn SetLineSpacing(
|
|
&mut self, lineSpacingMethod: DWRITE_LINE_SPACING_METHOD, lineSpacing: ::FLOAT,
|
|
baseLine: ::FLOAT
|
|
) -> ::HRESULT,
|
|
fn GetTextAlignment(&mut self) -> DWRITE_TEXT_ALIGNMENT,
|
|
fn GetParagraphAlignment(&mut self) -> DWRITE_PARAGRAPH_ALIGNMENT,
|
|
fn GetWordWrapping(&mut self) -> DWRITE_WORD_WRAPPING,
|
|
fn GetReadingDirection(&mut self) -> DWRITE_READING_DIRECTION,
|
|
fn GetFlowDirection(&mut self) -> DWRITE_FLOW_DIRECTION,
|
|
fn GetIncrementalTabStop(&mut self) -> ::FLOAT,
|
|
fn GetTrimming(
|
|
&mut self, trimmingOptions: *mut DWRITE_TRIMMING,
|
|
trimmingSign: *mut *mut IDWriteInlineObject
|
|
) -> ::HRESULT,
|
|
fn GetLineSpacing(
|
|
&mut self, lineSpacingMethod: *mut DWRITE_LINE_SPACING_METHOD, lineSpacing: *mut ::FLOAT,
|
|
baseline: *mut ::FLOAT
|
|
) -> ::HRESULT,
|
|
fn GetFontCollection(&mut self, fontCollection: *mut *mut IDWriteFontCollection) -> ::HRESULT,
|
|
fn GetFontFamilyNameLength(&mut self) -> ::UINT32,
|
|
fn GetFontFamilyName(&mut self, fontFamilyName: *mut ::WCHAR, nameSize: ::UINT32) -> ::HRESULT,
|
|
fn GetFontWeight(&mut self) -> DWRITE_FONT_WEIGHT,
|
|
fn GetFontStyle(&mut self) -> DWRITE_FONT_STYLE,
|
|
fn GetFontStretch(&mut self) -> DWRITE_FONT_STRETCH,
|
|
fn GetFontSize(&mut self) -> ::FLOAT,
|
|
fn GetLocaleNameLength(&mut self) -> ::UINT32,
|
|
fn GetLocaleName(&mut self, localeName: *mut ::WCHAR, nameSize: ::UINT32) -> ::HRESULT
|
|
}}
|
|
RIDL!{interface IDWriteTypography(IDWriteTypographyVtbl): IUnknown(IUnknownVtbl) {
|
|
fn AddFontFeature(&mut self, fontFeature: DWRITE_FONT_FEATURE) -> ::HRESULT,
|
|
fn GetFontFeatureCount(&mut self) -> ::UINT32,
|
|
fn GetFontFeature(
|
|
&mut self, fontFeatureIndex: ::UINT32, fontFeature: *mut DWRITE_FONT_FEATURE
|
|
) -> ::HRESULT
|
|
}}
|
|
FLAGS!{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!{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!{interface IDWriteTextAnalysisSource(IDWriteTextAnalysisSourceVtbl): IUnknown(IUnknownVtbl) {
|
|
fn GetTextAtPosition(
|
|
&mut self, textPosition: ::UINT32, textString: *mut *const ::WCHAR,
|
|
textLength: *mut ::UINT32
|
|
) -> ::HRESULT,
|
|
fn GetTextBeforePosition(
|
|
&mut self, textPosition: ::UINT32, textString: *mut *const ::WCHAR,
|
|
textLength: *mut ::UINT32
|
|
) -> ::HRESULT,
|
|
fn GetParagraphReadingDirection(&mut self) -> DWRITE_READING_DIRECTION,
|
|
fn GetLocaleName(
|
|
&mut self, textPosition: ::UINT32, textLength: *mut ::UINT32,
|
|
localeName: *mut *const ::WCHAR
|
|
) -> ::HRESULT,
|
|
fn GetNumberSubstitution(
|
|
&mut self, textPosition: ::UINT32, textLength: *mut ::UINT32,
|
|
numberSubstitution: *mut *mut IDWriteNumberSubstitution
|
|
) -> ::HRESULT
|
|
}}
|
|
RIDL!{interface IDWriteTextAnalysisSink(IDWriteTextAnalysisSinkVtbl): IUnknown(IUnknownVtbl) {
|
|
fn SetScriptAnalysis(
|
|
&mut self, textPosition: ::UINT32, textLength: ::UINT32,
|
|
scriptAnalysis: *const DWRITE_SCRIPT_ANALYSIS
|
|
) -> ::HRESULT,
|
|
fn SetLineBreakpoints(
|
|
&mut self, textPosition: ::UINT32, textLength: ::UINT32,
|
|
lineBreakpoints: *const DWRITE_LINE_BREAKPOINT
|
|
) -> ::HRESULT,
|
|
fn SetBidiLevel(
|
|
&mut self, textPosition: ::UINT32, textLength: ::UINT32, explicitLevel: ::UINT8,
|
|
resolvedLevel: ::UINT8
|
|
) -> ::HRESULT,
|
|
fn SetNumberSubstitution(
|
|
&mut self, textPosition: ::UINT32, textLength: ::UINT32,
|
|
numberSubstitution: *mut IDWriteNumberSubstitution
|
|
) -> ::HRESULT
|
|
}}
|
|
RIDL!{interface IDWriteTextAnalyzer(IDWriteTextAnalyzerVtbl): IUnknown(IUnknownVtbl) {
|
|
fn AnalyzeScript(
|
|
&mut self, analysisSource: *mut IDWriteTextAnalysisSource, textPosition: ::UINT32,
|
|
textLength: ::UINT32, analysisSink: *mut IDWriteTextAnalysisSink
|
|
) -> ::HRESULT,
|
|
fn AnalyzeBidi(
|
|
&mut self, analysisSource: *mut IDWriteTextAnalysisSource, textPosition: ::UINT32,
|
|
textLength: ::UINT32, analysisSink: *mut IDWriteTextAnalysisSink
|
|
) -> ::HRESULT,
|
|
fn AnalyzeNumberSubstitution(
|
|
&mut self, analysisSource: *mut IDWriteTextAnalysisSource, textPosition: ::UINT32,
|
|
textLength: ::UINT32, analysisSink: *mut IDWriteTextAnalysisSink
|
|
) -> ::HRESULT,
|
|
fn AnalyzeLineBreakpoints(
|
|
&mut self, analysisSource: *mut IDWriteTextAnalysisSource, textPosition: ::UINT32,
|
|
textLength: ::UINT32, analysisSink: *mut IDWriteTextAnalysisSink
|
|
) -> ::HRESULT,
|
|
fn GetGlyphs(
|
|
&mut self, 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(
|
|
&mut self, 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(
|
|
&mut self, 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!{interface IDWriteInlineObject(IDWriteInlineObjectVtbl): IUnknown(IUnknownVtbl) {
|
|
fn Draw(
|
|
&mut self, clientDrawingContext: *mut ::c_void, renderer: *mut IDWriteTextRenderer,
|
|
originX: ::FLOAT, originY: ::FLOAT, isSideways: ::BOOL, isRightToLeft: ::BOOL,
|
|
clientDrawingEffect: *mut ::IUnknown
|
|
) -> ::HRESULT,
|
|
fn GetMetrics(&mut self, metrics: *mut DWRITE_INLINE_OBJECT_METRICS) -> ::HRESULT,
|
|
fn GetOverhangMetrics(&mut self, overhangs: *mut DWRITE_OVERHANG_METRICS) -> ::HRESULT,
|
|
fn GetBreakConditions(
|
|
&mut self, breakConditionBefore: *mut DWRITE_BREAK_CONDITION,
|
|
breakConditionAfter: *mut DWRITE_BREAK_CONDITION
|
|
) -> ::HRESULT
|
|
}}
|
|
RIDL!{interface IDWritePixelSnapping(IDWritePixelSnappingVtbl): IUnknown(IUnknownVtbl) {
|
|
fn IsPixelSnappingDisabled(
|
|
&mut self, clientDrawingContext: *mut ::c_void, isDisabled: *mut ::BOOL
|
|
) -> ::HRESULT,
|
|
fn GetCurrentTransform(
|
|
&mut self, clientDrawingContext: *mut ::c_void, transform: *mut DWRITE_MATRIX
|
|
) -> ::HRESULT,
|
|
fn GetPixelsPerDip(
|
|
&mut self, clientDrawingContext: *mut ::c_void, pixelsPerDip: *mut ::FLOAT
|
|
) -> ::HRESULT
|
|
}}
|
|
RIDL!{interface IDWriteTextRenderer(IDWriteTextRendererVtbl):
|
|
IDWritePixelSnapping(IDWritePixelSnappingVtbl) {
|
|
fn DrawGlyphRun(
|
|
&mut self, 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(
|
|
&mut self, clientDrawingContext: *mut ::c_void, baselineOriginX: ::FLOAT,
|
|
baselineOriginY: ::FLOAT, underline: *const DWRITE_UNDERLINE,
|
|
clientDrawingEffect: *mut ::IUnknown
|
|
) -> ::HRESULT,
|
|
fn DrawStrikethrough(
|
|
&mut self, clientDrawingContext: *mut ::c_void, baselineOriginX: ::FLOAT,
|
|
baselineOriginY: ::FLOAT, strikethrough: *const DWRITE_STRIKETHROUGH,
|
|
clientDrawingEffect: *mut ::IUnknown
|
|
) -> ::HRESULT,
|
|
fn DrawInlineObject(
|
|
&mut self, clientDrawingContext: *mut ::c_void, baselineOriginX: ::FLOAT,
|
|
baselineOriginY: ::FLOAT, inlineObject: *mut IDWriteInlineObject,
|
|
isSideways: ::BOOL, isRightToLeft: ::BOOL, clientDrawingEffect: *mut ::IUnknown
|
|
) -> ::HRESULT
|
|
}}
|
|
RIDL!{interface IDWriteTextLayout(IDWriteTextLayoutVtbl):
|
|
IDWriteTextFormat(IDWriteTextFormatVtbl) {
|
|
fn SetMaxWidth(&mut self, maxWidth: ::FLOAT) -> ::HRESULT,
|
|
fn SetMaxHeight(&mut self, maxHeight: ::FLOAT) -> ::HRESULT,
|
|
fn SetFontCollection(
|
|
&mut self, fontCollection: *mut IDWriteFontCollection, textRange: DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn SetFontFamilyName(
|
|
&mut self, fontFamilyName: *const ::WCHAR, textRange: DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn SetFontWeight(
|
|
&mut self, fontWeight: DWRITE_FONT_WEIGHT, textRange: DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn SetFontStyle(
|
|
&mut self, fontStyle: DWRITE_FONT_STYLE, textRange: DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn SetFontStretch(
|
|
&mut self, fontStretch: DWRITE_FONT_STRETCH, textRange: DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn SetFontSize(&mut self, fontSize: ::FLOAT, textRange: DWRITE_TEXT_RANGE) -> ::HRESULT,
|
|
fn SetUnderline(&mut self, hasUnderline: ::BOOL, textRange: DWRITE_TEXT_RANGE) -> ::HRESULT,
|
|
fn SetStrikethrough(
|
|
&mut self, hasStrikethrough: ::BOOL, textRange: DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn SetDrawingEffect(
|
|
&mut self, drawingEffect: *mut ::IUnknown, textRange: DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn SetInlineObject(
|
|
&mut self, inlineObject: *mut IDWriteInlineObject, textRange: DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn SetTypography(
|
|
&mut self, typography: *mut IDWriteTypography, textRange: DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn SetLocaleName(
|
|
&mut self, localeName: *const ::WCHAR, textRange: DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn GetMaxWidth(&mut self) -> ::FLOAT,
|
|
fn GetMaxHeight(&mut self) -> ::FLOAT,
|
|
fn GetFontCollection(
|
|
&mut self, currentPosition: ::UINT32, fontCollection: *mut *mut IDWriteFontCollection,
|
|
textRange: *mut DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn GetFontFamilyNameLength(
|
|
&mut self, currentPosition: ::UINT32, nameLength: *mut ::UINT32,
|
|
textRange: *mut DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn GetFontFamilyName(
|
|
&mut self, currentPosition: ::UINT32, fontFamilyName: *mut ::WCHAR,
|
|
nameSize: ::UINT32, textRange: *mut DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn GetFontWeight(
|
|
&mut self, currentPosition: ::UINT32, fontWeight: *mut DWRITE_FONT_WEIGHT,
|
|
textRange: *mut DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn GetFontStyle(
|
|
&mut self, currentPosition: ::UINT32, fontStyle: *mut DWRITE_FONT_STYLE,
|
|
textRange: *mut DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn GetFontStretch(
|
|
&mut self, currentPosition: ::UINT32, fontStretch: *mut DWRITE_FONT_STRETCH,
|
|
textRange: *mut DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn GetFontSize(
|
|
&mut self, currentPosition: ::UINT32, fontSize: *mut ::FLOAT,
|
|
textRange: *mut DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn GetUnderline(
|
|
&mut self, currentPosition: ::UINT32, hasUnderline: *mut ::BOOL,
|
|
textRange: *mut DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn GetStrikethrough(
|
|
&mut self, currentPosition: ::UINT32, hasStrikethrough: *mut ::BOOL,
|
|
textRange: *mut DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn GetDrawingEffect(
|
|
&mut self, currentPosition: ::UINT32, drawingEffect: *mut *mut ::IUnknown,
|
|
textRange: *mut DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn GetInlineObject(
|
|
&mut self, currentPosition: ::UINT32, inlineObject: *mut *mut IDWriteInlineObject,
|
|
textRange: *mut DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn GetTypography(
|
|
&mut self, currentPosition: ::UINT32, typography: *mut *mut IDWriteTypography,
|
|
textRange: *mut DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn GetLocaleNameLength(
|
|
&mut self, currentPosition: ::UINT32, nameLength: *mut ::UINT32,
|
|
textRange: *mut DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn GetLocaleName(
|
|
&mut self, currentPosition: ::UINT32, localeName: *mut ::WCHAR, nameSize: ::UINT32,
|
|
textRange: *mut DWRITE_TEXT_RANGE
|
|
) -> ::HRESULT,
|
|
fn Draw(
|
|
&mut self, clientDrawingContext: *mut ::c_void, renderer: *mut IDWriteTextRenderer,
|
|
originX: ::FLOAT, originY: ::FLOAT
|
|
) -> ::HRESULT,
|
|
fn GetLineMetrics(
|
|
&mut self, lineMetrics: *mut DWRITE_LINE_METRICS, maxLineCount: ::UINT32,
|
|
actualLineCount: *mut ::UINT32
|
|
) -> ::HRESULT,
|
|
fn GetMetrics(&mut self, textMetrics: *mut DWRITE_TEXT_METRICS) -> ::HRESULT,
|
|
fn GetOverhangMetrics(&mut self, overhangs: *mut DWRITE_OVERHANG_METRICS) -> ::HRESULT,
|
|
fn GetClusterMetrics(
|
|
&mut self, clusterMetrics: *mut DWRITE_CLUSTER_METRICS, maxClusterCount: ::UINT32,
|
|
actualClusterCount: *mut ::UINT32
|
|
) -> ::HRESULT,
|
|
fn DetermineMinWidth(&mut self, minWidth: *mut ::FLOAT) -> ::HRESULT,
|
|
fn HitTestPoint(
|
|
&mut self, pointX: ::FLOAT, pointY: ::FLOAT, isTrailingHit: *mut ::BOOL,
|
|
isInside: *mut ::BOOL, hitTestMetrics: *mut DWRITE_HIT_TEST_METRICS
|
|
) -> ::HRESULT,
|
|
fn HitTestTextPosition(
|
|
&mut self, textPosition: ::UINT32, isTrailingHit: ::BOOL, pointX: *mut ::FLOAT,
|
|
pointY: *mut ::FLOAT, hitTestMetrics: *mut DWRITE_HIT_TEST_METRICS
|
|
) -> ::HRESULT,
|
|
fn HitTestTextRange(
|
|
&mut self, textPosition: ::UINT32, textLength: ::UINT32, originX: ::FLOAT,
|
|
originY: ::FLOAT, hitTestMetrics: *mut DWRITE_HIT_TEST_METRICS,
|
|
maxHitTestMetricsCount: ::UINT32, actualHitTestMetricsCount: *mut ::UINT32
|
|
) -> ::HRESULT
|
|
}}
|
|
RIDL!{interface IDWriteBitmapRenderTarget(IDWriteBitmapRenderTargetVtbl): IUnknown(IUnknownVtbl) {
|
|
fn DrawGlyphRun(
|
|
&mut self, baselineOriginX: ::FLOAT, baselineOriginY: ::FLOAT,
|
|
measuringMode: ::DWRITE_MEASURING_MODE, glyphRun: *const ::DWRITE_GLYPH_RUN,
|
|
renderingParams: *mut IDWriteRenderingParams, textColor: ::COLORREF,
|
|
blackBoxRect: *mut ::RECT
|
|
) -> ::HRESULT,
|
|
fn GetMemoryDC(&mut self) -> ::HDC,
|
|
fn GetPixelsPerDip(&mut self) -> ::FLOAT,
|
|
fn SetPixelsPerDip(&mut self, pixelsPerDip: ::FLOAT) -> ::HRESULT,
|
|
fn GetCurrentTransform(&mut self, transform: *mut DWRITE_MATRIX) -> ::HRESULT,
|
|
fn SetCurrentTransform(&mut self, transform: *const DWRITE_MATRIX) -> ::HRESULT,
|
|
fn GetSize(&mut self, size: *mut ::SIZE) -> ::HRESULT,
|
|
fn Resize(&mut self, width: ::UINT32, height: ::UINT32) -> ::HRESULT
|
|
}}
|
|
RIDL!{interface IDWriteGdiInterop(IDWriteGdiInteropVtbl): IUnknown(IUnknownVtbl) {
|
|
fn CreateFontFromLOGFONT(
|
|
&mut self, logFont: *const ::LOGFONTW, font: *mut *mut IDWriteFont
|
|
) -> ::HRESULT,
|
|
fn ConvertFontToLOGFONT(
|
|
&mut self, font: *mut IDWriteFont, logFont: *mut ::LOGFONTW, isSystemFont: *mut ::BOOL
|
|
) -> ::HRESULT,
|
|
fn ConvertFontFaceToLOGFONT(
|
|
&mut self, font: *mut IDWriteFontFace, logFont: *mut ::LOGFONTW
|
|
) -> ::HRESULT,
|
|
fn CreateFontFaceFromHdc(
|
|
&mut self, hdc: ::HDC, fontFace: *mut *mut IDWriteFontFace
|
|
) -> ::HRESULT,
|
|
fn CreateBitmapRenderTarget(
|
|
&mut self, 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!{interface IDWriteGlyphRunAnalysis(IDWriteGlyphRunAnalysisVtbl): IUnknown(IUnknownVtbl) {
|
|
fn GetAlphaTextureBounds(
|
|
&mut self, textureType: DWRITE_TEXTURE_TYPE, textureBounds: *mut ::RECT
|
|
) -> ::HRESULT,
|
|
fn CreateAlphaTexture(
|
|
&mut self, textureType: DWRITE_TEXTURE_TYPE, textureBounds: *const ::RECT,
|
|
alphaValues: *mut ::BYTE, bufferSize: ::UINT32
|
|
) -> ::HRESULT,
|
|
fn GetAlphaBlendParams(
|
|
&mut self, renderingParams: *mut IDWriteRenderingParams, blendGamma: *mut ::FLOAT,
|
|
blendEnhancedContrast: *mut ::FLOAT, blendClearTypeLevel: *mut ::FLOAT
|
|
) -> ::HRESULT
|
|
}}
|
|
RIDL!{interface IDWriteFactory(IDWriteFactoryVtbl): IUnknown(IUnknownVtbl) {
|
|
fn GetSystemFontCollection(
|
|
&mut self, fontCollection: *mut *mut IDWriteFontCollection, checkForUpdates: ::BOOL
|
|
) -> ::HRESULT,
|
|
fn CreateCustomFontCollection(
|
|
&mut self, collectionLoader: *mut IDWriteFontCollectionLoader,
|
|
collectionKey: *const ::c_void, collectionKeySize: ::UINT32,
|
|
fontCollection: *mut *mut IDWriteFontCollection
|
|
) -> ::HRESULT,
|
|
fn RegisterFontCollectionLoader(
|
|
&mut self, fontCollectionLoader: *mut IDWriteFontCollectionLoader
|
|
) -> ::HRESULT,
|
|
fn UnregisterFontCollectionLoader(
|
|
&mut self, fontCollectionLoader: *mut IDWriteFontCollectionLoader
|
|
) -> ::HRESULT,
|
|
fn CreateFontFileReference(
|
|
&mut self, filePath: *const ::WCHAR, lastWriteTime: *const ::FILETIME,
|
|
fontFile: *mut *mut IDWriteFontFile
|
|
) -> ::HRESULT,
|
|
fn CreateCustomFontFileReference(
|
|
&mut self, fontFileReferenceKey: *const ::c_void, fontFileReferenceKeySize: ::UINT32,
|
|
fontFileLoader: *mut IDWriteFontFileLoader, fontFile: *mut *mut IDWriteFontFile
|
|
) -> ::HRESULT,
|
|
fn CreateFontFace(
|
|
&mut self, fontFaceType: DWRITE_FONT_FACE_TYPE, numberOfFiles: ::UINT32,
|
|
fontFiles: *const *mut IDWriteFontFile, faceIndex: ::UINT32,
|
|
fontFaceSimulationFlags: DWRITE_FONT_SIMULATIONS, fontFace: *mut *mut IDWriteFontFace
|
|
) -> ::HRESULT,
|
|
fn CreateRenderingParams(
|
|
&mut self, renderingParams: *mut *mut IDWriteRenderingParams
|
|
) -> ::HRESULT,
|
|
fn CreateMonitorRenderingParams(
|
|
&mut self, monitor: ::HMONITOR, renderingParams: *mut *mut IDWriteRenderingParams
|
|
) -> ::HRESULT,
|
|
fn CreateCustomRenderingParams(
|
|
&mut self, gamma: ::FLOAT, enhancedContrast: ::FLOAT, clearTypeLevel: ::FLOAT,
|
|
pixelGeometry: DWRITE_PIXEL_GEOMETRY, renderingMode: DWRITE_RENDERING_MODE,
|
|
renderingParams: *mut *mut IDWriteRenderingParams
|
|
) -> ::HRESULT,
|
|
fn RegisterFontFileLoader(
|
|
&mut self, fontFileLoader: *mut IDWriteFontFileLoader
|
|
) -> ::HRESULT,
|
|
fn UnregisterFontFileLoader(
|
|
&mut self, fontFileLoader: *mut IDWriteFontFileLoader
|
|
) -> ::HRESULT,
|
|
fn CreateTextFormat(
|
|
&mut self, 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(&mut self, typography: *mut *mut IDWriteTypography) -> ::HRESULT,
|
|
fn GetGdiInterop(&mut self, gdiInterop: *mut *mut IDWriteGdiInterop) -> ::HRESULT,
|
|
fn CreateTextLayout(
|
|
&mut self, string: *const ::WCHAR, stringLength: ::UINT32,
|
|
textFormat: *mut IDWriteTextFormat, maxWidth: ::FLOAT, maxHeight: ::FLOAT,
|
|
textLayout: *mut *mut IDWriteTextLayout
|
|
) -> ::HRESULT,
|
|
fn CreateGdiCompatibleTextLayout(
|
|
&mut self, 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(
|
|
&mut self, textFormat: *mut IDWriteTextFormat, trimmingSign: *mut *mut IDWriteInlineObject
|
|
) -> ::HRESULT,
|
|
fn CreateTextAnalyzer(&mut self, textAnalyzer: *mut *mut IDWriteTextAnalyzer) -> ::HRESULT,
|
|
fn CreateNumberSubstitution(
|
|
&mut self, substitutionMethod: DWRITE_NUMBER_SUBSTITUTION_METHOD,
|
|
localeName: *const ::WCHAR, ignoreUserOverride: ::BOOL,
|
|
numberSubstitution: *mut *mut IDWriteNumberSubstitution
|
|
) -> ::HRESULT,
|
|
fn CreateGlyphRunAnalysis(
|
|
&mut self, 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)
|
|
}
|