]> git.proxmox.com Git - rustc.git/blob - vendor/winapi/src/um/d2d1_1.rs
New upstream version 1.41.1+dfsg1
[rustc.git] / vendor / winapi / src / um / d2d1_1.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 contents of d2d1_1.h
7 use ctypes::c_void;
8 use shared::basetsd::{UINT32, UINT64};
9 use shared::dxgi::{IDXGIDevice, IDXGISurface};
10 use shared::dxgiformat::DXGI_FORMAT;
11 use shared::guiddef::{CLSID, REFCLSID};
12 use shared::minwindef::{BOOL, BYTE, DWORD, FLOAT};
13 use um::d2d1::{
14 D2D1_ANTIALIAS_MODE, D2D1_BRUSH_PROPERTIES, D2D1_CAP_STYLE, D2D1_COLOR_F,
15 D2D1_DASH_STYLE, D2D1_DEBUG_LEVEL, D2D1_EXTEND_MODE, D2D1_GRADIENT_STOP,
16 D2D1_INTERPOLATION_MODE_DEFINITION_ANISOTROPIC, D2D1_INTERPOLATION_MODE_DEFINITION_CUBIC,
17 D2D1_INTERPOLATION_MODE_DEFINITION_HIGH_QUALITY_CUBIC,
18 D2D1_INTERPOLATION_MODE_DEFINITION_LINEAR,
19 D2D1_INTERPOLATION_MODE_DEFINITION_MULTI_SAMPLE_LINEAR,
20 D2D1_INTERPOLATION_MODE_DEFINITION_NEAREST_NEIGHBOR, D2D1_LINE_JOIN, D2D1_MATRIX_3X2_F,
21 D2D1_POINT_2F, D2D1_RECT_F, D2D1_SIZE_U, D2D1_TAG, D2D1_TEXT_ANTIALIAS_MODE, ID2D1Bitmap,
22 ID2D1BitmapBrush, ID2D1BitmapBrushVtbl, ID2D1BitmapVtbl, ID2D1Brush, ID2D1BrushVtbl,
23 ID2D1DrawingStateBlock, ID2D1DrawingStateBlockVtbl, ID2D1Factory, ID2D1FactoryVtbl,
24 ID2D1Geometry, ID2D1GradientStopCollection, ID2D1GradientStopCollectionVtbl, ID2D1Image,
25 ID2D1ImageVtbl, ID2D1Layer, ID2D1Mesh, ID2D1PathGeometry, ID2D1PathGeometryVtbl,
26 ID2D1RenderTarget, ID2D1RenderTargetVtbl, ID2D1Resource, ID2D1ResourceVtbl, ID2D1StrokeStyle,
27 ID2D1StrokeStyleVtbl,
28 };
29 use um::d2d1effectauthor::D2D1_PROPERTY_BINDING;
30 use um::d2dbasetypes::D2D_SIZE_F;
31 use um::dcommon::{D2D1_PIXEL_FORMAT, DWRITE_MEASURING_MODE};
32 use um::documenttarget::IPrintDocumentPackageTarget;
33 use um::dwrite::{DWRITE_GLYPH_RUN, DWRITE_GLYPH_RUN_DESCRIPTION, IDWriteRenderingParams};
34 use um::objidlbase::IStream;
35 use um::unknwnbase::{IUnknown, IUnknownVtbl};
36 use um::wincodec::{IWICBitmapSource, IWICColorContext, IWICImagingFactory};
37 use um::winnt::{HRESULT, PCWSTR, PWSTR};
38 FN!{stdcall PD2D1_EFFECT_FACTORY(
39 effectImpl: *mut *mut IUnknown,
40 ) -> HRESULT}
41 pub use um::d2dbasetypes::D2D_RECT_L as D2D1_RECT_L;
42 pub use um::d2dbasetypes::D2D_POINT_2L as D2D1_POINT_2L;
43 ENUM!{enum D2D1_PROPERTY_TYPE {
44 D2D1_PROPERTY_TYPE_UNKNOWN = 0,
45 D2D1_PROPERTY_TYPE_STRING = 1,
46 D2D1_PROPERTY_TYPE_BOOL = 2,
47 D2D1_PROPERTY_TYPE_UINT32 = 3,
48 D2D1_PROPERTY_TYPE_INT32 = 4,
49 D2D1_PROPERTY_TYPE_FLOAT = 5,
50 D2D1_PROPERTY_TYPE_VECTOR2 = 6,
51 D2D1_PROPERTY_TYPE_VECTOR3 = 7,
52 D2D1_PROPERTY_TYPE_VECTOR4 = 8,
53 D2D1_PROPERTY_TYPE_BLOB = 9,
54 D2D1_PROPERTY_TYPE_IUNKNOWN = 10,
55 D2D1_PROPERTY_TYPE_ENUM = 11,
56 D2D1_PROPERTY_TYPE_ARRAY = 12,
57 D2D1_PROPERTY_TYPE_CLSID = 13,
58 D2D1_PROPERTY_TYPE_MATRIX_3X2 = 14,
59 D2D1_PROPERTY_TYPE_MATRIX_4X3 = 15,
60 D2D1_PROPERTY_TYPE_MATRIX_4X4 = 16,
61 D2D1_PROPERTY_TYPE_MATRIX_5X4 = 17,
62 D2D1_PROPERTY_TYPE_COLOR_CONTEXT = 18,
63 D2D1_PROPERTY_TYPE_FORCE_DWORD = 0xffffffff,
64 }}
65 ENUM!{enum D2D1_PROPERTY {
66 D2D1_PROPERTY_CLSID = 0x80000000,
67 D2D1_PROPERTY_DISPLAYNAME = 0x80000001,
68 D2D1_PROPERTY_AUTHOR = 0x80000002,
69 D2D1_PROPERTY_CATEGORY = 0x80000003,
70 D2D1_PROPERTY_DESCRIPTION = 0x80000004,
71 D2D1_PROPERTY_INPUTS = 0x80000005,
72 D2D1_PROPERTY_CACHED = 0x80000006,
73 D2D1_PROPERTY_PRECISION = 0x80000007,
74 D2D1_PROPERTY_MIN_INPUTS = 0x80000008,
75 D2D1_PROPERTY_MAX_INPUTS = 0x80000009,
76 D2D1_PROPERTY_FORCE_DWORD = 0xffffffff,
77 }}
78 ENUM!{enum D2D1_SUBPROPERTY {
79 D2D1_SUBPROPERTY_DISPLAYNAME = 0x80000000,
80 D2D1_SUBPROPERTY_ISREADONLY = 0x80000001,
81 D2D1_SUBPROPERTY_MIN = 0x80000002,
82 D2D1_SUBPROPERTY_MAX = 0x80000003,
83 D2D1_SUBPROPERTY_DEFAULT = 0x80000004,
84 D2D1_SUBPROPERTY_FIELDS = 0x80000005,
85 D2D1_SUBPROPERTY_INDEX = 0x80000006,
86 D2D1_SUBPROPERTY_FORCE_DWORD = 0xffffffff,
87 }}
88 ENUM!{enum D2D1_BITMAP_OPTIONS {
89 D2D1_BITMAP_OPTIONS_NONE = 0x00000000,
90 D2D1_BITMAP_OPTIONS_TARGET = 0x00000001,
91 D2D1_BITMAP_OPTIONS_CANNOT_DRAW = 0x00000002,
92 D2D1_BITMAP_OPTIONS_CPU_READ = 0x00000004,
93 D2D1_BITMAP_OPTIONS_GDI_COMPATIBLE = 0x00000008,
94 D2D1_BITMAP_OPTIONS_FORCE_DWORD = 0xffffffff,
95 }}
96 // DEFINE_ENUM_FLAG_OPERATORS(D2D1_BITMAP_OPTIONS);
97 ENUM!{enum D2D1_COMPOSITE_MODE {
98 D2D1_COMPOSITE_MODE_SOURCE_OVER = 0,
99 D2D1_COMPOSITE_MODE_DESTINATION_OVER = 1,
100 D2D1_COMPOSITE_MODE_SOURCE_IN = 2,
101 D2D1_COMPOSITE_MODE_DESTINATION_IN = 3,
102 D2D1_COMPOSITE_MODE_SOURCE_OUT = 4,
103 D2D1_COMPOSITE_MODE_DESTINATION_OUT = 5,
104 D2D1_COMPOSITE_MODE_SOURCE_ATOP = 6,
105 D2D1_COMPOSITE_MODE_DESTINATION_ATOP = 7,
106 D2D1_COMPOSITE_MODE_XOR = 8,
107 D2D1_COMPOSITE_MODE_PLUS = 9,
108 D2D1_COMPOSITE_MODE_SOURCE_COPY = 10,
109 D2D1_COMPOSITE_MODE_BOUNDED_SOURCE_COPY = 11,
110 D2D1_COMPOSITE_MODE_MASK_INVERT = 12,
111 D2D1_COMPOSITE_MODE_FORCE_DWORD = 0xffffffff,
112 }}
113 ENUM!{enum D2D1_BUFFER_PRECISION {
114 D2D1_BUFFER_PRECISION_UNKNOWN = 0,
115 D2D1_BUFFER_PRECISION_8BPC_UNORM = 1,
116 D2D1_BUFFER_PRECISION_8BPC_UNORM_SRGB = 2,
117 D2D1_BUFFER_PRECISION_16BPC_UNORM = 3,
118 D2D1_BUFFER_PRECISION_16BPC_FLOAT = 4,
119 D2D1_BUFFER_PRECISION_32BPC_FLOAT = 5,
120 D2D1_BUFFER_PRECISION_FORCE_DWORD = 0xffffffff,
121 }}
122 ENUM!{enum D2D1_MAP_OPTIONS {
123 D2D1_MAP_OPTIONS_NONE = 0,
124 D2D1_MAP_OPTIONS_READ = 1,
125 D2D1_MAP_OPTIONS_WRITE = 2,
126 D2D1_MAP_OPTIONS_DISCARD = 4,
127 D2D1_MAP_OPTIONS_FORCE_DWORD = 0xffffffff,
128 }}
129 //DEFINE_ENUM_FLAG_OPERATORS(D2D1_MAP_OPTIONS);
130 ENUM!{enum D2D1_INTERPOLATION_MODE {
131 D2D1_INTERPOLATION_MODE_NEAREST_NEIGHBOR = D2D1_INTERPOLATION_MODE_DEFINITION_NEAREST_NEIGHBOR,
132 D2D1_INTERPOLATION_MODE_LINEAR = D2D1_INTERPOLATION_MODE_DEFINITION_LINEAR,
133 D2D1_INTERPOLATION_MODE_CUBIC = D2D1_INTERPOLATION_MODE_DEFINITION_CUBIC,
134 D2D1_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR
135 = D2D1_INTERPOLATION_MODE_DEFINITION_MULTI_SAMPLE_LINEAR,
136 D2D1_INTERPOLATION_MODE_ANISOTROPIC = D2D1_INTERPOLATION_MODE_DEFINITION_ANISOTROPIC,
137 D2D1_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC
138 = D2D1_INTERPOLATION_MODE_DEFINITION_HIGH_QUALITY_CUBIC,
139 D2D1_INTERPOLATION_MODE_FORCE_DWORD = 0xffffffff,
140 }}
141 ENUM!{enum D2D1_UNIT_MODE {
142 D2D1_UNIT_MODE_DIPS = 0,
143 D2D1_UNIT_MODE_PIXELS = 1,
144 D2D1_UNIT_MODE_FORCE_DWORD = 0xffffffff,
145 }}
146 ENUM!{enum D2D1_COLOR_SPACE {
147 D2D1_COLOR_SPACE_CUSTOM = 0,
148 D2D1_COLOR_SPACE_SRGB = 1,
149 D2D1_COLOR_SPACE_SCRGB = 2,
150 D2D1_COLOR_SPACE_FORCE_DWORD = 0xffffffff,
151 }}
152 ENUM!{enum D2D1_DEVICE_CONTEXT_OPTIONS {
153 D2D1_DEVICE_CONTEXT_OPTIONS_NONE = 0,
154 D2D1_DEVICE_CONTEXT_OPTIONS_ENABLE_MULTITHREADED_OPTIMIZATIONS = 1,
155 D2D1_DEVICE_CONTEXT_OPTIONS_FORCE_DWORD = 0xffffffff,
156 }}
157 //DEFINE_ENUM_FLAG_OPERATORS(D2D1_DEVICE_CONTEXT_OPTIONS);
158 ENUM!{enum D2D1_STROKE_TRANSFORM_TYPE {
159 D2D1_STROKE_TRANSFORM_TYPE_NORMAL = 0,
160 D2D1_STROKE_TRANSFORM_TYPE_FIXED = 1,
161 D2D1_STROKE_TRANSFORM_TYPE_HAIRLINE = 2,
162 D2D1_STROKE_TRANSFORM_TYPE_FORCE_DWORD = 0xffffffff,
163 }}
164 ENUM!{enum D2D1_PRIMITIVE_BLEND {
165 D2D1_PRIMITIVE_BLEND_SOURCE_OVER = 0,
166 D2D1_PRIMITIVE_BLEND_COPY = 1,
167 D2D1_PRIMITIVE_BLEND_MIN = 2,
168 D2D1_PRIMITIVE_BLEND_ADD = 3,
169 D2D1_PRIMITIVE_BLEND_FORCE_DWORD = 0xffffffff,
170 }}
171 ENUM!{enum D2D1_THREADING_MODE {
172 D2D1_THREADING_MODE_SINGLE_THREADED = super::d2d1::D2D1_FACTORY_TYPE_SINGLE_THREADED,
173 D2D1_THREADING_MODE_MULTI_THREADED = super::d2d1::D2D1_FACTORY_TYPE_MULTI_THREADED,
174 D2D1_THREADING_MODE_FORCE_DWORD = 0xffffffff,
175 }}
176 ENUM!{enum D2D1_COLOR_INTERPOLATION_MODE {
177 D2D1_COLOR_INTERPOLATION_MODE_STRAIGHT = 0,
178 D2D1_COLOR_INTERPOLATION_MODE_PREMULTIPLIED = 1,
179 D2D1_COLOR_INTERPOLATION_MODE_FORCE_DWORD = 0xffffffff,
180 }}
181 pub use um::d2dbasetypes::D2D_VECTOR_2F as D2D1_VECTOR_2F;
182 pub use um::d2dbasetypes::D2D_VECTOR_3F as D2D1_VECTOR_3F;
183 pub use um::d2dbasetypes::D2D_VECTOR_4F as D2D1_VECTOR_4F;
184 STRUCT!{struct D2D1_BITMAP_PROPERTIES1 {
185 pixelFormat: D2D1_PIXEL_FORMAT,
186 dpiX: FLOAT,
187 dpiY: FLOAT,
188 bitmapOptions: D2D1_BITMAP_OPTIONS,
189 colorContext: *const ID2D1ColorContext,
190 }}
191 STRUCT!{struct D2D1_MAPPED_RECT {
192 pitch: UINT32,
193 bits: *const BYTE,
194 }}
195 STRUCT!{struct D2D1_RENDERING_CONTROLS {
196 bufferPrecision: D2D1_BUFFER_PRECISION,
197 tileSize: D2D1_SIZE_U,
198 }}
199 STRUCT!{struct D2D1_EFFECT_INPUT_DESCRIPTION {
200 effect: *const ID2D1Effect,
201 inputIndex: UINT32,
202 inputRectangle: D2D1_RECT_F,
203 }}
204 pub use um::d2dbasetypes::D2D_MATRIX_4X3_F as D2D1_MATRIX_4X3_F;
205 pub use um::d2dbasetypes::D2D_MATRIX_4X4_F as D2D1_MATRIX_4X4_F;
206 pub use um::d2dbasetypes::D2D_MATRIX_5X4_F as D2D1_MATRIX_5X4_F;
207 STRUCT!{struct D2D1_POINT_DESCRIPTION {
208 point: D2D1_POINT_2F,
209 unitTangentVector: D2D1_POINT_2F,
210 endSegment: UINT32,
211 endFigure: UINT32,
212 lengthToEndSegment: FLOAT,
213 }}
214 STRUCT!{struct D2D1_IMAGE_BRUSH_PROPERTIES {
215 sourceRectangle: D2D1_RECT_F,
216 extendModeX: D2D1_EXTEND_MODE,
217 extendModeY: D2D1_EXTEND_MODE,
218 interpolationMode: D2D1_INTERPOLATION_MODE,
219 }}
220 STRUCT!{struct D2D1_BITMAP_BRUSH_PROPERTIES1 {
221 extendModeX: D2D1_EXTEND_MODE,
222 extendModeY: D2D1_EXTEND_MODE,
223 interpolationMode: D2D1_INTERPOLATION_MODE,
224 }}
225 STRUCT!{struct D2D1_STROKE_STYLE_PROPERTIES1 {
226 startCap: D2D1_CAP_STYLE,
227 endCap: D2D1_CAP_STYLE,
228 dashCap: D2D1_CAP_STYLE,
229 lineJoin: D2D1_LINE_JOIN,
230 miterLimit: FLOAT,
231 dashStyle: D2D1_DASH_STYLE,
232 dashOffset: FLOAT,
233 transformType: D2D1_STROKE_TRANSFORM_TYPE,
234 }}
235 ENUM!{enum D2D1_LAYER_OPTIONS1 {
236 D2D1_LAYER_OPTIONS1_NONE = 0,
237 D2D1_LAYER_OPTIONS1_INITIALIZE_FROM_BACKGROUND = 1,
238 D2D1_LAYER_OPTIONS1_IGNORE_ALPHA = 2,
239 D2D1_LAYER_OPTIONS1_FORCE_DWORD = 0xffffffff,
240 }}
241 //DEFINE_ENUM_FLAG_OPERATORS(D2D1_LAYER_OPTIONS1);
242 STRUCT!{struct D2D1_LAYER_PARAMETERS1 {
243 contentBounds: D2D1_RECT_F,
244 geometricMask: *const ID2D1Geometry,
245 maskAntialiasMode: D2D1_ANTIALIAS_MODE,
246 maskTransform: D2D1_MATRIX_3X2_F,
247 opacity: FLOAT,
248 opacityBrush: *const ID2D1Brush,
249 layerOptions: D2D1_LAYER_OPTIONS1,
250 }}
251 ENUM!{enum D2D1_PRINT_FONT_SUBSET_MODE {
252 D2D1_PRINT_FONT_SUBSET_MODE_DEFAULT = 0,
253 D2D1_PRINT_FONT_SUBSET_MODE_EACHPAGE = 1,
254 D2D1_PRINT_FONT_SUBSET_MODE_NONE = 2,
255 D2D1_PRINT_FONT_SUBSET_MODE_FORCE_DWORD = 0xffffffff,
256 }}
257 STRUCT!{struct D2D1_DRAWING_STATE_DESCRIPTION1 {
258 antialiasMode: D2D1_ANTIALIAS_MODE,
259 textAntialiasMode: D2D1_TEXT_ANTIALIAS_MODE,
260 tag1: D2D1_TAG,
261 tag2: D2D1_TAG,
262 transform: D2D1_MATRIX_3X2_F,
263 primitiveBlend: D2D1_PRIMITIVE_BLEND,
264 unitMode: D2D1_UNIT_MODE,
265 }}
266 STRUCT!{struct D2D1_PRINT_CONTROL_PROPERTIES {
267 fontSubset: D2D1_PRINT_FONT_SUBSET_MODE,
268 rasterDPI: FLOAT,
269 colorSpace: D2D1_COLOR_SPACE,
270 }}
271 STRUCT!{struct D2D1_CREATION_PROPERTIES {
272 threadingMode: D2D1_THREADING_MODE,
273 debugLevel: D2D1_DEBUG_LEVEL,
274 options: D2D1_DEVICE_CONTEXT_OPTIONS,
275 }}
276 RIDL!{#[uuid(0x82237326, 0x8111, 0x4f7c, 0xbc, 0xf4, 0xb5, 0xc1, 0x17, 0x55, 0x64, 0xfe)]
277 interface ID2D1GdiMetafileSink(ID2D1GdiMetafileSinkVtbl): IUnknown(IUnknownVtbl) {
278 fn ProcessRecord(
279 recordType: DWORD,
280 recordData: *const c_void,
281 recordDataSize: DWORD,
282 ) -> HRESULT,
283 }}
284 RIDL!{#[uuid(0x2f543dc3, 0xcfc1, 0x4211, 0x86, 0x4f, 0xcf, 0xd9, 0x1c, 0x6f, 0x33, 0x95)]
285 interface ID2D1GdiMetafile(ID2D1GdiMetafileVtbl): ID2D1Resource(ID2D1ResourceVtbl) {
286 fn Stream(
287 sink: *const ID2D1GdiMetafileSink,
288 ) -> HRESULT,
289 fn GetBounds(
290 bounds: *mut D2D1_RECT_F,
291 ) -> HRESULT,
292 }}
293 RIDL!{#[uuid(0x54d7898a, 0xa061, 0x40a7, 0xbe, 0xc7, 0xe4, 0x65, 0xbc, 0xba, 0x2c, 0x4f)]
294 interface ID2D1CommandSink(ID2D1CommandSinkVtbl): IUnknown(IUnknownVtbl) {
295 fn BeginDraw() -> HRESULT,
296 fn EndDraw() -> HRESULT,
297 fn SetAntialiasMode(
298 antialiasMode: D2D1_ANTIALIAS_MODE,
299 ) -> HRESULT,
300 fn SetTags(
301 tag1: D2D1_TAG,
302 tag2: D2D1_TAG,
303 ) -> HRESULT,
304 fn SetTextAntialiasMode(
305 textAntialiasMode: D2D1_TEXT_ANTIALIAS_MODE,
306 ) -> HRESULT,
307 fn SetTextRenderingParams(
308 textRenderingParams: *const IDWriteRenderingParams,
309 ) -> HRESULT,
310 fn SetTransform(
311 transform: *const D2D1_MATRIX_3X2_F,
312 ) -> HRESULT,
313 fn SetPrimitiveBlend(
314 primitiveBlend: D2D1_PRIMITIVE_BLEND,
315 ) -> HRESULT,
316 fn SetUnitMode(
317 unitMode: D2D1_UNIT_MODE,
318 ) -> HRESULT,
319 fn Clear(
320 color: *const D2D1_COLOR_F,
321 ) -> HRESULT,
322 fn DrawGlyphRun(
323 baselineOrigin: D2D1_POINT_2F,
324 glyphRun: *const DWRITE_GLYPH_RUN,
325 glyphRunDescription: *const DWRITE_GLYPH_RUN_DESCRIPTION,
326 foregroundBrush: *const ID2D1Brush,
327 measuringMode: DWRITE_MEASURING_MODE,
328 ) -> HRESULT,
329 fn DrawLine(
330 point0: D2D1_POINT_2F,
331 point1: D2D1_POINT_2F,
332 brush: *const ID2D1Brush,
333 strokeWidth: FLOAT,
334 strokeStyle: *const ID2D1StrokeStyle,
335 ) -> HRESULT,
336 fn DrawGeometry(
337 geometry: *const ID2D1Geometry,
338 brush: *const ID2D1Brush,
339 strokeWidth: FLOAT,
340 strokeStyle: *const ID2D1StrokeStyle,
341 ) -> HRESULT,
342 fn DrawRectangle(
343 rect: *const D2D1_RECT_F,
344 brush: *const ID2D1Brush,
345 strokeWidth: FLOAT,
346 strokeStyle: *const ID2D1StrokeStyle,
347 ) -> HRESULT,
348 fn DrawBitmap(
349 bitmap: *const ID2D1Bitmap,
350 destinationRectangle: *const D2D1_RECT_F,
351 opacity: FLOAT,
352 interpolationMode: D2D1_INTERPOLATION_MODE,
353 sourceRectangle: *const D2D1_RECT_F,
354 perspectiveTransform: *const D2D1_MATRIX_4X4_F,
355 ) -> HRESULT,
356 fn DrawImage(
357 image: *const ID2D1Image,
358 targetOffset: *const D2D1_POINT_2F,
359 imageRectangle: *const D2D1_RECT_F,
360 interpolationMode: D2D1_INTERPOLATION_MODE,
361 compositeMode: D2D1_COMPOSITE_MODE,
362 ) -> HRESULT,
363 fn DrawGdiMetafile(
364 gdiMetafile: *const ID2D1GdiMetafile,
365 targetOffset: *const D2D1_POINT_2F,
366 ) -> HRESULT,
367 fn FillMesh(
368 mesh: *const ID2D1Mesh,
369 brush: *const ID2D1Brush,
370 ) -> HRESULT,
371 fn FillOpacityMask(
372 opacityMask: *const ID2D1Bitmap,
373 brush: *const ID2D1Brush,
374 destinationRectangle: *const D2D1_RECT_F,
375 sourceRectangle: *const D2D1_RECT_F,
376 ) -> HRESULT,
377 fn FillGeometry(
378 geometry: *const ID2D1Geometry,
379 brush: *const ID2D1Brush,
380 opacityBrush: *const ID2D1Brush,
381 ) -> HRESULT,
382 fn FillRectangle(
383 rect: *const D2D1_RECT_F,
384 brush: *const ID2D1Brush,
385 ) -> HRESULT,
386 fn PushAxisAlignedClip(
387 clipRect: *const D2D1_RECT_F,
388 antialiasMode: D2D1_ANTIALIAS_MODE,
389 ) -> HRESULT,
390 fn PushLayer(
391 layerParameters1: *const D2D1_LAYER_PARAMETERS1,
392 layer: *const ID2D1Layer,
393 ) -> HRESULT,
394 fn PopAxisAlignedClip() -> HRESULT,
395 fn PopLayer() -> HRESULT,
396 }}
397 RIDL!{#[uuid(0xb4f34a19, 0x2383, 0x4d76, 0x94, 0xf6, 0xec, 0x34, 0x36, 0x57, 0xc3, 0xdc)]
398 interface ID2D1CommandList(ID2D1CommandListVtbl): ID2D1Image(ID2D1ImageVtbl) {
399 fn Stream(
400 sink: *const ID2D1CommandSink,
401 ) -> HRESULT,
402 fn Close() -> HRESULT,
403 }}
404 RIDL!{#[uuid(0x2c1d867d, 0xc290, 0x41c8, 0xae, 0x7e, 0x34, 0xa9, 0x87, 0x02, 0xe9, 0xa5)]
405 interface ID2D1PrintControl(ID2D1PrintControlVtbl): IUnknown(IUnknownVtbl) {
406 fn AddPage(
407 commandList: *const ID2D1CommandList,
408 pageSize: D2D_SIZE_F,
409 pagePrintTicketStream: *const IStream,
410 tag1: *mut D2D1_TAG,
411 tag2: *mut D2D1_TAG,
412 ) -> HRESULT,
413 fn Close() -> HRESULT,
414 }}
415 RIDL!{#[uuid(0xfe9e984d, 0x3f95, 0x407c, 0xb5, 0xdb, 0xcb, 0x94, 0xd4, 0xe8, 0xf8, 0x7c)]
416 interface ID2D1ImageBrush(ID2D1ImageBrushVtbl): ID2D1Brush(ID2D1BrushVtbl) {
417 fn SetImage(
418 image: *const ID2D1Image,
419 ) -> (),
420 fn SetExtendModeX(
421 extendModeX: D2D1_EXTEND_MODE,
422 ) -> (),
423 fn SetExtendModeY(
424 extendModeY: D2D1_EXTEND_MODE,
425 ) -> (),
426 fn SetInterpolationMode(
427 interpolationMode: D2D1_INTERPOLATION_MODE,
428 ) -> (),
429 fn SetSourceRectangle(
430 sourceRectangle: *const D2D1_RECT_F,
431 ) -> (),
432 fn GetImage(
433 image: *mut *mut ID2D1Image,
434 ) -> (),
435 fn GetExtendModeX() -> D2D1_EXTEND_MODE,
436 fn GetExtendModeY() -> D2D1_EXTEND_MODE,
437 fn GetInterpolationMode() -> D2D1_INTERPOLATION_MODE,
438 fn GetSourceRectangle(
439 sourceRectangle: *mut D2D1_RECT_F,
440 ) -> (),
441 }}
442 RIDL!{#[uuid(0x41343a53, 0xe41a, 0x49a2, 0x91, 0xcd, 0x21, 0x79, 0x3b, 0xbb, 0x62, 0xe5)]
443 interface ID2D1BitmapBrush1(ID2D1BitmapBrush1Vtbl): ID2D1BitmapBrush(ID2D1BitmapBrushVtbl) {
444 fn SetInterpolationMode1(
445 interpolationMode: D2D1_INTERPOLATION_MODE,
446 ) -> (),
447 fn GetInterpolationMode1() -> D2D1_INTERPOLATION_MODE,
448 }}
449 RIDL!{#[uuid(0x10a72a66, 0xe91c, 0x43f4, 0x99, 0x3f, 0xdd, 0xf4, 0xb8, 0x2b, 0x0b, 0x4a)]
450 interface ID2D1StrokeStyle1(ID2D1StrokeStyle1Vtbl): ID2D1StrokeStyle(ID2D1StrokeStyleVtbl) {
451 fn GetStrokeTransformType() -> D2D1_STROKE_TRANSFORM_TYPE,
452 }}
453 RIDL!{#[uuid(0x62baa2d2, 0xab54, 0x41b7, 0xb8, 0x72, 0x78, 0x7e, 0x01, 0x06, 0xa4, 0x21)]
454 interface ID2D1PathGeometry1(ID2D1PathGeometry1Vtbl): ID2D1PathGeometry(ID2D1PathGeometryVtbl) {
455 fn ComputePointAndSegmentAtLength(
456 length: FLOAT,
457 startSegment: UINT32,
458 worldTransform: *const D2D1_MATRIX_3X2_F,
459 flatteningTolerance: FLOAT,
460 pointDescription: *mut D2D1_POINT_DESCRIPTION,
461 ) -> HRESULT,
462 }}
463 RIDL!{#[uuid(0x483473d7, 0xcd46, 0x4f9d, 0x9d, 0x3a, 0x31, 0x12, 0xaa, 0x80, 0x15, 0x9d)]
464 interface ID2D1Properties(ID2D1PropertiesVtbl): IUnknown(IUnknownVtbl) {
465 fn GetPropertyCount() -> UINT32,
466 fn GetPropertyName(
467 index: UINT32,
468 name: PWSTR,
469 nameCount: UINT32,
470 ) -> HRESULT,
471 fn GetPropertyNameLength(
472 index: UINT32,
473 ) -> UINT32,
474 fn GetType(
475 index: UINT32,
476 ) -> D2D1_PROPERTY_TYPE,
477 fn GetPropertyIndex(
478 name: PCWSTR,
479 ) -> UINT32,
480 fn SetValueByName(
481 name: PCWSTR,
482 prop_type: D2D1_PROPERTY_TYPE,
483 data: *const BYTE,
484 dataSize: UINT32,
485 ) -> HRESULT,
486 fn SetValue(
487 index: UINT32,
488 prop_type: D2D1_PROPERTY_TYPE,
489 data: *const BYTE,
490 dataSize: UINT32,
491 ) -> HRESULT,
492 fn GetValueByName(
493 name: PCWSTR,
494 prop_type: D2D1_PROPERTY_TYPE,
495 data: *mut BYTE,
496 dataSize: UINT32,
497 ) -> HRESULT,
498 fn GetValue(
499 index: UINT32,
500 prop_type: D2D1_PROPERTY_TYPE,
501 data: *mut BYTE,
502 dataSize: UINT32,
503 ) -> HRESULT,
504 fn GetValueSize(
505 index: UINT32,
506 ) -> UINT32,
507 fn GetSubProperties(
508 index: UINT32,
509 subProperties: *mut *mut ID2D1Properties,
510 ) -> HRESULT,
511 }}
512 RIDL!{#[uuid(0x28211a43, 0x7d89, 0x476f, 0x81, 0x81, 0x2d, 0x61, 0x59, 0xb2, 0x20, 0xad)]
513 interface ID2D1Effect(ID2D1EffectVtbl): ID2D1Properties(ID2D1PropertiesVtbl) {
514 fn SetInput(
515 index: UINT32,
516 input: *const ID2D1Image,
517 invalidate: BOOL,
518 ) -> (),
519 fn SetInputCount(
520 inputCount: UINT32,
521 ) -> HRESULT,
522 fn GetInput(
523 index: UINT32,
524 input: *mut *mut ID2D1Image,
525 ) -> (),
526 fn GetInputCount() -> UINT32,
527 fn GetOutput(
528 outputImage: *mut *mut ID2D1Image,
529 ) -> (),
530 }}
531 RIDL!{#[uuid(0xa898a84c, 0x3873, 0x4588, 0xb0, 0x8b, 0xeb, 0xbf, 0x97, 0x8d, 0xf0, 0x41)]
532 interface ID2D1Bitmap1(ID2D1Bitmap1Vtbl): ID2D1Bitmap(ID2D1BitmapVtbl) {
533 fn GetColorContext(
534 colorContext: *mut *mut ID2D1ColorContext,
535 ) -> (),
536 fn GetOptions() -> D2D1_BITMAP_OPTIONS,
537 fn GetSurface(
538 dxgiSurface: *mut *mut IDXGISurface,
539 ) -> HRESULT,
540 fn Map(
541 options: D2D1_MAP_OPTIONS,
542 mappedRect: *mut D2D1_MAPPED_RECT,
543 ) -> HRESULT,
544 fn Unmap() -> HRESULT,
545 }}
546 RIDL!{#[uuid(0x1c4820bb, 0x5771, 0x4518, 0xa5, 0x81, 0x2f, 0xe4, 0xdd, 0x0e, 0xc6, 0x57)]
547 interface ID2D1ColorContext(ID2D1ColorContextVtbl): ID2D1Resource(ID2D1ResourceVtbl) {
548 fn GetColorSpace() -> D2D1_COLOR_SPACE,
549 fn GetProfileSize() -> UINT32,
550 fn GetProfile(
551 profile: *mut BYTE,
552 profileSize: UINT32,
553 ) -> HRESULT,
554 }}
555 RIDL!{#[uuid(0xae1572f4, 0x5dd0, 0x4777, 0x99, 0x8b, 0x92, 0x79, 0x47, 0x2a, 0xe6, 0x3b)]
556 interface ID2D1GradientStopCollection1(ID2D1GradientStopCollection1Vtbl):
557 ID2D1GradientStopCollection(ID2D1GradientStopCollectionVtbl) {
558 fn GetGradientStops1(
559 gradientStops: *mut D2D1_GRADIENT_STOP,
560 gradientStopsCount: UINT32,
561 ) -> (),
562 fn GetPreInterpolationSpace() -> D2D1_COLOR_SPACE,
563 fn GetPostInterpolationSpace() -> D2D1_COLOR_SPACE,
564 fn GetBufferPrecision() -> D2D1_BUFFER_PRECISION,
565 fn GetColorInterpolationMode() -> D2D1_COLOR_INTERPOLATION_MODE,
566 }}
567 RIDL!{#[uuid(0x689f1f85, 0xc72e, 0x4e33, 0x8f, 0x19, 0x85, 0x75, 0x4e, 0xfd, 0x5a, 0xce)]
568 interface ID2D1DrawingStateBlock1(ID2D1DrawingStateBlock1Vtbl):
569 ID2D1DrawingStateBlock(ID2D1DrawingStateBlockVtbl) {
570 fn GetDescription(
571 stateDescription: *mut D2D1_DRAWING_STATE_DESCRIPTION1,
572 ) -> (),
573 fn SetDescription(
574 stateDescription: *const D2D1_DRAWING_STATE_DESCRIPTION1,
575 ) -> (),
576 }}
577 RIDL!{#[uuid(0xe8f7fe7a, 0x191c, 0x466d, 0xad, 0x95, 0x97, 0x56, 0x78, 0xbd, 0xa9, 0x98)]
578 interface ID2D1DeviceContext(ID2D1DeviceContextVtbl): ID2D1RenderTarget(ID2D1RenderTargetVtbl) {
579 fn CreateBitmap(
580 size: D2D1_SIZE_U,
581 sourceData: *const c_void,
582 pitch: UINT32,
583 bitmapProperties: *const D2D1_BITMAP_PROPERTIES1,
584 bitmap: *mut *mut ID2D1Bitmap1,
585 ) -> HRESULT,
586 fn CreateBitmapFromWicBitmap(
587 wicBitmapSource: *const IWICBitmapSource,
588 bitmapProperties: *const D2D1_BITMAP_PROPERTIES1,
589 bitmap: *mut *mut ID2D1Bitmap1,
590 ) -> HRESULT,
591 fn CreateColorContext(
592 space: D2D1_COLOR_SPACE,
593 profile: *const BYTE,
594 profileSize: UINT32,
595 colorContext: *mut *mut ID2D1ColorContext,
596 ) -> HRESULT,
597 fn CreateColorContextFromFilename(
598 filename: PCWSTR,
599 colorContext: *mut *mut ID2D1ColorContext,
600 ) -> HRESULT,
601 fn CreateColorContextFromWicColorContext(
602 wicColorContext: *const IWICColorContext,
603 colorContext: *mut *mut ID2D1ColorContext,
604 ) -> HRESULT,
605 fn CreateBitmapFromDxgiSurface(
606 surface: *const IDXGISurface,
607 bitmapProperties: *const D2D1_BITMAP_PROPERTIES1,
608 bitmap: *mut *mut ID2D1Bitmap1,
609 ) -> HRESULT,
610 fn CreateEffect(
611 effectId: REFCLSID,
612 effect: *mut *mut ID2D1Effect,
613 ) -> HRESULT,
614 fn CreateGradientStopCollection(
615 straightAlphaGradientStops: *const D2D1_GRADIENT_STOP,
616 straightAlphaGradientStopsCount: UINT32,
617 preInterpolationSpace: D2D1_COLOR_SPACE,
618 postInterpolationSpace: D2D1_COLOR_SPACE,
619 bufferPrecision: D2D1_BUFFER_PRECISION,
620 extendMode: D2D1_EXTEND_MODE,
621 colorInterpolationMode: D2D1_COLOR_INTERPOLATION_MODE,
622 gradientStopCollection1: *mut *mut ID2D1GradientStopCollection1,
623 ) -> HRESULT,
624 fn CreateImageBrush(
625 image: *const ID2D1Image,
626 imageBrushProperties: *const D2D1_IMAGE_BRUSH_PROPERTIES,
627 brushProperties: *const D2D1_BRUSH_PROPERTIES,
628 imageBrush: *mut *mut ID2D1ImageBrush,
629 ) -> HRESULT,
630 fn CreateBitmapBrush(
631 bitmap: *const ID2D1Bitmap,
632 bitmapBrushProperties: *const D2D1_BITMAP_BRUSH_PROPERTIES1,
633 brushProperties: *const D2D1_BRUSH_PROPERTIES,
634 bitmapBrush: *mut *mut ID2D1BitmapBrush1,
635 ) -> HRESULT,
636 fn CreateCommandList(
637 commandList: *mut *mut ID2D1CommandList,
638 ) -> HRESULT,
639 fn IsDxgiFormatSupported(
640 format: DXGI_FORMAT,
641 ) -> BOOL,
642 fn IsBufferPrecisionSupported(
643 bufferPrecision: D2D1_BUFFER_PRECISION,
644 ) -> BOOL,
645 fn GetImageLocalBounds(
646 image: *const ID2D1Image,
647 localBounds: *mut D2D1_RECT_F,
648 ) -> HRESULT,
649 fn GetImageWorldBounds(
650 image: *const ID2D1Image,
651 worldBounds: *mut D2D1_RECT_F,
652 ) -> HRESULT,
653 fn GetGlyphRunWorldBounds(
654 baselineOrigin: D2D1_POINT_2F,
655 glyphRun: *const DWRITE_GLYPH_RUN,
656 measuringMode: DWRITE_MEASURING_MODE,
657 bounds: *mut D2D1_RECT_F,
658 ) -> HRESULT,
659 fn GetDevice(
660 device: *mut *mut ID2D1Device,
661 ) -> (),
662 fn SetTarget(
663 image: *const ID2D1Image,
664 ) -> (),
665 fn GetTarget(
666 image: *mut *mut ID2D1Image,
667 ) -> (),
668 fn SetRenderingControls(
669 renderingControls: *const D2D1_RENDERING_CONTROLS,
670 ) -> (),
671 fn GetRenderingControls(
672 renderingControls: *mut D2D1_RENDERING_CONTROLS,
673 ) -> (),
674 fn SetPrimitiveBlend(
675 primitiveBlend: D2D1_PRIMITIVE_BLEND,
676 ) -> (),
677 fn GetPrimitiveBlend() -> D2D1_PRIMITIVE_BLEND,
678 fn SetUnitMode(
679 unitMode: D2D1_UNIT_MODE,
680 ) -> (),
681 fn GetUnitMode() -> D2D1_UNIT_MODE,
682 fn DrawGlyphRun(
683 baselineOrigin: D2D1_POINT_2F,
684 glyphRun: *const DWRITE_GLYPH_RUN,
685 glyphRunDescription: *const DWRITE_GLYPH_RUN_DESCRIPTION,
686 foregroundBrush: *const ID2D1Brush,
687 measuringMode: DWRITE_MEASURING_MODE,
688 ) -> (),
689 fn DrawImage(
690 image: *const ID2D1Image,
691 targetOffset: *const D2D1_POINT_2F,
692 imageRectangle: *const D2D1_RECT_F,
693 interpolationMode: D2D1_INTERPOLATION_MODE,
694 compositeMode: D2D1_COMPOSITE_MODE,
695 ) -> (),
696 fn DrawGdiMetafile(
697 gdiMetafile: *const ID2D1GdiMetafile,
698 targetOffset: *const D2D1_POINT_2F,
699 ) -> (),
700 fn DrawBitmap(
701 bitmap: *const ID2D1Bitmap,
702 destinationRectangle: *const D2D1_RECT_F,
703 opacity: FLOAT,
704 interpolationMode: D2D1_INTERPOLATION_MODE,
705 sourceRectangle: *const D2D1_RECT_F,
706 perspectiveTransform: *const D2D1_MATRIX_4X4_F,
707 ) -> (),
708 fn PushLayer(
709 layerParameters: *const D2D1_LAYER_PARAMETERS1,
710 layer: *const ID2D1Layer,
711 ) -> (),
712 fn InvalidateEffectInputRectangle(
713 effect: *const ID2D1Effect,
714 input: UINT32,
715 inputRectangle: *const D2D1_RECT_F,
716 ) -> HRESULT,
717 fn GetEffectInvalidRectangleCount(
718 effect: *const ID2D1Effect,
719 rectangleCount: *mut UINT32,
720 ) -> HRESULT,
721 fn GetEffectInvalidRectangles(
722 effect: *const ID2D1Effect,
723 rectangles: *mut D2D1_RECT_F,
724 rectanglesCount: UINT32,
725 ) -> HRESULT,
726 fn GetEffectRequiredInputRectangles(
727 renderEffect: *const ID2D1Effect,
728 renderImageRectangle: *const D2D1_RECT_F,
729 inputDescriptions: *const D2D1_EFFECT_INPUT_DESCRIPTION,
730 requiredInputRects: *mut D2D1_RECT_F,
731 inputCount: UINT32,
732 ) -> HRESULT,
733 fn FillOpacityMask(
734 opacityMask: *const ID2D1Bitmap,
735 brush: *const ID2D1Brush,
736 destinationRectangle: *const D2D1_RECT_F,
737 sourceRectangle: *const D2D1_RECT_F,
738 ) -> (),
739 }}
740 RIDL!{#[uuid(0x47dd575d, 0xac05, 0x4cdd, 0x80, 0x49, 0x9b, 0x02, 0xcd, 0x16, 0xf4, 0x4c)]
741 interface ID2D1Device(ID2D1DeviceVtbl): ID2D1Resource(ID2D1ResourceVtbl) {
742 fn CreateDeviceContext(
743 options: D2D1_DEVICE_CONTEXT_OPTIONS,
744 deviceContext: *mut *mut ID2D1DeviceContext,
745 ) -> HRESULT,
746 fn CreatePrintControl(
747 wicFactory: *const IWICImagingFactory,
748 documentTarget: *const IPrintDocumentPackageTarget,
749 printControlProperties: *const D2D1_PRINT_CONTROL_PROPERTIES,
750 printControl: *mut *mut ID2D1PrintControl,
751 ) -> HRESULT,
752 fn SetMaximumTextureMemory(
753 maximumInBytes: UINT64,
754 ) -> (),
755 fn GetMaximumTextureMemory() -> UINT64,
756 fn ClearResources(
757 millisecondsSinceUse: UINT32,
758 ) -> (),
759 }}
760 RIDL!{#[uuid(0xbb12d362, 0xdaee, 0x4b9a, 0xaa, 0x1d, 0x14, 0xba, 0x40, 0x1c, 0xfa, 0x1f)]
761 interface ID2D1Factory1(ID2D1Factory1Vtbl): ID2D1Factory(ID2D1FactoryVtbl) {
762 fn CreateDevice(
763 dxgiDevice: *const IDXGIDevice,
764 d2dDevice: *mut *mut ID2D1Device,
765 ) -> HRESULT,
766 fn CreateStrokeStyle(
767 strokeStyleProperties: *const D2D1_STROKE_STYLE_PROPERTIES1,
768 dashes: *const FLOAT,
769 dashesCount: UINT32,
770 strokeStyle: *mut *mut ID2D1StrokeStyle1,
771 ) -> HRESULT,
772 fn CreatePathGeometry(
773 pathGeometry: *mut *mut ID2D1PathGeometry1,
774 ) -> HRESULT,
775 fn CreateDrawingStateBlock(
776 drawingStateDescription: *const D2D1_DRAWING_STATE_DESCRIPTION1,
777 textRenderingParams: *const IDWriteRenderingParams,
778 drawingStateBlock: *mut *mut ID2D1DrawingStateBlock1,
779 ) -> HRESULT,
780 fn CreateGdiMetafile(
781 metafileStream: *const IStream,
782 metafile: *mut *mut ID2D1GdiMetafile,
783 ) -> HRESULT,
784 fn RegisterEffectFromStream(
785 classId: REFCLSID,
786 propertyXml: *const IStream,
787 bindings: *const D2D1_PROPERTY_BINDING,
788 bindingsCount: UINT32,
789 effectFactory: PD2D1_EFFECT_FACTORY,
790 ) -> HRESULT,
791 fn RegisterEffectFromString(
792 classId: REFCLSID,
793 propertyXml: PCWSTR,
794 bindings: *const D2D1_PROPERTY_BINDING,
795 bindingsCount: UINT32,
796 effectFactory: PD2D1_EFFECT_FACTORY,
797 ) -> HRESULT,
798 fn UnregisterEffect(
799 classId: REFCLSID,
800 ) -> HRESULT,
801 fn GetRegisteredEffects(
802 effects: *mut CLSID,
803 effectsCount: UINT32,
804 effectsReturned: *mut UINT32,
805 effectsRegistered: *mut UINT32,
806 ) -> HRESULT,
807 fn GetEffectProperties(
808 effectId: REFCLSID,
809 properties: *mut *mut ID2D1Properties,
810 ) -> HRESULT,
811 }}
812 RIDL!{#[uuid(0x31e6e7bc, 0xe0ff, 0x4d46, 0x8c, 0x64, 0xa0, 0xa8, 0xc4, 0x1c, 0x15, 0xd3)]
813 interface ID2D1Multithread(ID2D1MultithreadVtbl): IUnknown(IUnknownVtbl) {
814 fn GetMultithreadProtected() -> BOOL,
815 fn Enter() -> (),
816 fn Leave() -> (),
817 }}
818 extern "system" {
819 pub fn D2D1CreateDevice(
820 dxgiDevice: *const IDXGIDevice,
821 creationProperties: *const D2D1_CREATION_PROPERTIES,
822 d2dDevice: *mut *mut ID2D1Device,
823 ) -> HRESULT;
824 pub fn D2D1CreateDeviceContext(
825 dxgiSurface: *const IDXGISurface,
826 creationProperties: *const D2D1_CREATION_PROPERTIES,
827 d2dDeviceContext: *mut *mut ID2D1DeviceContext,
828 ) -> HRESULT;
829 pub fn D2D1ConvertColorSpace(
830 sourceColorSpace: D2D1_COLOR_SPACE,
831 destinationColorSpace: D2D1_COLOR_SPACE,
832 color: *const D2D1_COLOR_F,
833 ) -> D2D1_COLOR_F;
834 pub fn D2D1SinCos(
835 angle: FLOAT,
836 s: *mut FLOAT,
837 c: *mut FLOAT,
838 ) -> ();
839 pub fn D2D1Tan(
840 angle: FLOAT,
841 ) -> FLOAT;
842 pub fn D2D1Vec3Length(
843 x: FLOAT,
844 y: FLOAT,
845 z: FLOAT,
846 ) -> FLOAT;
847 }