]>
Commit | Line | Data |
---|---|---|
8bb4bdeb XL |
1 | // Copyright © 2015, Connor Hilarides |
2 | // Licensed under the MIT License <LICENSE.md> | |
3 | //! DirectX Typography Services public API definitions. | |
4 | ENUM!{enum DWRITE_FONT_FILE_TYPE { | |
5 | DWRITE_FONT_FILE_TYPE_UNKNOWN, | |
6 | DWRITE_FONT_FILE_TYPE_CFF, | |
7 | DWRITE_FONT_FILE_TYPE_TRUETYPE, | |
8 | DWRITE_FONT_FILE_TYPE_TRUETYPE_COLLECTION, | |
9 | DWRITE_FONT_FILE_TYPE_TYPE1_PFM, | |
10 | DWRITE_FONT_FILE_TYPE_TYPE1_PFB, | |
11 | DWRITE_FONT_FILE_TYPE_VECTOR, | |
12 | DWRITE_FONT_FILE_TYPE_BITMAP, | |
13 | }} | |
14 | ENUM!{enum DWRITE_FONT_FACE_TYPE { | |
15 | DWRITE_FONT_FACE_TYPE_CFF, | |
16 | DWRITE_FONT_FACE_TYPE_TRUETYPE, | |
17 | DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION, | |
18 | DWRITE_FONT_FACE_TYPE_TYPE1, | |
19 | DWRITE_FONT_FACE_TYPE_VECTOR, | |
20 | DWRITE_FONT_FACE_TYPE_BITMAP, | |
21 | DWRITE_FONT_FACE_TYPE_UNKNOWN, | |
22 | DWRITE_FONT_FACE_TYPE_RAW_CFF, | |
23 | }} | |
24 | FLAGS!{enum DWRITE_FONT_SIMULATIONS { | |
25 | DWRITE_FONT_SIMULATIONS_NONE = 0x0000, | |
26 | DWRITE_FONT_SIMULATIONS_BOLD = 0x0001, | |
27 | DWRITE_FONT_SIMULATIONS_OBLIQUE = 0x0002, | |
28 | }} | |
29 | ENUM!{enum DWRITE_FONT_WEIGHT { | |
30 | DWRITE_FONT_WEIGHT_THIN = 100, | |
31 | DWRITE_FONT_WEIGHT_EXTRA_LIGHT = 200, | |
32 | DWRITE_FONT_WEIGHT_ULTRA_LIGHT = 200, | |
33 | DWRITE_FONT_WEIGHT_LIGHT = 300, | |
34 | DWRITE_FONT_WEIGHT_SEMI_LIGHT = 350, | |
35 | DWRITE_FONT_WEIGHT_NORMAL = 400, | |
36 | DWRITE_FONT_WEIGHT_REGULAR = 400, | |
37 | DWRITE_FONT_WEIGHT_MEDIUM = 500, | |
38 | DWRITE_FONT_WEIGHT_DEMI_BOLD = 600, | |
39 | DWRITE_FONT_WEIGHT_SEMI_BOLD = 600, | |
40 | DWRITE_FONT_WEIGHT_BOLD = 700, | |
41 | DWRITE_FONT_WEIGHT_EXTRA_BOLD = 800, | |
42 | DWRITE_FONT_WEIGHT_ULTRA_BOLD = 800, | |
43 | DWRITE_FONT_WEIGHT_BLACK = 900, | |
44 | DWRITE_FONT_WEIGHT_HEAVY = 900, | |
45 | DWRITE_FONT_WEIGHT_EXTRA_BLACK = 950, | |
46 | DWRITE_FONT_WEIGHT_ULTRA_BLACK = 950, | |
47 | }} | |
48 | ENUM!{enum DWRITE_FONT_STRETCH { | |
49 | DWRITE_FONT_STRETCH_UNDEFINED = 0, | |
50 | DWRITE_FONT_STRETCH_ULTRA_CONDENSED = 1, | |
51 | DWRITE_FONT_STRETCH_EXTRA_CONDENSED = 2, | |
52 | DWRITE_FONT_STRETCH_CONDENSED = 3, | |
53 | DWRITE_FONT_STRETCH_SEMI_CONDENSED = 4, | |
54 | DWRITE_FONT_STRETCH_NORMAL = 5, | |
55 | DWRITE_FONT_STRETCH_MEDIUM = 5, | |
56 | DWRITE_FONT_STRETCH_SEMI_EXPANDED = 6, | |
57 | DWRITE_FONT_STRETCH_EXPANDED = 7, | |
58 | DWRITE_FONT_STRETCH_EXTRA_EXPANDED = 8, | |
59 | DWRITE_FONT_STRETCH_ULTRA_EXPANDED = 9, | |
60 | }} | |
61 | ENUM!{enum DWRITE_FONT_STYLE { | |
62 | DWRITE_FONT_STYLE_NORMAL, | |
63 | DWRITE_FONT_STYLE_OBLIQUE, | |
64 | DWRITE_FONT_STYLE_ITALIC, | |
65 | }} | |
66 | ENUM!{enum DWRITE_INFORMATIONAL_STRING_ID { | |
67 | DWRITE_INFORMATIONAL_STRING_NONE, | |
68 | DWRITE_INFORMATIONAL_STRING_COPYRIGHT_NOTICE, | |
69 | DWRITE_INFORMATIONAL_STRING_VERSION_STRINGS, | |
70 | DWRITE_INFORMATIONAL_STRING_TRADEMARK, | |
71 | DWRITE_INFORMATIONAL_STRING_MANUFACTURER, | |
72 | DWRITE_INFORMATIONAL_STRING_DESIGNER, | |
73 | DWRITE_INFORMATIONAL_STRING_DESIGNER_URL, | |
74 | DWRITE_INFORMATIONAL_STRING_DESCRIPTION, | |
75 | DWRITE_INFORMATIONAL_STRING_FONT_VENDOR_URL, | |
76 | DWRITE_INFORMATIONAL_STRING_LICENSE_DESCRIPTION, | |
77 | DWRITE_INFORMATIONAL_STRING_LICENSE_INFO_URL, | |
78 | DWRITE_INFORMATIONAL_STRING_WIN32_FAMILY_NAMES, | |
79 | DWRITE_INFORMATIONAL_STRING_WIN32_SUBFAMILY_NAMES, | |
80 | DWRITE_INFORMATIONAL_STRING_PREFERRED_FAMILY_NAMES, | |
81 | DWRITE_INFORMATIONAL_STRING_PREFERRED_SUBFAMILY_NAMES, | |
82 | DWRITE_INFORMATIONAL_STRING_SAMPLE_TEXT, | |
83 | DWRITE_INFORMATIONAL_STRING_FULL_NAME, | |
84 | DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_NAME, | |
85 | DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_CID_NAME, | |
86 | DWRITE_INFORMATIONAL_STRING_WWS_FAMILY_NAME, | |
87 | DWRITE_INFORMATIONAL_STRING_DESIGN_SCRIPT_LANGUAGE_TAG, | |
88 | DWRITE_INFORMATIONAL_STRING_SUPPORTED_SCRIPT_LANGUAGE_TAG, | |
89 | }} | |
90 | STRUCT!{struct DWRITE_FONT_METRICS { | |
91 | designUnitsPerEm: ::UINT16, | |
92 | ascent: ::UINT16, | |
93 | descent: ::UINT16, | |
94 | lineGap: ::INT16, | |
95 | capHeight: ::UINT16, | |
96 | xHeight: ::UINT16, | |
97 | underlinePosition: ::INT16, | |
98 | underlineThickness: ::UINT16, | |
99 | strikethroughPosition: ::INT16, | |
100 | strikethroughThickness: ::UINT16, | |
101 | }} | |
102 | STRUCT!{struct DWRITE_GLYPH_METRICS { | |
103 | leftSideBearing: ::INT32, | |
104 | advanceWidth: ::UINT32, | |
105 | rightSideBearing: ::INT32, | |
106 | topSideBearing: ::INT32, | |
107 | advanceHeight: ::UINT32, | |
108 | bottomSideBearing: ::INT32, | |
109 | verticalOriginY: ::INT32, | |
110 | }} | |
111 | STRUCT!{struct DWRITE_GLYPH_OFFSET { | |
112 | advanceOffset: ::FLOAT, | |
113 | ascenderOffset: ::FLOAT, | |
114 | }} | |
115 | ENUM!{enum DWRITE_FACTORY_TYPE { | |
116 | DWRITE_FACTORY_TYPE_SHARED, | |
117 | DWRITE_FACTORY_TYPE_ISOLATED, | |
118 | }} | |
119 | #[inline] | |
120 | pub fn DWRITE_MAKE_OPENTYPE_TAG(a: u8, b: u8, c: u8, d: u8) -> u32 { | |
121 | ((d as u32) << 24) | ((c as u32) << 16) | ((b as u32) << 8) | (a as u32) | |
122 | } | |
123 | RIDL!{interface IDWriteFontFileLoader(IDWriteFontFileLoaderVtbl): IUnknown(IUnknownVtbl) { | |
124 | fn CreateStreamFromKey( | |
125 | &mut self, fontFileReferenceKey: *const ::c_void, fontFileReferenceKeySize: ::UINT32, | |
126 | fontFileStream: *mut *mut IDWriteFontFileStream | |
127 | ) -> ::HRESULT | |
128 | }} | |
129 | RIDL!{interface IDWriteLocalFontFileLoader(IDWriteLocalFontFileLoaderVtbl): | |
130 | IDWriteFontFileLoader(IDWriteFontFileLoaderVtbl) { | |
131 | fn GetFilePathLengthFromKey( | |
132 | &mut self, fontFileReferenceKey: *const ::c_void, fontFileReferenceKeySize: ::UINT32, | |
133 | filePathLength: *mut ::UINT32 | |
134 | ) -> ::HRESULT, | |
135 | fn GetFilePathFromKey( | |
136 | &mut self, fontFileReferenceKey: *const ::c_void, fontFileReferenceKeySize: ::UINT32, | |
137 | filePath: *mut ::WCHAR, | |
138 | filePathSize: ::UINT32 | |
139 | ) -> ::HRESULT, | |
140 | fn GetLastWriteTimeFromKey( | |
141 | &mut self, fontFileReferenceKey: *const ::c_void, fontFileReferenceKeySize: ::UINT32, | |
142 | lastWriteTime: *mut ::FILETIME | |
143 | ) -> ::HRESULT | |
144 | }} | |
145 | RIDL!{interface IDWriteFontFileStream(IDWriteFontFileStreamVtbl): IUnknown(IUnknownVtbl) { | |
146 | fn ReadFileFragment( | |
147 | &mut self, fragmentStart: *mut *const ::c_void, fileOffset: ::UINT64, | |
148 | fragmentSize: ::UINT64, fragmentContext: *mut *mut ::c_void | |
149 | ) -> ::HRESULT, | |
150 | fn ReleaseFileFragment(&mut self, fragmentContext: *mut ::c_void) -> (), | |
151 | fn GetFileSize(&mut self, fileSize: *mut ::UINT64) -> ::HRESULT, | |
152 | fn GetLastWriteTime(&mut self, lastWriteTime: *mut ::UINT64) -> ::HRESULT | |
153 | }} | |
154 | RIDL!{interface IDWriteFontFile(IDWriteFontFileVtbl): IUnknown(IUnknownVtbl) { | |
155 | fn GetReferenceKey( | |
156 | &mut self, fontFileReferenceKey: *mut *const ::c_void, | |
157 | fontFileReferenceKeySize: *mut ::UINT32 | |
158 | ) -> ::HRESULT, | |
159 | fn GetLoader(&mut self, fontFileLoader: *mut *mut IDWriteFontFileLoader) -> ::HRESULT, | |
160 | fn Analyze( | |
161 | &mut self, isSupportedFontType: *mut ::BOOL, fontFileType: *mut DWRITE_FONT_FILE_TYPE, | |
162 | fontFaceType: *mut DWRITE_FONT_FACE_TYPE, numberOfFaces: *mut ::UINT32 | |
163 | ) -> ::HRESULT | |
164 | }} | |
165 | ENUM!{enum DWRITE_PIXEL_GEOMETRY { | |
166 | DWRITE_PIXEL_GEOMETRY_FLAT, | |
167 | DWRITE_PIXEL_GEOMETRY_RGB, | |
168 | DWRITE_PIXEL_GEOMETRY_BGR, | |
169 | }} | |
170 | ENUM!{enum DWRITE_RENDERING_MODE { | |
171 | DWRITE_RENDERING_MODE_DEFAULT, | |
172 | DWRITE_RENDERING_MODE_ALIASED, | |
173 | DWRITE_RENDERING_MODE_GDI_CLASSIC, | |
174 | DWRITE_RENDERING_MODE_GDI_NATURAL, | |
175 | DWRITE_RENDERING_MODE_NATURAL, | |
176 | DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC, | |
177 | DWRITE_RENDERING_MODE_OUTLINE, | |
178 | DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC = DWRITE_RENDERING_MODE_GDI_CLASSIC.0, | |
179 | DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL = DWRITE_RENDERING_MODE_GDI_NATURAL.0, | |
180 | DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL = DWRITE_RENDERING_MODE_NATURAL.0, | |
181 | DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC = DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC.0, | |
182 | }} | |
183 | STRUCT!{struct DWRITE_MATRIX { | |
184 | m11: ::FLOAT, | |
185 | m12: ::FLOAT, | |
186 | m21: ::FLOAT, | |
187 | m22: ::FLOAT, | |
188 | dx: ::FLOAT, | |
189 | dy: ::FLOAT, | |
190 | }} | |
191 | RIDL!{interface IDWriteRenderingParams(IDWriteRenderingParamsVtbl): IUnknown(IUnknownVtbl) { | |
192 | fn GetGamma(&mut self) -> ::FLOAT, | |
193 | fn GetEnhancedContrast(&mut self) -> ::FLOAT, | |
194 | fn GetClearTypeLevel(&mut self) -> ::FLOAT, | |
195 | fn GetPixelGeometry(&mut self) -> DWRITE_PIXEL_GEOMETRY, | |
196 | fn GetRenderingMode(&mut self) -> DWRITE_RENDERING_MODE | |
197 | }} | |
198 | pub type IDWriteGeometrySink = ::ID2D1SimplifiedGeometrySink; | |
199 | RIDL!{interface IDWriteFontFace(IDWriteFontFaceVtbl): IUnknown(IUnknownVtbl) { | |
200 | fn GetType(&mut self) -> DWRITE_FONT_FACE_TYPE, | |
201 | fn GetFiles( | |
202 | &mut self, numberOfFiles: *mut ::UINT32, fontFiles: *mut *mut IDWriteFontFile | |
203 | ) -> ::HRESULT, | |
204 | fn GetIndex(&mut self) -> ::UINT32, | |
205 | fn GetSimulations(&mut self) -> DWRITE_FONT_SIMULATIONS, | |
206 | fn IsSymbolFont(&mut self) -> ::BOOL, | |
207 | fn GetMetrics(&mut self, fontFaceMetrics: *mut DWRITE_FONT_METRICS) -> (), | |
208 | fn GetGlyphCount(&mut self) -> ::UINT16, | |
209 | fn GetDesignGlyphMetrics( | |
210 | &mut self, glyphIndices: *const ::UINT16, glyphCount: ::UINT32, | |
211 | glyphMetrics: *mut DWRITE_GLYPH_METRICS, isSideways: ::BOOL | |
212 | ) -> ::HRESULT, | |
213 | fn GetGlyphIndices( | |
214 | &mut self, codePoints: *const ::UINT32, codePointCount: ::UINT32, | |
215 | glyphIndices: *mut ::UINT16 | |
216 | ) -> ::HRESULT, | |
217 | fn TryGetFontTable( | |
218 | &mut self, openTypeTableTag: ::UINT32, tableData: *mut *const ::c_void, | |
219 | tableSize: *mut ::UINT32, tableContext: *mut *mut ::c_void, exists: *mut ::BOOL | |
220 | ) -> ::HRESULT, | |
221 | fn ReleaseFontTable( | |
222 | &mut self, tableContext: *mut ::c_void | |
223 | ) -> ::HRESULT, | |
224 | fn GetGlyphRunOutline( | |
225 | &mut self, emSize: ::FLOAT, glyphIndices: *const ::UINT16, glyphAdvances: *const ::FLOAT, | |
226 | glyphOffsets: *const DWRITE_GLYPH_OFFSET, glyphCount: ::UINT32, isSideways: ::BOOL, | |
227 | isRightToLeft: ::BOOL, geometrySink: *mut IDWriteGeometrySink | |
228 | ) -> ::HRESULT, | |
229 | fn GetRecommendedRenderingMode( | |
230 | &mut self, emSize: ::FLOAT, pixelsPerDip: ::FLOAT, measuringMode: ::DWRITE_MEASURING_MODE, | |
231 | renderingParams: *mut IDWriteRenderingParams, renderingMode: *mut DWRITE_RENDERING_MODE | |
232 | ) -> ::HRESULT, | |
233 | fn GetGdiCompatibleMetrics( | |
234 | &mut self, emSize: ::FLOAT, pixelsPerDip: ::FLOAT, transform: *const DWRITE_MATRIX, | |
235 | fontFaceMetrics: *mut DWRITE_FONT_METRICS | |
236 | ) -> ::HRESULT, | |
237 | fn GetGdiCompatibleGlyphMetrics( | |
238 | &mut self, enSize: ::FLOAT, pixelsPerDip: ::FLOAT, transform: *const DWRITE_MATRIX, | |
239 | useGdiNatrual: ::BOOL, glyphIndices: *const ::UINT16, glyphCount: ::UINT32, | |
240 | glyphMetrics: *mut DWRITE_GLYPH_METRICS, isSideways: ::BOOL | |
241 | ) -> ::HRESULT | |
242 | }} | |
243 | RIDL!{interface IDWriteFontCollectionLoader(IDWriteFontCollectionLoaderVtbl): | |
244 | IUnknown(IUnknownVtbl) { | |
245 | fn CreateEnumeratorFromKey( | |
246 | &mut self, factory: *mut IDWriteFactory, collectionKey: *const ::c_void, | |
247 | collectionKeySize: ::UINT32, fontFileEnumerator: *mut *mut IDWriteFontFileEnumerator | |
248 | ) -> ::HRESULT | |
249 | }} | |
250 | RIDL!{interface IDWriteFontFileEnumerator(IDWriteFontFileEnumeratorVtbl): IUnknown(IUnknownVtbl) { | |
251 | fn MoveNext(&mut self, hasCurrentFile: *mut ::BOOL) -> ::HRESULT, | |
252 | fn GetCurrentFontFile(&mut self, fontFile: *mut *mut IDWriteFontFile) -> ::HRESULT | |
253 | }} | |
254 | RIDL!{interface IDWriteLocalizedStrings(IDWriteLocalizedStringsVtbl): IUnknown(IUnknownVtbl) { | |
255 | fn GetCount(&mut self) -> ::UINT32, | |
256 | fn FindLocaleName( | |
257 | &mut self, localeName: *const ::WCHAR, index: *mut ::UINT32, exists: *mut ::BOOL | |
258 | ) -> ::HRESULT, | |
259 | fn GetLocaleNameLength(&mut self, index: ::UINT32, length: *mut ::UINT32) -> ::HRESULT, | |
260 | fn GetLocaleName( | |
261 | &mut self, index: ::UINT32, localeName: *mut ::WCHAR, size: ::UINT32 | |
262 | ) -> ::HRESULT, | |
263 | fn GetStringLength(&mut self, index: ::UINT32, length: *mut ::UINT32) -> ::HRESULT, | |
264 | fn GetString( | |
265 | &mut self, index: ::UINT32, stringBuffer: *mut ::WCHAR, size: ::UINT32 | |
266 | ) -> ::HRESULT | |
267 | }} | |
268 | RIDL!{interface IDWriteFontCollection(IDWriteFontCollectionVtbl): IUnknown(IUnknownVtbl) { | |
269 | fn GetFontFamilyCount(&mut self) -> ::UINT32, | |
270 | fn GetFontFamily( | |
271 | &mut self, index: ::UINT32, fontFamily: *mut *mut IDWriteFontFamily | |
272 | ) -> ::HRESULT, | |
273 | fn FindFamilyName( | |
274 | &mut self, familyName: *const ::WCHAR, index: *mut ::UINT32, exists: *mut ::BOOL | |
275 | ) -> ::HRESULT, | |
276 | fn GetFontFromFontFace( | |
277 | &mut self, fontFace: *mut IDWriteFontFace, font: *mut *mut IDWriteFont | |
278 | ) -> ::HRESULT | |
279 | }} | |
280 | RIDL!{interface IDWriteFontList(IDWriteFontListVtbl): IUnknown(IUnknownVtbl) { | |
281 | fn GetFontCollection(&mut self, fontCollection: *mut *mut IDWriteFontCollection) -> ::HRESULT, | |
282 | fn GetFontCount(&mut self) -> ::UINT32, | |
283 | fn GetFont(&mut self, index: ::UINT32, font: *mut *mut IDWriteFont) -> ::HRESULT | |
284 | }} | |
285 | RIDL!{interface IDWriteFontFamily(IDWriteFontFamilyVtbl): IDWriteFontList(IDWriteFontListVtbl) { | |
286 | fn GetFamilyNames(&mut self, names: *mut *mut IDWriteLocalizedStrings) -> ::HRESULT, | |
287 | fn GetFirstMatchingFont( | |
288 | &mut self, weight: DWRITE_FONT_WEIGHT, stretch: DWRITE_FONT_STRETCH, | |
289 | style: DWRITE_FONT_STYLE, matchingFont: *mut *mut IDWriteFont | |
290 | ) -> ::HRESULT, | |
291 | fn GetMatchingFonts( | |
292 | &mut self, weight: DWRITE_FONT_WEIGHT, stretch: DWRITE_FONT_STRETCH, | |
293 | style: DWRITE_FONT_STYLE, matchingFonts: *mut *mut IDWriteFontList | |
294 | ) -> ::HRESULT | |
295 | }} | |
296 | RIDL!{interface IDWriteFont(IDWriteFontVtbl): IUnknown(IUnknownVtbl) { | |
297 | fn GetFontFamily(&mut self, fontFamily: *mut *mut IDWriteFontFamily) -> ::HRESULT, | |
298 | fn GetWeight(&mut self) -> DWRITE_FONT_WEIGHT, | |
299 | fn GetStretch(&mut self) -> DWRITE_FONT_STRETCH, | |
300 | fn GetStyle(&mut self) -> DWRITE_FONT_STYLE, | |
301 | fn IsSymbolFont(&mut self) -> ::BOOL, | |
302 | fn GetFaceNames(&mut self, names: *mut *mut IDWriteLocalizedStrings) -> ::HRESULT, | |
303 | fn GetInformationalStrings( | |
304 | &mut self, informationalStringId: DWRITE_INFORMATIONAL_STRING_ID, | |
305 | informationalStrings: *mut *mut IDWriteLocalizedStrings, exists: *mut ::BOOL | |
306 | ) -> ::HRESULT, | |
307 | fn GetSimulations(&mut self) -> DWRITE_FONT_SIMULATIONS, | |
308 | fn GetMetrics(&mut self, fontMetrics: *mut DWRITE_FONT_METRICS) -> (), | |
309 | fn HasCharacter(&mut self, unicodeValue: ::UINT32, exists: *mut ::BOOL) -> ::HRESULT, | |
310 | fn CreateFontFace(&mut self, fontFace: *mut *mut IDWriteFontFace) -> ::HRESULT | |
311 | }} | |
312 | ENUM!{enum DWRITE_READING_DIRECTION { | |
313 | DWRITE_READING_DIRECTION_LEFT_TO_RIGHT = 0, | |
314 | DWRITE_READING_DIRECTION_RIGHT_TO_LEFT = 1, | |
315 | DWRITE_READING_DIRECTION_TOP_TO_BOTTOM = 2, | |
316 | DWRITE_READING_DIRECTION_BOTTOM_TO_TOP = 3, | |
317 | }} | |
318 | ENUM!{enum DWRITE_FLOW_DIRECTION { | |
319 | DWRITE_FLOW_DIRECTION_TOP_TO_BOTTOM = 0, | |
320 | DWRITE_FLOW_DIRECTION_BOTTOM_TO_TOP = 1, | |
321 | DWRITE_FLOW_DIRECTION_LEFT_TO_RIGHT = 2, | |
322 | DWRITE_FLOW_DIRECTION_RIGHT_TO_LEFT = 3, | |
323 | }} | |
324 | ENUM!{enum DWRITE_TEXT_ALIGNMENT { | |
325 | DWRITE_TEXT_ALIGNMENT_LEADING, | |
326 | DWRITE_TEXT_ALIGNMENT_TRAILING, | |
327 | DWRITE_TEXT_ALIGNMENT_CENTER, | |
328 | DWRITE_TEXT_ALIGNMENT_JUSTIFIED, | |
329 | }} | |
330 | ENUM!{enum DWRITE_PARAGRAPH_ALIGNMENT { | |
331 | DWRITE_PARAGRAPH_ALIGNMENT_NEAR, | |
332 | DWRITE_PARAGRAPH_ALIGNMENT_FAR, | |
333 | DWRITE_PARAGRAPH_ALIGNMENT_CENTER, | |
334 | }} | |
335 | ENUM!{enum DWRITE_WORD_WRAPPING { | |
336 | DWRITE_WORD_WRAPPING_WRAP = 0, | |
337 | DWRITE_WORD_WRAPPING_NO_WRAP = 1, | |
338 | DWRITE_WORD_WRAPPING_EMERGENCY_BREAK = 2, | |
339 | DWRITE_WORD_WRAPPING_WHOLE_WORD = 3, | |
340 | DWRITE_WORD_WRAPPING_CHARACTER = 4, | |
341 | }} | |
342 | ENUM!{enum DWRITE_LINE_SPACING_METHOD { | |
343 | DWRITE_LINE_SPACING_METHOD_DEFAULT, | |
344 | DWRITE_LINE_SPACING_METHOD_UNIFORM, | |
345 | DWRITE_LINE_SPACING_METHOD_PROPORTIONAL, | |
346 | }} | |
347 | ENUM!{enum DWRITE_TRIMMING_GRANULARITY { | |
348 | DWRITE_TRIMMING_GRANULARITY_NONE, | |
349 | DWRITE_TRIMMING_GRANULARITY_CHARACTER, | |
350 | DWRITE_TRIMMING_GRANULARITY_WORD, | |
351 | }} | |
352 | ENUM!{enum DWRITE_FONT_FEATURE_TAG { | |
353 | DWRITE_FONT_FEATURE_TAG_ALTERNATIVE_FRACTIONS = 0x63726661, // 'afrc' | |
354 | DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS_FROM_CAPITALS = 0x63703263, // 'c2pc' | |
355 | DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS_FROM_CAPITALS = 0x63733263, // 'c2sc' | |
356 | DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_ALTERNATES = 0x746c6163, // 'calt' | |
357 | DWRITE_FONT_FEATURE_TAG_CASE_SENSITIVE_FORMS = 0x65736163, // 'case' | |
358 | DWRITE_FONT_FEATURE_TAG_GLYPH_COMPOSITION_DECOMPOSITION = 0x706d6363, // 'ccmp' | |
359 | DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_LIGATURES = 0x67696c63, // 'clig' | |
360 | DWRITE_FONT_FEATURE_TAG_CAPITAL_SPACING = 0x70737063, // 'cpsp' | |
361 | DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_SWASH = 0x68777363, // 'cswh' | |
362 | DWRITE_FONT_FEATURE_TAG_CURSIVE_POSITIONING = 0x73727563, // 'curs' | |
363 | DWRITE_FONT_FEATURE_TAG_DEFAULT = 0x746c6664, // 'dflt' | |
364 | DWRITE_FONT_FEATURE_TAG_DISCRETIONARY_LIGATURES = 0x67696c64, // 'dlig' | |
365 | DWRITE_FONT_FEATURE_TAG_EXPERT_FORMS = 0x74707865, // 'expt' | |
366 | DWRITE_FONT_FEATURE_TAG_FRACTIONS = 0x63617266, // 'frac' | |
367 | DWRITE_FONT_FEATURE_TAG_FULL_WIDTH = 0x64697766, // 'fwid' | |
368 | DWRITE_FONT_FEATURE_TAG_HALF_FORMS = 0x666c6168, // 'half' | |
369 | DWRITE_FONT_FEATURE_TAG_HALANT_FORMS = 0x6e6c6168, // 'haln' | |
370 | DWRITE_FONT_FEATURE_TAG_ALTERNATE_HALF_WIDTH = 0x746c6168, // 'halt' | |
371 | DWRITE_FONT_FEATURE_TAG_HISTORICAL_FORMS = 0x74736968, // 'hist' | |
372 | DWRITE_FONT_FEATURE_TAG_HORIZONTAL_KANA_ALTERNATES = 0x616e6b68, // 'hkna' | |
373 | DWRITE_FONT_FEATURE_TAG_HISTORICAL_LIGATURES = 0x67696c68, // 'hlig' | |
374 | DWRITE_FONT_FEATURE_TAG_HALF_WIDTH = 0x64697768, // 'hwid' | |
375 | DWRITE_FONT_FEATURE_TAG_HOJO_KANJI_FORMS = 0x6f6a6f68, // 'hojo' | |
376 | DWRITE_FONT_FEATURE_TAG_JIS04_FORMS = 0x3430706a, // 'jp04' | |
377 | DWRITE_FONT_FEATURE_TAG_JIS78_FORMS = 0x3837706a, // 'jp78' | |
378 | DWRITE_FONT_FEATURE_TAG_JIS83_FORMS = 0x3338706a, // 'jp83' | |
379 | DWRITE_FONT_FEATURE_TAG_JIS90_FORMS = 0x3039706a, // 'jp90' | |
380 | DWRITE_FONT_FEATURE_TAG_KERNING = 0x6e72656b, // 'kern' | |
381 | DWRITE_FONT_FEATURE_TAG_STANDARD_LIGATURES = 0x6167696c, // 'liga' | |
382 | DWRITE_FONT_FEATURE_TAG_LINING_FIGURES = 0x6d756e6c, // 'lnum' | |
383 | DWRITE_FONT_FEATURE_TAG_LOCALIZED_FORMS = 0x6c636f6c, // 'locl' | |
384 | DWRITE_FONT_FEATURE_TAG_MARK_POSITIONING = 0x6b72616d, // 'mark' | |
385 | DWRITE_FONT_FEATURE_TAG_MATHEMATICAL_GREEK = 0x6b72676d, // 'mgrk' | |
386 | DWRITE_FONT_FEATURE_TAG_MARK_TO_MARK_POSITIONING = 0x6b6d6b6d, // 'mkmk' | |
387 | DWRITE_FONT_FEATURE_TAG_ALTERNATE_ANNOTATION_FORMS = 0x746c616e, // 'nalt' | |
388 | DWRITE_FONT_FEATURE_TAG_NLC_KANJI_FORMS = 0x6b636c6e, // 'nlck' | |
389 | DWRITE_FONT_FEATURE_TAG_OLD_STYLE_FIGURES = 0x6d756e6f, // 'onum' | |
390 | DWRITE_FONT_FEATURE_TAG_ORDINALS = 0x6e64726f, // 'ordn' | |
391 | DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_ALTERNATE_WIDTH = 0x746c6170, // 'palt' | |
392 | DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS = 0x70616370, // 'pcap' | |
393 | DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_FIGURES = 0x6d756e70, // 'pnum' | |
394 | DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_WIDTHS = 0x64697770, // 'pwid' | |
395 | DWRITE_FONT_FEATURE_TAG_QUARTER_WIDTHS = 0x64697771, // 'qwid' | |
396 | DWRITE_FONT_FEATURE_TAG_REQUIRED_LIGATURES = 0x67696c72, // 'rlig' | |
397 | DWRITE_FONT_FEATURE_TAG_RUBY_NOTATION_FORMS = 0x79627572, // 'ruby' | |
398 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_ALTERNATES = 0x746c6173, // 'salt' | |
399 | DWRITE_FONT_FEATURE_TAG_SCIENTIFIC_INFERIORS = 0x666e6973, // 'sinf' | |
400 | DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS = 0x70636d73, // 'smcp' | |
401 | DWRITE_FONT_FEATURE_TAG_SIMPLIFIED_FORMS = 0x6c706d73, // 'smpl' | |
402 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_1 = 0x31307373, // 'ss01' | |
403 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_2 = 0x32307373, // 'ss02' | |
404 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_3 = 0x33307373, // 'ss03' | |
405 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_4 = 0x34307373, // 'ss04' | |
406 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_5 = 0x35307373, // 'ss05' | |
407 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_6 = 0x36307373, // 'ss06' | |
408 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_7 = 0x37307373, // 'ss07' | |
409 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_8 = 0x38307373, // 'ss08' | |
410 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_9 = 0x39307373, // 'ss09' | |
411 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_10 = 0x30317373, // 'ss10' | |
412 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_11 = 0x31317373, // 'ss11' | |
413 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_12 = 0x32317373, // 'ss12' | |
414 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_13 = 0x33317373, // 'ss13' | |
415 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_14 = 0x34317373, // 'ss14' | |
416 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_15 = 0x35317373, // 'ss15' | |
417 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_16 = 0x36317373, // 'ss16' | |
418 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_17 = 0x37317373, // 'ss17' | |
419 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_18 = 0x38317373, // 'ss18' | |
420 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_19 = 0x39317373, // 'ss19' | |
421 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_20 = 0x30327373, // 'ss20' | |
422 | DWRITE_FONT_FEATURE_TAG_SUBSCRIPT = 0x73627573, // 'subs' | |
423 | DWRITE_FONT_FEATURE_TAG_SUPERSCRIPT = 0x73707573, // 'sups' | |
424 | DWRITE_FONT_FEATURE_TAG_SWASH = 0x68737773, // 'swsh' | |
425 | DWRITE_FONT_FEATURE_TAG_TITLING = 0x6c746974, // 'titl' | |
426 | DWRITE_FONT_FEATURE_TAG_TRADITIONAL_NAME_FORMS = 0x6d616e74, // 'tnam' | |
427 | DWRITE_FONT_FEATURE_TAG_TABULAR_FIGURES = 0x6d756e74, // 'tnum' | |
428 | DWRITE_FONT_FEATURE_TAG_TRADITIONAL_FORMS = 0x64617274, // 'trad' | |
429 | DWRITE_FONT_FEATURE_TAG_THIRD_WIDTHS = 0x64697774, // 'twid' | |
430 | DWRITE_FONT_FEATURE_TAG_UNICASE = 0x63696e75, // 'unic' | |
431 | DWRITE_FONT_FEATURE_TAG_VERTICAL_WRITING = 0x74726576, // 'vert' | |
432 | DWRITE_FONT_FEATURE_TAG_VERTICAL_ALTERNATES_AND_ROTATION = 0x32747276, // 'vrt2' | |
433 | DWRITE_FONT_FEATURE_TAG_SLASHED_ZERO = 0x6f72657a, // 'zero' | |
434 | }} | |
435 | STRUCT!{struct DWRITE_TEXT_RANGE { | |
436 | startPosition: ::UINT32, | |
437 | length: ::UINT32, | |
438 | }} | |
439 | STRUCT!{struct DWRITE_FONT_FEATURE { | |
440 | nameTag: DWRITE_FONT_FEATURE_TAG, | |
441 | parameter: ::UINT32, | |
442 | }} | |
443 | STRUCT!{struct DWRITE_TYPOGRAPHIC_FEATURES { | |
444 | features: *mut DWRITE_FONT_FEATURE, | |
445 | featureCount: ::UINT32, | |
446 | }} | |
447 | STRUCT!{struct DWRITE_TRIMMING { | |
448 | granularity: DWRITE_TRIMMING_GRANULARITY, | |
449 | delimiter: ::UINT32, | |
450 | delimiterCount: ::UINT32, | |
451 | }} | |
452 | RIDL!{interface IDWriteTextFormat(IDWriteTextFormatVtbl): IUnknown(IUnknownVtbl) { | |
453 | fn SetTextAlignment(&mut self, textAlignment: DWRITE_TEXT_ALIGNMENT) -> ::HRESULT, | |
454 | fn SetParagraphAlignment( | |
455 | &mut self, paragraphAlignment: DWRITE_PARAGRAPH_ALIGNMENT | |
456 | ) -> ::HRESULT, | |
457 | fn SetWordWrapping(&mut self, wordWrapping: DWRITE_WORD_WRAPPING) -> ::HRESULT, | |
458 | fn SetReadingDirection(&mut self, readingDirection: DWRITE_READING_DIRECTION) -> ::HRESULT, | |
459 | fn SetFlowDirection(&mut self, flowDirection: DWRITE_FLOW_DIRECTION) -> ::HRESULT, | |
460 | fn SetIncrementalTabStop(&mut self, incrementalTabStop: ::FLOAT) -> ::HRESULT, | |
461 | fn SetTrimming( | |
462 | &mut self, trimmingOptions: *const DWRITE_TRIMMING, trimmingSign: *mut IDWriteInlineObject | |
463 | ) -> ::HRESULT, | |
464 | fn SetLineSpacing( | |
465 | &mut self, lineSpacingMethod: DWRITE_LINE_SPACING_METHOD, lineSpacing: ::FLOAT, | |
466 | baseLine: ::FLOAT | |
467 | ) -> ::HRESULT, | |
468 | fn GetTextAlignment(&mut self) -> DWRITE_TEXT_ALIGNMENT, | |
469 | fn GetParagraphAlignment(&mut self) -> DWRITE_PARAGRAPH_ALIGNMENT, | |
470 | fn GetWordWrapping(&mut self) -> DWRITE_WORD_WRAPPING, | |
471 | fn GetReadingDirection(&mut self) -> DWRITE_READING_DIRECTION, | |
472 | fn GetFlowDirection(&mut self) -> DWRITE_FLOW_DIRECTION, | |
473 | fn GetIncrementalTabStop(&mut self) -> ::FLOAT, | |
474 | fn GetTrimming( | |
475 | &mut self, trimmingOptions: *mut DWRITE_TRIMMING, | |
476 | trimmingSign: *mut *mut IDWriteInlineObject | |
477 | ) -> ::HRESULT, | |
478 | fn GetLineSpacing( | |
479 | &mut self, lineSpacingMethod: *mut DWRITE_LINE_SPACING_METHOD, lineSpacing: *mut ::FLOAT, | |
480 | baseline: *mut ::FLOAT | |
481 | ) -> ::HRESULT, | |
482 | fn GetFontCollection(&mut self, fontCollection: *mut *mut IDWriteFontCollection) -> ::HRESULT, | |
483 | fn GetFontFamilyNameLength(&mut self) -> ::UINT32, | |
484 | fn GetFontFamilyName(&mut self, fontFamilyName: *mut ::WCHAR, nameSize: ::UINT32) -> ::HRESULT, | |
485 | fn GetFontWeight(&mut self) -> DWRITE_FONT_WEIGHT, | |
486 | fn GetFontStyle(&mut self) -> DWRITE_FONT_STYLE, | |
487 | fn GetFontStretch(&mut self) -> DWRITE_FONT_STRETCH, | |
488 | fn GetFontSize(&mut self) -> ::FLOAT, | |
489 | fn GetLocaleNameLength(&mut self) -> ::UINT32, | |
490 | fn GetLocaleName(&mut self, localeName: *mut ::WCHAR, nameSize: ::UINT32) -> ::HRESULT | |
491 | }} | |
492 | RIDL!{interface IDWriteTypography(IDWriteTypographyVtbl): IUnknown(IUnknownVtbl) { | |
493 | fn AddFontFeature(&mut self, fontFeature: DWRITE_FONT_FEATURE) -> ::HRESULT, | |
494 | fn GetFontFeatureCount(&mut self) -> ::UINT32, | |
495 | fn GetFontFeature( | |
496 | &mut self, fontFeatureIndex: ::UINT32, fontFeature: *mut DWRITE_FONT_FEATURE | |
497 | ) -> ::HRESULT | |
498 | }} | |
499 | FLAGS!{enum DWRITE_SCRIPT_SHAPES { | |
500 | DWRITE_SCRIPT_SHAPES_DEFAULT = 0, | |
501 | DWRITE_SCRIPT_SHAPES_NO_VISUAL = 1, | |
502 | }} | |
503 | STRUCT!{struct DWRITE_SCRIPT_ANALYSIS { | |
504 | script: ::UINT16, | |
505 | shapes: DWRITE_SCRIPT_SHAPES, | |
506 | }} | |
507 | ENUM!{enum DWRITE_BREAK_CONDITION { | |
508 | DWRITE_BREAK_CONDITION_NEUTRAL, | |
509 | DWRITE_BREAK_CONDITION_CAN_BREAK, | |
510 | DWRITE_BREAK_CONDITION_MAY_NOT_BREAK, | |
511 | DWRITE_BREAK_CONDITION_MUST_BREAK, | |
512 | }} | |
513 | STRUCT!{struct DWRITE_LINE_BREAKPOINT { | |
514 | bit_fields: ::UINT8, | |
515 | }} | |
516 | BITFIELD!{DWRITE_LINE_BREAKPOINT bit_fields: ::UINT8 [ | |
517 | breakConditionBefore set_breakConditionBefore[0..2], | |
518 | breakConditionAfter set_breakConditionAfter[2..4], | |
519 | isWhitespace set_isWhitespace[4..5], | |
520 | isSoftHyphen set_isSoftHyphen[5..6], | |
521 | padding set_padding[6..8], | |
522 | ]} | |
523 | ENUM!{enum DWRITE_NUMBER_SUBSTITUTION_METHOD { | |
524 | DWRITE_NUMBER_SUBSTITUTION_METHOD_FROM_CULTURE, | |
525 | DWRITE_NUMBER_SUBSTITUTION_METHOD_CONTEXTUAL, | |
526 | DWRITE_NUMBER_SUBSTITUTION_METHOD_NONE, | |
527 | DWRITE_NUMBER_SUBSTITUTION_METHOD_NATIONAL, | |
528 | DWRITE_NUMBER_SUBSTITUTION_METHOD_TRADITIONAL, | |
529 | }} | |
530 | RIDL!{interface IDWriteNumberSubstitution(IDWriteNumberSubstitutionVtbl): IUnknown(IUnknownVtbl) { | |
531 | }} | |
532 | STRUCT!{struct DWRITE_SHAPING_TEXT_PROPERTIES { | |
533 | bit_fields: ::UINT16, | |
534 | }} | |
535 | BITFIELD!{DWRITE_SHAPING_TEXT_PROPERTIES bit_fields: ::UINT16 [ | |
536 | isShapedAlone set_isShapedAlone[0..1], | |
537 | reserved set_reserved[1..16], | |
538 | ]} | |
539 | STRUCT!{struct DWRITE_SHAPING_GLYPH_PROPERTIES { | |
540 | bit_fields: ::UINT16, | |
541 | }} | |
542 | BITFIELD!{DWRITE_SHAPING_GLYPH_PROPERTIES bit_fields: ::UINT16 [ | |
543 | justification set_justification[0..4], | |
544 | isClusterStart set_isClusterStart[4..5], | |
545 | isDiacritic set_isDiacritic[5..6], | |
546 | isZeroWidthSpace set_isZeroWidthSpace[6..7], | |
547 | reserved set_reserved[7..16], | |
548 | ]} | |
549 | RIDL!{interface IDWriteTextAnalysisSource(IDWriteTextAnalysisSourceVtbl): IUnknown(IUnknownVtbl) { | |
550 | fn GetTextAtPosition( | |
551 | &mut self, textPosition: ::UINT32, textString: *mut *const ::WCHAR, | |
552 | textLength: *mut ::UINT32 | |
553 | ) -> ::HRESULT, | |
554 | fn GetTextBeforePosition( | |
555 | &mut self, textPosition: ::UINT32, textString: *mut *const ::WCHAR, | |
556 | textLength: *mut ::UINT32 | |
557 | ) -> ::HRESULT, | |
558 | fn GetParagraphReadingDirection(&mut self) -> DWRITE_READING_DIRECTION, | |
559 | fn GetLocaleName( | |
560 | &mut self, textPosition: ::UINT32, textLength: *mut ::UINT32, | |
561 | localeName: *mut *const ::WCHAR | |
562 | ) -> ::HRESULT, | |
563 | fn GetNumberSubstitution( | |
564 | &mut self, textPosition: ::UINT32, textLength: *mut ::UINT32, | |
565 | numberSubstitution: *mut *mut IDWriteNumberSubstitution | |
566 | ) -> ::HRESULT | |
567 | }} | |
568 | RIDL!{interface IDWriteTextAnalysisSink(IDWriteTextAnalysisSinkVtbl): IUnknown(IUnknownVtbl) { | |
569 | fn SetScriptAnalysis( | |
570 | &mut self, textPosition: ::UINT32, textLength: ::UINT32, | |
571 | scriptAnalysis: *const DWRITE_SCRIPT_ANALYSIS | |
572 | ) -> ::HRESULT, | |
573 | fn SetLineBreakpoints( | |
574 | &mut self, textPosition: ::UINT32, textLength: ::UINT32, | |
575 | lineBreakpoints: *const DWRITE_LINE_BREAKPOINT | |
576 | ) -> ::HRESULT, | |
577 | fn SetBidiLevel( | |
578 | &mut self, textPosition: ::UINT32, textLength: ::UINT32, explicitLevel: ::UINT8, | |
579 | resolvedLevel: ::UINT8 | |
580 | ) -> ::HRESULT, | |
581 | fn SetNumberSubstitution( | |
582 | &mut self, textPosition: ::UINT32, textLength: ::UINT32, | |
583 | numberSubstitution: *mut IDWriteNumberSubstitution | |
584 | ) -> ::HRESULT | |
585 | }} | |
586 | RIDL!{interface IDWriteTextAnalyzer(IDWriteTextAnalyzerVtbl): IUnknown(IUnknownVtbl) { | |
587 | fn AnalyzeScript( | |
588 | &mut self, analysisSource: *mut IDWriteTextAnalysisSource, textPosition: ::UINT32, | |
589 | textLength: ::UINT32, analysisSink: *mut IDWriteTextAnalysisSink | |
590 | ) -> ::HRESULT, | |
591 | fn AnalyzeBidi( | |
592 | &mut self, analysisSource: *mut IDWriteTextAnalysisSource, textPosition: ::UINT32, | |
593 | textLength: ::UINT32, analysisSink: *mut IDWriteTextAnalysisSink | |
594 | ) -> ::HRESULT, | |
595 | fn AnalyzeNumberSubstitution( | |
596 | &mut self, analysisSource: *mut IDWriteTextAnalysisSource, textPosition: ::UINT32, | |
597 | textLength: ::UINT32, analysisSink: *mut IDWriteTextAnalysisSink | |
598 | ) -> ::HRESULT, | |
599 | fn AnalyzeLineBreakpoints( | |
600 | &mut self, analysisSource: *mut IDWriteTextAnalysisSource, textPosition: ::UINT32, | |
601 | textLength: ::UINT32, analysisSink: *mut IDWriteTextAnalysisSink | |
602 | ) -> ::HRESULT, | |
603 | fn GetGlyphs( | |
604 | &mut self, textString: *const ::WCHAR, textLength: ::UINT32, | |
605 | fontFace: *mut IDWriteFontFace, isSideways: ::BOOL, isRightToLeft: ::BOOL, | |
606 | scriptAnalysis: *const DWRITE_SCRIPT_ANALYSIS, localeName: *const ::WCHAR, | |
607 | numberSubstitution: *mut IDWriteNumberSubstitution, | |
608 | features: *mut *const DWRITE_TYPOGRAPHIC_FEATURES, featureRangeLengths: *const ::UINT32, | |
609 | featureRanges: ::UINT32, maxGlyphCount: ::UINT32, clusterMap: *mut ::UINT16, | |
610 | textProps: *mut DWRITE_SHAPING_TEXT_PROPERTIES, glyphIndices: *mut ::UINT16, | |
611 | glyphProps: *mut DWRITE_SHAPING_GLYPH_PROPERTIES, actualGlyphCount: *mut ::UINT32 | |
612 | ) -> ::HRESULT, | |
613 | fn GetGlyphPlacements( | |
614 | &mut self, textString: *const ::WCHAR, clusterMap: *const ::UINT16, | |
615 | textProps: *mut DWRITE_SHAPING_TEXT_PROPERTIES, textLength: ::UINT32, | |
616 | glyphIndices: *const ::UINT16, glyphProps: *const DWRITE_SHAPING_GLYPH_PROPERTIES, | |
617 | glyphCount: ::UINT32, fontFace: *mut IDWriteFontFace, fontEmSize: ::FLOAT, | |
618 | isSideways: ::BOOL, isRightToLeft: ::BOOL, scriptAnalysis: *const DWRITE_SCRIPT_ANALYSIS, | |
619 | localeName: *const ::WCHAR, features: *mut *const DWRITE_TYPOGRAPHIC_FEATURES, | |
620 | featureRangeLengths: *const ::UINT32, featureRanges: ::UINT32, glyphAdvances: *mut ::FLOAT, | |
621 | glyphOffsets: *mut DWRITE_GLYPH_OFFSET | |
622 | ) -> ::HRESULT, | |
623 | fn GetGdiCompatibleGlyphPlacements( | |
624 | &mut self, textString: *const ::WCHAR, clusterMap: *const ::UINT16, | |
625 | textProps: *mut DWRITE_SHAPING_TEXT_PROPERTIES, textLength: ::UINT32, | |
626 | glyphIndices: *const ::UINT16, glyphProps: *const DWRITE_SHAPING_GLYPH_PROPERTIES, | |
627 | glyphCount: ::UINT32, fontFace: *mut IDWriteFontFace, fontEmSize: ::FLOAT, | |
628 | pixelsPerDip: ::FLOAT, transform: *const DWRITE_MATRIX, useGdiNatrual: ::BOOL, | |
629 | isSideways: ::BOOL, isRightToLeft: ::BOOL, scriptAnalysis: *const DWRITE_SCRIPT_ANALYSIS, | |
630 | localeName: *const ::WCHAR, features: *mut *const DWRITE_TYPOGRAPHIC_FEATURES, | |
631 | featureRangeLengths: *const ::UINT32, featureRanges: ::UINT32, glyphAdvances: *mut ::FLOAT, | |
632 | glyphOffsets: *mut DWRITE_GLYPH_OFFSET | |
633 | ) -> ::HRESULT | |
634 | }} | |
635 | STRUCT!{struct DWRITE_GLYPH_RUN { | |
636 | fontFace: *mut IDWriteFontFace, | |
637 | fontEmSize: ::FLOAT, | |
638 | glyphCount: ::UINT32, | |
639 | glyphIndices: *const ::UINT16, | |
640 | glyphAdvances: *const ::FLOAT, | |
641 | glyphOffsets: *const DWRITE_GLYPH_OFFSET, | |
642 | isSideways: ::BOOL, | |
643 | bidiLevel: ::UINT32, | |
644 | }} | |
645 | STRUCT!{struct DWRITE_GLYPH_RUN_DESCRIPTION { | |
646 | localeName: *const ::WCHAR, | |
647 | string: *const ::WCHAR, | |
648 | stringLength: ::UINT32, | |
649 | clusterMap: *const ::UINT16, | |
650 | textPosition: ::UINT32, | |
651 | }} | |
652 | STRUCT!{struct DWRITE_UNDERLINE { | |
653 | width: ::FLOAT, | |
654 | thickness: ::FLOAT, | |
655 | offset: ::FLOAT, | |
656 | runHeight: ::FLOAT, | |
657 | readingDirection: DWRITE_READING_DIRECTION, | |
658 | flowDirection: DWRITE_FLOW_DIRECTION, | |
659 | localeName: *const ::WCHAR, | |
660 | measuringMode: ::DWRITE_MEASURING_MODE, | |
661 | }} | |
662 | STRUCT!{struct DWRITE_STRIKETHROUGH { | |
663 | width: ::FLOAT, | |
664 | thickness: ::FLOAT, | |
665 | offset: ::FLOAT, | |
666 | readingDirection: DWRITE_READING_DIRECTION, | |
667 | flowDirection: DWRITE_FLOW_DIRECTION, | |
668 | localeName: *const ::WCHAR, | |
669 | measuringMode: ::DWRITE_MEASURING_MODE, | |
670 | }} | |
671 | STRUCT!{struct DWRITE_LINE_METRICS { | |
672 | length: ::UINT32, | |
673 | trailingWhitespaceLength: ::UINT32, | |
674 | newlineLength: ::UINT32, | |
675 | height: ::FLOAT, | |
676 | baseline: ::FLOAT, | |
677 | isTrimmed: ::BOOL, | |
678 | }} | |
679 | STRUCT!{struct DWRITE_CLUSTER_METRICS { | |
680 | width: ::FLOAT, | |
681 | length: ::UINT16, | |
682 | bit_fields: ::UINT16, | |
683 | }} | |
684 | BITFIELD!{DWRITE_CLUSTER_METRICS bit_fields: ::UINT16 [ | |
685 | canWrapLineAfter set_canWrapLineAfter[0..1], | |
686 | isWhitespace set_isWhitespace[1..2], | |
687 | isNewline set_isNewline[2..3], | |
688 | isSoftHyphen set_isSoftHyphen[3..4], | |
689 | isRightToLeft set_isRightToLeft[4..5], | |
690 | padding set_padding[5..16], | |
691 | ]} | |
692 | STRUCT!{struct DWRITE_TEXT_METRICS { | |
693 | left: ::FLOAT, | |
694 | top: ::FLOAT, | |
695 | width: ::FLOAT, | |
696 | widthIncludingTrailingWhitespace: ::FLOAT, | |
697 | height: ::FLOAT, | |
698 | layoutWidth: ::FLOAT, | |
699 | layoutHeight: ::FLOAT, | |
700 | maxBidiReorderingDepth: ::UINT32, | |
701 | lineCount: ::UINT32, | |
702 | }} | |
703 | STRUCT!{struct DWRITE_INLINE_OBJECT_METRICS { | |
704 | width: ::FLOAT, | |
705 | height: ::FLOAT, | |
706 | baseline: ::FLOAT, | |
707 | supportsSideways: ::BOOL, | |
708 | }} | |
709 | STRUCT!{struct DWRITE_OVERHANG_METRICS { | |
710 | left: ::FLOAT, | |
711 | top: ::FLOAT, | |
712 | right: ::FLOAT, | |
713 | bottom: ::FLOAT, | |
714 | }} | |
715 | STRUCT!{struct DWRITE_HIT_TEST_METRICS { | |
716 | textPosition: ::UINT32, | |
717 | length: ::UINT32, | |
718 | left: ::FLOAT, | |
719 | top: ::FLOAT, | |
720 | width: ::FLOAT, | |
721 | height: ::FLOAT, | |
722 | bidiLevel: ::UINT32, | |
723 | isText: ::BOOL, | |
724 | isTrimmed: ::BOOL, | |
725 | }} | |
726 | RIDL!{interface IDWriteInlineObject(IDWriteInlineObjectVtbl): IUnknown(IUnknownVtbl) { | |
727 | fn Draw( | |
728 | &mut self, clientDrawingContext: *mut ::c_void, renderer: *mut IDWriteTextRenderer, | |
729 | originX: ::FLOAT, originY: ::FLOAT, isSideways: ::BOOL, isRightToLeft: ::BOOL, | |
730 | clientDrawingEffect: *mut ::IUnknown | |
731 | ) -> ::HRESULT, | |
732 | fn GetMetrics(&mut self, metrics: *mut DWRITE_INLINE_OBJECT_METRICS) -> ::HRESULT, | |
733 | fn GetOverhangMetrics(&mut self, overhangs: *mut DWRITE_OVERHANG_METRICS) -> ::HRESULT, | |
734 | fn GetBreakConditions( | |
735 | &mut self, breakConditionBefore: *mut DWRITE_BREAK_CONDITION, | |
736 | breakConditionAfter: *mut DWRITE_BREAK_CONDITION | |
737 | ) -> ::HRESULT | |
738 | }} | |
739 | RIDL!{interface IDWritePixelSnapping(IDWritePixelSnappingVtbl): IUnknown(IUnknownVtbl) { | |
740 | fn IsPixelSnappingDisabled( | |
741 | &mut self, clientDrawingContext: *mut ::c_void, isDisabled: *mut ::BOOL | |
742 | ) -> ::HRESULT, | |
743 | fn GetCurrentTransform( | |
744 | &mut self, clientDrawingContext: *mut ::c_void, transform: *mut DWRITE_MATRIX | |
745 | ) -> ::HRESULT, | |
746 | fn GetPixelsPerDip( | |
747 | &mut self, clientDrawingContext: *mut ::c_void, pixelsPerDip: *mut ::FLOAT | |
748 | ) -> ::HRESULT | |
749 | }} | |
750 | RIDL!{interface IDWriteTextRenderer(IDWriteTextRendererVtbl): | |
751 | IDWritePixelSnapping(IDWritePixelSnappingVtbl) { | |
752 | fn DrawGlyphRun( | |
753 | &mut self, clientDrawingContext: *mut ::c_void, baselineOriginX: ::FLOAT, | |
754 | baselineOriginY: ::FLOAT, measuringMode: ::DWRITE_MEASURING_MODE, | |
755 | glyphRun: *const DWRITE_GLYPH_RUN, | |
756 | glyphRunDescription: *const DWRITE_GLYPH_RUN_DESCRIPTION, | |
757 | clientDrawingEffect: *mut ::IUnknown | |
758 | ) -> ::HRESULT, | |
759 | fn DrawUnderline( | |
760 | &mut self, clientDrawingContext: *mut ::c_void, baselineOriginX: ::FLOAT, | |
761 | baselineOriginY: ::FLOAT, underline: *const DWRITE_UNDERLINE, | |
762 | clientDrawingEffect: *mut ::IUnknown | |
763 | ) -> ::HRESULT, | |
764 | fn DrawStrikethrough( | |
765 | &mut self, clientDrawingContext: *mut ::c_void, baselineOriginX: ::FLOAT, | |
766 | baselineOriginY: ::FLOAT, strikethrough: *const DWRITE_STRIKETHROUGH, | |
767 | clientDrawingEffect: *mut ::IUnknown | |
768 | ) -> ::HRESULT, | |
769 | fn DrawInlineObject( | |
770 | &mut self, clientDrawingContext: *mut ::c_void, baselineOriginX: ::FLOAT, | |
771 | baselineOriginY: ::FLOAT, inlineObject: *mut IDWriteInlineObject, | |
772 | isSideways: ::BOOL, isRightToLeft: ::BOOL, clientDrawingEffect: *mut ::IUnknown | |
773 | ) -> ::HRESULT | |
774 | }} | |
775 | RIDL!{interface IDWriteTextLayout(IDWriteTextLayoutVtbl): | |
776 | IDWriteTextFormat(IDWriteTextFormatVtbl) { | |
777 | fn SetMaxWidth(&mut self, maxWidth: ::FLOAT) -> ::HRESULT, | |
778 | fn SetMaxHeight(&mut self, maxHeight: ::FLOAT) -> ::HRESULT, | |
779 | fn SetFontCollection( | |
780 | &mut self, fontCollection: *mut IDWriteFontCollection, textRange: DWRITE_TEXT_RANGE | |
781 | ) -> ::HRESULT, | |
782 | fn SetFontFamilyName( | |
783 | &mut self, fontFamilyName: *const ::WCHAR, textRange: DWRITE_TEXT_RANGE | |
784 | ) -> ::HRESULT, | |
785 | fn SetFontWeight( | |
786 | &mut self, fontWeight: DWRITE_FONT_WEIGHT, textRange: DWRITE_TEXT_RANGE | |
787 | ) -> ::HRESULT, | |
788 | fn SetFontStyle( | |
789 | &mut self, fontStyle: DWRITE_FONT_STYLE, textRange: DWRITE_TEXT_RANGE | |
790 | ) -> ::HRESULT, | |
791 | fn SetFontStretch( | |
792 | &mut self, fontStretch: DWRITE_FONT_STRETCH, textRange: DWRITE_TEXT_RANGE | |
793 | ) -> ::HRESULT, | |
794 | fn SetFontSize(&mut self, fontSize: ::FLOAT, textRange: DWRITE_TEXT_RANGE) -> ::HRESULT, | |
795 | fn SetUnderline(&mut self, hasUnderline: ::BOOL, textRange: DWRITE_TEXT_RANGE) -> ::HRESULT, | |
796 | fn SetStrikethrough( | |
797 | &mut self, hasStrikethrough: ::BOOL, textRange: DWRITE_TEXT_RANGE | |
798 | ) -> ::HRESULT, | |
799 | fn SetDrawingEffect( | |
800 | &mut self, drawingEffect: *mut ::IUnknown, textRange: DWRITE_TEXT_RANGE | |
801 | ) -> ::HRESULT, | |
802 | fn SetInlineObject( | |
803 | &mut self, inlineObject: *mut IDWriteInlineObject, textRange: DWRITE_TEXT_RANGE | |
804 | ) -> ::HRESULT, | |
805 | fn SetTypography( | |
806 | &mut self, typography: *mut IDWriteTypography, textRange: DWRITE_TEXT_RANGE | |
807 | ) -> ::HRESULT, | |
808 | fn SetLocaleName( | |
809 | &mut self, localeName: *const ::WCHAR, textRange: DWRITE_TEXT_RANGE | |
810 | ) -> ::HRESULT, | |
811 | fn GetMaxWidth(&mut self) -> ::FLOAT, | |
812 | fn GetMaxHeight(&mut self) -> ::FLOAT, | |
813 | fn GetFontCollection( | |
814 | &mut self, currentPosition: ::UINT32, fontCollection: *mut *mut IDWriteFontCollection, | |
815 | textRange: *mut DWRITE_TEXT_RANGE | |
816 | ) -> ::HRESULT, | |
817 | fn GetFontFamilyNameLength( | |
818 | &mut self, currentPosition: ::UINT32, nameLength: *mut ::UINT32, | |
819 | textRange: *mut DWRITE_TEXT_RANGE | |
820 | ) -> ::HRESULT, | |
821 | fn GetFontFamilyName( | |
822 | &mut self, currentPosition: ::UINT32, fontFamilyName: *mut ::WCHAR, | |
823 | nameSize: ::UINT32, textRange: *mut DWRITE_TEXT_RANGE | |
824 | ) -> ::HRESULT, | |
825 | fn GetFontWeight( | |
826 | &mut self, currentPosition: ::UINT32, fontWeight: *mut DWRITE_FONT_WEIGHT, | |
827 | textRange: *mut DWRITE_TEXT_RANGE | |
828 | ) -> ::HRESULT, | |
829 | fn GetFontStyle( | |
830 | &mut self, currentPosition: ::UINT32, fontStyle: *mut DWRITE_FONT_STYLE, | |
831 | textRange: *mut DWRITE_TEXT_RANGE | |
832 | ) -> ::HRESULT, | |
833 | fn GetFontStretch( | |
834 | &mut self, currentPosition: ::UINT32, fontStretch: *mut DWRITE_FONT_STRETCH, | |
835 | textRange: *mut DWRITE_TEXT_RANGE | |
836 | ) -> ::HRESULT, | |
837 | fn GetFontSize( | |
838 | &mut self, currentPosition: ::UINT32, fontSize: *mut ::FLOAT, | |
839 | textRange: *mut DWRITE_TEXT_RANGE | |
840 | ) -> ::HRESULT, | |
841 | fn GetUnderline( | |
842 | &mut self, currentPosition: ::UINT32, hasUnderline: *mut ::BOOL, | |
843 | textRange: *mut DWRITE_TEXT_RANGE | |
844 | ) -> ::HRESULT, | |
845 | fn GetStrikethrough( | |
846 | &mut self, currentPosition: ::UINT32, hasStrikethrough: *mut ::BOOL, | |
847 | textRange: *mut DWRITE_TEXT_RANGE | |
848 | ) -> ::HRESULT, | |
849 | fn GetDrawingEffect( | |
850 | &mut self, currentPosition: ::UINT32, drawingEffect: *mut *mut ::IUnknown, | |
851 | textRange: *mut DWRITE_TEXT_RANGE | |
852 | ) -> ::HRESULT, | |
853 | fn GetInlineObject( | |
854 | &mut self, currentPosition: ::UINT32, inlineObject: *mut *mut IDWriteInlineObject, | |
855 | textRange: *mut DWRITE_TEXT_RANGE | |
856 | ) -> ::HRESULT, | |
857 | fn GetTypography( | |
858 | &mut self, currentPosition: ::UINT32, typography: *mut *mut IDWriteTypography, | |
859 | textRange: *mut DWRITE_TEXT_RANGE | |
860 | ) -> ::HRESULT, | |
861 | fn GetLocaleNameLength( | |
862 | &mut self, currentPosition: ::UINT32, nameLength: *mut ::UINT32, | |
863 | textRange: *mut DWRITE_TEXT_RANGE | |
864 | ) -> ::HRESULT, | |
865 | fn GetLocaleName( | |
866 | &mut self, currentPosition: ::UINT32, localeName: *mut ::WCHAR, nameSize: ::UINT32, | |
867 | textRange: *mut DWRITE_TEXT_RANGE | |
868 | ) -> ::HRESULT, | |
869 | fn Draw( | |
870 | &mut self, clientDrawingContext: *mut ::c_void, renderer: *mut IDWriteTextRenderer, | |
871 | originX: ::FLOAT, originY: ::FLOAT | |
872 | ) -> ::HRESULT, | |
873 | fn GetLineMetrics( | |
874 | &mut self, lineMetrics: *mut DWRITE_LINE_METRICS, maxLineCount: ::UINT32, | |
875 | actualLineCount: *mut ::UINT32 | |
876 | ) -> ::HRESULT, | |
877 | fn GetMetrics(&mut self, textMetrics: *mut DWRITE_TEXT_METRICS) -> ::HRESULT, | |
878 | fn GetOverhangMetrics(&mut self, overhangs: *mut DWRITE_OVERHANG_METRICS) -> ::HRESULT, | |
879 | fn GetClusterMetrics( | |
880 | &mut self, clusterMetrics: *mut DWRITE_CLUSTER_METRICS, maxClusterCount: ::UINT32, | |
881 | actualClusterCount: *mut ::UINT32 | |
882 | ) -> ::HRESULT, | |
883 | fn DetermineMinWidth(&mut self, minWidth: *mut ::FLOAT) -> ::HRESULT, | |
884 | fn HitTestPoint( | |
885 | &mut self, pointX: ::FLOAT, pointY: ::FLOAT, isTrailingHit: *mut ::BOOL, | |
886 | isInside: *mut ::BOOL, hitTestMetrics: *mut DWRITE_HIT_TEST_METRICS | |
887 | ) -> ::HRESULT, | |
888 | fn HitTestTextPosition( | |
889 | &mut self, textPosition: ::UINT32, isTrailingHit: ::BOOL, pointX: *mut ::FLOAT, | |
890 | pointY: *mut ::FLOAT, hitTestMetrics: *mut DWRITE_HIT_TEST_METRICS | |
891 | ) -> ::HRESULT, | |
892 | fn HitTestTextRange( | |
893 | &mut self, textPosition: ::UINT32, textLength: ::UINT32, originX: ::FLOAT, | |
894 | originY: ::FLOAT, hitTestMetrics: *mut DWRITE_HIT_TEST_METRICS, | |
895 | maxHitTestMetricsCount: ::UINT32, actualHitTestMetricsCount: *mut ::UINT32 | |
896 | ) -> ::HRESULT | |
897 | }} | |
898 | RIDL!{interface IDWriteBitmapRenderTarget(IDWriteBitmapRenderTargetVtbl): IUnknown(IUnknownVtbl) { | |
899 | fn DrawGlyphRun( | |
900 | &mut self, baselineOriginX: ::FLOAT, baselineOriginY: ::FLOAT, | |
901 | measuringMode: ::DWRITE_MEASURING_MODE, glyphRun: *const ::DWRITE_GLYPH_RUN, | |
902 | renderingParams: *mut IDWriteRenderingParams, textColor: ::COLORREF, | |
903 | blackBoxRect: *mut ::RECT | |
904 | ) -> ::HRESULT, | |
905 | fn GetMemoryDC(&mut self) -> ::HDC, | |
906 | fn GetPixelsPerDip(&mut self) -> ::FLOAT, | |
907 | fn SetPixelsPerDip(&mut self, pixelsPerDip: ::FLOAT) -> ::HRESULT, | |
908 | fn GetCurrentTransform(&mut self, transform: *mut DWRITE_MATRIX) -> ::HRESULT, | |
909 | fn SetCurrentTransform(&mut self, transform: *const DWRITE_MATRIX) -> ::HRESULT, | |
910 | fn GetSize(&mut self, size: *mut ::SIZE) -> ::HRESULT, | |
911 | fn Resize(&mut self, width: ::UINT32, height: ::UINT32) -> ::HRESULT | |
912 | }} | |
913 | RIDL!{interface IDWriteGdiInterop(IDWriteGdiInteropVtbl): IUnknown(IUnknownVtbl) { | |
914 | fn CreateFontFromLOGFONT( | |
915 | &mut self, logFont: *const ::LOGFONTW, font: *mut *mut IDWriteFont | |
916 | ) -> ::HRESULT, | |
917 | fn ConvertFontToLOGFONT( | |
918 | &mut self, font: *mut IDWriteFont, logFont: *mut ::LOGFONTW, isSystemFont: *mut ::BOOL | |
919 | ) -> ::HRESULT, | |
920 | fn ConvertFontFaceToLOGFONT( | |
921 | &mut self, font: *mut IDWriteFontFace, logFont: *mut ::LOGFONTW | |
922 | ) -> ::HRESULT, | |
923 | fn CreateFontFaceFromHdc( | |
924 | &mut self, hdc: ::HDC, fontFace: *mut *mut IDWriteFontFace | |
925 | ) -> ::HRESULT, | |
926 | fn CreateBitmapRenderTarget( | |
927 | &mut self, hdc: ::HDC, width: ::UINT32, height: ::UINT32, | |
928 | renderTarget: *mut *mut IDWriteBitmapRenderTarget | |
929 | ) -> ::HRESULT | |
930 | }} | |
931 | ENUM!{enum DWRITE_TEXTURE_TYPE { | |
932 | DWRITE_TEXTURE_ALIASED_1x1 = 0, | |
933 | DWRITE_TEXTURE_CLEARTYPE_3x1 = 1, | |
934 | }} | |
935 | pub const DWRITE_ALPHA_MAX: ::BYTE = 255; | |
936 | RIDL!{interface IDWriteGlyphRunAnalysis(IDWriteGlyphRunAnalysisVtbl): IUnknown(IUnknownVtbl) { | |
937 | fn GetAlphaTextureBounds( | |
938 | &mut self, textureType: DWRITE_TEXTURE_TYPE, textureBounds: *mut ::RECT | |
939 | ) -> ::HRESULT, | |
940 | fn CreateAlphaTexture( | |
941 | &mut self, textureType: DWRITE_TEXTURE_TYPE, textureBounds: *const ::RECT, | |
942 | alphaValues: *mut ::BYTE, bufferSize: ::UINT32 | |
943 | ) -> ::HRESULT, | |
944 | fn GetAlphaBlendParams( | |
945 | &mut self, renderingParams: *mut IDWriteRenderingParams, blendGamma: *mut ::FLOAT, | |
946 | blendEnhancedContrast: *mut ::FLOAT, blendClearTypeLevel: *mut ::FLOAT | |
947 | ) -> ::HRESULT | |
948 | }} | |
949 | RIDL!{interface IDWriteFactory(IDWriteFactoryVtbl): IUnknown(IUnknownVtbl) { | |
950 | fn GetSystemFontCollection( | |
951 | &mut self, fontCollection: *mut *mut IDWriteFontCollection, checkForUpdates: ::BOOL | |
952 | ) -> ::HRESULT, | |
953 | fn CreateCustomFontCollection( | |
954 | &mut self, collectionLoader: *mut IDWriteFontCollectionLoader, | |
955 | collectionKey: *const ::c_void, collectionKeySize: ::UINT32, | |
956 | fontCollection: *mut *mut IDWriteFontCollection | |
957 | ) -> ::HRESULT, | |
958 | fn RegisterFontCollectionLoader( | |
959 | &mut self, fontCollectionLoader: *mut IDWriteFontCollectionLoader | |
960 | ) -> ::HRESULT, | |
961 | fn UnregisterFontCollectionLoader( | |
962 | &mut self, fontCollectionLoader: *mut IDWriteFontCollectionLoader | |
963 | ) -> ::HRESULT, | |
964 | fn CreateFontFileReference( | |
965 | &mut self, filePath: *const ::WCHAR, lastWriteTime: *const ::FILETIME, | |
966 | fontFile: *mut *mut IDWriteFontFile | |
967 | ) -> ::HRESULT, | |
968 | fn CreateCustomFontFileReference( | |
969 | &mut self, fontFileReferenceKey: *const ::c_void, fontFileReferenceKeySize: ::UINT32, | |
970 | fontFileLoader: *mut IDWriteFontFileLoader, fontFile: *mut *mut IDWriteFontFile | |
971 | ) -> ::HRESULT, | |
972 | fn CreateFontFace( | |
973 | &mut self, fontFaceType: DWRITE_FONT_FACE_TYPE, numberOfFiles: ::UINT32, | |
974 | fontFiles: *const *mut IDWriteFontFile, faceIndex: ::UINT32, | |
975 | fontFaceSimulationFlags: DWRITE_FONT_SIMULATIONS, fontFace: *mut *mut IDWriteFontFace | |
976 | ) -> ::HRESULT, | |
977 | fn CreateRenderingParams( | |
978 | &mut self, renderingParams: *mut *mut IDWriteRenderingParams | |
979 | ) -> ::HRESULT, | |
980 | fn CreateMonitorRenderingParams( | |
981 | &mut self, monitor: ::HMONITOR, renderingParams: *mut *mut IDWriteRenderingParams | |
982 | ) -> ::HRESULT, | |
983 | fn CreateCustomRenderingParams( | |
984 | &mut self, gamma: ::FLOAT, enhancedContrast: ::FLOAT, clearTypeLevel: ::FLOAT, | |
985 | pixelGeometry: DWRITE_PIXEL_GEOMETRY, renderingMode: DWRITE_RENDERING_MODE, | |
986 | renderingParams: *mut *mut IDWriteRenderingParams | |
987 | ) -> ::HRESULT, | |
988 | fn RegisterFontFileLoader( | |
989 | &mut self, fontFileLoader: *mut IDWriteFontFileLoader | |
990 | ) -> ::HRESULT, | |
991 | fn UnregisterFontFileLoader( | |
992 | &mut self, fontFileLoader: *mut IDWriteFontFileLoader | |
993 | ) -> ::HRESULT, | |
994 | fn CreateTextFormat( | |
995 | &mut self, fontFamilyName: *const ::WCHAR, fontCollection: *mut IDWriteFontCollection, | |
996 | fontWeight: DWRITE_FONT_WEIGHT, fontStyle: DWRITE_FONT_STYLE, | |
997 | fontStretch: DWRITE_FONT_STRETCH, fontSize: ::FLOAT, localeName: *const ::WCHAR, | |
998 | textFormat: *mut *mut IDWriteTextFormat | |
999 | ) -> ::HRESULT, | |
1000 | fn CreateTypography(&mut self, typography: *mut *mut IDWriteTypography) -> ::HRESULT, | |
1001 | fn GetGdiInterop(&mut self, gdiInterop: *mut *mut IDWriteGdiInterop) -> ::HRESULT, | |
1002 | fn CreateTextLayout( | |
1003 | &mut self, string: *const ::WCHAR, stringLength: ::UINT32, | |
1004 | textFormat: *mut IDWriteTextFormat, maxWidth: ::FLOAT, maxHeight: ::FLOAT, | |
1005 | textLayout: *mut *mut IDWriteTextLayout | |
1006 | ) -> ::HRESULT, | |
1007 | fn CreateGdiCompatibleTextLayout( | |
1008 | &mut self, string: *const ::WCHAR, stringLength: ::UINT32, | |
1009 | textFormat: *mut IDWriteTextFormat, layoutWidth: ::FLOAT, layoutHeight: ::FLOAT, | |
1010 | pixelsPerDip: ::FLOAT, transform: *const DWRITE_MATRIX, useGdiNatrual: ::BOOL, | |
1011 | textLayout: *mut *mut IDWriteTextLayout | |
1012 | ) -> ::HRESULT, | |
1013 | fn CreateEllipsisTrimmingSign( | |
1014 | &mut self, textFormat: *mut IDWriteTextFormat, trimmingSign: *mut *mut IDWriteInlineObject | |
1015 | ) -> ::HRESULT, | |
1016 | fn CreateTextAnalyzer(&mut self, textAnalyzer: *mut *mut IDWriteTextAnalyzer) -> ::HRESULT, | |
1017 | fn CreateNumberSubstitution( | |
1018 | &mut self, substitutionMethod: DWRITE_NUMBER_SUBSTITUTION_METHOD, | |
1019 | localeName: *const ::WCHAR, ignoreUserOverride: ::BOOL, | |
1020 | numberSubstitution: *mut *mut IDWriteNumberSubstitution | |
1021 | ) -> ::HRESULT, | |
1022 | fn CreateGlyphRunAnalysis( | |
1023 | &mut self, glyphRun: *const DWRITE_GLYPH_RUN, pixelsPerDip: ::FLOAT, | |
1024 | transform: *const DWRITE_MATRIX, renderingMode: DWRITE_RENDERING_MODE, | |
1025 | measuringMode: ::DWRITE_MEASURING_MODE, baselineOriginX: ::FLOAT, | |
1026 | baselineOriginY: ::FLOAT, glyphRunAnalysis: *mut *mut IDWriteGlyphRunAnalysis | |
1027 | ) -> ::HRESULT | |
1028 | }} | |
1029 | pub const FACILITY_DWRITE: ::HRESULT = 0x898; | |
1030 | pub const DWRITE_ERR_BASE: ::HRESULT = 0x5000; | |
1031 | #[inline] | |
1032 | pub fn MAKE_DWRITE_HR(severity: ::HRESULT, code: ::HRESULT) -> ::HRESULT { | |
1033 | ::MAKE_HRESULT(severity, FACILITY_DWRITE, DWRITE_ERR_BASE + code) | |
1034 | } | |
1035 | #[inline] | |
1036 | pub fn MAKE_DWRITE_HR_ERR(code: ::HRESULT) -> ::HRESULT { | |
1037 | MAKE_DWRITE_HR(::SEVERITY_ERROR, code) | |
1038 | } |