1use ctypes::{c_float, c_int, c_void};
8use shared::d3d9types::D3DMATRIX;
9use shared::dcomptypes::{
10 DCOMPOSITION_BACKFACE_VISIBILITY, DCOMPOSITION_BITMAP_INTERPOLATION_MODE,
11 DCOMPOSITION_BORDER_MODE, DCOMPOSITION_COMPOSITE_MODE, DCOMPOSITION_DEPTH_MODE,
12 DCOMPOSITION_FRAME_STATISTICS, DCOMPOSITION_OPACITY_MODE
13};
14use shared::dxgi::IDXGIDevice;
15use shared::dxgi1_2::DXGI_ALPHA_MODE;
16use shared::dxgiformat::DXGI_FORMAT;
17use shared::guiddef::REFIID;
18use shared::minwindef::{BOOL, DWORD, UINT};
19use shared::ntdef::{HANDLE, HRESULT};
20use shared::windef::{HWND, POINT, RECT};
21use um::d2d1::{D2D1_COLOR_F, D2D1_MATRIX_3X2_F};
22use um::d2d1_1::{D2D1_COMPOSITE_MODE, D2D1_MATRIX_5X4_F, D2D1_VECTOR_2F, D2D1_VECTOR_4F};
23use um::d2d1effects::{
24 D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE, D2D1_BLEND_MODE, D2D1_BORDER_MODE,
25 D2D1_COLORMATRIX_ALPHA_MODE, D2D1_TURBULENCE_NOISE
26};
27use um::d2dbasetypes::{D2D_MATRIX_3X2_F, D2D_MATRIX_4X4_F, D2D_RECT_F};
28use um::d3dcommon::D3D_FEATURE_LEVEL;
29use um::dcompanimation::IDCompositionAnimation;
30use um::minwinbase::SECURITY_ATTRIBUTES;
31use um::unknwnbase::{IUnknown, IUnknownVtbl};
32extern "system" {
33 pub fn DCompositionCreateDevice(
34 dxgiDevice: *const IDXGIDevice,
35 iid: REFIID,
36 dcompositionDevice: *mut *mut c_void,
37 ) -> HRESULT;
38 pub fn DCompositionCreateDevice2(
39 renderingDevice: *const IUnknown,
40 iid: REFIID,
41 dcompositionDevice: *mut *mut c_void,
42 ) -> HRESULT;
43 pub fn DCompositionCreateDevice3(
44 renderingDevice: *const IUnknown,
45 iid: REFIID,
46 dcompositionDevice: *mut *mut c_void,
47 ) -> HRESULT;
48 pub fn DCompositionGetFrameStatistics(
49 statistics: *const DCOMPOSITION_FRAME_STATISTICS,
50 minSafeFeaturelLevel: *const D3D_FEATURE_LEVEL,
51 maxHardwareFeaturelLevel: *const D3D_FEATURE_LEVEL,
52 ) -> HRESULT;
53 pub fn DCompositionCreateSurfaceHandle(
54 desiredAccess: DWORD,
55 securityAttributes: *const SECURITY_ATTRIBUTES,
56 surfaceHandle: *mut HANDLE,
57 ) -> HRESULT;
58 pub fn DCompositionAttachMouseWheelToHwnd(
59 visual: *const IDCompositionVisual,
60 hwnd: HWND,
61 enable: BOOL,
62 ) -> HRESULT;
63 pub fn DCompositionAttachMouseDragToHwnd(
64 visual: *const IDCompositionVisual,
65 hwnd: HWND,
66 enable: BOOL,
67 ) -> HRESULT;
68}
69RIDL!{#[uuid(0xc37ea93a, 0xe7aa, 0x450d, 0xb1, 0x6f, 0x97, 0x46, 0xcb, 0x04, 0x07, 0xf3)]
70interface IDCompositionDevice(IDCompositionDeviceVtbl): IUnknown(IUnknownVtbl) {
71 fn Commit() -> HRESULT,
72 fn WaitForCommitCompletion() -> HRESULT,
73 fn GetFrameStatistics(
74 statistics: *mut DCOMPOSITION_FRAME_STATISTICS,
75 ) -> HRESULT,
76 fn CreateTargetForHwnd(
77 hwnd: HWND,
78 topmost: BOOL,
79 target: *mut *mut IDCompositionTarget,
80 ) -> HRESULT,
81 fn CreateVisual(
82 visual: *mut *mut IDCompositionVisual,
83 ) -> HRESULT,
84 fn CreateSurface(
85 width: UINT,
86 height: UINT,
87 pixelFormat: DXGI_FORMAT,
88 alphaMode: DXGI_ALPHA_MODE,
89 surface: *mut *mut IDCompositionSurface,
90 ) -> HRESULT,
91 fn CreateVirtualSurface(
92 initialWidth: UINT,
93 initialHeight: UINT,
94 pixelFormat: DXGI_FORMAT,
95 alphaMode: DXGI_ALPHA_MODE,
96 virtualSurface: *mut *mut IDCompositionVirtualSurface,
97 ) -> HRESULT,
98 fn CreateSurfaceFromHandle(
99 handle: HANDLE,
100 mutsurface: *mut *mut IUnknown,
101 ) -> HRESULT,
102 fn CreateSurfaceFromHwnd(
103 hwnd: HWND,
104 mutsurface: *mut *mut IUnknown,
105 ) -> HRESULT,
106 fn CreateTranslateTransform(
107 translateTransform: *mut *mut IDCompositionTranslateTransform,
108 ) -> HRESULT,
109 fn CreateScaleTransform(
110 scaleTransform: *mut *mut IDCompositionScaleTransform,
111 ) -> HRESULT,
112 fn CreateRotateTransform(
113 rotateTransform: *mut *mut IDCompositionRotateTransform,
114 ) -> HRESULT,
115 fn CreateSkewTransform(
116 skewTransform: *mut *mut IDCompositionSkewTransform,
117 ) -> HRESULT,
118 fn CreateMatrixTransform(
119 matrixTransform: *mut *mut IDCompositionMatrixTransform,
120 ) -> HRESULT,
121 fn CreateTransformGroup(
122 transforms: *const *const IDCompositionTransform,
123 elements: UINT,
124 transformGroup: *mut *mut IDCompositionTransform,
125 ) -> HRESULT,
126 fn CreateTranslateTransform3D(
127 translateTransform3D: *mut *mut IDCompositionTranslateTransform3D,
128 ) -> HRESULT,
129 fn CreateScaleTransform3D(
130 scaleTransform3D: *mut *mut IDCompositionScaleTransform3D,
131 ) -> HRESULT,
132 fn CreateRotateTransform3D(
133 rotateTransform3D: *mut *mut IDCompositionRotateTransform3D,
134 ) -> HRESULT,
135 fn CreateMatrixTransform3D(
136 matrixTransform3D: *mut *mut IDCompositionMatrixTransform3D,
137 ) -> HRESULT,
138 fn CreateTransform3DGroup(
139 transforms3D: *const *const IDCompositionTransform3D,
140 elements: UINT,
141 transform3DGroup: *mut *mut IDCompositionTransform3D,
142 ) -> HRESULT,
143 fn CreateEffectGroup(
144 effectGroup: *mut *mut IDCompositionEffectGroup,
145 ) -> HRESULT,
146 fn CreateRectangleClip(
147 clip: *mut *mut IDCompositionRectangleClip,
148 ) -> HRESULT,
149 fn CreateAnimation(
150 animation: *mut *mut IDCompositionAnimation,
151 ) -> HRESULT,
152 fn CheckDeviceState(
153 pfValid: *mut BOOL,
154 ) -> HRESULT,
155}}
156RIDL!{#[uuid(0xeacdd04c, 0x117e, 0x4e17, 0x88, 0xf4, 0xd1, 0xb1, 0x2b, 0x0e, 0x3d, 0x89)]
157interface IDCompositionTarget(IDCompositionTargetVtbl): IUnknown(IUnknownVtbl) {
158 fn SetRoot(
159 visual: *const IDCompositionVisual,
160 ) -> HRESULT,
161}}
162RIDL!{#[uuid(0x4d93059d, 0x097b, 0x4651, 0x9a, 0x60, 0xf0, 0xf2, 0x51, 0x16, 0xe2, 0xf3)]
163interface IDCompositionVisual(IDCompositionVisualVtbl): IUnknown(IUnknownVtbl) {
164 fn SetOffsetX_2(
165 animation: *const IDCompositionAnimation,
166 ) -> HRESULT,
167 fn SetOffsetX_1(
168 offsetX: c_float,
169 ) -> HRESULT,
170 fn SetOffsetY_2(
171 animation: *const IDCompositionAnimation,
172 ) -> HRESULT,
173 fn SetOffsetY_1(
174 offsetY: c_float,
175 ) -> HRESULT,
176 fn SetTransform_2(
177 transform: *const IDCompositionTransform,
178 ) -> HRESULT,
179 fn SetTransform_1(
180 matrix: *const D2D_MATRIX_3X2_F,
181 ) -> HRESULT,
182 fn SetTransformParent(
183 visual: *const IDCompositionVisual,
184 ) -> HRESULT,
185 fn SetEffect(
186 effect: *const IDCompositionEffect,
187 ) -> HRESULT,
188 fn SetBitmapInterpolationMode(
189 interpolationMode: DCOMPOSITION_BITMAP_INTERPOLATION_MODE,
190 ) -> HRESULT,
191 fn SetBorderMode(
192 borderMode: DCOMPOSITION_BORDER_MODE,
193 ) -> HRESULT,
194 fn SetClip_2(
195 clip: *const IDCompositionClip,
196 ) -> HRESULT,
197 fn SetClip_1(
198 rect: *const D2D_RECT_F,
199 ) -> HRESULT,
200 fn SetContent(
201 content: *const IUnknown,
202 ) -> HRESULT,
203 fn AddVisual(
204 visual: *const IDCompositionVisual,
205 insertAbove: BOOL,
206 referenceVisual: *const IDCompositionVisual,
207 ) -> HRESULT,
208 fn RemoveVisual(
209 visual: *const IDCompositionVisual,
210 ) -> HRESULT,
211 fn RemoveAllVisuals() -> HRESULT,
212 fn SetCompositeMode(
213 compositeMode: DCOMPOSITION_COMPOSITE_MODE,
214 ) -> HRESULT,
215}}
216RIDL!{#[uuid(0xec81b08f, 0xbfcb, 0x4e8d, 0xb1, 0x93, 0xa9, 0x15, 0x58, 0x79, 0x99, 0xe8)]
217interface IDCompositionEffect(IDCompositionEffectVtbl): IUnknown(IUnknownVtbl) {}}
218RIDL!{#[uuid(0x71185722, 0x246b, 0x41f2, 0xaa, 0xd1, 0x04, 0x43, 0xf7, 0xf4, 0xbf, 0xc2)]
219interface IDCompositionTransform3D(IDCompositionTransform3DVtbl):
220 IDCompositionEffect(IDCompositionEffectVtbl) {}}
221RIDL!{#[uuid(0xfd55faa7, 0x37e0, 0x4c20, 0x95, 0xd2, 0x9b, 0xe4, 0x5b, 0xc3, 0x3f, 0x55)]
222interface IDCompositionTransform(IDCompositionTransformVtbl):
223 IDCompositionTransform3D(IDCompositionTransform3DVtbl) {}}
224RIDL!{#[uuid(0x06791122, 0xc6f0, 0x417d, 0x83, 0x23, 0x26, 0x9e, 0x98, 0x7f, 0x59, 0x54)]
225interface IDCompositionTranslateTransform(IDCompositionTranslateTransformVtbl):
226 IDCompositionTransform(IDCompositionTransformVtbl) {
227 fn SetOffsetX_2(
228 animation: *const IDCompositionAnimation,
229 ) -> HRESULT,
230 fn SetOffsetX_1(
231 offsetX: c_float,
232 ) -> HRESULT,
233 fn SetOffsetY_2(
234 animation: *const IDCompositionAnimation,
235 ) -> HRESULT,
236 fn SetOffsetY_1(
237 offsetY: c_float,
238 ) -> HRESULT,
239}}
240RIDL!{#[uuid(0x71fde914, 0x40ef, 0x45ef, 0xbd, 0x51, 0x68, 0xb0, 0x37, 0xc3, 0x39, 0xf9)]
241interface IDCompositionScaleTransform(IDCompositionScaleTransformVtbl):
242 IDCompositionTransform(IDCompositionTransformVtbl) {
243 fn SetScaleX_2(
244 animation: *const IDCompositionAnimation,
245 ) -> HRESULT,
246 fn SetScaleX_1(
247 scaleX: c_float,
248 ) -> HRESULT,
249 fn SetScaleY_2(
250 animation: *const IDCompositionAnimation,
251 ) -> HRESULT,
252 fn SetScaleY_1(
253 scaleY: c_float,
254 ) -> HRESULT,
255 fn SetCenterX_2(
256 animation: *const IDCompositionAnimation,
257 ) -> HRESULT,
258 fn SetCenterX_1(
259 centerX: c_float,
260 ) -> HRESULT,
261 fn SetCenterY_2(
262 animation: *const IDCompositionAnimation,
263 ) -> HRESULT,
264 fn SetCenterY_1(
265 centerY: c_float,
266 ) -> HRESULT,
267}}
268RIDL!{#[uuid(0x641ed83c, 0xae96, 0x46c5, 0x90, 0xdc, 0x32, 0x77, 0x4c, 0xc5, 0xc6, 0xd5)]
269interface IDCompositionRotateTransform(IDCompositionRotateTransformVtbl):
270 IDCompositionTransform(IDCompositionTransformVtbl) {
271 fn SetAngle_2(
272 animation: *const IDCompositionAnimation,
273 ) -> HRESULT,
274 fn SetAngle_1(
275 angle: c_float,
276 ) -> HRESULT,
277 fn SetCenterX_2(
278 animation: *const IDCompositionAnimation,
279 ) -> HRESULT,
280 fn SetCenterX_1(
281 centerX: c_float,
282 ) -> HRESULT,
283 fn SetCenterY_2(
284 animation: *const IDCompositionAnimation,
285 ) -> HRESULT,
286 fn SetCenterY_1(
287 centerY: c_float,
288 ) -> HRESULT,
289}}
290RIDL!{#[uuid(0xe57aa735, 0xdcdb, 0x4c72, 0x9c, 0x61, 0x05, 0x91, 0xf5, 0x88, 0x89, 0xee)]
291interface IDCompositionSkewTransform(IDCompositionSkewTransformVtbl):
292 IDCompositionTransform(IDCompositionTransformVtbl) {
293 fn SetAngleX_2(
294 animation: *const IDCompositionAnimation,
295 ) -> HRESULT,
296 fn SetAngleX_1(
297 angleX: c_float,
298 ) -> HRESULT,
299 fn SetAngleY_2(
300 animation: *const IDCompositionAnimation,
301 ) -> HRESULT,
302 fn SetAngleY_1(
303 angleY: c_float,
304 ) -> HRESULT,
305 fn SetCenterX_2(
306 animation: *const IDCompositionAnimation,
307 ) -> HRESULT,
308 fn SetCenterX_1(
309 centerX: c_float,
310 ) -> HRESULT,
311 fn SetCenterY_2(
312 animation: *const IDCompositionAnimation,
313 ) -> HRESULT,
314 fn SetCenterY_1(
315 centerY: c_float,
316 ) -> HRESULT,
317}}
318RIDL!{#[uuid(0x16cdff07, 0xc503, 0x419c, 0x83, 0xf2, 0x09, 0x65, 0xc7, 0xaf, 0x1f, 0xa6)]
319interface IDCompositionMatrixTransform(IDCompositionMatrixTransformVtbl):
320 IDCompositionTransform(IDCompositionTransformVtbl) {
321 fn SetMatrix(
322 matrix: *const D2D_MATRIX_3X2_F,
323 ) -> HRESULT,
324 fn SetMatrixElement_2(
325 row: c_int,
326 column: c_int,
327 animation: *const IDCompositionAnimation,
328 ) -> HRESULT,
329 fn SetMatrixElement_1(
330 row: c_int,
331 column: c_int,
332 value: c_float,
333 ) -> HRESULT,
334}}
335RIDL!{#[uuid(0xa7929a74, 0xe6b2, 0x4bd6, 0x8b, 0x95, 0x40, 0x40, 0x11, 0x9c, 0xa3, 0x4d)]
336interface IDCompositionEffectGroup(IDCompositionEffectGroupVtbl):
337 IDCompositionEffect(IDCompositionEffectVtbl) {
338 fn SetOpacity_2(
339 animation: *const IDCompositionAnimation,
340 ) -> HRESULT,
341 fn SetOpacity_1(
342 opacity: c_float,
343 ) -> HRESULT,
344 fn SetTransform3D(
345 transform3D: *const IDCompositionTransform3D,
346 ) -> HRESULT,
347}}
348RIDL!{#[uuid(0x91636d4b, 0x9ba1, 0x4532, 0xaa, 0xf7, 0xe3, 0x34, 0x49, 0x94, 0xd7, 0x88)]
349interface IDCompositionTranslateTransform3D(IDCompositionTranslateTransform3DVtbl):
350 IDCompositionTransform3D(IDCompositionTransform3DVtbl) {
351 fn SetOffsetX_2(
352 animation: *const IDCompositionAnimation,
353 ) -> HRESULT,
354 fn SetOffsetX_1(
355 offsetX: c_float,
356 ) -> HRESULT,
357 fn SetOffsetY_2(
358 animation: *const IDCompositionAnimation,
359 ) -> HRESULT,
360 fn SetOffsetY_1(
361 offsetY: c_float,
362 ) -> HRESULT,
363 fn SetOffsetZ_2(
364 animation: *const IDCompositionAnimation,
365 ) -> HRESULT,
366 fn SetOffsetZ_1(
367 offsetZ: c_float,
368 ) -> HRESULT,
369}}
370RIDL!{#[uuid(0x2a9e9ead, 0x364b, 0x4b15, 0xa7, 0xc4, 0xa1, 0x99, 0x7f, 0x78, 0xb3, 0x89)]
371interface IDCompositionScaleTransform3D(IDCompositionScaleTransform3DVtbl):
372 IDCompositionTransform3D(IDCompositionTransform3DVtbl) {
373 fn SetScaleX_2(
374 animation: *const IDCompositionAnimation,
375 ) -> HRESULT,
376 fn SetScaleX_1(
377 scaleX: c_float,
378 ) -> HRESULT,
379 fn SetScaleY_2(
380 animation: *const IDCompositionAnimation,
381 ) -> HRESULT,
382 fn SetScaleY_1(
383 scaleY: c_float,
384 ) -> HRESULT,
385 fn SetScaleZ_2(
386 animation: *const IDCompositionAnimation,
387 ) -> HRESULT,
388 fn SetScaleZ_1(
389 scaleZ: c_float,
390 ) -> HRESULT,
391 fn SetCenterX_2(
392 animation: *const IDCompositionAnimation,
393 ) -> HRESULT,
394 fn SetCenterX_1(
395 centerX: c_float,
396 ) -> HRESULT,
397 fn SetCenterY_2(
398 animation: *const IDCompositionAnimation,
399 ) -> HRESULT,
400 fn SetCenterY_1(
401 centerY: c_float,
402 ) -> HRESULT,
403 fn SetCenterZ_2(
404 animation: *const IDCompositionAnimation,
405 ) -> HRESULT,
406 fn SetCenterZ_1(
407 centerZ: c_float,
408 ) -> HRESULT,
409}}
410RIDL!{#[uuid(0xd8f5b23f, 0xd429, 0x4a91, 0xb5, 0x5a, 0xd2, 0xf4, 0x5f, 0xd7, 0x5b, 0x18)]
411interface IDCompositionRotateTransform3D(IDCompositionRotateTransform3DVtbl):
412 IDCompositionTransform3D(IDCompositionTransform3DVtbl) {
413 fn SetAngle_2(
414 animation: *const IDCompositionAnimation,
415 ) -> HRESULT,
416 fn SetAngle_1(
417 angle: c_float,
418 ) -> HRESULT,
419 fn SetAxisX_2(
420 animation: *const IDCompositionAnimation,
421 ) -> HRESULT,
422 fn SetAxisX_1(
423 axisX: c_float,
424 ) -> HRESULT,
425 fn SetAxisY_2(
426 animation: *const IDCompositionAnimation,
427 ) -> HRESULT,
428 fn SetAxisY_1(
429 axisY: c_float,
430 ) -> HRESULT,
431 fn SetAxisZ_2(
432 animation: *const IDCompositionAnimation,
433 ) -> HRESULT,
434 fn SetAxisZ_1(
435 axisZ: c_float,
436 ) -> HRESULT,
437 fn SetCenterX_2(
438 animation: *const IDCompositionAnimation,
439 ) -> HRESULT,
440 fn SetCenterX_1(
441 centerX: c_float,
442 ) -> HRESULT,
443 fn SetCenterY_2(
444 animation: *const IDCompositionAnimation,
445 ) -> HRESULT,
446 fn SetCenterY_1(
447 centerY: c_float,
448 ) -> HRESULT,
449 fn SetCenterZ_2(
450 animation: *const IDCompositionAnimation,
451 ) -> HRESULT,
452 fn SetCenterZ_1(
453 centerZ: c_float,
454 ) -> HRESULT,
455}}
456RIDL!{#[uuid(0x4b3363f0, 0x643b, 0x41b7, 0xb6, 0xe0, 0xcc, 0xf2, 0x2d, 0x34, 0x46, 0x7c)]
457interface IDCompositionMatrixTransform3D(IDCompositionMatrixTransform3DVtbl):
458 IDCompositionTransform3D(IDCompositionTransform3DVtbl) {
459 fn SetMatrix(
460 matrix: *const D3DMATRIX,
461 ) -> HRESULT,
462 fn SetMatrixElement_2(
463 row: c_int,
464 column: c_int,
465 animation: *const IDCompositionAnimation,
466 ) -> HRESULT,
467 fn SetMatrixElement_1(
468 row: c_int,
469 column: c_int,
470 value: c_float,
471 ) -> HRESULT,
472}}
473RIDL!{#[uuid(0x64ac3703, 0x9d3f, 0x45ec, 0xa1, 0x09, 0x7c, 0xac, 0x0e, 0x7a, 0x13, 0xa7)]
474interface IDCompositionClip(IDCompositionClipVtbl): IUnknown(IUnknownVtbl) {}}
475RIDL!{#[uuid(0x9842ad7d, 0xd9cf, 0x4908, 0xae, 0xd7, 0x48, 0xb5, 0x1d, 0xa5, 0xe7, 0xc2)]
476interface IDCompositionRectangleClip(IDCompositionRectangleClipVtbl):
477 IDCompositionClip(IDCompositionClipVtbl) {
478 fn SetLeft_2(
479 animation: *const IDCompositionAnimation,
480 ) -> HRESULT,
481 fn SetLeft_1(
482 left: c_float,
483 ) -> HRESULT,
484 fn SetTop_2(
485 animation: *const IDCompositionAnimation,
486 ) -> HRESULT,
487 fn SetTop_1(
488 top: c_float,
489 ) -> HRESULT,
490 fn SetRight_2(
491 animation: *const IDCompositionAnimation,
492 ) -> HRESULT,
493 fn SetRight_1(
494 right: c_float,
495 ) -> HRESULT,
496 fn SetBottom_2(
497 animation: *const IDCompositionAnimation,
498 ) -> HRESULT,
499 fn SetBottom_1(
500 bottom: c_float,
501 ) -> HRESULT,
502 fn SetTopLeftRadiusX_2(
503 animation: *const IDCompositionAnimation,
504 ) -> HRESULT,
505 fn SetTopLeftRadiusX_1(
506 radius: c_float,
507 ) -> HRESULT,
508 fn SetTopLeftRadiusY_2(
509 animation: *const IDCompositionAnimation,
510 ) -> HRESULT,
511 fn SetTopLeftRadiusY_1(
512 radius: c_float,
513 ) -> HRESULT,
514 fn SetTopRightRadiusX_2(
515 animation: *const IDCompositionAnimation,
516 ) -> HRESULT,
517 fn SetTopRightRadiusX_1(
518 radius: c_float,
519 ) -> HRESULT,
520 fn SetTopRightRadiusY_2(
521 animation: *const IDCompositionAnimation,
522 ) -> HRESULT,
523 fn SetTopRightRadiusY_1(
524 radius: c_float,
525 ) -> HRESULT,
526 fn SetBottomLeftRadiusX_2(
527 animation: *const IDCompositionAnimation,
528 ) -> HRESULT,
529 fn SetBottomLeftRadiusX_1(
530 radius: c_float,
531 ) -> HRESULT,
532 fn SetBottomLeftRadiusY_2(
533 animation: *const IDCompositionAnimation,
534 ) -> HRESULT,
535 fn SetBottomLeftRadiusY_1(
536 radius: c_float,
537 ) -> HRESULT,
538 fn SetBottomRightRadiusX_2(
539 animation: *const IDCompositionAnimation,
540 ) -> HRESULT,
541 fn SetBottomRightRadiusX_1(
542 radius: c_float,
543 ) -> HRESULT,
544 fn SetBottomRightRadiusY_2(
545 animation: *const IDCompositionAnimation,
546 ) -> HRESULT,
547 fn SetBottomRightRadiusY_1(
548 radius: c_float,
549 ) -> HRESULT,
550}}
551RIDL!{#[uuid(0xbb8a4953, 0x2c99, 0x4f5a, 0x96, 0xf5, 0x48, 0x19, 0x02, 0x7f, 0xa3, 0xac)]
552interface IDCompositionSurface(IDCompositionSurfaceVtbl): IUnknown(IUnknownVtbl) {
553 fn BeginDraw(
554 updateRect: *const RECT,
555 iid: REFIID,
556 updateObject: *mut *mut c_void,
557 updateOffset: *mut POINT,
558 ) -> HRESULT,
559 fn EndDraw() -> HRESULT,
560 fn SuspendDraw() -> HRESULT,
561 fn ResumeDraw() -> HRESULT,
562 fn Scroll(
563 scrollRect: *const RECT,
564 clipRect: *const RECT,
565 offsetX: c_int,
566 offsetY: c_int,
567 ) -> HRESULT,
568}}
569RIDL!{#[uuid(0xae471c51, 0x5f53, 0x4a24, 0x8d, 0x3e, 0xd0, 0xc3, 0x9c, 0x30, 0xb3, 0xf0)]
570interface IDCompositionVirtualSurface(IDCompositionVirtualSurfaceVtbl):
571 IDCompositionSurface(IDCompositionSurfaceVtbl) {
572 fn Resize(
573 width: UINT,
574 height: UINT,
575 ) -> HRESULT,
576 fn Trim(
577 rectangles: *const RECT,
578 count: UINT,
579 ) -> HRESULT,
580}}
581RIDL!{#[uuid(0x75f6468d, 0x1b8e, 0x447c, 0x9b, 0xc6, 0x75, 0xfe, 0xa8, 0x0b, 0x5b, 0x25)]
582interface IDCompositionDevice2(IDCompositionDevice2Vtbl): IUnknown(IUnknownVtbl) {
583 fn Commit() -> HRESULT,
584 fn WaitForCommitCompletion() -> HRESULT,
585 fn GetFrameStatistics(
586 statistics: *mut DCOMPOSITION_FRAME_STATISTICS,
587 ) -> HRESULT,
588 fn CreateVisual(
589 visual: *mut *mut IDCompositionVisual2,
590 ) -> HRESULT,
591 fn CreateSurfaceFactory(
592 renderingDevice: *const IUnknown,
593 surfaceFactory: *mut *mut IDCompositionSurfaceFactory,
594 ) -> HRESULT,
595 fn CreateSurface(
596 width: UINT,
597 height: UINT,
598 pixelFormat: DXGI_FORMAT,
599 alphaMode: DXGI_ALPHA_MODE,
600 surface: *mut *mut IDCompositionSurface,
601 ) -> HRESULT,
602 fn CreateVirtualSurface(
603 initialWidth: UINT,
604 initialHeight: UINT,
605 pixelFormat: DXGI_FORMAT,
606 alphaMode: DXGI_ALPHA_MODE,
607 virtualSurface: *mut *mut IDCompositionVirtualSurface,
608 ) -> HRESULT,
609 fn CreateTranslateTransform(
610 translateTransform: *mut *mut IDCompositionTranslateTransform,
611 ) -> HRESULT,
612 fn CreateScaleTransform(
613 scaleTransform: *mut *mut IDCompositionScaleTransform,
614 ) -> HRESULT,
615 fn CreateRotateTransform(
616 rotateTransform: *mut *mut IDCompositionRotateTransform,
617 ) -> HRESULT,
618 fn CreateSkewTransform(
619 skewTransform: *mut *mut IDCompositionSkewTransform,
620 ) -> HRESULT,
621 fn CreateMatrixTransform(
622 matrixTransform: *mut *mut IDCompositionMatrixTransform,
623 ) -> HRESULT,
624 fn CreateTransformGroup(
625 transforms: *const *const IDCompositionTransform,
626 elements: UINT,
627 transformGroup: *mut *mut IDCompositionTransform,
628 ) -> HRESULT,
629 fn CreateTranslateTransform3D(
630 translateTransform3D: *mut *mut IDCompositionTranslateTransform3D,
631 ) -> HRESULT,
632 fn CreateScaleTransform3D(
633 scaleTransform3D: *mut *mut IDCompositionScaleTransform3D,
634 ) -> HRESULT,
635 fn CreateRotateTransform3D(
636 rotateTransform3D: *mut *mut IDCompositionRotateTransform3D,
637 ) -> HRESULT,
638 fn CreateMatrixTransform3D(
639 matrixTransform3D: *mut *mut IDCompositionMatrixTransform3D,
640 ) -> HRESULT,
641 fn CreateTransform3DGroup(
642 transforms3D: *const *const IDCompositionTransform3D,
643 elements: UINT,
644 transform3DGroup: *mut *mut IDCompositionTransform3D,
645 ) -> HRESULT,
646 fn CreateEffectGroup(
647 effectGroup: *mut *mut IDCompositionEffectGroup,
648 ) -> HRESULT,
649 fn CreateRectangleClip(
650 clip: *mut *mut IDCompositionRectangleClip,
651 ) -> HRESULT,
652 fn CreateAnimation(
653 animation: *mut *mut IDCompositionAnimation,
654 ) -> HRESULT,
655}}
656RIDL!{#[uuid(0x5f4633fe, 0x1e08, 0x4cb8, 0x8c, 0x75, 0xce, 0x24, 0x33, 0x3f, 0x56, 0x02)]
657interface IDCompositionDesktopDevice(IDCompositionDesktopDeviceVtbl):
658 IDCompositionDevice2(IDCompositionDevice2Vtbl) {
659 fn CreateTargetForHwnd(
660 hwnd: HWND,
661 topmost: BOOL,
662 target: *mut *mut IDCompositionTarget,
663 ) -> HRESULT,
664 fn CreateSurfaceFromHandle(
665 handle: HANDLE,
666 surface: *mut *mut IUnknown,
667 ) -> HRESULT,
668 fn CreateSurfaceFromHwnd(
669 hwnd: HWND,
670 surface: *mut *mut IUnknown,
671 ) -> HRESULT,
672}}
673RIDL!{#[uuid(0xa1a3c64a, 0x224f, 0x4a81, 0x97, 0x73, 0x4f, 0x03, 0xa8, 0x9d, 0x3c, 0x6c)]
674interface IDCompositionDeviceDebug(IDCompositionDeviceDebugVtbl): IUnknown(IUnknownVtbl) {
675 fn EnableDebugCounters() -> HRESULT,
676 fn DisableDebugCounters() -> HRESULT,
677}}
678RIDL!{#[uuid(0xe334bc12, 0x3937, 0x4e02, 0x85, 0xeb, 0xfc, 0xf4, 0xeb, 0x30, 0xd2, 0xc8)]
679interface IDCompositionSurfaceFactory(IDCompositionSurfaceFactoryVtbl): IUnknown(IUnknownVtbl) {
680 fn CreateSurface(
681 width: UINT,
682 height: UINT,
683 pixelFormat: DXGI_FORMAT,
684 alphaMode: DXGI_ALPHA_MODE,
685 surface: *mut *mut IDCompositionSurface,
686 ) -> HRESULT,
687 fn CreateVirtualSurface(
688 initialWidth: UINT,
689 initialHeight: UINT,
690 pixelFormat: DXGI_FORMAT,
691 alphaMode: DXGI_ALPHA_MODE,
692 virtualSurface: *mut *mut IDCompositionVirtualSurface,
693 ) -> HRESULT,
694}}
695RIDL!{#[uuid(0xe8de1639, 0x4331, 0x4b26, 0xbc, 0x5f, 0x6a, 0x32, 0x1d, 0x34, 0x7a, 0x85)]
696interface IDCompositionVisual2(IDCompositionVisual2Vtbl):
697 IDCompositionVisual(IDCompositionVisualVtbl) {
698 fn SetOpacityMode(
699 mode: DCOMPOSITION_OPACITY_MODE,
700 ) -> HRESULT,
701 fn SetBackFaceVisibility(
702 visibility: DCOMPOSITION_BACKFACE_VISIBILITY,
703 ) -> HRESULT,
704}}
705RIDL!{#[uuid(0xfed2b808, 0x5eb4, 0x43a0, 0xae, 0xa3, 0x35, 0xf6, 0x52, 0x80, 0xf9, 0x1b)]
706interface IDCompositionVisualDebug(IDCompositionVisualDebugVtbl):
707 IDCompositionVisual2(IDCompositionVisual2Vtbl) {
708 fn EnableHeatMap(
709 color: *const D2D1_COLOR_F,
710 ) -> HRESULT,
711 fn DisableHeatMap() -> HRESULT,
712 fn EnableRedrawRegions() -> HRESULT,
713 fn DisableRedrawRegions() -> HRESULT,
714}}
715RIDL!{#[uuid(0x2775f462, 0xb6c1, 0x4015, 0xb0, 0xbe, 0xb3, 0xe7, 0xd6, 0xa4, 0x97, 0x6d)]
716interface IDCompositionVisual3(IDCompositionVisual3Vtbl):
717 IDCompositionVisualDebug(IDCompositionVisualDebugVtbl) {
718 fn SetDepthMode(
719 mode: DCOMPOSITION_DEPTH_MODE,
720 ) -> HRESULT,
721 fn SetOffsetZ_2(
722 animation: *const IDCompositionAnimation,
723 ) -> HRESULT,
724 fn SetOffsetZ_1(
725 offsetZ: c_float,
726 ) -> HRESULT,
727 fn SetOpacity_2(
728 animation: *const IDCompositionAnimation,
729 ) -> HRESULT,
730 fn SetOpacity_1(
731 opacity: c_float,
732 ) -> HRESULT,
733 fn SetTransform_2(
734 transform: *const IDCompositionTransform3D,
735 ) -> HRESULT,
736 fn SetTransform_1(
737 matrix: *const D2D_MATRIX_4X4_F,
738 ) -> HRESULT,
739 fn SetVisible(
740 visible: BOOL,
741 ) -> HRESULT,
742}}
743RIDL!{#[uuid(0x0987cb06, 0xf916, 0x48bf, 0x8d, 0x35, 0xce, 0x76, 0x41, 0x78, 0x1b, 0xd9)]
744interface IDCompositionDevice3(IDCompositionDevice3Vtbl):
745 IDCompositionDevice2(IDCompositionDevice2Vtbl) {
746 fn CreateGaussianBlurEffect(
747 gaussianBlurEffect: *mut *mut IDCompositionGaussianBlurEffect,
748 ) -> HRESULT,
749 fn CreateBrightnessEffect(
750 brightnessEffect: *mut *mut IDCompositionBrightnessEffect,
751 ) -> HRESULT,
752 fn CreateColorMatrixEffect(
753 colorMatrixEffect: *mut *mut IDCompositionColorMatrixEffect,
754 ) -> HRESULT,
755 fn CreateShadowEffect(
756 shadowEffect: *mut *mut IDCompositionShadowEffect,
757 ) -> HRESULT,
758 fn CreateHueRotationEffect(
759 hueRotationEffect: *mut *mut IDCompositionHueRotationEffect,
760 ) -> HRESULT,
761 fn CreateSaturationEffect(
762 saturationEffect: *mut *mut IDCompositionSaturationEffect,
763 ) -> HRESULT,
764 fn CreateTurbulenceEffect(
765 turbulenceEffect: *mut *mut IDCompositionTurbulenceEffect,
766 ) -> HRESULT,
767 fn CreateLinearTransferEffect(
768 linearTransferEffect: *mut *mut IDCompositionLinearTransferEffect,
769 ) -> HRESULT,
770 fn CreateTableTransferEffect(
771 tableTransferEffect: *mut *mut IDCompositionTableTransferEffect,
772 ) -> HRESULT,
773 fn CreateCompositeEffect(
774 compositeEffect: *mut *mut IDCompositionCompositeEffect,
775 ) -> HRESULT,
776 fn CreateBlendEffect(
777 blendEffect: *mut *mut IDCompositionBlendEffect,
778 ) -> HRESULT,
779 fn CreateArithmeticCompositeEffect(
780 arithmeticCompositeEffect: *mut *mut IDCompositionArithmeticCompositeEffect,
781 ) -> HRESULT,
782 fn CreateAffineTransform2DEffect(
783 affineTransform2dEffect: *mut *mut IDCompositionAffineTransform2DEffect,
784 ) -> HRESULT,
785}}
786RIDL!{#[uuid(0x30c421d5, 0x8cb2, 0x4e9f, 0xb1, 0x33, 0x37, 0xbe, 0x27, 0x0d, 0x4a, 0xc2)]
787interface IDCompositionFilterEffect(IDCompositionFilterEffectVtbl):
788 IDCompositionEffect(IDCompositionEffectVtbl) {
789 fn SetInput(
790 index: UINT,
791 input: *const IUnknown,
792 flags: UINT,
793 ) -> HRESULT,
794}}
795RIDL!{#[uuid(0x45d4d0b7, 0x1bd4, 0x454e, 0x88, 0x94, 0x2b, 0xfa, 0x68, 0x44, 0x30, 0x33)]
796interface IDCompositionGaussianBlurEffect(IDCompositionGaussianBlurEffectVtbl):
797 IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) {
798 fn SetStandardDeviation_2(
799 animation: *const IDCompositionAnimation,
800 ) -> HRESULT,
801 fn SetStandardDeviation_1(
802 amount: c_float,
803 ) -> HRESULT,
804 fn SetBorderMode(
805 mode: D2D1_BORDER_MODE,
806 ) -> HRESULT,
807}}
808RIDL!{#[uuid(0x6027496e, 0xcb3a, 0x49ab, 0x93, 0x4f, 0xd7, 0x98, 0xda, 0x4f, 0x7d, 0xa6)]
809interface IDCompositionBrightnessEffect(IDCompositionBrightnessEffectVtbl):
810 IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) {
811 fn SetWhitePoint(
812 whitePoint: *const D2D1_VECTOR_2F,
813 ) -> HRESULT,
814 fn SetBlackPoint(
815 blackPoint: *const D2D1_VECTOR_2F,
816 ) -> HRESULT,
817 fn SetWhitePointX_2(
818 animation: *const IDCompositionAnimation,
819 ) -> HRESULT,
820 fn SetWhitePointX_1(
821 whitePointX: c_float,
822 ) -> HRESULT,
823 fn SetWhitePointY_2(
824 animation: *const IDCompositionAnimation,
825 ) -> HRESULT,
826 fn SetWhitePointY_1(
827 whitePointY: c_float,
828 ) -> HRESULT,
829 fn SetBlackPointX_2(
830 animation: *const IDCompositionAnimation,
831 ) -> HRESULT,
832 fn SetBlackPointX_1(
833 blackPointX: c_float,
834 ) -> HRESULT,
835 fn SetBlackPointY_2(
836 animation: *const IDCompositionAnimation,
837 ) -> HRESULT,
838 fn SetBlackPointY_1(
839 blackPointY: c_float,
840 ) -> HRESULT,
841}}
842RIDL!{#[uuid(0xc1170a22, 0x3ce2, 0x4966, 0x90, 0xd4, 0x55, 0x40, 0x8b, 0xfc, 0x84, 0xc4)]
843interface IDCompositionColorMatrixEffect(IDCompositionColorMatrixEffectVtbl):
844 IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) {
845 fn SetMatrix(
846 matrix: *const D2D1_MATRIX_5X4_F,
847 ) -> HRESULT,
848 fn SetMatrixElement_2(
849 row: c_int,
850 column: c_int,
851 animation: *const IDCompositionAnimation,
852 ) -> HRESULT,
853 fn SetMatrixElement_1(
854 row: c_int,
855 column: c_int,
856 value: c_float,
857 ) -> HRESULT,
858 fn SetAlphaMode(
859 mode: D2D1_COLORMATRIX_ALPHA_MODE,
860 ) -> HRESULT,
861 fn SetClampOutput(
862 clamp: BOOL,
863 ) -> HRESULT,
864}}
865RIDL!{#[uuid(0x4ad18ac0, 0xcfd2, 0x4c2f, 0xbb, 0x62, 0x96, 0xe5, 0x4f, 0xdb, 0x68, 0x79)]
866interface IDCompositionShadowEffect(IDCompositionShadowEffectVtbl):
867 IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) {
868 fn SetStandardDeviation_2(
869 animation: *const IDCompositionAnimation,
870 ) -> HRESULT,
871 fn SetStandardDeviation_1(
872 amount: c_float,
873 ) -> HRESULT,
874 fn SetColor(
875 color: *const D2D1_VECTOR_4F,
876 ) -> HRESULT,
877 fn SetRed_2(
878 animation: *const IDCompositionAnimation,
879 ) -> HRESULT,
880 fn SetRed_1(
881 amount: c_float,
882 ) -> HRESULT,
883 fn SetGreen_2(
884 animation: *const IDCompositionAnimation,
885 ) -> HRESULT,
886 fn SetGreen_1(
887 amount: c_float,
888 ) -> HRESULT,
889 fn SetBlue_2(
890 animation: *const IDCompositionAnimation,
891 ) -> HRESULT,
892 fn SetBlue_1(
893 amount: c_float,
894 ) -> HRESULT,
895 fn SetAlpha_2(
896 animation: *const IDCompositionAnimation,
897 ) -> HRESULT,
898 fn SetAlpha_1(
899 amount: c_float,
900 ) -> HRESULT,
901}}
902RIDL!{#[uuid(0x6db9f920, 0x0770, 0x4781, 0xb0, 0xc6, 0x38, 0x19, 0x12, 0xf9, 0xd1, 0x67)]
903interface IDCompositionHueRotationEffect(IDCompositionHueRotationEffectVtbl):
904 IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) {
905 fn SetAngle_2(
907 animation: *const IDCompositionAnimation,
908 ) -> HRESULT,
909 fn SetAngle_1(
910 amountDegrees: c_float,
911 ) -> HRESULT,
912}}
913RIDL!{#[uuid(0xa08debda, 0x3258, 0x4fa4, 0x9f, 0x16, 0x91, 0x74, 0xd3, 0xfe, 0x93, 0xb1)]
914interface IDCompositionSaturationEffect(IDCompositionSaturationEffectVtbl):
915 IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) {
916 fn SetSaturation_2(
918 animation: *const IDCompositionAnimation,
919 ) -> HRESULT,
920 fn SetSaturation_1(
921 ratio: c_float,
922 ) -> HRESULT,
923}}
924RIDL!{#[uuid(0xa6a55bda, 0xc09c, 0x49f3, 0x91, 0x93, 0xa4, 0x19, 0x22, 0xc8, 0x97, 0x15)]
925interface IDCompositionTurbulenceEffect(IDCompositionTurbulenceEffectVtbl):
926 IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) {
927 fn SetOffset(
928 offset: *const D2D1_VECTOR_2F,
929 ) -> HRESULT,
930 fn SetBaseFrequency(
931 frequency: *const D2D1_VECTOR_2F,
932 ) -> HRESULT,
933 fn SetSize(
934 size: *const D2D1_VECTOR_2F,
935 ) -> HRESULT,
936 fn SetNumOctaves(
937 numOctaves: UINT,
938 ) -> HRESULT,
939 fn SetSeed(
940 seed: UINT,
941 ) -> HRESULT,
942 fn SetNoise(
943 noise: D2D1_TURBULENCE_NOISE,
944 ) -> HRESULT,
945 fn SetStitchable(
946 stitchable: BOOL,
947 ) -> HRESULT,
948}}
949RIDL!{#[uuid(0x4305ee5b, 0xc4a0, 0x4c88, 0x93, 0x85, 0x67, 0x12, 0x4e, 0x01, 0x76, 0x83)]
950interface IDCompositionLinearTransferEffect(IDCompositionLinearTransferEffectVtbl):
951 IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) {
952 fn SetRedYIntercept_2(
953 animation: *const IDCompositionAnimation,
954 ) -> HRESULT,
955 fn SetRedYIntercept_1(
956 redYIntercept: c_float,
957 ) -> HRESULT,
958 fn SetRedSlope_2(
959 animation: *const IDCompositionAnimation,
960 ) -> HRESULT,
961 fn SetRedSlope_1(
962 redSlope: c_float,
963 ) -> HRESULT,
964 fn SetRedDisable(
965 redDisable: BOOL,
966 ) -> HRESULT,
967 fn SetGreenYIntercept_2(
968 animation: *const IDCompositionAnimation,
969 ) -> HRESULT,
970 fn SetGreenYIntercept_1(
971 greenYIntercept: c_float,
972 ) -> HRESULT,
973 fn SetGreenSlope_2(
974 animation: *const IDCompositionAnimation,
975 ) -> HRESULT,
976 fn SetGreenSlope_1(
977 greenSlope: c_float,
978 ) -> HRESULT,
979 fn SetGreenDisable(
980 greenDisable: BOOL,
981 ) -> HRESULT,
982 fn SetBlueYIntercept_2(
983 animation: *const IDCompositionAnimation,
984 ) -> HRESULT,
985 fn SetBlueYIntercept_1(
986 blueYIntercept: c_float,
987 ) -> HRESULT,
988 fn SetBlueSlope_2(
989 animation: *const IDCompositionAnimation,
990 ) -> HRESULT,
991 fn SetBlueSlope_1(
992 blueSlope: c_float,
993 ) -> HRESULT,
994 fn SetBlueDisable(
995 blueDisable: BOOL,
996 ) -> HRESULT,
997 fn SetAlphaYIntercept_2(
998 animation: *const IDCompositionAnimation,
999 ) -> HRESULT,
1000 fn SetAlphaYIntercept_1(
1001 alphaYIntercept: c_float,
1002 ) -> HRESULT,
1003 fn SetAlphaSlope_2(
1004 animation: *const IDCompositionAnimation,
1005 ) -> HRESULT,
1006 fn SetAlphaSlope_1(
1007 alphaSlope: c_float,
1008 ) -> HRESULT,
1009 fn SetAlphaDisable(
1010 alphaDisable: BOOL,
1011 ) -> HRESULT,
1012 fn SetClampOutput(
1013 clampOutput: BOOL,
1014 ) -> HRESULT,
1015}}
1016RIDL!{#[uuid(0x9b7e82e2, 0x69c5, 0x4eb4, 0xa5, 0xf5, 0xa7, 0x03, 0x3f, 0x51, 0x32, 0xcd)]
1017interface IDCompositionTableTransferEffect(IDCompositionTableTransferEffectVtbl):
1018 IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) {
1019 fn SetRedTable(
1020 tableValues: *const c_float,
1021 count: UINT,
1022 ) -> HRESULT,
1023 fn SetGreenTable(
1024 tableValues: *const c_float,
1025 count: UINT,
1026 ) -> HRESULT,
1027 fn SetBlueTable(
1028 tableValues: *const c_float,
1029 count: UINT,
1030 ) -> HRESULT,
1031 fn SetAlphaTable(
1032 tableValues: *const c_float,
1033 count: UINT,
1034 ) -> HRESULT,
1035 fn SetRedDisable(
1036 redDisable: BOOL,
1037 ) -> HRESULT,
1038 fn SetGreenDisable(
1039 greenDisable: BOOL,
1040 ) -> HRESULT,
1041 fn SetBlueDisable(
1042 blueDisable: BOOL,
1043 ) -> HRESULT,
1044 fn SetAlphaDisable(
1045 alphaDisable: BOOL,
1046 ) -> HRESULT,
1047 fn SetClampOutput(
1048 clampOutput: BOOL,
1049 ) -> HRESULT,
1050 fn SetRedTableValue_2(
1051 index: UINT,
1052 animation: *const IDCompositionAnimation,
1053 ) -> HRESULT,
1054 fn SetRedTableValue_1(
1055 index: UINT,
1056 value: c_float,
1057 ) -> HRESULT,
1058 fn SetGreenTableValue_2(
1059 index: UINT,
1060 animation: *const IDCompositionAnimation,
1061 ) -> HRESULT,
1062 fn SetGreenTableValue_1(
1063 index: UINT,
1064 value: c_float,
1065 ) -> HRESULT,
1066 fn SetBlueTableValue_2(
1067 index: UINT,
1068 animation: *const IDCompositionAnimation,
1069 ) -> HRESULT,
1070 fn SetBlueTableValue_1(
1071 index: UINT,
1072 value: c_float,
1073 ) -> HRESULT,
1074 fn SetAlphaTableValue_2(
1075 index: UINT,
1076 animation: *const IDCompositionAnimation,
1077 ) -> HRESULT,
1078 fn SetAlphaTableValue_1(
1079 index: UINT,
1080 value: c_float,
1081 ) -> HRESULT,
1082}}
1083RIDL!{#[uuid(0x576616c0, 0xa231, 0x494d, 0xa3, 0x8d, 0x00, 0xfd, 0x5e, 0xc4, 0xdb, 0x46)]
1084interface IDCompositionCompositeEffect(IDCompositionCompositeEffectVtbl):
1085 IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) {
1086 fn SetMode(
1087 mode: D2D1_COMPOSITE_MODE,
1088 ) -> HRESULT,
1089}}
1090RIDL!{#[uuid(0x33ecdc0a, 0x578a, 0x4a11, 0x9c, 0x14, 0x0c, 0xb9, 0x05, 0x17, 0xf9, 0xc5)]
1091interface IDCompositionBlendEffect(IDCompositionBlendEffectVtbl):
1092 IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) {
1093 fn SetMode(
1094 mode: D2D1_BLEND_MODE,
1095 ) -> HRESULT,
1096}}
1097RIDL!{#[uuid(0x3b67dfa8, 0xe3dd, 0x4e61, 0xb6, 0x40, 0x46, 0xc2, 0xf3, 0xd7, 0x39, 0xdc)]
1098interface IDCompositionArithmeticCompositeEffect(IDCompositionArithmeticCompositeEffectVtbl):
1099 IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) {
1100 fn SetCoefficients(
1101 coefficients: *const D2D1_VECTOR_4F,
1102 ) -> HRESULT,
1103 fn SetClampOutput(
1104 clampoutput: BOOL,
1105 ) -> HRESULT,
1106 fn SetCoefficient1_2(
1107 animation: *const IDCompositionAnimation,
1108 ) -> HRESULT,
1109 fn SetCoefficient1_1(
1110 Coeffcient1: c_float,
1111 ) -> HRESULT,
1112 fn SetCoefficient2_2(
1113 animation: *const IDCompositionAnimation,
1114 ) -> HRESULT,
1115 fn SetCoefficient2_1(
1116 Coefficient2: c_float,
1117 ) -> HRESULT,
1118 fn SetCoefficient3_2(
1119 animation: *const IDCompositionAnimation,
1120 ) -> HRESULT,
1121 fn SetCoefficient3_1(
1122 Coefficient3: c_float,
1123 ) -> HRESULT,
1124 fn SetCoefficient4_2(
1125 animation: *const IDCompositionAnimation,
1126 ) -> HRESULT,
1127 fn SetCoefficient4_1(
1128 Coefficient4: c_float,
1129 ) -> HRESULT,
1130}}
1131RIDL!{#[uuid(0x0b74b9e8, 0xcdd6, 0x492f, 0xbb, 0xbc, 0x5e, 0xd3, 0x21, 0x57, 0x02, 0x6d)]
1132interface IDCompositionAffineTransform2DEffect(IDCompositionAffineTransform2DEffectVtbl):
1133 IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) {
1134 fn SetInterpolationMode(
1135 interpolationMode: D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE,
1136 ) -> HRESULT,
1137 fn SetBorderMode(
1138 borderMode: D2D1_BORDER_MODE,
1139 ) -> HRESULT,
1140 fn SetTransformMatrix(
1141 transformMatrix: *const D2D1_MATRIX_3X2_F,
1142 ) -> HRESULT,
1143 fn SetTransformMatrixElement_2(
1144 row: c_int,
1145 column: c_int,
1146 animation: *const IDCompositionAnimation,
1147 ) -> HRESULT,
1148 fn SetTransformMatrixElement_1(
1149 row: c_int,
1150 column: c_int,
1151 value: c_float,
1152 ) -> HRESULT,
1153 fn SetSharpness_2(
1154 animation: *const IDCompositionAnimation,
1155 ) -> HRESULT,
1156 fn SetSharpness_1(
1157 sharpness: c_float,
1158 ) -> HRESULT,
1159}}