1 // Licensed under the Apache License, Version 2.0 2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license 3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. 4 // All files in the project carrying such notice may not be copied, modified, or distributed 5 // except according to those terms. 6 //! Mappings for the content of dwrite_2.h 7 use ctypes::{c_void, wchar_t}; 8 use shared::basetsd::{UINT16, UINT32, UINT8}; 9 use shared::d3d9types::D3DCOLORVALUE; 10 use shared::minwindef::{BOOL, FLOAT}; 11 use um::dcommon::DWRITE_MEASURING_MODE; 12 use um::dwrite::{ 13 DWRITE_FONT_FEATURE_TAG, DWRITE_FONT_STRETCH, DWRITE_FONT_STYLE, DWRITE_FONT_WEIGHT, 14 DWRITE_GLYPH_RUN, DWRITE_GLYPH_RUN_DESCRIPTION, DWRITE_MATRIX, DWRITE_PIXEL_GEOMETRY, 15 DWRITE_RENDERING_MODE, DWRITE_SCRIPT_ANALYSIS, DWRITE_STRIKETHROUGH, DWRITE_UNDERLINE, 16 IDWriteFont, IDWriteFontCollection, IDWriteFontFace, IDWriteGlyphRunAnalysis, 17 IDWriteInlineObject, IDWriteRenderingParams, IDWriteTextAnalysisSource, IDWriteTextFormat, 18 IDWriteTextFormatVtbl, IDWriteTextRenderer, IDWriteTextRendererVtbl, 19 }; 20 use um::dwrite_1::{ 21 DWRITE_GLYPH_ORIENTATION_ANGLE, DWRITE_OUTLINE_THRESHOLD, DWRITE_TEXT_ANTIALIAS_MODE, 22 DWRITE_UNICODE_RANGE, DWRITE_VERTICAL_GLYPH_ORIENTATION, IDWriteFactory1, 23 IDWriteFactory1Vtbl, IDWriteFont1, IDWriteFont1Vtbl, IDWriteFontFace1, IDWriteFontFace1Vtbl, 24 IDWriteRenderingParams1, IDWriteRenderingParams1Vtbl, IDWriteTextAnalyzer1, 25 IDWriteTextAnalyzer1Vtbl, IDWriteTextLayout1, IDWriteTextLayout1Vtbl, 26 }; 27 use um::unknwnbase::{IUnknown, IUnknownVtbl}; 28 use um::winnt::{HRESULT, WCHAR}; 29 ENUM!{enum DWRITE_OPTICAL_ALIGNMENT { 30 DWRITE_OPTICAL_ALIGNMENT_NONE = 0x0, // 0 31 DWRITE_OPTICAL_ALIGNMENT_NO_SIDE_BEARINGS = 0x1, // 1 32 }} 33 ENUM!{enum DWRITE_GRID_FIT_MODE { 34 DWRITE_GRID_FIT_MODE_DEFAULT = 0x0, // 0 35 DWRITE_GRID_FIT_MODE_DISABLED = 0x1, // 1 36 DWRITE_GRID_FIT_MODE_ENABLED = 0x2, // 2 37 }} 38 STRUCT!{struct DWRITE_TEXT_METRICS1 { 39 left: FLOAT, 40 top: FLOAT, 41 width: FLOAT, 42 widthIncludingTrailingWhitespace: FLOAT, 43 height: FLOAT, 44 layoutWidth: FLOAT, 45 layoutHeight: FLOAT, 46 maxBidiReorderingDepth: UINT32, 47 lineCount: UINT32, 48 heightIncludingTrailingWhitespace: FLOAT, 49 }} 50 RIDL!{#[uuid(0xd3e0e934, 0x22a0, 0x427e, 0xaa, 0xe4, 0x7d, 0x95, 0x74, 0xb5, 0x9d, 0xb1)] 51 interface IDWriteTextRenderer1(IDWriteTextRenderer1Vtbl): 52 IDWriteTextRenderer(IDWriteTextRendererVtbl) { 53 fn DrawGlyphRun( 54 clientDrawingContext: *mut c_void, 55 baselineOriginX: FLOAT, 56 baselineOriginY: FLOAT, 57 orientationAngle: DWRITE_GLYPH_ORIENTATION_ANGLE, 58 measuringMode: DWRITE_MEASURING_MODE, 59 glyphRun: *const DWRITE_GLYPH_RUN, 60 glyphRunDescription: *const DWRITE_GLYPH_RUN_DESCRIPTION, 61 clientDrawingEffect: *mut IUnknown, 62 ) -> HRESULT, 63 fn DrawUnderline( 64 clientDrawingContext: *mut c_void, 65 baselineOriginX: FLOAT, 66 baselineOriginY: FLOAT, 67 orientationAngle: DWRITE_GLYPH_ORIENTATION_ANGLE, 68 underline: *const DWRITE_UNDERLINE, 69 clientDrawingEffect: *mut IUnknown, 70 ) -> HRESULT, 71 fn DrawStrikethrough( 72 clientDrawingContext: *mut c_void, 73 baselineOriginX: FLOAT, 74 baselineOriginY: FLOAT, 75 orientationAngle: DWRITE_GLYPH_ORIENTATION_ANGLE, 76 strikethrough: *const DWRITE_STRIKETHROUGH, 77 clientDrawingEffect: *mut IUnknown, 78 ) -> HRESULT, 79 fn DrawInlineObject( 80 clientDrawingContext: *mut c_void, 81 originX: FLOAT, 82 originY: FLOAT, 83 orientationAngle: DWRITE_GLYPH_ORIENTATION_ANGLE, 84 inlineObject: *mut IDWriteInlineObject, 85 isSideways: BOOL, 86 isRightToLeft: BOOL, 87 clientDrawingEffect: *mut IUnknown, 88 ) -> HRESULT, 89 }} 90 RIDL!{#[uuid(0x5f174b49, 0x0d8b, 0x4cfb, 0x8b, 0xca, 0xf1, 0xcc, 0xe9, 0xd0, 0x6c, 0x67)] 91 interface IDWriteTextFormat1(IDWriteTextFormat1Vtbl): 92 IDWriteTextFormat(IDWriteTextFormatVtbl) { 93 fn SetVerticalGlyphOrientation( 94 glyphOrientation: DWRITE_VERTICAL_GLYPH_ORIENTATION, 95 ) -> HRESULT, 96 fn GetVerticalGlyphOrientation() -> DWRITE_VERTICAL_GLYPH_ORIENTATION, 97 fn SetLastLineWrapping( 98 isLastLineWrappingEnabled: BOOL, 99 ) -> HRESULT, 100 fn GetLastLineWrapping() -> BOOL, 101 fn SetOpticalAlignment( 102 opticalAlignment: DWRITE_OPTICAL_ALIGNMENT, 103 ) -> HRESULT, 104 fn GetOpticalAlignment() -> DWRITE_OPTICAL_ALIGNMENT, 105 fn SetFontFallback( 106 fontFallback: *mut IDWriteFontFallback, 107 ) -> HRESULT, 108 fn GetFontFallback( 109 fontFallback: *mut *mut IDWriteFontFallback, 110 ) -> HRESULT, 111 }} 112 RIDL!{#[uuid(0x1093c18f, 0x8d5e, 0x43f0, 0xb0, 0x64, 0x09, 0x17, 0x31, 0x1b, 0x52, 0x5e)] 113 interface IDWriteTextLayout2(IDWriteTextLayout2Vtbl): 114 IDWriteTextLayout1(IDWriteTextLayout1Vtbl) { 115 fn GetMetrics( 116 textMetrics: *mut DWRITE_TEXT_METRICS1, 117 ) -> HRESULT, 118 fn SetVerticalGlyphOrientation( 119 glyphOrientation: DWRITE_VERTICAL_GLYPH_ORIENTATION, 120 ) -> HRESULT, 121 fn GetVerticalGlyphOrientation() -> DWRITE_VERTICAL_GLYPH_ORIENTATION, 122 fn SetLastLineWrapping( 123 isLastLineWrappingEnabled: BOOL, 124 ) -> HRESULT, 125 fn GetLastLineWrapping() -> BOOL, 126 fn SetOpticalAlignment( 127 opticalAlignment: DWRITE_OPTICAL_ALIGNMENT, 128 ) -> HRESULT, 129 fn GetOpticalAlignment() -> DWRITE_OPTICAL_ALIGNMENT, 130 fn SetFontFallback( 131 fontFallback: *mut IDWriteFontFallback, 132 ) -> HRESULT, 133 fn GetFontFallback( 134 fontFallback: *mut *mut IDWriteFontFallback, 135 ) -> HRESULT, 136 }} 137 RIDL!{#[uuid(0x553a9ff3, 0x5693, 0x4df7, 0xb5, 0x2b, 0x74, 0x80, 0x6f, 0x7f, 0x2e, 0xb9)] 138 interface IDWriteTextAnalyzer2(IDWriteTextAnalyzer2Vtbl): 139 IDWriteTextAnalyzer1(IDWriteTextAnalyzer1Vtbl) { 140 fn GetGlyphOrientationTransform( 141 glyphOrientationAngle: DWRITE_GLYPH_ORIENTATION_ANGLE, 142 isSideways: BOOL, 143 originX: FLOAT, 144 originY: FLOAT, 145 transform: *mut DWRITE_MATRIX, 146 ) -> HRESULT, 147 fn GetTypographicFeatures( 148 fontFace: *mut IDWriteFontFace, 149 scriptAnalysis: DWRITE_SCRIPT_ANALYSIS, 150 localeName: *const WCHAR, 151 maxTagCount: UINT32, 152 actualTagCount: *mut UINT32, 153 tags: *mut DWRITE_FONT_FEATURE_TAG, 154 ) -> HRESULT, 155 fn CheckTypographicFeature( 156 fontFace: *mut IDWriteFontFace, 157 scriptAnalysis: DWRITE_SCRIPT_ANALYSIS, 158 localeName: *const WCHAR, 159 featureTag: DWRITE_FONT_FEATURE_TAG, 160 glyphCount: UINT32, 161 glyphIndices: *const UINT16, 162 featureApplies: *mut UINT8, 163 ) -> HRESULT, 164 }} 165 RIDL!{#[uuid(0xefa008f9, 0xf7a1, 0x48bf, 0xb0, 0x5c, 0xf2, 0x24, 0x71, 0x3c, 0xc0, 0xff)] 166 interface IDWriteFontFallback(IDWriteFontFallbackVtbl): IUnknown(IUnknownVtbl) { 167 fn MapCharacters( 168 analysisSource: *mut IDWriteTextAnalysisSource, 169 textPosition: UINT32, 170 textLength: UINT32, 171 baseFontCollection: *mut IDWriteFontCollection, 172 baseFamilyName: *mut wchar_t, 173 baseWeight: DWRITE_FONT_WEIGHT, 174 baseStyle: DWRITE_FONT_STYLE, 175 baseStretch: DWRITE_FONT_STRETCH, 176 mappedLength: *mut UINT32, 177 mappedFont: *mut *mut IDWriteFont, 178 scale: *mut FLOAT, 179 ) -> HRESULT, 180 }} 181 RIDL!{#[uuid(0xfd882d06, 0x8aba, 0x4fb8, 0xb8, 0x49, 0x8b, 0xe8, 0xb7, 0x3e, 0x14, 0xde)] 182 interface IDWriteFontFallbackBuilder(IDWriteFontFallbackBuilderVtbl): 183 IUnknown(IUnknownVtbl) { 184 fn AddMapping( 185 ranges: *const DWRITE_UNICODE_RANGE, 186 rangesCount: UINT32, 187 targetFamilyNames: *mut *const WCHAR, 188 targetFamilyNamesCount: UINT32, 189 fontCollection: *mut IDWriteFontCollection, 190 localeName: *const WCHAR, 191 baseFamilyName: *const WCHAR, 192 scale: FLOAT, 193 ) -> HRESULT, 194 fn AddMappings( 195 fontFallback: *mut IDWriteFontFallback, 196 ) -> HRESULT, 197 fn CreateFontFallback( 198 fontFallback: *mut *mut IDWriteFontFallback, 199 ) -> HRESULT, 200 }} 201 pub type DWRITE_COLOR_F = D3DCOLORVALUE; 202 RIDL!{#[uuid(0x29748ed6, 0x8c9c, 0x4a6a, 0xbe, 0x0b, 0xd9, 0x12, 0xe8, 0x53, 0x89, 0x44)] 203 interface IDWriteFont2(IDWriteFont2Vtbl): IDWriteFont1(IDWriteFont1Vtbl) { 204 fn IsColorFont() -> BOOL, 205 }} 206 RIDL!{#[uuid(0xd8b768ff, 0x64bc, 0x4e66, 0x98, 0x2b, 0xec, 0x8e, 0x87, 0xf6, 0x93, 0xf7)] 207 interface IDWriteFontFace2(IDWriteFontFace2Vtbl): 208 IDWriteFontFace1(IDWriteFontFace1Vtbl) { 209 fn IsColorFont() -> BOOL, 210 fn GetColorPaletteCount() -> UINT32, 211 fn GetPaletteEntryCount() -> UINT32, 212 fn GetPaletteEntries( 213 colorPaletteIndex: UINT32, 214 firstEntryIndex: UINT32, 215 entryCount: UINT32, 216 paletteEntries: *mut DWRITE_COLOR_F, 217 ) -> HRESULT, 218 fn GetRecommendedRenderingMode( 219 fontEmSize: FLOAT, 220 dpiX: FLOAT, 221 dpiY: FLOAT, 222 transform: *const DWRITE_MATRIX, 223 isSideways: BOOL, 224 outlineThreshold: DWRITE_OUTLINE_THRESHOLD, 225 measuringMode: DWRITE_MEASURING_MODE, 226 renderingParams: *mut IDWriteRenderingParams, 227 renderingMode: *mut DWRITE_RENDERING_MODE, 228 gridFitMode: *mut DWRITE_GRID_FIT_MODE, 229 ) -> HRESULT, 230 }} 231 STRUCT!{struct DWRITE_COLOR_GLYPH_RUN { 232 glyphRun: DWRITE_GLYPH_RUN, 233 glyphRunDescription: *mut DWRITE_GLYPH_RUN_DESCRIPTION, 234 baselineOriginX: FLOAT, 235 baselineOriginY: FLOAT, 236 runColor: DWRITE_COLOR_F, 237 paletteIndex: UINT16, 238 }} 239 RIDL!{#[uuid(0xd31fbe17, 0xf157, 0x41a2, 0x8d, 0x24, 0xcb, 0x77, 0x9e, 0x05, 0x60, 0xe8)] 240 interface IDWriteColorGlyphRunEnumerator(IDWriteColorGlyphRunEnumeratorVtbl): 241 IUnknown(IUnknownVtbl) { 242 fn MoveNext( 243 hasRun: *mut BOOL, 244 ) -> HRESULT, 245 fn GetCurrentRun( 246 colorGlyphRun: *mut *const DWRITE_COLOR_GLYPH_RUN, 247 ) -> HRESULT, 248 }} 249 RIDL!{#[uuid(0xf9d711c3, 0x9777, 0x40ae, 0x87, 0xe8, 0x3e, 0x5a, 0xf9, 0xbf, 0x09, 0x48)] 250 interface IDWriteRenderingParams2(IDWriteRenderingParams2Vtbl): 251 IDWriteRenderingParams1(IDWriteRenderingParams1Vtbl) { 252 fn GetGridFitMode() -> DWRITE_GRID_FIT_MODE, 253 }} 254 RIDL!{#[uuid(0x0439fc60, 0xca44, 0x4994, 0x8d, 0xee, 0x3a, 0x9a, 0xf7, 0xb7, 0x32, 0xec)] 255 interface IDWriteFactory2(IDWriteFactory2Vtbl): IDWriteFactory1(IDWriteFactory1Vtbl) { 256 fn GetSystemFontFallback( 257 fontFallback: *mut *mut IDWriteFontFallback, 258 ) -> HRESULT, 259 fn CreateFontFallbackBuilder( 260 fontFallbackBuilder: *mut *mut IDWriteFontFallbackBuilder, 261 ) -> HRESULT, 262 fn TranslateColorGlyphRun( 263 baselineOriginX: FLOAT, 264 baselineOriginY: FLOAT, 265 glyphRun: *const DWRITE_GLYPH_RUN, 266 glyphRunDescription: *const DWRITE_GLYPH_RUN_DESCRIPTION, 267 measuringMode: DWRITE_MEASURING_MODE, 268 worldToDeviceTransform: *const DWRITE_MATRIX, 269 colorPaletteIndex: UINT32, 270 colorLayers: *mut *mut IDWriteColorGlyphRunEnumerator, 271 ) -> HRESULT, 272 fn CreateCustomRenderingParams( 273 gamma: FLOAT, 274 enhancedContrast: FLOAT, 275 grayscaleEnhancedContrast: FLOAT, 276 clearTypeLevel: FLOAT, 277 pixelGeometry: DWRITE_PIXEL_GEOMETRY, 278 renderingMode: DWRITE_RENDERING_MODE, 279 gridFitMode: DWRITE_GRID_FIT_MODE, 280 renderingParams: *mut *mut IDWriteRenderingParams2, 281 ) -> HRESULT, 282 fn CreateGlyphRunAnalysis( 283 glyphRun: *const DWRITE_GLYPH_RUN, 284 transform: *const DWRITE_MATRIX, 285 renderingMode: DWRITE_RENDERING_MODE, 286 measuringMode: DWRITE_MEASURING_MODE, 287 gridFitMode: DWRITE_GRID_FIT_MODE, 288 antialiasMode: DWRITE_TEXT_ANTIALIAS_MODE, 289 baselineOriginX: FLOAT, 290 baselineOriginY: FLOAT, 291 glyphRunAnalysis: *mut *mut IDWriteGlyphRunAnalysis, 292 ) -> HRESULT, 293 }} 294