wine/include/dcomp.idl

443 lines
17 KiB
Text
Raw Normal View History

/*
* Copyright 2023 Zhiyi Zhang for CodeWeavers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
import "objidl.idl";
import "d2dbasetypes.h";
import "dcommon.idl";
import "dcompanimation.idl";
import "dcomptypes.idl";
import "unknwn.idl";
typedef struct _D3DMATRIX
{
float m[4][4];
} D3DMATRIX;
[
local,
object,
pointer_default(unique),
uuid(bb8a4953-2c99-4f5a-96f5-4819027fa3ac)
]
interface IDCompositionSurface : IUnknown
{
HRESULT BeginDraw([in, optional] const RECT *rect, [in] REFIID iid, [out] void **object, [out] POINT *offset);
HRESULT EndDraw();
HRESULT SuspendDraw();
HRESULT ResumeDraw();
HRESULT Scroll([in, optional] const RECT *scroll, [in, optional] const RECT *clip, [in] int offset_x, [in] int offset_y);
}
[
local,
object,
pointer_default(unique),
uuid(ae471c51-5f53-4a24-8d3e-d0c39c30b3f0)
]
interface IDCompositionVirtualSurface : IDCompositionSurface
{
HRESULT Resize([in] UINT width, [in] UINT height);
HRESULT Trim([in, optional, size_is(count)] const RECT *rectangles, [in] UINT count);
}
[
local,
object,
pointer_default(unique),
uuid(e334bc12-3937-4e02-85eb-fcf4eb30d2c8)
]
interface IDCompositionSurfaceFactory : IUnknown
{
HRESULT CreateSurface([in] UINT width, [in] UINT height, [in] DXGI_FORMAT pixel_format, [in] DXGI_ALPHA_MODE alpha_mode, [out] IDCompositionSurface **surface);
HRESULT CreateVirtualSurface([in] UINT width, [in] UINT height, [in] DXGI_FORMAT pixel_format, [in] DXGI_ALPHA_MODE alpha_mode, [out] IDCompositionVirtualSurface **surface);
}
[
local,
object,
pointer_default(unique),
uuid(64ac3703-9d3f-45ec-a109-7cac0e7a13a7)
]
interface IDCompositionClip : IUnknown
{
}
[
local,
object,
pointer_default(unique),
uuid(9842ad7d-d9cf-4908-aed7-48b51da5e7c2)
]
interface IDCompositionRectangleClip : IDCompositionClip
{
HRESULT SetLeft([in] float left);
HRESULT SetLeftAnimation([in] IDCompositionAnimation *animation);
HRESULT SetTop([in] float top);
HRESULT SetTopAnimation([in] IDCompositionAnimation *animation);
HRESULT SetRight([in] float right);
HRESULT SetRightAnimation([in] IDCompositionAnimation *animation);
HRESULT SetBottom([in] float bottom);
HRESULT SetBottomAnimation([in] IDCompositionAnimation *animation);
HRESULT SetTopLeftRadiusX([in] float radius);
HRESULT SetTopLeftRadiusXAnimation([in] IDCompositionAnimation *animation);
HRESULT SetTopLeftRadiusY([in] float radius);
HRESULT SetTopLeftRadiusYAnimation([in] IDCompositionAnimation *animation);
HRESULT SetTopRightRadiusX([in] float radius);
HRESULT SetTopRightRadiusXAnimation([in] IDCompositionAnimation *animation);
HRESULT SetTopRightRadiusY([in] float radius);
HRESULT SetTopRightRadiusYAnimation([in] IDCompositionAnimation *animation);
HRESULT SetBottomLeftRadiusX([in] float radius);
HRESULT SetBottomLeftRadiusXAnimation([in] IDCompositionAnimation *animation);
HRESULT SetBottomLeftRadiusY([in] float radius);
HRESULT SetBottomLeftRadiusYAnimation([in] IDCompositionAnimation *animation);
HRESULT SetBottomRightRadiusX([in] float radius);
HRESULT SetBottomRightRadiusXAnimation([in] IDCompositionAnimation *animation);
HRESULT SetBottomRightRadiusY([in] float radius);
HRESULT SetBottomRightRadiusYAnimation([in] IDCompositionAnimation *animation);
}
[
local,
object,
pointer_default(unique),
uuid(ec81b08f-bfcb-4e8d-b193-a915587999e8)
]
interface IDCompositionEffect : IUnknown
{
}
[
local,
object,
pointer_default(unique),
uuid(71185722-246b-41f2-aad1-0443f7f4bfc2)
]
interface IDCompositionTransform3D : IDCompositionEffect
{
}
[
local,
object,
pointer_default(unique),
uuid(a7929a74-e6b2-4bd6-8b95-4040119ca34d)
]
interface IDCompositionEffectGroup : IDCompositionEffect
{
HRESULT SetOpacity([in] float opacity);
HRESULT SetOpacityAnimation([in] IDCompositionAnimation *animation);
HRESULT SetTransform3D([in, optional] IDCompositionTransform3D *transform);
};
[
local,
object,
pointer_default(unique),
uuid(91636d4b-9ba1-4532-aaf7-e3344994d788)
]
interface IDCompositionTranslateTransform3D : IDCompositionTransform3D
{
HRESULT SetOffsetX([in] float offset);
HRESULT SetOffsetXAnimation([in] IDCompositionAnimation *animation);
HRESULT SetOffsetY([in] float offset);
HRESULT SetOffsetYAnimation([in] IDCompositionAnimation *animation);
HRESULT SetOffsetZ([in] float offset);
HRESULT SetOffsetZAnimation([in] IDCompositionAnimation *animation);
};
[
local,
object,
pointer_default(unique),
uuid(2a9e9ead-364b-4b15-a7c4-a1997f78b389)
]
interface IDCompositionScaleTransform3D : IDCompositionTransform3D
{
HRESULT SetScaleX([in] float scale);
HRESULT SetScaleXAnimation([in] IDCompositionAnimation *animation);
HRESULT SetScaleY([in] float scale);
HRESULT SetScaleYAnimation([in] IDCompositionAnimation *animation);
HRESULT SetScaleZ([in] float scale);
HRESULT SetScaleZAnimation([in] IDCompositionAnimation *animation);
HRESULT SetCenterX([in] float center);
HRESULT SetCenterXAnimation([in] IDCompositionAnimation *animation);
HRESULT SetCenterY([in] float center);
HRESULT SetCenterYAnimation([in] IDCompositionAnimation *animation);
HRESULT SetCenterZ([in] float center);
HRESULT SetCenterZAnimation([in] IDCompositionAnimation *animation);
}
[
local,
object,
pointer_default(unique),
uuid(d8f5b23f-d429-4a91-b55a-d2f45fd75b18)
]
interface IDCompositionRotateTransform3D : IDCompositionTransform3D
{
HRESULT SetScaleX([in] float scale);
HRESULT SetScaleXAnimation([in] IDCompositionAnimation *animation);
HRESULT SetScaleY([in] float scale);
HRESULT SetScaleYAnimation([in] IDCompositionAnimation *animation);
HRESULT SetScaleZ([in] float scale);
HRESULT SetScaleZAnimation([in] IDCompositionAnimation *animation);
HRESULT SetCenterX([in] float center);
HRESULT SetCenterXAnimation([in] IDCompositionAnimation *animation);
HRESULT SetCenterY([in] float center);
HRESULT SetCenterYAnimation([in] IDCompositionAnimation *animation);
HRESULT SetCenterZ([in] float center);
HRESULT SetCenterZAnimation([in] IDCompositionAnimation *animation);
}
[
local,
object,
pointer_default(unique),
uuid(4b3363f0-643b-41b7-b6e0-ccf22d34467c)
]
interface IDCompositionMatrixTransform3D : IDCompositionTransform3D
{
/* C++ method: HRESULT SetMatrix(const D3DMATRIX &matrix); Use pointer instead of reference */
HRESULT SetMatrix([in] const D3DMATRIX *matrix);
HRESULT SetMatrixElement([in] int row, [in] int column, [in] float value);
HRESULT SetMatrixElementAnimation([in] int row, [in] int column, [in] IDCompositionAnimation *animation);
};
[
local,
object,
pointer_default(unique),
uuid(fd55faa7-37e0-4c20-95d2-9be45bc33f55)
]
interface IDCompositionTransform : IDCompositionTransform3D
{
}
[
local,
object,
pointer_default(unique),
uuid(71fde914-40ef-45ef-bd51-68b037c339f9)
]
interface IDCompositionScaleTransform : IDCompositionTransform
{
HRESULT SetScaleX([in] float scale);
HRESULT SetScaleXAnimation([in] IDCompositionAnimation *animation);
HRESULT SetScaleY([in] float scale);
HRESULT SetScaleYAnimation([in] IDCompositionAnimation *animation);
HRESULT SetCenterX([in] float center);
HRESULT SetCenterXAnimation([in] IDCompositionAnimation *animation);
HRESULT SetCenterY([in] float center);
HRESULT SetCenterYAnimation([in] IDCompositionAnimation *animation);
};
[
local,
object,
pointer_default(unique),
uuid(641ed83c-ae96-46c5-90dc-32774cc5c6d5)
]
interface IDCompositionRotateTransform : IDCompositionTransform
{
HRESULT SetAngle([in] float angle);
HRESULT SetAngleAnimation([in] IDCompositionAnimation *animation);
HRESULT SetCenterX([in] float center_x);
HRESULT SetCenterXAnimation([in] IDCompositionAnimation *animation);
HRESULT SetCenterY([in] float center_y);
HRESULT SetCenterYAnimation([in] IDCompositionAnimation *animation);
};
[
local,
object,
pointer_default(unique),
uuid(e57aa735-dcdb-4c72-9c61-0591f58889ee)
]
interface IDCompositionSkewTransform : IDCompositionTransform
{
HRESULT SetAngleX([in] float angle);
HRESULT SetAngleXAnimation([in] IDCompositionAnimation *animation);
HRESULT SetAngleY([in] float angle);
HRESULT SetAngleYAnimation([in] IDCompositionAnimation *animation);
HRESULT SetCenterX([in] float center);
HRESULT SetCenterXAnimation([in] IDCompositionAnimation *animation);
HRESULT SetCenterY([in] float center);
HRESULT SetCenterYAnimation([in] IDCompositionAnimation *animation);
};
[
local,
object,
pointer_default(unique),
uuid(16cdff07-c503-419c-83f2-0965c7af1fa6)
]
interface IDCompositionMatrixTransform : IDCompositionTransform
{
/* C++ method: HRESULT SetMatrix(const D2D_MATRIX_3X2_F &matrix); Use pointer instead of reference */
HRESULT SetMatrix([in] const D2D_MATRIX_3X2_F *matrix);
HRESULT SetMatrixElement([in] int row, [in] int column, [in] float value);
HRESULT SetMatrixElementAnimation([in] int row, [in] int column, [in] IDCompositionAnimation *animation);
};
[
local,
object,
pointer_default(unique),
uuid(06791122-c6f0-417d-8323-269e987f5954)
]
interface IDCompositionTranslateTransform : IDCompositionTransform
{
HRESULT SetOffsetX([in] float offset);
HRESULT SetOffsetXAnimation([in] IDCompositionAnimation *animation);
HRESULT SetOffsetY([in] float offset);
HRESULT SetOffsetYAnimation([in] IDCompositionAnimation *animation);
};
[
object,
uuid(4d93059d-097b-4651-9a60-f0f25116e2f3),
local,
pointer_default(unique)
]
interface IDCompositionVisual : IUnknown
{
HRESULT SetOffsetX([in] float offset_x);
HRESULT SetOffsetXAnimation([in] IDCompositionAnimation *animation);
HRESULT SetOffsetY([in] float offset_y);
HRESULT SetOffsetYAnimation([in] IDCompositionAnimation *animation);
/* C++ method: HRESULT SetTransform(const D2D_MATRIX_3X2_F &matrix); Use pointer instead of reference */
HRESULT SetTransform([in] const D2D_MATRIX_3X2_F *matrix);
HRESULT SetTransformObject([in] IDCompositionTransform *transform);
HRESULT SetTransformParent([in] IDCompositionVisual *visual);
HRESULT SetEffect([in] IDCompositionEffect *effect);
HRESULT SetBitmapInterpolationMode([in] enum DCOMPOSITION_BITMAP_INTERPOLATION_MODE interpolation_mode);
HRESULT SetBorderMode([in] enum DCOMPOSITION_BORDER_MODE border_mode);
/* C++ method: HRESULT SetClip(const D2D_RECT_F &rect); Use pointer instead of reference */
HRESULT SetClip([in] const D2D_RECT_F *rect);
HRESULT SetClipObject([in] IDCompositionClip *clip);
HRESULT SetContent([in] IUnknown *content);
HRESULT AddVisual([in] IDCompositionVisual *visual, [in] BOOL insert_above, [in] IDCompositionVisual *reference_visual);
HRESULT RemoveVisual([in] IDCompositionVisual *visual);
HRESULT RemoveAllVisuals();
HRESULT SetCompositeMode([in] enum DCOMPOSITION_COMPOSITE_MODE composite_mode);
}
[
object,
uuid(e8de1639-4331-4b26-bc5f-6a321d347a85),
local,
pointer_default(unique)
]
interface IDCompositionVisual2 : IDCompositionVisual
{
HRESULT SetOpacityMode([in] enum DCOMPOSITION_OPACITY_MODE opacity_mode);
HRESULT SetBackFaceVisibility([in] enum DCOMPOSITION_BACKFACE_VISIBILITY visibility);
}
[
object,
uuid(eacdd04c-117e-4e17-88f4-d1b12b0e3d89),
local,
pointer_default(unique)
]
interface IDCompositionTarget : IUnknown
{
HRESULT SetRoot([in] IDCompositionVisual *visual);
}
[
object,
uuid(c37ea93a-e7aa-450d-b16f-9746cb0407f3),
local,
pointer_default(unique)
]
interface IDCompositionDevice : IUnknown
{
HRESULT Commit();
HRESULT WaitForCommitCompletion();
HRESULT GetFrameStatistics([out] DCOMPOSITION_FRAME_STATISTICS *statistics);
HRESULT CreateTargetForHwnd([in] HWND hwnd, [in] BOOL topmost, [out] IDCompositionTarget **target);
HRESULT CreateVisual([out] IDCompositionVisual **visual);
HRESULT CreateSurface([in] UINT width, [in] UINT height, [in] DXGI_FORMAT pixel_format, [in] DXGI_ALPHA_MODE alpha_mode, [out] IDCompositionSurface **surface);
HRESULT CreateVirtualSurface([in] UINT width, [in] UINT height, [in] DXGI_FORMAT pixel_format, [in] DXGI_ALPHA_MODE alpha_mode, [out] IDCompositionVirtualSurface **surface);
HRESULT CreateSurfaceFromHandle([in] HANDLE handle, [out] IUnknown **surface);
HRESULT CreateSurfaceFromHwnd([in] HWND hwnd, [out] IUnknown **surface);
HRESULT CreateTranslateTransform([out] IDCompositionTranslateTransform **transform);
HRESULT CreateScaleTransform([out] IDCompositionScaleTransform **transform);
HRESULT CreateRotateTransform([out] IDCompositionRotateTransform **transform);
HRESULT CreateSkewTransform([out] IDCompositionSkewTransform **transform);
HRESULT CreateMatrixTransform([out] IDCompositionMatrixTransform **transform);
HRESULT CreateTransformGroup([in, size_is(elements)] IDCompositionTransform **transforms, [in] UINT elements, [out] IDCompositionTransform **transform_group);
HRESULT CreateTranslateTransform3D([out] IDCompositionTranslateTransform3D **transform_3d);
HRESULT CreateScaleTransform3D([out] IDCompositionScaleTransform3D **transform_3d);
HRESULT CreateRotateTransform3D([out] IDCompositionRotateTransform3D **transform_3d);
HRESULT CreateMatrixTransform3D([out] IDCompositionMatrixTransform3D **transform_3d);
HRESULT CreateTransform3DGroup([in, size_is(elements)] IDCompositionTransform3D **transforms_3d, [in] UINT elements, [out] IDCompositionTransform3D **transform_3d_group);
HRESULT CreateEffectGroup([out] IDCompositionEffectGroup **effect_group);
HRESULT CreateRectangleClip([out] IDCompositionRectangleClip **clip);
HRESULT CreateAnimation([out] IDCompositionAnimation **animation);
HRESULT CheckDeviceState([out] BOOL *valid);
}
[
object,
uuid(75f6468d-1b8e-447c-9bc6-75fea80b5b25),
local,
pointer_default(unique)
]
interface IDCompositionDevice2 : IUnknown
{
HRESULT Commit();
HRESULT WaitForCommitCompletion();
HRESULT GetFrameStatistics([out] DCOMPOSITION_FRAME_STATISTICS *statistics);
HRESULT CreateVisual([out] IDCompositionVisual2 **visual);
HRESULT CreateSurfaceFactory([in] IUnknown *rendering_device, [out] IDCompositionSurfaceFactory **surface_factory);
HRESULT CreateSurface([in] UINT width, [in] UINT height, [in] DXGI_FORMAT pixel_format, [in] DXGI_ALPHA_MODE alpha_mode, [out] IDCompositionSurface **surface);
HRESULT CreateVirtualSurface([in] UINT width, [in] UINT height, [in] DXGI_FORMAT pixel_format, [in] DXGI_ALPHA_MODE alpha_mode, [out] IDCompositionVirtualSurface **surface);
HRESULT CreateTranslateTransform([out] IDCompositionTranslateTransform **transform);
HRESULT CreateScaleTransform([out] IDCompositionScaleTransform **transform);
HRESULT CreateRotateTransform([out] IDCompositionRotateTransform **transform);
HRESULT CreateSkewTransform([out] IDCompositionSkewTransform **transform);
HRESULT CreateMatrixTransform([out] IDCompositionMatrixTransform **transform);
HRESULT CreateTransformGroup([in, size_is(elements)] IDCompositionTransform **transforms, [in] UINT elements, [out] IDCompositionTransform **transform_group);
HRESULT CreateTranslateTransform3D([out] IDCompositionTranslateTransform3D **transform_3d);
HRESULT CreateScaleTransform3D([out] IDCompositionScaleTransform3D **transform_3d);
HRESULT CreateRotateTransform3D([out] IDCompositionRotateTransform3D **transform_3d);
HRESULT CreateMatrixTransform3D([out] IDCompositionMatrixTransform3D **transform_3d);
HRESULT CreateTransform3DGroup([in, size_is(elements)] IDCompositionTransform3D **transforms_3d, [in] UINT elements, [out] IDCompositionTransform3D **transform_3d_group);
HRESULT CreateEffectGroup([out] IDCompositionEffectGroup **effect_group);
HRESULT CreateRectangleClip([out] IDCompositionRectangleClip **clip);
HRESULT CreateAnimation([out] IDCompositionAnimation **animation);
}
[
object,
uuid(5f4633fe-1e08-4cb8-8c75-ce24333f5602),
local,
pointer_default(unique)
]
interface IDCompositionDesktopDevice : IDCompositionDevice2
{
HRESULT CreateTargetForHwnd([in] HWND hwnd, [in] BOOL topmost, [out] IDCompositionTarget **target);
HRESULT CreateSurfaceFromHandle([in] HANDLE handle, [out] IUnknown **surface);
HRESULT CreateSurfaceFromHwnd([in] HWND hwnd, [out] IUnknown **surface);
}
cpp_quote("STDAPI DCompositionCreateDevice(IDXGIDevice *dxgi_device, REFIID iid, void **device);")
cpp_quote("STDAPI DCompositionCreateDevice2(IUnknown *rendering_device, REFIID iid, void **device);")