1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 
7 #ifndef _DCOMP_H_
8 #define _DCOMP_H_
9 
10 #include <d2dbasetypes.h>
11 #ifndef D3DMATRIX_DEFINED
12 #include <d3d9types.h>
13 #endif
14 #include <d2d1_1.h>
15 #include <winapifamily.h>
16 
17 #include <dcomptypes.h>
18 #include <dcompanimation.h>
19 
20 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
21 
22 #undef INTERFACE
23 #define INTERFACE IDCompositionSurface
24 DECLARE_INTERFACE_IID_(IDCompositionSurface,IUnknown,"bb8a4953-2c99-4f5a-96f5-4819027fa3ac")
25 {
26     STDMETHOD(BeginDraw)(THIS_ const RECT*,REFIID,void**,POINT*) PURE;
27     STDMETHOD(EndDraw)(THIS) PURE;
28     STDMETHOD(SuspendDraw)(THIS) PURE;
29     STDMETHOD(ResumeDraw)(THIS) PURE;
30     STDMETHOD(Scroll)(THIS_ const RECT*,const RECT*,int,int) PURE;
31 };
32 
33 #undef INTERFACE
34 #define INTERFACE IDCompositionVirtualSurface
35 DECLARE_INTERFACE_IID_(IDCompositionVirtualSurface,IDCompositionSurface,"ae471c51-5f53-4a24-8d3e-d0c39c30b3f0")
36 {
37     STDMETHOD(Resize)(THIS_ UINT,UINT) PURE;
38     STDMETHOD(Trim)(THIS_ const RECT*,UINT) PURE;
39 };
40 
41 #undef INTERFACE
42 #define INTERFACE IDCompositionEffect
43 DECLARE_INTERFACE_IID_(IDCompositionEffect,IUnknown,"ec81b08f-bfcb-4e8d-b193-a915587999e8")
44 {
45 };
46 
47 #undef INTERFACE
48 #define INTERFACE IDCompositionTransform3D
49 DECLARE_INTERFACE_IID_(IDCompositionTransform3D,IDCompositionEffect,"71185722-246b-41f2-aad1-0443f7f4bfc2")
50 {
51 };
52 
53 #undef INTERFACE
54 #define INTERFACE IDCompositionTransform
55 DECLARE_INTERFACE_IID_(IDCompositionTransform,IDCompositionTransform3D,"fd55faa7-37e0-4c20-95d2-9be45bc33f55")
56 {
57 };
58 
59 #undef INTERFACE
60 #define INTERFACE IDCompositionTranslateTransform
61 DECLARE_INTERFACE_IID_(IDCompositionTranslateTransform,IDCompositionTransform,"06791122-c6f0-417d-8323-269e987f5954")
62 {
63     STDMETHOD(SetOffsetX)(THIS_ float) PURE;
64     STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
65     STDMETHOD(SetOffsetY)(THIS_ float) PURE;
66     STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
67 };
68 
69 #undef INTERFACE
70 #define INTERFACE IDCompositionScaleTransform
71 DECLARE_INTERFACE_IID_(IDCompositionScaleTransform,IDCompositionTransform,"71fde914-40ef-45ef-bd51-68b037c339f9")
72 {
73     STDMETHOD(SetScaleX)(THIS_ float) PURE;
74     STDMETHOD(SetScaleX)(THIS_ IDCompositionAnimation*) PURE;
75     STDMETHOD(SetScaleY)(THIS_ float) PURE;
76     STDMETHOD(SetScaleY)(THIS_ IDCompositionAnimation*) PURE;
77     STDMETHOD(SetCenterX)(THIS_ float) PURE;
78     STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
79     STDMETHOD(SetCenterY)(THIS_ float) PURE;
80     STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
81 };
82 
83 #undef INTERFACE
84 #define INTERFACE IDCompositionRotateTransform
85 DECLARE_INTERFACE_IID_(IDCompositionRotateTransform,IDCompositionTransform,"641ed83c-ae96-46c5-90dc-32774cc5c6d5")
86 {
87     STDMETHOD(SetAngle)(THIS_ float) PURE;
88     STDMETHOD(SetAngle)(THIS_ IDCompositionAnimation*) PURE;
89     STDMETHOD(SetCenterX)(THIS_ float) PURE;
90     STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
91     STDMETHOD(SetCenterY)(THIS_ float) PURE;
92     STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
93 };
94 
95 #undef INTERFACE
96 #define INTERFACE IDCompositionSkewTransform
97 DECLARE_INTERFACE_IID_(IDCompositionSkewTransform,IDCompositionTransform,"e57aa735-dcdb-4c72-9c61-0591f58889ee")
98 {
99     STDMETHOD(SetAngleX)(THIS_ float) PURE;
100     STDMETHOD(SetAngleX)(THIS_ IDCompositionAnimation*) PURE;
101     STDMETHOD(SetAngleY)(THIS_ float) PURE;
102     STDMETHOD(SetAngleY)(THIS_ IDCompositionAnimation*) PURE;
103     STDMETHOD(SetCenterX)(THIS_ float) PURE;
104     STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
105     STDMETHOD(SetCenterY)(THIS_ float) PURE;
106     STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
107 };
108 
109 #undef INTERFACE
110 #define INTERFACE IDCompositionMatrixTransform
111 DECLARE_INTERFACE_IID_(IDCompositionMatrixTransform,IDCompositionTransform,"16cdff07-c503-419c-83f2-0965c7af1fa6")
112 {
113     STDMETHOD(SetMatrix)(THIS_ const D2D_MATRIX_3X2_F&) PURE;
114     STDMETHOD(SetMatrixElement)(THIS_ int,int,float) PURE;
115     STDMETHOD(SetMatrixElement)(THIS_ int,int,IDCompositionAnimation*) PURE;
116 };
117 
118 #undef INTERFACE
119 #define INTERFACE IDCompositionTranslateTransform3D
120 DECLARE_INTERFACE_IID_(IDCompositionTranslateTransform3D,IDCompositionTransform3D,"91636d4b-9ba1-4532-aaf7-e3344994d788")
121 {
122     STDMETHOD(SetOffsetX)(THIS_ float) PURE;
123     STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
124     STDMETHOD(SetOffsetY)(THIS_ float) PURE;
125     STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
126     STDMETHOD(SetOffsetZ)(THIS_ float) PURE;
127     STDMETHOD(SetOffsetZ)(THIS_ IDCompositionAnimation*) PURE;
128 };
129 
130 #undef INTERFACE
131 #define INTERFACE IDCompositionScaleTransform3D
132 DECLARE_INTERFACE_IID_(IDCompositionScaleTransform3D,IDCompositionTransform3D,"2a9e9ead-364b-4b15-a7c4-a1997f78b389")
133 {
134     STDMETHOD(SetScaleX)(THIS_ float) PURE;
135     STDMETHOD(SetScaleX)(THIS_ IDCompositionAnimation*) PURE;
136     STDMETHOD(SetScaleY)(THIS_ float) PURE;
137     STDMETHOD(SetScaleY)(THIS_ IDCompositionAnimation*) PURE;
138     STDMETHOD(SetScaleZ)(THIS_ float) PURE;
139     STDMETHOD(SetScaleZ)(THIS_ IDCompositionAnimation*) PURE;
140     STDMETHOD(SetCenterX)(THIS_ float) PURE;
141     STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
142     STDMETHOD(SetCenterY)(THIS_ float) PURE;
143     STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
144     STDMETHOD(SetCenterZ)(THIS_ float) PURE;
145     STDMETHOD(SetCenterZ)(THIS_ IDCompositionAnimation*) PURE;
146 };
147 
148 #undef INTERFACE
149 #define INTERFACE IDCompositionRotateTransform3D
150 DECLARE_INTERFACE_IID_(IDCompositionRotateTransform3D,IDCompositionTransform3D,"d8f5b23f-d429-4a91-b55a-d2f45fd75b18")
151 {
152     STDMETHOD(SetAngle)(THIS_ float) PURE;
153     STDMETHOD(SetAngle)(THIS_ IDCompositionAnimation*) PURE;
154     STDMETHOD(SetAxisX)(THIS_ float) PURE;
155     STDMETHOD(SetAxisX)(THIS_ IDCompositionAnimation*) PURE;
156     STDMETHOD(SetAxisY)(THIS_ float) PURE;
157     STDMETHOD(SetAxisY)(THIS_ IDCompositionAnimation*) PURE;
158     STDMETHOD(SetAxisZ)(THIS_ float) PURE;
159     STDMETHOD(SetAxisZ)(THIS_ IDCompositionAnimation*) PURE;
160     STDMETHOD(SetCenterX)(THIS_ float) PURE;
161     STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
162     STDMETHOD(SetCenterY)(THIS_ float) PURE;
163     STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
164     STDMETHOD(SetCenterZ)(THIS_ float) PURE;
165     STDMETHOD(SetCenterZ)(THIS_ IDCompositionAnimation*) PURE;
166 };
167 
168 #undef INTERFACE
169 #define INTERFACE IDCompositionMatrixTransform3D
170 DECLARE_INTERFACE_IID_(IDCompositionMatrixTransform3D,IDCompositionTransform3D,"4b3363f0-643b-41b7-b6e0-ccf22d34467c")
171 {
172     STDMETHOD(SetMatrix)(THIS_ const D3DMATRIX&) PURE;
173     STDMETHOD(SetMatrixElement)(THIS_ int,int,float) PURE;
174     STDMETHOD(SetMatrixElement)(THIS_ int,int,IDCompositionAnimation*) PURE;
175 };
176 
177 #undef INTERFACE
178 #define INTERFACE IDCompositionEffectGroup
179 DECLARE_INTERFACE_IID_(IDCompositionEffectGroup,IDCompositionEffect,"a7929a74-e6b2-4bd6-8b95-4040119ca34d")
180 {
181     STDMETHOD(SetOpacity)(THIS_ float) PURE;
182     STDMETHOD(SetOpacity)(THIS_ IDCompositionAnimation*) PURE;
183     STDMETHOD(SetTransform3D)(THIS_ IDCompositionTransform3D*) PURE;
184 };
185 
186 #undef INTERFACE
187 #define INTERFACE IDCompositionClip
188 DECLARE_INTERFACE_IID_(IDCompositionClip,IUnknown,"64ac3703-9d3f-45ec-a109-7cac0e7a13a7")
189 {
190 };
191 
192 #undef INTERFACE
193 #define INTERFACE IDCompositionRectangleClip
194 DECLARE_INTERFACE_IID_(IDCompositionRectangleClip,IDCompositionClip,"9842ad7d-d9cf-4908-aed7-48b51da5e7c2")
195 {
196     STDMETHOD(SetLeft)(THIS_ float) PURE;
197     STDMETHOD(SetLeft)(THIS_ IDCompositionAnimation*) PURE;
198     STDMETHOD(SetTop)(THIS_ float) PURE;
199     STDMETHOD(SetTop)(THIS_ IDCompositionAnimation*) PURE;
200     STDMETHOD(SetRight)(THIS_ float) PURE;
201     STDMETHOD(SetRight)(THIS_ IDCompositionAnimation*) PURE;
202     STDMETHOD(SetBottom)(THIS_ float) PURE;
203     STDMETHOD(SetBottom)(THIS_ IDCompositionAnimation*) PURE;
204     STDMETHOD(SetTopLeftRadiusX)(THIS_ float) PURE;
205     STDMETHOD(SetTopLeftRadiusX)(THIS_ IDCompositionAnimation*) PURE;
206     STDMETHOD(SetTopLeftRadiusY)(THIS_ float) PURE;
207     STDMETHOD(SetTopLeftRadiusY)(THIS_ IDCompositionAnimation*) PURE;
208     STDMETHOD(SetTopRightRadiusX)(THIS_ float) PURE;
209     STDMETHOD(SetTopRightRadiusX)(THIS_ IDCompositionAnimation*) PURE;
210     STDMETHOD(SetTopRightRadiusY)(THIS_ float) PURE;
211     STDMETHOD(SetTopRightRadiusY)(THIS_ IDCompositionAnimation*) PURE;
212     STDMETHOD(SetBottomLeftRadiusX)(THIS_ float) PURE;
213     STDMETHOD(SetBottomLeftRadiusX)(THIS_ IDCompositionAnimation*) PURE;
214     STDMETHOD(SetBottomLeftRadiusY)(THIS_ float) PURE;
215     STDMETHOD(SetBottomLeftRadiusY)(THIS_ IDCompositionAnimation*) PURE;
216     STDMETHOD(SetBottomRightRadiusX)(THIS_ float) PURE;
217     STDMETHOD(SetBottomRightRadiusX)(THIS_ IDCompositionAnimation*) PURE;
218     STDMETHOD(SetBottomRightRadiusY)(THIS_ float) PURE;
219     STDMETHOD(SetBottomRightRadiusY)(THIS_ IDCompositionAnimation*) PURE;
220 };
221 
222 #undef INTERFACE
223 #define INTERFACE IDCompositionVisual
224 DECLARE_INTERFACE_IID_(IDCompositionVisual,IUnknown,"4d93059d-097b-4651-9a60-f0f25116e2f3")
225 {
226     STDMETHOD(SetOffsetX)(THIS_ float) PURE;
227     STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
228     STDMETHOD(SetOffsetY)(THIS_ float) PURE;
229     STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
230     STDMETHOD(SetTransform)(THIS_ const D2D_MATRIX_3X2_F&) PURE;
231     STDMETHOD(SetTransform)(THIS_ IDCompositionTransform*) PURE;
232     STDMETHOD(SetTransformParent)(THIS_ IDCompositionVisual*) PURE;
233     STDMETHOD(SetEffect)(THIS_ IDCompositionEffect*) PURE;
234     STDMETHOD(SetBitmapInterpolationMode)(THIS_ DCOMPOSITION_BITMAP_INTERPOLATION_MODE) PURE;
235     STDMETHOD(SetBorderMode)(THIS_ DCOMPOSITION_BORDER_MODE) PURE;
236     STDMETHOD(SetClip)(THIS_ const D2D_RECT_F&) PURE;
237     STDMETHOD(SetClip)(THIS_ IDCompositionClip*) PURE;
238     STDMETHOD(SetContent)(THIS_ IUnknown*) PURE;
239     STDMETHOD(AddVisual)(THIS_ IDCompositionVisual*,BOOL,IDCompositionVisual*) PURE;
240     STDMETHOD(RemoveVisual)(THIS_ IDCompositionVisual*) PURE;
241     STDMETHOD(RemoveAllVisuals)(THIS_) PURE;
242     STDMETHOD(SetCompositeMode)(THIS_ DCOMPOSITION_COMPOSITE_MODE) PURE;
243 };
244 
245 #undef INTERFACE
246 #define INTERFACE IDCompositionTarget
247 DECLARE_INTERFACE_IID_(IDCompositionTarget,IUnknown,"eacdd04c-117e-4e17-88f4-d1b12b0e3d89")
248 {
249     STDMETHOD(SetRoot)(THIS_ IDCompositionVisual*) PURE;
250 };
251 
252 #undef INTERFACE
253 #define INTERFACE IDCompositionDevice
254 DECLARE_INTERFACE_IID_(IDCompositionDevice,IUnknown,"c37ea93a-e7aa-450d-b16f-9746cb0407f3")
255 {
256     STDMETHOD(Commit)(THIS) PURE;
257     STDMETHOD(WaitForCommitCompletion)(THIS) PURE;
258     STDMETHOD(GetFrameStatistics)(THIS_ DCOMPOSITION_FRAME_STATISTICS*) PURE;
259     STDMETHOD(CreateTargetForHwnd)(THIS_ HWND,BOOL,IDCompositionTarget**) PURE;
260     STDMETHOD(CreateVisual)(THIS_ IDCompositionVisual**) PURE;
261     STDMETHOD(CreateSurface)(THIS_ UINT,UINT,DXGI_FORMAT,DXGI_ALPHA_MODE,IDCompositionSurface**) PURE;
262     STDMETHOD(CreateVirtualSurface)(THIS_ UINT,UINT,DXGI_FORMAT,DXGI_ALPHA_MODE,IDCompositionVirtualSurface**) PURE;
263     STDMETHOD(CreateSurfaceFromHandle)(THIS_ HANDLE,IUnknown**) PURE;
264     STDMETHOD(CreateSurfaceFromHwnd)(THIS_ HWND,IUnknown**) PURE;
265     STDMETHOD(CreateTranslateTransform)(THIS_ IDCompositionTranslateTransform**) PURE;
266     STDMETHOD(CreateScaleTransform)(THIS_ IDCompositionScaleTransform**) PURE;
267     STDMETHOD(CreateRotateTransform)(THIS_ IDCompositionRotateTransform**) PURE;
268     STDMETHOD(CreateSkewTransform)(THIS_ IDCompositionSkewTransform**) PURE;
269     STDMETHOD(CreateMatrixTransform)(THIS_ IDCompositionMatrixTransform**) PURE;
270     STDMETHOD(CreateTransformGroup)(THIS_ IDCompositionTransform**,UINT,IDCompositionTransform**) PURE;
271     STDMETHOD(CreateTranslateTransform3D)(THIS_ IDCompositionTranslateTransform3D**) PURE;
272     STDMETHOD(CreateScaleTransform3D)(THIS_ IDCompositionScaleTransform3D**) PURE;
273     STDMETHOD(CreateRotateTransform3D)(THIS_ IDCompositionRotateTransform3D**) PURE;
274     STDMETHOD(CreateMatrixTransform3D)(THIS_ IDCompositionMatrixTransform3D**) PURE;
275     STDMETHOD(CreateTransform3DGroup)(THIS_ IDCompositionTransform3D**,UINT,IDCompositionTransform3D**) PURE;
276     STDMETHOD(CreateEffectGroup)(THIS_ IDCompositionEffectGroup**) PURE;
277     STDMETHOD(CreateRectangleClip)(THIS_ IDCompositionRectangleClip**) PURE;
278     STDMETHOD(CreateAnimation)(THIS_ IDCompositionAnimation**) PURE;
279     STDMETHOD(CheckDeviceState)(THIS_ BOOL*) PURE;
280 };
281 
282 #ifdef __CRT_UUID_DECL
283 __CRT_UUID_DECL(IDCompositionDevice,0xc37ea93a,0xe7aa,0x450d,0xb1,0x6f,0x97,0x46,0xcb,0x04,0x07,0xf3);
284 #endif
285 
286 #endif
287 #endif /* _DCOMP_H_ */
288