// Licensed under the Apache License, Version 2.0 // or the MIT license // , at your option. // All files in the project carrying such notice may not be copied, modified, or distributed // except according to those terms. //! Mappings for the contents of dcomp.h use ctypes::{c_float, c_int, c_void}; use shared::d3d9types::D3DMATRIX; use shared::dcomptypes::{ DCOMPOSITION_BACKFACE_VISIBILITY, DCOMPOSITION_BITMAP_INTERPOLATION_MODE, DCOMPOSITION_BORDER_MODE, DCOMPOSITION_COMPOSITE_MODE, DCOMPOSITION_DEPTH_MODE, DCOMPOSITION_FRAME_STATISTICS, DCOMPOSITION_OPACITY_MODE }; use shared::dxgi::IDXGIDevice; use shared::dxgi1_2::DXGI_ALPHA_MODE; use shared::dxgiformat::DXGI_FORMAT; use shared::guiddef::REFIID; use shared::minwindef::{BOOL, DWORD, UINT}; use shared::ntdef::{HANDLE, HRESULT}; use shared::windef::{HWND, POINT, RECT}; use um::d2d1::{D2D1_COLOR_F, D2D1_MATRIX_3X2_F}; use um::d2d1_1::{D2D1_COMPOSITE_MODE, D2D1_MATRIX_5X4_F, D2D1_VECTOR_2F, D2D1_VECTOR_4F}; use um::d2d1effects::{ D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE, D2D1_BLEND_MODE, D2D1_BORDER_MODE, D2D1_COLORMATRIX_ALPHA_MODE, D2D1_TURBULENCE_NOISE }; use um::d2dbasetypes::{D2D_MATRIX_3X2_F, D2D_MATRIX_4X4_F, D2D_RECT_F}; use um::d3dcommon::D3D_FEATURE_LEVEL; use um::dcompanimation::IDCompositionAnimation; use um::minwinbase::SECURITY_ATTRIBUTES; use um::unknwnbase::{IUnknown, IUnknownVtbl}; extern "system" { pub fn DCompositionCreateDevice( dxgiDevice: *const IDXGIDevice, iid: REFIID, dcompositionDevice: *mut *mut c_void, ) -> HRESULT; pub fn DCompositionCreateDevice2( renderingDevice: *const IUnknown, iid: REFIID, dcompositionDevice: *mut *mut c_void, ) -> HRESULT; pub fn DCompositionCreateDevice3( renderingDevice: *const IUnknown, iid: REFIID, dcompositionDevice: *mut *mut c_void, ) -> HRESULT; pub fn DCompositionGetFrameStatistics( statistics: *const DCOMPOSITION_FRAME_STATISTICS, minSafeFeaturelLevel: *const D3D_FEATURE_LEVEL, maxHardwareFeaturelLevel: *const D3D_FEATURE_LEVEL, ) -> HRESULT; pub fn DCompositionCreateSurfaceHandle( desiredAccess: DWORD, securityAttributes: *const SECURITY_ATTRIBUTES, surfaceHandle: *mut HANDLE, ) -> HRESULT; pub fn DCompositionAttachMouseWheelToHwnd( visual: *const IDCompositionVisual, hwnd: HWND, enable: BOOL, ) -> HRESULT; pub fn DCompositionAttachMouseDragToHwnd( visual: *const IDCompositionVisual, hwnd: HWND, enable: BOOL, ) -> HRESULT; } RIDL!{#[uuid(0xc37ea93a, 0xe7aa, 0x450d, 0xb1, 0x6f, 0x97, 0x46, 0xcb, 0x04, 0x07, 0xf3)] interface IDCompositionDevice(IDCompositionDeviceVtbl): IUnknown(IUnknownVtbl) { fn Commit() -> HRESULT, fn WaitForCommitCompletion() -> HRESULT, fn GetFrameStatistics( statistics: *mut DCOMPOSITION_FRAME_STATISTICS, ) -> HRESULT, fn CreateTargetForHwnd( hwnd: HWND, topmost: BOOL, target: *mut *mut IDCompositionTarget, ) -> HRESULT, fn CreateVisual( visual: *mut *mut IDCompositionVisual, ) -> HRESULT, fn CreateSurface( width: UINT, height: UINT, pixelFormat: DXGI_FORMAT, alphaMode: DXGI_ALPHA_MODE, surface: *mut *mut IDCompositionSurface, ) -> HRESULT, fn CreateVirtualSurface( initialWidth: UINT, initialHeight: UINT, pixelFormat: DXGI_FORMAT, alphaMode: DXGI_ALPHA_MODE, virtualSurface: *mut *mut IDCompositionVirtualSurface, ) -> HRESULT, fn CreateSurfaceFromHandle( handle: HANDLE, mutsurface: *mut *mut IUnknown, ) -> HRESULT, fn CreateSurfaceFromHwnd( hwnd: HWND, mutsurface: *mut *mut IUnknown, ) -> HRESULT, fn CreateTranslateTransform( translateTransform: *mut *mut IDCompositionTranslateTransform, ) -> HRESULT, fn CreateScaleTransform( scaleTransform: *mut *mut IDCompositionScaleTransform, ) -> HRESULT, fn CreateRotateTransform( rotateTransform: *mut *mut IDCompositionRotateTransform, ) -> HRESULT, fn CreateSkewTransform( skewTransform: *mut *mut IDCompositionSkewTransform, ) -> HRESULT, fn CreateMatrixTransform( matrixTransform: *mut *mut IDCompositionMatrixTransform, ) -> HRESULT, fn CreateTransformGroup( transforms: *const *const IDCompositionTransform, elements: UINT, transformGroup: *mut *mut IDCompositionTransform, ) -> HRESULT, fn CreateTranslateTransform3D( translateTransform3D: *mut *mut IDCompositionTranslateTransform3D, ) -> HRESULT, fn CreateScaleTransform3D( scaleTransform3D: *mut *mut IDCompositionScaleTransform3D, ) -> HRESULT, fn CreateRotateTransform3D( rotateTransform3D: *mut *mut IDCompositionRotateTransform3D, ) -> HRESULT, fn CreateMatrixTransform3D( matrixTransform3D: *mut *mut IDCompositionMatrixTransform3D, ) -> HRESULT, fn CreateTransform3DGroup( transforms3D: *const *const IDCompositionTransform3D, elements: UINT, transform3DGroup: *mut *mut IDCompositionTransform3D, ) -> HRESULT, fn CreateEffectGroup( effectGroup: *mut *mut IDCompositionEffectGroup, ) -> HRESULT, fn CreateRectangleClip( clip: *mut *mut IDCompositionRectangleClip, ) -> HRESULT, fn CreateAnimation( animation: *mut *mut IDCompositionAnimation, ) -> HRESULT, fn CheckDeviceState( pfValid: *mut BOOL, ) -> HRESULT, }} RIDL!{#[uuid(0xeacdd04c, 0x117e, 0x4e17, 0x88, 0xf4, 0xd1, 0xb1, 0x2b, 0x0e, 0x3d, 0x89)] interface IDCompositionTarget(IDCompositionTargetVtbl): IUnknown(IUnknownVtbl) { fn SetRoot( visual: *const IDCompositionVisual, ) -> HRESULT, }} RIDL!{#[uuid(0x4d93059d, 0x097b, 0x4651, 0x9a, 0x60, 0xf0, 0xf2, 0x51, 0x16, 0xe2, 0xf3)] interface IDCompositionVisual(IDCompositionVisualVtbl): IUnknown(IUnknownVtbl) { fn SetOffsetX_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetOffsetX_1( offsetX: c_float, ) -> HRESULT, fn SetOffsetY_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetOffsetY_1( offsetY: c_float, ) -> HRESULT, fn SetTransform_2( transform: *const IDCompositionTransform, ) -> HRESULT, fn SetTransform_1( matrix: *const D2D_MATRIX_3X2_F, ) -> HRESULT, fn SetTransformParent( visual: *const IDCompositionVisual, ) -> HRESULT, fn SetEffect( effect: *const IDCompositionEffect, ) -> HRESULT, fn SetBitmapInterpolationMode( interpolationMode: DCOMPOSITION_BITMAP_INTERPOLATION_MODE, ) -> HRESULT, fn SetBorderMode( borderMode: DCOMPOSITION_BORDER_MODE, ) -> HRESULT, fn SetClip_2( clip: *const IDCompositionClip, ) -> HRESULT, fn SetClip_1( rect: *const D2D_RECT_F, ) -> HRESULT, fn SetContent( content: *const IUnknown, ) -> HRESULT, fn AddVisual( visual: *const IDCompositionVisual, insertAbove: BOOL, referenceVisual: *const IDCompositionVisual, ) -> HRESULT, fn RemoveVisual( visual: *const IDCompositionVisual, ) -> HRESULT, fn RemoveAllVisuals() -> HRESULT, fn SetCompositeMode( compositeMode: DCOMPOSITION_COMPOSITE_MODE, ) -> HRESULT, }} RIDL!{#[uuid(0xec81b08f, 0xbfcb, 0x4e8d, 0xb1, 0x93, 0xa9, 0x15, 0x58, 0x79, 0x99, 0xe8)] interface IDCompositionEffect(IDCompositionEffectVtbl): IUnknown(IUnknownVtbl) {}} RIDL!{#[uuid(0x71185722, 0x246b, 0x41f2, 0xaa, 0xd1, 0x04, 0x43, 0xf7, 0xf4, 0xbf, 0xc2)] interface IDCompositionTransform3D(IDCompositionTransform3DVtbl): IDCompositionEffect(IDCompositionEffectVtbl) {}} RIDL!{#[uuid(0xfd55faa7, 0x37e0, 0x4c20, 0x95, 0xd2, 0x9b, 0xe4, 0x5b, 0xc3, 0x3f, 0x55)] interface IDCompositionTransform(IDCompositionTransformVtbl): IDCompositionTransform3D(IDCompositionTransform3DVtbl) {}} RIDL!{#[uuid(0x06791122, 0xc6f0, 0x417d, 0x83, 0x23, 0x26, 0x9e, 0x98, 0x7f, 0x59, 0x54)] interface IDCompositionTranslateTransform(IDCompositionTranslateTransformVtbl): IDCompositionTransform(IDCompositionTransformVtbl) { fn SetOffsetX_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetOffsetX_1( offsetX: c_float, ) -> HRESULT, fn SetOffsetY_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetOffsetY_1( offsetY: c_float, ) -> HRESULT, }} RIDL!{#[uuid(0x71fde914, 0x40ef, 0x45ef, 0xbd, 0x51, 0x68, 0xb0, 0x37, 0xc3, 0x39, 0xf9)] interface IDCompositionScaleTransform(IDCompositionScaleTransformVtbl): IDCompositionTransform(IDCompositionTransformVtbl) { fn SetScaleX_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetScaleX_1( scaleX: c_float, ) -> HRESULT, fn SetScaleY_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetScaleY_1( scaleY: c_float, ) -> HRESULT, fn SetCenterX_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetCenterX_1( centerX: c_float, ) -> HRESULT, fn SetCenterY_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetCenterY_1( centerY: c_float, ) -> HRESULT, }} RIDL!{#[uuid(0x641ed83c, 0xae96, 0x46c5, 0x90, 0xdc, 0x32, 0x77, 0x4c, 0xc5, 0xc6, 0xd5)] interface IDCompositionRotateTransform(IDCompositionRotateTransformVtbl): IDCompositionTransform(IDCompositionTransformVtbl) { fn SetAngle_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetAngle_1( angle: c_float, ) -> HRESULT, fn SetCenterX_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetCenterX_1( centerX: c_float, ) -> HRESULT, fn SetCenterY_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetCenterY_1( centerY: c_float, ) -> HRESULT, }} RIDL!{#[uuid(0xe57aa735, 0xdcdb, 0x4c72, 0x9c, 0x61, 0x05, 0x91, 0xf5, 0x88, 0x89, 0xee)] interface IDCompositionSkewTransform(IDCompositionSkewTransformVtbl): IDCompositionTransform(IDCompositionTransformVtbl) { fn SetAngleX_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetAngleX_1( angleX: c_float, ) -> HRESULT, fn SetAngleY_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetAngleY_1( angleY: c_float, ) -> HRESULT, fn SetCenterX_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetCenterX_1( centerX: c_float, ) -> HRESULT, fn SetCenterY_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetCenterY_1( centerY: c_float, ) -> HRESULT, }} RIDL!{#[uuid(0x16cdff07, 0xc503, 0x419c, 0x83, 0xf2, 0x09, 0x65, 0xc7, 0xaf, 0x1f, 0xa6)] interface IDCompositionMatrixTransform(IDCompositionMatrixTransformVtbl): IDCompositionTransform(IDCompositionTransformVtbl) { fn SetMatrix( matrix: *const D2D_MATRIX_3X2_F, ) -> HRESULT, fn SetMatrixElement_2( row: c_int, column: c_int, animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetMatrixElement_1( row: c_int, column: c_int, value: c_float, ) -> HRESULT, }} RIDL!{#[uuid(0xa7929a74, 0xe6b2, 0x4bd6, 0x8b, 0x95, 0x40, 0x40, 0x11, 0x9c, 0xa3, 0x4d)] interface IDCompositionEffectGroup(IDCompositionEffectGroupVtbl): IDCompositionEffect(IDCompositionEffectVtbl) { fn SetOpacity_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetOpacity_1( opacity: c_float, ) -> HRESULT, fn SetTransform3D( transform3D: *const IDCompositionTransform3D, ) -> HRESULT, }} RIDL!{#[uuid(0x91636d4b, 0x9ba1, 0x4532, 0xaa, 0xf7, 0xe3, 0x34, 0x49, 0x94, 0xd7, 0x88)] interface IDCompositionTranslateTransform3D(IDCompositionTranslateTransform3DVtbl): IDCompositionTransform3D(IDCompositionTransform3DVtbl) { fn SetOffsetX_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetOffsetX_1( offsetX: c_float, ) -> HRESULT, fn SetOffsetY_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetOffsetY_1( offsetY: c_float, ) -> HRESULT, fn SetOffsetZ_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetOffsetZ_1( offsetZ: c_float, ) -> HRESULT, }} RIDL!{#[uuid(0x2a9e9ead, 0x364b, 0x4b15, 0xa7, 0xc4, 0xa1, 0x99, 0x7f, 0x78, 0xb3, 0x89)] interface IDCompositionScaleTransform3D(IDCompositionScaleTransform3DVtbl): IDCompositionTransform3D(IDCompositionTransform3DVtbl) { fn SetScaleX_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetScaleX_1( scaleX: c_float, ) -> HRESULT, fn SetScaleY_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetScaleY_1( scaleY: c_float, ) -> HRESULT, fn SetScaleZ_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetScaleZ_1( scaleZ: c_float, ) -> HRESULT, fn SetCenterX_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetCenterX_1( centerX: c_float, ) -> HRESULT, fn SetCenterY_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetCenterY_1( centerY: c_float, ) -> HRESULT, fn SetCenterZ_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetCenterZ_1( centerZ: c_float, ) -> HRESULT, }} RIDL!{#[uuid(0xd8f5b23f, 0xd429, 0x4a91, 0xb5, 0x5a, 0xd2, 0xf4, 0x5f, 0xd7, 0x5b, 0x18)] interface IDCompositionRotateTransform3D(IDCompositionRotateTransform3DVtbl): IDCompositionTransform3D(IDCompositionTransform3DVtbl) { fn SetAngle_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetAngle_1( angle: c_float, ) -> HRESULT, fn SetAxisX_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetAxisX_1( axisX: c_float, ) -> HRESULT, fn SetAxisY_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetAxisY_1( axisY: c_float, ) -> HRESULT, fn SetAxisZ_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetAxisZ_1( axisZ: c_float, ) -> HRESULT, fn SetCenterX_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetCenterX_1( centerX: c_float, ) -> HRESULT, fn SetCenterY_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetCenterY_1( centerY: c_float, ) -> HRESULT, fn SetCenterZ_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetCenterZ_1( centerZ: c_float, ) -> HRESULT, }} RIDL!{#[uuid(0x4b3363f0, 0x643b, 0x41b7, 0xb6, 0xe0, 0xcc, 0xf2, 0x2d, 0x34, 0x46, 0x7c)] interface IDCompositionMatrixTransform3D(IDCompositionMatrixTransform3DVtbl): IDCompositionTransform3D(IDCompositionTransform3DVtbl) { fn SetMatrix( matrix: *const D3DMATRIX, ) -> HRESULT, fn SetMatrixElement_2( row: c_int, column: c_int, animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetMatrixElement_1( row: c_int, column: c_int, value: c_float, ) -> HRESULT, }} RIDL!{#[uuid(0x64ac3703, 0x9d3f, 0x45ec, 0xa1, 0x09, 0x7c, 0xac, 0x0e, 0x7a, 0x13, 0xa7)] interface IDCompositionClip(IDCompositionClipVtbl): IUnknown(IUnknownVtbl) {}} RIDL!{#[uuid(0x9842ad7d, 0xd9cf, 0x4908, 0xae, 0xd7, 0x48, 0xb5, 0x1d, 0xa5, 0xe7, 0xc2)] interface IDCompositionRectangleClip(IDCompositionRectangleClipVtbl): IDCompositionClip(IDCompositionClipVtbl) { fn SetLeft_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetLeft_1( left: c_float, ) -> HRESULT, fn SetTop_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetTop_1( top: c_float, ) -> HRESULT, fn SetRight_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetRight_1( right: c_float, ) -> HRESULT, fn SetBottom_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetBottom_1( bottom: c_float, ) -> HRESULT, fn SetTopLeftRadiusX_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetTopLeftRadiusX_1( radius: c_float, ) -> HRESULT, fn SetTopLeftRadiusY_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetTopLeftRadiusY_1( radius: c_float, ) -> HRESULT, fn SetTopRightRadiusX_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetTopRightRadiusX_1( radius: c_float, ) -> HRESULT, fn SetTopRightRadiusY_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetTopRightRadiusY_1( radius: c_float, ) -> HRESULT, fn SetBottomLeftRadiusX_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetBottomLeftRadiusX_1( radius: c_float, ) -> HRESULT, fn SetBottomLeftRadiusY_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetBottomLeftRadiusY_1( radius: c_float, ) -> HRESULT, fn SetBottomRightRadiusX_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetBottomRightRadiusX_1( radius: c_float, ) -> HRESULT, fn SetBottomRightRadiusY_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetBottomRightRadiusY_1( radius: c_float, ) -> HRESULT, }} RIDL!{#[uuid(0xbb8a4953, 0x2c99, 0x4f5a, 0x96, 0xf5, 0x48, 0x19, 0x02, 0x7f, 0xa3, 0xac)] interface IDCompositionSurface(IDCompositionSurfaceVtbl): IUnknown(IUnknownVtbl) { fn BeginDraw( updateRect: *const RECT, iid: REFIID, updateObject: *mut *mut c_void, updateOffset: *mut POINT, ) -> HRESULT, fn EndDraw() -> HRESULT, fn SuspendDraw() -> HRESULT, fn ResumeDraw() -> HRESULT, fn Scroll( scrollRect: *const RECT, clipRect: *const RECT, offsetX: c_int, offsetY: c_int, ) -> HRESULT, }} RIDL!{#[uuid(0xae471c51, 0x5f53, 0x4a24, 0x8d, 0x3e, 0xd0, 0xc3, 0x9c, 0x30, 0xb3, 0xf0)] interface IDCompositionVirtualSurface(IDCompositionVirtualSurfaceVtbl): IDCompositionSurface(IDCompositionSurfaceVtbl) { fn Resize( width: UINT, height: UINT, ) -> HRESULT, fn Trim( rectangles: *const RECT, count: UINT, ) -> HRESULT, }} RIDL!{#[uuid(0x75f6468d, 0x1b8e, 0x447c, 0x9b, 0xc6, 0x75, 0xfe, 0xa8, 0x0b, 0x5b, 0x25)] interface IDCompositionDevice2(IDCompositionDevice2Vtbl): IUnknown(IUnknownVtbl) { fn Commit() -> HRESULT, fn WaitForCommitCompletion() -> HRESULT, fn GetFrameStatistics( statistics: *mut DCOMPOSITION_FRAME_STATISTICS, ) -> HRESULT, fn CreateVisual( visual: *mut *mut IDCompositionVisual2, ) -> HRESULT, fn CreateSurfaceFactory( renderingDevice: *const IUnknown, surfaceFactory: *mut *mut IDCompositionSurfaceFactory, ) -> HRESULT, fn CreateSurface( width: UINT, height: UINT, pixelFormat: DXGI_FORMAT, alphaMode: DXGI_ALPHA_MODE, surface: *mut *mut IDCompositionSurface, ) -> HRESULT, fn CreateVirtualSurface( initialWidth: UINT, initialHeight: UINT, pixelFormat: DXGI_FORMAT, alphaMode: DXGI_ALPHA_MODE, virtualSurface: *mut *mut IDCompositionVirtualSurface, ) -> HRESULT, fn CreateTranslateTransform( translateTransform: *mut *mut IDCompositionTranslateTransform, ) -> HRESULT, fn CreateScaleTransform( scaleTransform: *mut *mut IDCompositionScaleTransform, ) -> HRESULT, fn CreateRotateTransform( rotateTransform: *mut *mut IDCompositionRotateTransform, ) -> HRESULT, fn CreateSkewTransform( skewTransform: *mut *mut IDCompositionSkewTransform, ) -> HRESULT, fn CreateMatrixTransform( matrixTransform: *mut *mut IDCompositionMatrixTransform, ) -> HRESULT, fn CreateTransformGroup( transforms: *const *const IDCompositionTransform, elements: UINT, transformGroup: *mut *mut IDCompositionTransform, ) -> HRESULT, fn CreateTranslateTransform3D( translateTransform3D: *mut *mut IDCompositionTranslateTransform3D, ) -> HRESULT, fn CreateScaleTransform3D( scaleTransform3D: *mut *mut IDCompositionScaleTransform3D, ) -> HRESULT, fn CreateRotateTransform3D( rotateTransform3D: *mut *mut IDCompositionRotateTransform3D, ) -> HRESULT, fn CreateMatrixTransform3D( matrixTransform3D: *mut *mut IDCompositionMatrixTransform3D, ) -> HRESULT, fn CreateTransform3DGroup( transforms3D: *const *const IDCompositionTransform3D, elements: UINT, transform3DGroup: *mut *mut IDCompositionTransform3D, ) -> HRESULT, fn CreateEffectGroup( effectGroup: *mut *mut IDCompositionEffectGroup, ) -> HRESULT, fn CreateRectangleClip( clip: *mut *mut IDCompositionRectangleClip, ) -> HRESULT, fn CreateAnimation( animation: *mut *mut IDCompositionAnimation, ) -> HRESULT, }} RIDL!{#[uuid(0x5f4633fe, 0x1e08, 0x4cb8, 0x8c, 0x75, 0xce, 0x24, 0x33, 0x3f, 0x56, 0x02)] interface IDCompositionDesktopDevice(IDCompositionDesktopDeviceVtbl): IDCompositionDevice2(IDCompositionDevice2Vtbl) { fn CreateTargetForHwnd( hwnd: HWND, topmost: BOOL, target: *mut *mut IDCompositionTarget, ) -> HRESULT, fn CreateSurfaceFromHandle( handle: HANDLE, surface: *mut *mut IUnknown, ) -> HRESULT, fn CreateSurfaceFromHwnd( hwnd: HWND, surface: *mut *mut IUnknown, ) -> HRESULT, }} RIDL!{#[uuid(0xa1a3c64a, 0x224f, 0x4a81, 0x97, 0x73, 0x4f, 0x03, 0xa8, 0x9d, 0x3c, 0x6c)] interface IDCompositionDeviceDebug(IDCompositionDeviceDebugVtbl): IUnknown(IUnknownVtbl) { fn EnableDebugCounters() -> HRESULT, fn DisableDebugCounters() -> HRESULT, }} RIDL!{#[uuid(0xe334bc12, 0x3937, 0x4e02, 0x85, 0xeb, 0xfc, 0xf4, 0xeb, 0x30, 0xd2, 0xc8)] interface IDCompositionSurfaceFactory(IDCompositionSurfaceFactoryVtbl): IUnknown(IUnknownVtbl) { fn CreateSurface( width: UINT, height: UINT, pixelFormat: DXGI_FORMAT, alphaMode: DXGI_ALPHA_MODE, surface: *mut *mut IDCompositionSurface, ) -> HRESULT, fn CreateVirtualSurface( initialWidth: UINT, initialHeight: UINT, pixelFormat: DXGI_FORMAT, alphaMode: DXGI_ALPHA_MODE, virtualSurface: *mut *mut IDCompositionVirtualSurface, ) -> HRESULT, }} RIDL!{#[uuid(0xe8de1639, 0x4331, 0x4b26, 0xbc, 0x5f, 0x6a, 0x32, 0x1d, 0x34, 0x7a, 0x85)] interface IDCompositionVisual2(IDCompositionVisual2Vtbl): IDCompositionVisual(IDCompositionVisualVtbl) { fn SetOpacityMode( mode: DCOMPOSITION_OPACITY_MODE, ) -> HRESULT, fn SetBackFaceVisibility( visibility: DCOMPOSITION_BACKFACE_VISIBILITY, ) -> HRESULT, }} RIDL!{#[uuid(0xfed2b808, 0x5eb4, 0x43a0, 0xae, 0xa3, 0x35, 0xf6, 0x52, 0x80, 0xf9, 0x1b)] interface IDCompositionVisualDebug(IDCompositionVisualDebugVtbl): IDCompositionVisual2(IDCompositionVisual2Vtbl) { fn EnableHeatMap( color: *const D2D1_COLOR_F, ) -> HRESULT, fn DisableHeatMap() -> HRESULT, fn EnableRedrawRegions() -> HRESULT, fn DisableRedrawRegions() -> HRESULT, }} RIDL!{#[uuid(0x2775f462, 0xb6c1, 0x4015, 0xb0, 0xbe, 0xb3, 0xe7, 0xd6, 0xa4, 0x97, 0x6d)] interface IDCompositionVisual3(IDCompositionVisual3Vtbl): IDCompositionVisualDebug(IDCompositionVisualDebugVtbl) { fn SetDepthMode( mode: DCOMPOSITION_DEPTH_MODE, ) -> HRESULT, fn SetOffsetZ_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetOffsetZ_1( offsetZ: c_float, ) -> HRESULT, fn SetOpacity_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetOpacity_1( opacity: c_float, ) -> HRESULT, fn SetTransform_2( transform: *const IDCompositionTransform3D, ) -> HRESULT, fn SetTransform_1( matrix: *const D2D_MATRIX_4X4_F, ) -> HRESULT, fn SetVisible( visible: BOOL, ) -> HRESULT, }} RIDL!{#[uuid(0x0987cb06, 0xf916, 0x48bf, 0x8d, 0x35, 0xce, 0x76, 0x41, 0x78, 0x1b, 0xd9)] interface IDCompositionDevice3(IDCompositionDevice3Vtbl): IDCompositionDevice2(IDCompositionDevice2Vtbl) { fn CreateGaussianBlurEffect( gaussianBlurEffect: *mut *mut IDCompositionGaussianBlurEffect, ) -> HRESULT, fn CreateBrightnessEffect( brightnessEffect: *mut *mut IDCompositionBrightnessEffect, ) -> HRESULT, fn CreateColorMatrixEffect( colorMatrixEffect: *mut *mut IDCompositionColorMatrixEffect, ) -> HRESULT, fn CreateShadowEffect( shadowEffect: *mut *mut IDCompositionShadowEffect, ) -> HRESULT, fn CreateHueRotationEffect( hueRotationEffect: *mut *mut IDCompositionHueRotationEffect, ) -> HRESULT, fn CreateSaturationEffect( saturationEffect: *mut *mut IDCompositionSaturationEffect, ) -> HRESULT, fn CreateTurbulenceEffect( turbulenceEffect: *mut *mut IDCompositionTurbulenceEffect, ) -> HRESULT, fn CreateLinearTransferEffect( linearTransferEffect: *mut *mut IDCompositionLinearTransferEffect, ) -> HRESULT, fn CreateTableTransferEffect( tableTransferEffect: *mut *mut IDCompositionTableTransferEffect, ) -> HRESULT, fn CreateCompositeEffect( compositeEffect: *mut *mut IDCompositionCompositeEffect, ) -> HRESULT, fn CreateBlendEffect( blendEffect: *mut *mut IDCompositionBlendEffect, ) -> HRESULT, fn CreateArithmeticCompositeEffect( arithmeticCompositeEffect: *mut *mut IDCompositionArithmeticCompositeEffect, ) -> HRESULT, fn CreateAffineTransform2DEffect( affineTransform2dEffect: *mut *mut IDCompositionAffineTransform2DEffect, ) -> HRESULT, }} RIDL!{#[uuid(0x30c421d5, 0x8cb2, 0x4e9f, 0xb1, 0x33, 0x37, 0xbe, 0x27, 0x0d, 0x4a, 0xc2)] interface IDCompositionFilterEffect(IDCompositionFilterEffectVtbl): IDCompositionEffect(IDCompositionEffectVtbl) { fn SetInput( index: UINT, input: *const IUnknown, flags: UINT, ) -> HRESULT, }} RIDL!{#[uuid(0x45d4d0b7, 0x1bd4, 0x454e, 0x88, 0x94, 0x2b, 0xfa, 0x68, 0x44, 0x30, 0x33)] interface IDCompositionGaussianBlurEffect(IDCompositionGaussianBlurEffectVtbl): IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) { fn SetStandardDeviation_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetStandardDeviation_1( amount: c_float, ) -> HRESULT, fn SetBorderMode( mode: D2D1_BORDER_MODE, ) -> HRESULT, }} RIDL!{#[uuid(0x6027496e, 0xcb3a, 0x49ab, 0x93, 0x4f, 0xd7, 0x98, 0xda, 0x4f, 0x7d, 0xa6)] interface IDCompositionBrightnessEffect(IDCompositionBrightnessEffectVtbl): IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) { fn SetWhitePoint( whitePoint: *const D2D1_VECTOR_2F, ) -> HRESULT, fn SetBlackPoint( blackPoint: *const D2D1_VECTOR_2F, ) -> HRESULT, fn SetWhitePointX_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetWhitePointX_1( whitePointX: c_float, ) -> HRESULT, fn SetWhitePointY_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetWhitePointY_1( whitePointY: c_float, ) -> HRESULT, fn SetBlackPointX_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetBlackPointX_1( blackPointX: c_float, ) -> HRESULT, fn SetBlackPointY_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetBlackPointY_1( blackPointY: c_float, ) -> HRESULT, }} RIDL!{#[uuid(0xc1170a22, 0x3ce2, 0x4966, 0x90, 0xd4, 0x55, 0x40, 0x8b, 0xfc, 0x84, 0xc4)] interface IDCompositionColorMatrixEffect(IDCompositionColorMatrixEffectVtbl): IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) { fn SetMatrix( matrix: *const D2D1_MATRIX_5X4_F, ) -> HRESULT, fn SetMatrixElement_2( row: c_int, column: c_int, animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetMatrixElement_1( row: c_int, column: c_int, value: c_float, ) -> HRESULT, fn SetAlphaMode( mode: D2D1_COLORMATRIX_ALPHA_MODE, ) -> HRESULT, fn SetClampOutput( clamp: BOOL, ) -> HRESULT, }} RIDL!{#[uuid(0x4ad18ac0, 0xcfd2, 0x4c2f, 0xbb, 0x62, 0x96, 0xe5, 0x4f, 0xdb, 0x68, 0x79)] interface IDCompositionShadowEffect(IDCompositionShadowEffectVtbl): IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) { fn SetStandardDeviation_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetStandardDeviation_1( amount: c_float, ) -> HRESULT, fn SetColor( color: *const D2D1_VECTOR_4F, ) -> HRESULT, fn SetRed_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetRed_1( amount: c_float, ) -> HRESULT, fn SetGreen_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetGreen_1( amount: c_float, ) -> HRESULT, fn SetBlue_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetBlue_1( amount: c_float, ) -> HRESULT, fn SetAlpha_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetAlpha_1( amount: c_float, ) -> HRESULT, }} RIDL!{#[uuid(0x6db9f920, 0x0770, 0x4781, 0xb0, 0xc6, 0x38, 0x19, 0x12, 0xf9, 0xd1, 0x67)] interface IDCompositionHueRotationEffect(IDCompositionHueRotationEffectVtbl): IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) { // Changes the angle of rotation fn SetAngle_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetAngle_1( amountDegrees: c_float, ) -> HRESULT, }} RIDL!{#[uuid(0xa08debda, 0x3258, 0x4fa4, 0x9f, 0x16, 0x91, 0x74, 0xd3, 0xfe, 0x93, 0xb1)] interface IDCompositionSaturationEffect(IDCompositionSaturationEffectVtbl): IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) { // Changes the amount of saturation to be applied. fn SetSaturation_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetSaturation_1( ratio: c_float, ) -> HRESULT, }} RIDL!{#[uuid(0xa6a55bda, 0xc09c, 0x49f3, 0x91, 0x93, 0xa4, 0x19, 0x22, 0xc8, 0x97, 0x15)] interface IDCompositionTurbulenceEffect(IDCompositionTurbulenceEffectVtbl): IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) { fn SetOffset( offset: *const D2D1_VECTOR_2F, ) -> HRESULT, fn SetBaseFrequency( frequency: *const D2D1_VECTOR_2F, ) -> HRESULT, fn SetSize( size: *const D2D1_VECTOR_2F, ) -> HRESULT, fn SetNumOctaves( numOctaves: UINT, ) -> HRESULT, fn SetSeed( seed: UINT, ) -> HRESULT, fn SetNoise( noise: D2D1_TURBULENCE_NOISE, ) -> HRESULT, fn SetStitchable( stitchable: BOOL, ) -> HRESULT, }} RIDL!{#[uuid(0x4305ee5b, 0xc4a0, 0x4c88, 0x93, 0x85, 0x67, 0x12, 0x4e, 0x01, 0x76, 0x83)] interface IDCompositionLinearTransferEffect(IDCompositionLinearTransferEffectVtbl): IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) { fn SetRedYIntercept_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetRedYIntercept_1( redYIntercept: c_float, ) -> HRESULT, fn SetRedSlope_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetRedSlope_1( redSlope: c_float, ) -> HRESULT, fn SetRedDisable( redDisable: BOOL, ) -> HRESULT, fn SetGreenYIntercept_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetGreenYIntercept_1( greenYIntercept: c_float, ) -> HRESULT, fn SetGreenSlope_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetGreenSlope_1( greenSlope: c_float, ) -> HRESULT, fn SetGreenDisable( greenDisable: BOOL, ) -> HRESULT, fn SetBlueYIntercept_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetBlueYIntercept_1( blueYIntercept: c_float, ) -> HRESULT, fn SetBlueSlope_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetBlueSlope_1( blueSlope: c_float, ) -> HRESULT, fn SetBlueDisable( blueDisable: BOOL, ) -> HRESULT, fn SetAlphaYIntercept_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetAlphaYIntercept_1( alphaYIntercept: c_float, ) -> HRESULT, fn SetAlphaSlope_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetAlphaSlope_1( alphaSlope: c_float, ) -> HRESULT, fn SetAlphaDisable( alphaDisable: BOOL, ) -> HRESULT, fn SetClampOutput( clampOutput: BOOL, ) -> HRESULT, }} RIDL!{#[uuid(0x9b7e82e2, 0x69c5, 0x4eb4, 0xa5, 0xf5, 0xa7, 0x03, 0x3f, 0x51, 0x32, 0xcd)] interface IDCompositionTableTransferEffect(IDCompositionTableTransferEffectVtbl): IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) { fn SetRedTable( tableValues: *const c_float, count: UINT, ) -> HRESULT, fn SetGreenTable( tableValues: *const c_float, count: UINT, ) -> HRESULT, fn SetBlueTable( tableValues: *const c_float, count: UINT, ) -> HRESULT, fn SetAlphaTable( tableValues: *const c_float, count: UINT, ) -> HRESULT, fn SetRedDisable( redDisable: BOOL, ) -> HRESULT, fn SetGreenDisable( greenDisable: BOOL, ) -> HRESULT, fn SetBlueDisable( blueDisable: BOOL, ) -> HRESULT, fn SetAlphaDisable( alphaDisable: BOOL, ) -> HRESULT, fn SetClampOutput( clampOutput: BOOL, ) -> HRESULT, fn SetRedTableValue_2( index: UINT, animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetRedTableValue_1( index: UINT, value: c_float, ) -> HRESULT, fn SetGreenTableValue_2( index: UINT, animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetGreenTableValue_1( index: UINT, value: c_float, ) -> HRESULT, fn SetBlueTableValue_2( index: UINT, animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetBlueTableValue_1( index: UINT, value: c_float, ) -> HRESULT, fn SetAlphaTableValue_2( index: UINT, animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetAlphaTableValue_1( index: UINT, value: c_float, ) -> HRESULT, }} RIDL!{#[uuid(0x576616c0, 0xa231, 0x494d, 0xa3, 0x8d, 0x00, 0xfd, 0x5e, 0xc4, 0xdb, 0x46)] interface IDCompositionCompositeEffect(IDCompositionCompositeEffectVtbl): IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) { fn SetMode( mode: D2D1_COMPOSITE_MODE, ) -> HRESULT, }} RIDL!{#[uuid(0x33ecdc0a, 0x578a, 0x4a11, 0x9c, 0x14, 0x0c, 0xb9, 0x05, 0x17, 0xf9, 0xc5)] interface IDCompositionBlendEffect(IDCompositionBlendEffectVtbl): IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) { fn SetMode( mode: D2D1_BLEND_MODE, ) -> HRESULT, }} RIDL!{#[uuid(0x3b67dfa8, 0xe3dd, 0x4e61, 0xb6, 0x40, 0x46, 0xc2, 0xf3, 0xd7, 0x39, 0xdc)] interface IDCompositionArithmeticCompositeEffect(IDCompositionArithmeticCompositeEffectVtbl): IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) { fn SetCoefficients( coefficients: *const D2D1_VECTOR_4F, ) -> HRESULT, fn SetClampOutput( clampoutput: BOOL, ) -> HRESULT, fn SetCoefficient1_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetCoefficient1_1( Coeffcient1: c_float, ) -> HRESULT, fn SetCoefficient2_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetCoefficient2_1( Coefficient2: c_float, ) -> HRESULT, fn SetCoefficient3_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetCoefficient3_1( Coefficient3: c_float, ) -> HRESULT, fn SetCoefficient4_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetCoefficient4_1( Coefficient4: c_float, ) -> HRESULT, }} RIDL!{#[uuid(0x0b74b9e8, 0xcdd6, 0x492f, 0xbb, 0xbc, 0x5e, 0xd3, 0x21, 0x57, 0x02, 0x6d)] interface IDCompositionAffineTransform2DEffect(IDCompositionAffineTransform2DEffectVtbl): IDCompositionFilterEffect(IDCompositionFilterEffectVtbl) { fn SetInterpolationMode( interpolationMode: D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE, ) -> HRESULT, fn SetBorderMode( borderMode: D2D1_BORDER_MODE, ) -> HRESULT, fn SetTransformMatrix( transformMatrix: *const D2D1_MATRIX_3X2_F, ) -> HRESULT, fn SetTransformMatrixElement_2( row: c_int, column: c_int, animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetTransformMatrixElement_1( row: c_int, column: c_int, value: c_float, ) -> HRESULT, fn SetSharpness_2( animation: *const IDCompositionAnimation, ) -> HRESULT, fn SetSharpness_1( sharpness: c_float, ) -> HRESULT, }}