winapi_ui_automation/um/
dwrite_2.rs

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
7use ctypes::{c_void, wchar_t};
8use shared::basetsd::{UINT16, UINT32, UINT8};
9use shared::d3d9types::D3DCOLORVALUE;
10use shared::minwindef::{BOOL, FLOAT};
11use um::dcommon::DWRITE_MEASURING_MODE;
12use 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};
20use 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};
27use um::unknwnbase::{IUnknown, IUnknownVtbl};
28use um::winnt::{HRESULT, WCHAR};
29ENUM!{enum DWRITE_OPTICAL_ALIGNMENT {
30    DWRITE_OPTICAL_ALIGNMENT_NONE = 0x0, // 0
31    DWRITE_OPTICAL_ALIGNMENT_NO_SIDE_BEARINGS = 0x1, // 1
32}}
33ENUM!{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}}
38STRUCT!{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}}
50RIDL!{#[uuid(0xd3e0e934, 0x22a0, 0x427e, 0xaa, 0xe4, 0x7d, 0x95, 0x74, 0xb5, 0x9d, 0xb1)]
51interface 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}}
90RIDL!{#[uuid(0x5f174b49, 0x0d8b, 0x4cfb, 0x8b, 0xca, 0xf1, 0xcc, 0xe9, 0xd0, 0x6c, 0x67)]
91interface 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}}
112RIDL!{#[uuid(0x1093c18f, 0x8d5e, 0x43f0, 0xb0, 0x64, 0x09, 0x17, 0x31, 0x1b, 0x52, 0x5e)]
113interface 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}}
137RIDL!{#[uuid(0x553a9ff3, 0x5693, 0x4df7, 0xb5, 0x2b, 0x74, 0x80, 0x6f, 0x7f, 0x2e, 0xb9)]
138interface 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}}
165RIDL!{#[uuid(0xefa008f9, 0xf7a1, 0x48bf, 0xb0, 0x5c, 0xf2, 0x24, 0x71, 0x3c, 0xc0, 0xff)]
166interface 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}}
181RIDL!{#[uuid(0xfd882d06, 0x8aba, 0x4fb8, 0xb8, 0x49, 0x8b, 0xe8, 0xb7, 0x3e, 0x14, 0xde)]
182interface 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}}
201pub type DWRITE_COLOR_F = D3DCOLORVALUE;
202RIDL!{#[uuid(0x29748ed6, 0x8c9c, 0x4a6a, 0xbe, 0x0b, 0xd9, 0x12, 0xe8, 0x53, 0x89, 0x44)]
203interface IDWriteFont2(IDWriteFont2Vtbl): IDWriteFont1(IDWriteFont1Vtbl) {
204    fn IsColorFont() -> BOOL,
205}}
206RIDL!{#[uuid(0xd8b768ff, 0x64bc, 0x4e66, 0x98, 0x2b, 0xec, 0x8e, 0x87, 0xf6, 0x93, 0xf7)]
207interface 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}}
231STRUCT!{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}}
239RIDL!{#[uuid(0xd31fbe17, 0xf157, 0x41a2, 0x8d, 0x24, 0xcb, 0x77, 0x9e, 0x05, 0x60, 0xe8)]
240interface 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}}
249RIDL!{#[uuid(0xf9d711c3, 0x9777, 0x40ae, 0x87, 0xe8, 0x3e, 0x5a, 0xf9, 0xbf, 0x09, 0x48)]
250interface IDWriteRenderingParams2(IDWriteRenderingParams2Vtbl):
251    IDWriteRenderingParams1(IDWriteRenderingParams1Vtbl) {
252    fn GetGridFitMode() -> DWRITE_GRID_FIT_MODE,
253}}
254RIDL!{#[uuid(0x0439fc60, 0xca44, 0x4994, 0x8d, 0xee, 0x3a, 0x9a, 0xf7, 0xb7, 0x32, 0xec)]
255interface 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}}