]> git.proxmox.com Git - rustc.git/blob - vendor/winapi/src/um/dwrite_3.rs
New upstream version 1.41.1+dfsg1
[rustc.git] / vendor / winapi / src / um / dwrite_3.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_3.h
7 use ctypes::c_void;
8 use shared::basetsd::{UINT16, UINT32, UINT64};
9 use shared::minwindef::{BOOL, FILETIME, FLOAT};
10 use um::dcommon::{DWRITE_GLYPH_IMAGE_DATA, DWRITE_GLYPH_IMAGE_FORMATS, DWRITE_MEASURING_MODE};
11 use um::dwrite::{
12 DWRITE_FONT_SIMULATIONS, DWRITE_FONT_STRETCH, DWRITE_FONT_STYLE, DWRITE_FONT_WEIGHT,
13 DWRITE_GLYPH_RUN, DWRITE_INFORMATIONAL_STRING_ID, DWRITE_LINE_SPACING_METHOD, DWRITE_MATRIX,
14 DWRITE_PIXEL_GEOMETRY, DWRITE_RENDERING_MODE_ALIASED, DWRITE_RENDERING_MODE_DEFAULT,
15 DWRITE_RENDERING_MODE_GDI_CLASSIC, DWRITE_RENDERING_MODE_GDI_NATURAL,
16 DWRITE_RENDERING_MODE_NATURAL, DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC,
17 DWRITE_RENDERING_MODE_OUTLINE, IDWriteFont, IDWriteFontCollection, IDWriteFontCollectionVtbl,
18 IDWriteFontFace, IDWriteFontFamily, IDWriteFontFamilyVtbl, IDWriteFontFile, IDWriteFontList,
19 IDWriteFontListVtbl, IDWriteGdiInterop, IDWriteGdiInteropVtbl, IDWriteGlyphRunAnalysis,
20 IDWriteLocalizedStrings, IDWriteRenderingParams,
21 };
22 use um::dwrite_1::{DWRITE_OUTLINE_THRESHOLD, DWRITE_PANOSE, DWRITE_TEXT_ANTIALIAS_MODE};
23 use um::dwrite_2::{
24 DWRITE_GRID_FIT_MODE, IDWriteFactory2, IDWriteFactory2Vtbl, IDWriteFont2, IDWriteFont2Vtbl,
25 IDWriteFontFace2, IDWriteFontFace2Vtbl, IDWriteRenderingParams2, IDWriteRenderingParams2Vtbl,
26 IDWriteTextFormat1, IDWriteTextFormat1Vtbl, IDWriteTextLayout2, IDWriteTextLayout2Vtbl,
27 };
28 use um::unknwnbase::{IUnknown, IUnknownVtbl};
29 use um::wingdi::{FONTSIGNATURE, LOGFONTW};
30 use um::winnt::{HRESULT, WCHAR};
31 pub const DWRITE_E_REMOTEFONT: HRESULT = 0x8898500D;
32 pub const DWRITE_E_DOWNLOADCANCELLED: HRESULT = 0x8898500E;
33 pub const DWRITE_E_DOWNLOADFAILED: HRESULT = 0x8898500F;
34 pub const DWRITE_E_TOOMANYDOWNLOADS: HRESULT = 0x88985010;
35 ENUM!{enum DWRITE_FONT_PROPERTY_ID {
36 DWRITE_FONT_PROPERTY_ID_NONE,
37 DWRITE_FONT_PROPERTY_ID_FAMILY_NAME,
38 DWRITE_FONT_PROPERTY_ID_PREFERRED_FAMILY_NAME,
39 DWRITE_FONT_PROPERTY_ID_FACE_NAME,
40 DWRITE_FONT_PROPERTY_ID_FULL_NAME,
41 DWRITE_FONT_PROPERTY_ID_WIN32_FAMILY_NAME,
42 DWRITE_FONT_PROPERTY_ID_POSTSCRIPT_NAME,
43 DWRITE_FONT_PROPERTY_ID_DESIGN_SCRIPT_LANGUAGE_TAG,
44 DWRITE_FONT_PROPERTY_ID_SUPPORTED_SCRIPT_LANGUAGE_TAG,
45 DWRITE_FONT_PROPERTY_ID_SEMANTIC_TAG,
46 DWRITE_FONT_PROPERTY_ID_WEIGHT ,
47 DWRITE_FONT_PROPERTY_ID_STRETCH,
48 DWRITE_FONT_PROPERTY_ID_STYLE,
49 DWRITE_FONT_PROPERTY_ID_TOTAL,
50 }}
51 STRUCT!{struct DWRITE_FONT_PROPERTY {
52 propertyId: DWRITE_FONT_PROPERTY_ID,
53 propertyValue: *const WCHAR,
54 localeName: *const WCHAR,
55 }}
56 ENUM!{enum DWRITE_LOCALITY {
57 DWRITE_LOCALITY_REMOTE,
58 DWRITE_LOCALITY_PARTIAL,
59 DWRITE_LOCALITY_LOCAL,
60 }}
61 ENUM!{enum DWRITE_RENDERING_MODE1 {
62 DWRITE_RENDERING_MODE1_DEFAULT = DWRITE_RENDERING_MODE_DEFAULT,
63 DWRITE_RENDERING_MODE1_ALIASED = DWRITE_RENDERING_MODE_ALIASED,
64 DWRITE_RENDERING_MODE1_GDI_CLASSIC = DWRITE_RENDERING_MODE_GDI_CLASSIC,
65 DWRITE_RENDERING_MODE1_GDI_NATURAL = DWRITE_RENDERING_MODE_GDI_NATURAL,
66 DWRITE_RENDERING_MODE1_NATURAL = DWRITE_RENDERING_MODE_NATURAL,
67 DWRITE_RENDERING_MODE1_NATURAL_SYMMETRIC = DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC,
68 DWRITE_RENDERING_MODE1_OUTLINE = DWRITE_RENDERING_MODE_OUTLINE,
69 DWRITE_RENDERING_MODE1_NATURAL_SYMMETRIC_DOWNSAMPLED,
70 }}
71 RIDL!{#[uuid(0xb7924baa, 0x391b, 0x412a, 0x8c, 0x5c, 0xe4, 0x4c, 0xc2, 0xd8, 0x67, 0xdc)]
72 interface IDWriteRenderingParams3(IDWriteRenderingParams3Vtbl):
73 IDWriteRenderingParams2(IDWriteRenderingParams2Vtbl) {
74 fn GetRenderingMode1() -> DWRITE_RENDERING_MODE1,
75 }}
76 RIDL!{#[uuid(0x9a1b41c3, 0xd3bb, 0x466a, 0x87, 0xfc, 0xfe, 0x67, 0x55, 0x6a, 0x3b, 0x65)]
77 interface IDWriteFactory3(IDWriteFactory3Vtbl): IDWriteFactory2(IDWriteFactory2Vtbl) {
78 fn CreateGlyphRunAnalysis(
79 glyphRun: *const DWRITE_GLYPH_RUN,
80 transform: *const DWRITE_MATRIX,
81 renderingMode: DWRITE_RENDERING_MODE1,
82 measuringMode: DWRITE_MEASURING_MODE,
83 gridFitMode: DWRITE_GRID_FIT_MODE,
84 antialiasMode: DWRITE_TEXT_ANTIALIAS_MODE,
85 baselineOriginX: FLOAT,
86 baselineOriginY: FLOAT,
87 glyphRunAnalysis: *mut *mut IDWriteGlyphRunAnalysis,
88 ) -> HRESULT,
89 fn CreateCustomRenderingParams(
90 gamma: FLOAT,
91 enhancedContrast: FLOAT,
92 grayscaleEnhancedContrast: FLOAT,
93 clearTypeLevel: FLOAT,
94 pixelGeometry: DWRITE_PIXEL_GEOMETRY,
95 renderingMode: DWRITE_RENDERING_MODE1,
96 gridFitMode: DWRITE_GRID_FIT_MODE,
97 renderingParams: *mut *mut IDWriteRenderingParams3,
98 ) -> HRESULT,
99 fn CreateFontFaceReference_2(
100 fontFile: *mut IDWriteFontFile,
101 faceIndex: UINT32,
102 fontSimulations: DWRITE_FONT_SIMULATIONS,
103 fontFaceReference: *mut *mut IDWriteFontFaceReference,
104 ) -> HRESULT,
105 fn CreateFontFaceReference_1(
106 filePath: *const WCHAR,
107 lastWriteTime: *const FILETIME,
108 faceIndex: UINT32,
109 fontSimulations: DWRITE_FONT_SIMULATIONS,
110 fontFaceReference: *mut *mut IDWriteFontFaceReference,
111 ) -> HRESULT,
112 fn GetSystemFontSet(
113 fontSet: *mut *mut IDWriteFontSet,
114 ) -> HRESULT,
115 fn CreateFontSetBuilder(
116 fontSetBuilder: *mut *mut IDWriteFontSetBuilder,
117 ) -> HRESULT,
118 fn CreateFontCollectionFromFontSet(
119 fontSet: *mut IDWriteFontSet,
120 fontCollection: *mut *mut IDWriteFontCollection1,
121 ) -> HRESULT,
122 fn GetSystemFontCollection(
123 includeDownloadableFonts: BOOL,
124 fontCollection: *mut *mut IDWriteFontCollection1,
125 checkForUpdates: BOOL,
126 ) -> HRESULT,
127 fn GetFontDownloadQueue(
128 fontDownloadQueue: *mut *mut IDWriteFontDownloadQueue,
129 ) -> HRESULT,
130 }}
131 RIDL!{#[uuid(0x53585141, 0xd9f8, 0x4095, 0x83, 0x21, 0xd7, 0x3c, 0xf6, 0xbd, 0x11, 0x6b)]
132 interface IDWriteFontSet(IDWriteFontSetVtbl): IUnknown(IUnknownVtbl) {
133 fn GetFontCount() -> UINT32,
134 fn GetFontFaceReference(
135 listIndex: UINT32,
136 fontFaceReference: *mut *mut IDWriteFontFaceReference,
137 ) -> HRESULT,
138 fn FindFontFaceReference(
139 fontFaceReference: *mut IDWriteFontFaceReference,
140 listIndex: *mut UINT32,
141 exists: *mut BOOL,
142 ) -> HRESULT,
143 fn FindFontFace(
144 fontFace: *mut IDWriteFontFace,
145 listIndex: *mut UINT32,
146 exists: *mut BOOL,
147 ) -> HRESULT,
148 fn GetPropertyValues_3(
149 propertyID: DWRITE_FONT_PROPERTY_ID,
150 values: *mut *mut IDWriteStringList,
151 ) -> HRESULT,
152 fn GetPropertyValues_2(
153 propertyID: DWRITE_FONT_PROPERTY_ID,
154 preferredLocaleNames: *const WCHAR,
155 values: *mut *mut IDWriteStringList,
156 ) -> HRESULT,
157 fn GetPropertyValues_1(
158 listIndex: UINT32,
159 propertyId: DWRITE_FONT_PROPERTY_ID,
160 exists: *mut BOOL,
161 values: *mut *mut IDWriteLocalizedStrings,
162 ) -> HRESULT,
163 fn GetPropertyOccurrenceCount(
164 property: *const DWRITE_FONT_PROPERTY,
165 propertyOccurrenceCount: *mut UINT32,
166 ) -> HRESULT,
167 fn GetMatchingFonts_2(
168 familyName: *const WCHAR,
169 fontWeight: DWRITE_FONT_WEIGHT,
170 fontStretch: DWRITE_FONT_STRETCH,
171 fontStyle: DWRITE_FONT_STYLE,
172 filteredSet: *mut *mut IDWriteFontSet,
173 ) -> HRESULT,
174 fn GetMatchingFonts_1(
175 properties: *const DWRITE_FONT_PROPERTY,
176 propertyCount: UINT32,
177 filteredSet: *mut *mut IDWriteFontSet,
178 ) -> HRESULT,
179 }}
180 RIDL!{#[uuid(0x2f642afe, 0x9c68, 0x4f40, 0xb8, 0xbe, 0x45, 0x74, 0x01, 0xaf, 0xcb, 0x3d)]
181 interface IDWriteFontSetBuilder(IDWriteFontSetBuilderVtbl): IUnknown(IUnknownVtbl) {
182 fn AddFontFaceReference_2(
183 fontFaceReference: *mut IDWriteFontFaceReference,
184 properties: *const DWRITE_FONT_PROPERTY,
185 propertyCount: UINT32,
186 ) -> HRESULT,
187 fn AddFontFaceReference_1(
188 fontFaceReference: *mut IDWriteFontFaceReference,
189 ) -> HRESULT,
190 fn AddFontSet(
191 fontSet: *mut IDWriteFontSet,
192 ) -> HRESULT,
193 fn CreateFontSet(
194 fontSet: *mut *mut IDWriteFontSet,
195 ) -> HRESULT,
196 }}
197 RIDL!{#[uuid(0x53585141, 0xd9f8, 0x4095, 0x83, 0x21, 0xd7, 0x3c, 0xf6, 0xbd, 0x11, 0x6c)]
198 interface IDWriteFontCollection1(IDWriteFontCollection1Vtbl):
199 IDWriteFontCollection(IDWriteFontCollectionVtbl) {
200 fn GetFontSet(
201 fontSet: *mut *mut IDWriteFontSet,
202 ) -> HRESULT,
203 fn GetFontFamily(
204 index: UINT32,
205 fontFamily: *mut *mut IDWriteFontFamily1,
206 ) -> HRESULT,
207 }}
208 RIDL!{#[uuid(0xda20d8ef, 0x812a, 0x4c43, 0x98, 0x02, 0x62, 0xec, 0x4a, 0xbd, 0x7a, 0xdf)]
209 interface IDWriteFontFamily1(IDWriteFontFamily1Vtbl):
210 IDWriteFontFamily(IDWriteFontFamilyVtbl) {
211 fn GetFontLocality(
212 listIndex: UINT32,
213 ) -> DWRITE_LOCALITY,
214 fn GetFont(
215 listIndex: UINT32,
216 font: *mut *mut IDWriteFont3,
217 ) -> HRESULT,
218 fn GetFontFaceReference(
219 listIndex: UINT32,
220 fontFaceReference: *mut *mut IDWriteFontFaceReference,
221 ) -> HRESULT,
222 }}
223 RIDL!{#[uuid(0xda20d8ef, 0x812a, 0x4c43, 0x98, 0x02, 0x62, 0xec, 0x4a, 0xbd, 0x7a, 0xde)]
224 interface IDWriteFontList1(IDWriteFontList1Vtbl): IDWriteFontList(IDWriteFontListVtbl) {
225 fn GetFontLocality(
226 listIndex: UINT32,
227 ) -> DWRITE_LOCALITY,
228 fn GetFont(
229 listIndex: UINT32,
230 font: *mut *mut IDWriteFont3,
231 ) -> HRESULT,
232 fn GetFontFaceReference(
233 listIndex: UINT32,
234 fontFaceReference: *mut *mut IDWriteFontFaceReference,
235 ) -> HRESULT,
236 }}
237 RIDL!{#[uuid(0x5e7fa7ca, 0xdde3, 0x424c, 0x89, 0xf0, 0x9f, 0xcd, 0x6f, 0xed, 0x58, 0xcd)]
238 interface IDWriteFontFaceReference(IDWriteFontFaceReferenceVtbl):
239 IUnknown(IUnknownVtbl) {
240 fn CreateFontFace(
241 fontFace: *mut *mut IDWriteFontFace3,
242 ) -> HRESULT,
243 fn CreateFontFaceWithSimulations(
244 fontFaceSimulationFlags: DWRITE_FONT_SIMULATIONS,
245 fontFace: *mut *mut IDWriteFontFace3,
246 ) -> HRESULT,
247 fn Equals(
248 fontFaceReference: *mut IDWriteFontFaceReference,
249 ) -> BOOL,
250 fn GetFontFaceIndex() -> UINT32,
251 fn GetSimulations() -> DWRITE_FONT_SIMULATIONS,
252 fn GetFontFile(
253 fontFile: *mut *mut IDWriteFontFile,
254 ) -> HRESULT,
255 fn GetLocalFileSize() -> UINT64,
256 fn GetFileSize() -> UINT64,
257 fn GetFileTime(
258 lastWriteTime: *mut FILETIME,
259 ) -> HRESULT,
260 fn GetLocality() -> DWRITE_LOCALITY,
261 fn EnqueueFontDownloadRequest() -> HRESULT,
262 fn EnqueueCharacterDownloadRequest(
263 characters: *const WCHAR,
264 characterCount: UINT32,
265 ) -> HRESULT,
266 fn EnqueueGlyphDownloadRequest(
267 glyphIndices: *const UINT16,
268 glyphCount: UINT32,
269 ) -> HRESULT,
270 fn EnqueueFileFragmentDownloadRequest(
271 fileOffset: UINT64,
272 fragmentSize: UINT64,
273 ) -> HRESULT,
274 }}
275 RIDL!{#[uuid(0x29748ed6, 0x8c9c, 0x4a6a, 0xbe, 0x0b, 0xd9, 0x12, 0xe8, 0x53, 0x89, 0x44)]
276 interface IDWriteFont3(IDWriteFont3Vtbl): IDWriteFont2(IDWriteFont2Vtbl) {
277 fn CreateFontFace(
278 fontFace: *mut *mut IDWriteFontFace3,
279 ) -> HRESULT,
280 fn Equals(
281 font: *mut IDWriteFont,
282 ) -> BOOL,
283 fn GetFontFaceReference(
284 fontFaceReference: *mut *mut IDWriteFontFaceReference,
285 ) -> HRESULT,
286 fn HasCharacter(
287 unicodeValue: UINT32,
288 ) -> BOOL,
289 fn GetLocality() -> DWRITE_LOCALITY,
290 }}
291 RIDL!{#[uuid(0xd37d7598, 0x09be, 0x4222, 0xa2, 0x36, 0x20, 0x81, 0x34, 0x1c, 0xc1, 0xf2)]
292 interface IDWriteFontFace3(IDWriteFontFace3Vtbl):
293 IDWriteFontFace2(IDWriteFontFace2Vtbl) {
294 fn GetFontFaceReference(
295 fontFaceReference: *mut *mut IDWriteFontFaceReference,
296 ) -> HRESULT,
297 fn GetPanose(
298 panose: *mut DWRITE_PANOSE,
299 ) -> (),
300 fn GetWeight() -> DWRITE_FONT_WEIGHT,
301 fn GetStretch() -> DWRITE_FONT_STRETCH,
302 fn GetStyle() -> DWRITE_FONT_STYLE,
303 fn GetFamilyNames(
304 names: *mut *mut IDWriteLocalizedStrings,
305 ) -> HRESULT,
306 fn GetFaceNames(
307 names: *mut *mut IDWriteLocalizedStrings,
308 ) -> HRESULT,
309 fn GetInformationalStrings(
310 informationalStringID: DWRITE_INFORMATIONAL_STRING_ID,
311 informationalStrings: *mut *mut IDWriteLocalizedStrings,
312 exists: *mut BOOL,
313 ) -> HRESULT,
314 fn HasCharacter(
315 unicodeValue: UINT32,
316 ) -> BOOL,
317 fn GetRecommendedRenderingMode(
318 fontEmSize: FLOAT,
319 dpiX: FLOAT,
320 dpiY: FLOAT,
321 transform: *const DWRITE_MATRIX,
322 isSideways: BOOL,
323 outlineThreshold: DWRITE_OUTLINE_THRESHOLD,
324 measuringMode: DWRITE_MEASURING_MODE,
325 renderingParams: *mut IDWriteRenderingParams,
326 renderingMode: *mut DWRITE_RENDERING_MODE1,
327 gridFitMode: *mut DWRITE_GRID_FIT_MODE,
328 ) -> HRESULT,
329 fn IsCharacterLocal(
330 unicodeValue: UINT32,
331 ) -> BOOL,
332 fn IsGlyphLocal(
333 glyphId: UINT16,
334 ) -> BOOL,
335 fn AreCharactersLocal(
336 characters: *const WCHAR,
337 characterCount: UINT32,
338 enqueueIfNotLocal: BOOL,
339 isLocal: *mut BOOL,
340 ) -> HRESULT,
341 fn AreGlyphsLocal(
342 glyphIndices: *const UINT16,
343 glyphCount: UINT32,
344 enqueueIfNotLocal: BOOL,
345 isLocal: *mut BOOL,
346 ) -> HRESULT,
347 }}
348 RIDL!{#[uuid(0xcfee3140, 0x1157, 0x47ca, 0x8b, 0x85, 0x31, 0xbf, 0xcf, 0x3f, 0x2d, 0x0e)]
349 interface IDWriteStringList(IDWriteStringListVtbl): IUnknown(IUnknownVtbl) {
350 fn GetCount() -> UINT32,
351 fn GetLocaleNameLength(
352 listIndex: UINT32,
353 length: *mut UINT32,
354 ) -> HRESULT,
355 fn GetLocaleName(
356 listIndex: UINT32,
357 localeName: *mut WCHAR,
358 size: UINT32,
359 ) -> HRESULT,
360 fn GetStringLength(
361 listIndex: UINT32,
362 length: *mut UINT32,
363 ) -> HRESULT,
364 fn GetString(
365 listIndex: UINT32,
366 stringBuffer: *mut WCHAR,
367 stringBufferSize: UINT32,
368 ) -> HRESULT,
369 }}
370 RIDL!{#[uuid(0xb06fe5b9, 0x43ec, 0x4393, 0x88, 0x1b, 0xdb, 0xe4, 0xdc, 0x72, 0xfd, 0xa7)]
371 interface IDWriteFontDownloadListener(IDWriteFontDownloadListenerVtbl):
372 IUnknown(IUnknownVtbl) {
373 fn DownloadCompleted(
374 downloadQueue: *mut IDWriteFontDownloadQueue,
375 context: *mut IUnknown,
376 downloadResult: HRESULT,
377 ) -> (),
378 }}
379 RIDL!{#[uuid(0xb71e6052, 0x5aea, 0x4fa3, 0x83, 0x2e, 0xf6, 0x0d, 0x43, 0x1f, 0x7e, 0x91)]
380 interface IDWriteFontDownloadQueue(IDWriteFontDownloadQueueVtbl):
381 IUnknown(IUnknownVtbl) {
382 fn AddListener(
383 listener: *mut IDWriteFontDownloadListener,
384 token: *mut UINT32,
385 ) -> HRESULT,
386 fn RemoveListener(
387 token: UINT32,
388 ) -> HRESULT,
389 fn IsEmpty() -> BOOL,
390 fn BeginDownload(
391 context: *mut IUnknown,
392 ) -> HRESULT,
393 fn CancelDownload() -> HRESULT,
394 fn GetGenerationCount() -> UINT64,
395 }}
396 RIDL!{#[uuid(0x4556be70, 0x3abd, 0x4f70, 0x90, 0xbe, 0x42, 0x17, 0x80, 0xa6, 0xf5, 0x15)]
397 interface IDWriteGdiInterop1(IDWriteGdiInterop1Vtbl):
398 IDWriteGdiInterop(IDWriteGdiInteropVtbl) {
399 fn CreateFontFromLOGFONT(
400 logFont: *const LOGFONTW,
401 fontCollection: *mut IDWriteFontCollection,
402 font: *mut *mut IDWriteFont,
403 ) -> HRESULT,
404 fn GetFontSignature_2(
405 fontFace: *mut IDWriteFontFace,
406 fontSignature: *mut FONTSIGNATURE,
407 ) -> HRESULT,
408 fn GetFontSignature_1(
409 font: *mut IDWriteFont,
410 fontSignature: *mut FONTSIGNATURE,
411 ) -> HRESULT,
412 fn GetMatchingFontsByLOGFONT(
413 logFont: *const LOGFONTW,
414 fontSet: *mut IDWriteFontSet,
415 filteredSet: *mut *mut IDWriteFontSet,
416 ) -> HRESULT,
417 }}
418 STRUCT!{struct DWRITE_LINE_METRICS1 {
419 length: UINT32,
420 trailingWhitespaceLength: UINT32,
421 newlineLength: UINT32,
422 height: FLOAT,
423 baseline: FLOAT,
424 isTrimmed: BOOL,
425 leadingBefore: FLOAT,
426 leadingAfter: FLOAT,
427 }}
428 ENUM!{enum DWRITE_FONT_LINE_GAP_USAGE {
429 DWRITE_FONT_LINE_GAP_USAGE_DEFAULT,
430 DWRITE_FONT_LINE_GAP_USAGE_DISABLED,
431 DWRITE_FONT_LINE_GAP_USAGE_ENABLED,
432 }}
433 STRUCT!{struct DWRITE_LINE_SPACING {
434 method: DWRITE_LINE_SPACING_METHOD,
435 height: FLOAT,
436 baseline: FLOAT,
437 leadingBefore: FLOAT,
438 fontLineGapUsage: DWRITE_FONT_LINE_GAP_USAGE,
439 }}
440 RIDL!{#[uuid(0xf67e0edd, 0x9e3d, 0x4ecc, 0x8c, 0x32, 0x41, 0x83, 0x25, 0x3d, 0xfe, 0x70)]
441 interface IDWriteTextFormat2(IDWriteTextFormat2Vtbl):
442 IDWriteTextFormat1(IDWriteTextFormat1Vtbl) {
443 fn SetLineSpacing(
444 lineSpacingOptions: *const DWRITE_LINE_SPACING,
445 ) -> HRESULT,
446 fn GetLineSpacing(
447 lineSpacingOptions: *mut DWRITE_LINE_SPACING,
448 ) -> HRESULT,
449 }}
450 RIDL!{#[uuid(0x07ddcd52, 0x020e, 0x4de8, 0xac, 0x33, 0x6c, 0x95, 0x3d, 0x83, 0xf9, 0x2d)]
451 interface IDWriteTextLayout3(IDWriteTextLayout3Vtbl):
452 IDWriteTextLayout2(IDWriteTextLayout2Vtbl) {
453 fn InvalidateLayout() -> HRESULT,
454 fn SetLineSpacing(
455 lineSpacingOptions: *const DWRITE_LINE_SPACING,
456 ) -> HRESULT,
457 fn GetLineSpacing(
458 lineSpacingOptions: *mut DWRITE_LINE_SPACING,
459 ) -> HRESULT,
460 fn GetLineMetrics(
461 lineMetrics: *mut DWRITE_LINE_METRICS1,
462 maxLineCount: UINT32,
463 actualLineCount: *mut UINT32,
464 ) -> HRESULT,
465 }}
466 RIDL!{#[uuid(0x27f2a904, 0x4eb8, 0x441d, 0x96, 0x78, 0x05, 0x63, 0xf5, 0x3e, 0x3e, 0x2f)]
467 interface IDWriteFontFace4(IDWriteFontFace4Vtbl): IDWriteFontFace3(IDWriteFontFace3Vtbl) {
468 fn GetGlyphImageFormats_2(
469 glyph: UINT16,
470 ppemFirst: UINT32,
471 ppemLast: UINT32,
472 formats: *mut DWRITE_GLYPH_IMAGE_FORMATS,
473 ) -> HRESULT,
474 fn GetGlyphImageFormats_1() -> DWRITE_GLYPH_IMAGE_FORMATS,
475 fn GetGlyphImageData(
476 glyph: UINT16,
477 ppem: UINT32,
478 format: DWRITE_GLYPH_IMAGE_FORMATS,
479 data: *mut DWRITE_GLYPH_IMAGE_DATA,
480 context: *mut *mut c_void,
481 ) -> HRESULT,
482 fn ReleaseGlyphImageData(
483 context: *mut c_void,
484 ) -> (),
485 }}
486 ENUM!{enum DWRITE_FONT_AXIS_TAG {
487 DWRITE_FONT_AXIS_TAG_WEIGHT = 0x74686777,
488 DWRITE_FONT_AXIS_TAG_WIDTH = 0x68746477,
489 DWRITE_FONT_AXIS_TAG_SLANT = 0x746e6c73,
490 DWRITE_FONT_AXIS_TAG_OPTICAL_SIZE = 0x7a73706f,
491 DWRITE_FONT_AXIS_TAG_ITALIC = 0x6c617469,
492 }}
493 STRUCT!{struct DWRITE_FONT_AXIS_VALUE {
494 axisTag: DWRITE_FONT_AXIS_TAG,
495 value: FLOAT,
496 }}
497 STRUCT!{struct DWRITE_FONT_AXIS_RANGE {
498 axisTag: DWRITE_FONT_AXIS_TAG,
499 minValue: FLOAT,
500 maxValue: FLOAT,
501 }}
502 ENUM!{enum DWRITE_FONT_AXIS_ATTRIBUTES {
503 DWRITE_FONT_AXIS_ATTRIBUTES_NONE,
504 DWRITE_FONT_AXIS_ATTRIBUTES_VARIABLE,
505 DWRITE_FONT_AXIS_ATTRIBUTES_HIDDEN,
506 }}
507 RIDL!{#[uuid(0x98eff3a5, 0xb667, 0x479a, 0xb1, 0x45, 0xe2, 0xfa, 0x5b, 0x9f, 0xdc, 0x29)]
508 interface IDWriteFontFace5(IDWriteFontFace5Vtbl): IDWriteFontFace4(IDWriteFontFace4Vtbl) {
509 fn GetFontAxisValueCount() -> UINT32,
510 fn GetFontAxisValues(
511 values: *mut DWRITE_FONT_AXIS_VALUE,
512 valueCount: UINT32,
513 ) -> HRESULT,
514 fn HasVariations() -> BOOL,
515 fn GetFontResource(
516 resource: *mut *mut IDWriteFontResource,
517 ) -> HRESULT,
518 fn Equals(
519 fontFace: *mut IDWriteFontFace,
520 ) -> BOOL,
521 }}
522 RIDL!{#[uuid(0xc081fe77, 0x2fd1, 0x41ac, 0xa5, 0xa3, 0x34, 0x98, 0x3c, 0x4b, 0xa6, 0x1a)]
523 interface IDWriteFontFaceReference1(IDWriteFontFaceReference1Vtbl):
524 IDWriteFontFaceReference(IDWriteFontFaceReferenceVtbl) {
525 fn CreateFontFace(
526 fontFace: *mut *mut IDWriteFontFace5,
527 ) -> HRESULT,
528 fn GetFontAxisValueCount() -> UINT32,
529 fn GetFontAxisValues(
530 values: *mut DWRITE_FONT_AXIS_VALUE,
531 numValues: UINT32,
532 ) -> HRESULT,
533 }}
534 RIDL!{#[uuid(0x1f803a76, 0x6871, 0x48e8, 0x98, 0x7f, 0xb9, 0x75, 0x55, 0x1c, 0x50, 0xf2)]
535 interface IDWriteFontResource(IDWriteFontResourceVtbl): IUnknown(IUnknownVtbl) {
536 fn GetFontFile(
537 fontFile: *mut *mut IDWriteFontFile,
538 ) -> HRESULT,
539 fn GetFontFaceIndex() -> UINT32,
540 fn GetFontAxisCount() -> UINT32,
541 fn GetDefaultFontAxisValues(
542 values: *const DWRITE_FONT_AXIS_VALUE,
543 numValues: UINT32,
544 ) -> HRESULT,
545 fn GetFontAxisRanges(
546 ranges: *const DWRITE_FONT_AXIS_RANGE,
547 numRanges: UINT32,
548 ) -> HRESULT,
549 fn GetFontAxisAttributes(
550 axis: UINT32,
551 ) -> DWRITE_FONT_AXIS_ATTRIBUTES,
552 fn GetAxisNames(
553 axis: UINT32,
554 names: *mut *mut IDWriteLocalizedStrings,
555 ) -> HRESULT,
556 fn GetAxisValueNameCount(
557 axis: UINT32,
558 ) -> UINT32,
559 fn GetAxisValueNames(
560 axis: UINT32,
561 axisValue: UINT32,
562 axisRange: *mut DWRITE_FONT_AXIS_RANGE,
563 names: *mut *mut IDWriteLocalizedStrings,
564 ) -> HRESULT,
565 fn HasVariations() -> BOOL,
566 fn CreateFontFace(
567 simulations: DWRITE_FONT_SIMULATIONS,
568 axisValues: *const DWRITE_FONT_AXIS_VALUE,
569 numValues: UINT32,
570 fontFace: *mut *mut IDWriteFontFace5,
571 ) -> HRESULT,
572 fn CreateFontFaceReference(
573 simulations: DWRITE_FONT_SIMULATIONS,
574 axisValues: *const DWRITE_FONT_AXIS_VALUE,
575 numValues: UINT32,
576 reference: *mut *mut IDWriteFontFaceReference1,
577 ) -> HRESULT,
578 }}