| // 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. |
| //! Mappings for the content of dwrite_2.h |
| use ctypes::{c_void, wchar_t}; |
| use shared::basetsd::{UINT16, UINT32, UINT8}; |
| use shared::d3d9types::D3DCOLORVALUE; |
| use shared::minwindef::{BOOL, FLOAT}; |
| use um::dcommon::DWRITE_MEASURING_MODE; |
| use um::dwrite::{ |
| DWRITE_FONT_FEATURE_TAG, DWRITE_FONT_STRETCH, DWRITE_FONT_STYLE, DWRITE_FONT_WEIGHT, |
| DWRITE_GLYPH_RUN, DWRITE_GLYPH_RUN_DESCRIPTION, DWRITE_MATRIX, DWRITE_PIXEL_GEOMETRY, |
| DWRITE_RENDERING_MODE, DWRITE_SCRIPT_ANALYSIS, DWRITE_STRIKETHROUGH, DWRITE_UNDERLINE, |
| IDWriteFont, IDWriteFontCollection, IDWriteFontFace, IDWriteGlyphRunAnalysis, |
| IDWriteInlineObject, IDWriteRenderingParams, IDWriteTextAnalysisSource, IDWriteTextFormat, |
| IDWriteTextFormatVtbl, IDWriteTextRenderer, IDWriteTextRendererVtbl, |
| }; |
| use um::dwrite_1::{ |
| DWRITE_GLYPH_ORIENTATION_ANGLE, DWRITE_OUTLINE_THRESHOLD, DWRITE_TEXT_ANTIALIAS_MODE, |
| DWRITE_UNICODE_RANGE, DWRITE_VERTICAL_GLYPH_ORIENTATION, IDWriteFactory1, |
| IDWriteFactory1Vtbl, IDWriteFont1, IDWriteFont1Vtbl, IDWriteFontFace1, IDWriteFontFace1Vtbl, |
| IDWriteRenderingParams1, IDWriteRenderingParams1Vtbl, IDWriteTextAnalyzer1, |
| IDWriteTextAnalyzer1Vtbl, IDWriteTextLayout1, IDWriteTextLayout1Vtbl, |
| }; |
| use um::unknwnbase::{IUnknown, IUnknownVtbl}; |
| use um::winnt::{HRESULT, WCHAR}; |
| ENUM!{enum DWRITE_OPTICAL_ALIGNMENT { |
| DWRITE_OPTICAL_ALIGNMENT_NONE = 0x0, // 0 |
| DWRITE_OPTICAL_ALIGNMENT_NO_SIDE_BEARINGS = 0x1, // 1 |
| }} |
| ENUM!{enum DWRITE_GRID_FIT_MODE { |
| DWRITE_GRID_FIT_MODE_DEFAULT = 0x0, // 0 |
| DWRITE_GRID_FIT_MODE_DISABLED = 0x1, // 1 |
| DWRITE_GRID_FIT_MODE_ENABLED = 0x2, // 2 |
| }} |
| STRUCT!{struct DWRITE_TEXT_METRICS1 { |
| left: FLOAT, |
| top: FLOAT, |
| width: FLOAT, |
| widthIncludingTrailingWhitespace: FLOAT, |
| height: FLOAT, |
| layoutWidth: FLOAT, |
| layoutHeight: FLOAT, |
| maxBidiReorderingDepth: UINT32, |
| lineCount: UINT32, |
| heightIncludingTrailingWhitespace: FLOAT, |
| }} |
| RIDL!{#[uuid(0xd3e0e934, 0x22a0, 0x427e, 0xaa, 0xe4, 0x7d, 0x95, 0x74, 0xb5, 0x9d, 0xb1)] |
| interface IDWriteTextRenderer1(IDWriteTextRenderer1Vtbl): |
| IDWriteTextRenderer(IDWriteTextRendererVtbl) { |
| fn DrawGlyphRun( |
| clientDrawingContext: *mut c_void, |
| baselineOriginX: FLOAT, |
| baselineOriginY: FLOAT, |
| orientationAngle: DWRITE_GLYPH_ORIENTATION_ANGLE, |
| 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, |
| orientationAngle: DWRITE_GLYPH_ORIENTATION_ANGLE, |
| underline: *const DWRITE_UNDERLINE, |
| clientDrawingEffect: *mut IUnknown, |
| ) -> HRESULT, |
| fn DrawStrikethrough( |
| clientDrawingContext: *mut c_void, |
| baselineOriginX: FLOAT, |
| baselineOriginY: FLOAT, |
| orientationAngle: DWRITE_GLYPH_ORIENTATION_ANGLE, |
| strikethrough: *const DWRITE_STRIKETHROUGH, |
| clientDrawingEffect: *mut IUnknown, |
| ) -> HRESULT, |
| fn DrawInlineObject( |
| clientDrawingContext: *mut c_void, |
| originX: FLOAT, |
| originY: FLOAT, |
| orientationAngle: DWRITE_GLYPH_ORIENTATION_ANGLE, |
| inlineObject: *mut IDWriteInlineObject, |
| isSideways: BOOL, |
| isRightToLeft: BOOL, |
| clientDrawingEffect: *mut IUnknown, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0x5f174b49, 0x0d8b, 0x4cfb, 0x8b, 0xca, 0xf1, 0xcc, 0xe9, 0xd0, 0x6c, 0x67)] |
| interface IDWriteTextFormat1(IDWriteTextFormat1Vtbl): |
| IDWriteTextFormat(IDWriteTextFormatVtbl) { |
| fn SetVerticalGlyphOrientation( |
| glyphOrientation: DWRITE_VERTICAL_GLYPH_ORIENTATION, |
| ) -> HRESULT, |
| fn GetVerticalGlyphOrientation() -> DWRITE_VERTICAL_GLYPH_ORIENTATION, |
| fn SetLastLineWrapping( |
| isLastLineWrappingEnabled: BOOL, |
| ) -> HRESULT, |
| fn GetLastLineWrapping() -> BOOL, |
| fn SetOpticalAlignment( |
| opticalAlignment: DWRITE_OPTICAL_ALIGNMENT, |
| ) -> HRESULT, |
| fn GetOpticalAlignment() -> DWRITE_OPTICAL_ALIGNMENT, |
| fn SetFontFallback( |
| fontFallback: *mut IDWriteFontFallback, |
| ) -> HRESULT, |
| fn GetFontFallback( |
| fontFallback: *mut *mut IDWriteFontFallback, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0x1093c18f, 0x8d5e, 0x43f0, 0xb0, 0x64, 0x09, 0x17, 0x31, 0x1b, 0x52, 0x5e)] |
| interface IDWriteTextLayout2(IDWriteTextLayout2Vtbl): |
| IDWriteTextLayout1(IDWriteTextLayout1Vtbl) { |
| fn GetMetrics( |
| textMetrics: *mut DWRITE_TEXT_METRICS1, |
| ) -> HRESULT, |
| fn SetVerticalGlyphOrientation( |
| glyphOrientation: DWRITE_VERTICAL_GLYPH_ORIENTATION, |
| ) -> HRESULT, |
| fn GetVerticalGlyphOrientation() -> DWRITE_VERTICAL_GLYPH_ORIENTATION, |
| fn SetLastLineWrapping( |
| isLastLineWrappingEnabled: BOOL, |
| ) -> HRESULT, |
| fn GetLastLineWrapping() -> BOOL, |
| fn SetOpticalAlignment( |
| opticalAlignment: DWRITE_OPTICAL_ALIGNMENT, |
| ) -> HRESULT, |
| fn GetOpticalAlignment() -> DWRITE_OPTICAL_ALIGNMENT, |
| fn SetFontFallback( |
| fontFallback: *mut IDWriteFontFallback, |
| ) -> HRESULT, |
| fn GetFontFallback( |
| fontFallback: *mut *mut IDWriteFontFallback, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0x553a9ff3, 0x5693, 0x4df7, 0xb5, 0x2b, 0x74, 0x80, 0x6f, 0x7f, 0x2e, 0xb9)] |
| interface IDWriteTextAnalyzer2(IDWriteTextAnalyzer2Vtbl): |
| IDWriteTextAnalyzer1(IDWriteTextAnalyzer1Vtbl) { |
| fn GetGlyphOrientationTransform( |
| glyphOrientationAngle: DWRITE_GLYPH_ORIENTATION_ANGLE, |
| isSideways: BOOL, |
| originX: FLOAT, |
| originY: FLOAT, |
| transform: *mut DWRITE_MATRIX, |
| ) -> HRESULT, |
| fn GetTypographicFeatures( |
| fontFace: *mut IDWriteFontFace, |
| scriptAnalysis: DWRITE_SCRIPT_ANALYSIS, |
| localeName: *const WCHAR, |
| maxTagCount: UINT32, |
| actualTagCount: *mut UINT32, |
| tags: *mut DWRITE_FONT_FEATURE_TAG, |
| ) -> HRESULT, |
| fn CheckTypographicFeature( |
| fontFace: *mut IDWriteFontFace, |
| scriptAnalysis: DWRITE_SCRIPT_ANALYSIS, |
| localeName: *const WCHAR, |
| featureTag: DWRITE_FONT_FEATURE_TAG, |
| glyphCount: UINT32, |
| glyphIndices: *const UINT16, |
| featureApplies: *mut UINT8, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0xefa008f9, 0xf7a1, 0x48bf, 0xb0, 0x5c, 0xf2, 0x24, 0x71, 0x3c, 0xc0, 0xff)] |
| interface IDWriteFontFallback(IDWriteFontFallbackVtbl): IUnknown(IUnknownVtbl) { |
| fn MapCharacters( |
| analysisSource: *mut IDWriteTextAnalysisSource, |
| textPosition: UINT32, |
| textLength: UINT32, |
| baseFontCollection: *mut IDWriteFontCollection, |
| baseFamilyName: *mut wchar_t, |
| baseWeight: DWRITE_FONT_WEIGHT, |
| baseStyle: DWRITE_FONT_STYLE, |
| baseStretch: DWRITE_FONT_STRETCH, |
| mappedLength: *mut UINT32, |
| mappedFont: *mut *mut IDWriteFont, |
| scale: *mut FLOAT, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0xfd882d06, 0x8aba, 0x4fb8, 0xb8, 0x49, 0x8b, 0xe8, 0xb7, 0x3e, 0x14, 0xde)] |
| interface IDWriteFontFallbackBuilder(IDWriteFontFallbackBuilderVtbl): |
| IUnknown(IUnknownVtbl) { |
| fn AddMapping( |
| ranges: *const DWRITE_UNICODE_RANGE, |
| rangesCount: UINT32, |
| targetFamilyNames: *mut *const WCHAR, |
| targetFamilyNamesCount: UINT32, |
| fontCollection: *mut IDWriteFontCollection, |
| localeName: *const WCHAR, |
| baseFamilyName: *const WCHAR, |
| scale: FLOAT, |
| ) -> HRESULT, |
| fn AddMappings( |
| fontFallback: *mut IDWriteFontFallback, |
| ) -> HRESULT, |
| fn CreateFontFallback( |
| fontFallback: *mut *mut IDWriteFontFallback, |
| ) -> HRESULT, |
| }} |
| pub type DWRITE_COLOR_F = D3DCOLORVALUE; |
| RIDL!{#[uuid(0x29748ed6, 0x8c9c, 0x4a6a, 0xbe, 0x0b, 0xd9, 0x12, 0xe8, 0x53, 0x89, 0x44)] |
| interface IDWriteFont2(IDWriteFont2Vtbl): IDWriteFont1(IDWriteFont1Vtbl) { |
| fn IsColorFont() -> BOOL, |
| }} |
| RIDL!{#[uuid(0xd8b768ff, 0x64bc, 0x4e66, 0x98, 0x2b, 0xec, 0x8e, 0x87, 0xf6, 0x93, 0xf7)] |
| interface IDWriteFontFace2(IDWriteFontFace2Vtbl): |
| IDWriteFontFace1(IDWriteFontFace1Vtbl) { |
| fn IsColorFont() -> BOOL, |
| fn GetColorPaletteCount() -> UINT32, |
| fn GetPaletteEntryCount() -> UINT32, |
| fn GetPaletteEntries( |
| colorPaletteIndex: UINT32, |
| firstEntryIndex: UINT32, |
| entryCount: UINT32, |
| paletteEntries: *mut DWRITE_COLOR_F, |
| ) -> HRESULT, |
| fn GetRecommendedRenderingMode( |
| fontEmSize: FLOAT, |
| dpiX: FLOAT, |
| dpiY: FLOAT, |
| transform: *const DWRITE_MATRIX, |
| isSideways: BOOL, |
| outlineThreshold: DWRITE_OUTLINE_THRESHOLD, |
| measuringMode: DWRITE_MEASURING_MODE, |
| renderingParams: *mut IDWriteRenderingParams, |
| renderingMode: *mut DWRITE_RENDERING_MODE, |
| gridFitMode: *mut DWRITE_GRID_FIT_MODE, |
| ) -> HRESULT, |
| }} |
| STRUCT!{struct DWRITE_COLOR_GLYPH_RUN { |
| glyphRun: DWRITE_GLYPH_RUN, |
| glyphRunDescription: *mut DWRITE_GLYPH_RUN_DESCRIPTION, |
| baselineOriginX: FLOAT, |
| baselineOriginY: FLOAT, |
| runColor: DWRITE_COLOR_F, |
| paletteIndex: UINT16, |
| }} |
| RIDL!{#[uuid(0xd31fbe17, 0xf157, 0x41a2, 0x8d, 0x24, 0xcb, 0x77, 0x9e, 0x05, 0x60, 0xe8)] |
| interface IDWriteColorGlyphRunEnumerator(IDWriteColorGlyphRunEnumeratorVtbl): |
| IUnknown(IUnknownVtbl) { |
| fn MoveNext( |
| hasRun: *mut BOOL, |
| ) -> HRESULT, |
| fn GetCurrentRun( |
| colorGlyphRun: *mut *const DWRITE_COLOR_GLYPH_RUN, |
| ) -> HRESULT, |
| }} |
| RIDL!{#[uuid(0xf9d711c3, 0x9777, 0x40ae, 0x87, 0xe8, 0x3e, 0x5a, 0xf9, 0xbf, 0x09, 0x48)] |
| interface IDWriteRenderingParams2(IDWriteRenderingParams2Vtbl): |
| IDWriteRenderingParams1(IDWriteRenderingParams1Vtbl) { |
| fn GetGridFitMode() -> DWRITE_GRID_FIT_MODE, |
| }} |
| RIDL!{#[uuid(0x0439fc60, 0xca44, 0x4994, 0x8d, 0xee, 0x3a, 0x9a, 0xf7, 0xb7, 0x32, 0xec)] |
| interface IDWriteFactory2(IDWriteFactory2Vtbl): IDWriteFactory1(IDWriteFactory1Vtbl) { |
| fn GetSystemFontFallback( |
| fontFallback: *mut *mut IDWriteFontFallback, |
| ) -> HRESULT, |
| fn CreateFontFallbackBuilder( |
| fontFallbackBuilder: *mut *mut IDWriteFontFallbackBuilder, |
| ) -> HRESULT, |
| fn TranslateColorGlyphRun( |
| baselineOriginX: FLOAT, |
| baselineOriginY: FLOAT, |
| glyphRun: *const DWRITE_GLYPH_RUN, |
| glyphRunDescription: *const DWRITE_GLYPH_RUN_DESCRIPTION, |
| measuringMode: DWRITE_MEASURING_MODE, |
| worldToDeviceTransform: *const DWRITE_MATRIX, |
| colorPaletteIndex: UINT32, |
| colorLayers: *mut *mut IDWriteColorGlyphRunEnumerator, |
| ) -> HRESULT, |
| fn CreateCustomRenderingParams( |
| gamma: FLOAT, |
| enhancedContrast: FLOAT, |
| grayscaleEnhancedContrast: FLOAT, |
| clearTypeLevel: FLOAT, |
| pixelGeometry: DWRITE_PIXEL_GEOMETRY, |
| renderingMode: DWRITE_RENDERING_MODE, |
| gridFitMode: DWRITE_GRID_FIT_MODE, |
| renderingParams: *mut *mut IDWriteRenderingParams2, |
| ) -> HRESULT, |
| fn CreateGlyphRunAnalysis( |
| glyphRun: *const DWRITE_GLYPH_RUN, |
| transform: *const DWRITE_MATRIX, |
| renderingMode: DWRITE_RENDERING_MODE, |
| measuringMode: DWRITE_MEASURING_MODE, |
| gridFitMode: DWRITE_GRID_FIT_MODE, |
| antialiasMode: DWRITE_TEXT_ANTIALIAS_MODE, |
| baselineOriginX: FLOAT, |
| baselineOriginY: FLOAT, |
| glyphRunAnalysis: *mut *mut IDWriteGlyphRunAnalysis, |
| ) -> HRESULT, |
| }} |