master
  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
 24DECLARE_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
 35DECLARE_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
 43DECLARE_INTERFACE_IID_(IDCompositionEffect,IUnknown,"ec81b08f-bfcb-4e8d-b193-a915587999e8")
 44{
 45};
 46
 47#undef INTERFACE
 48#define INTERFACE IDCompositionTransform3D
 49DECLARE_INTERFACE_IID_(IDCompositionTransform3D,IDCompositionEffect,"71185722-246b-41f2-aad1-0443f7f4bfc2")
 50{
 51};
 52
 53#undef INTERFACE
 54#define INTERFACE IDCompositionTransform
 55DECLARE_INTERFACE_IID_(IDCompositionTransform,IDCompositionTransform3D,"fd55faa7-37e0-4c20-95d2-9be45bc33f55")
 56{
 57};
 58
 59#undef INTERFACE
 60#define INTERFACE IDCompositionTranslateTransform
 61DECLARE_INTERFACE_IID_(IDCompositionTranslateTransform,IDCompositionTransform,"06791122-c6f0-417d-8323-269e987f5954")
 62{
 63#if defined(_MSC_VER) && defined(__cplusplus)
 64    STDMETHOD(SetOffsetX)(THIS_ float) PURE;
 65    STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
 66    STDMETHOD(SetOffsetY)(THIS_ float) PURE;
 67    STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
 68#else
 69    STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
 70    STDMETHOD(SetOffsetX)(THIS_ float) PURE;
 71    STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
 72    STDMETHOD(SetOffsetY)(THIS_ float) PURE;
 73#endif
 74};
 75
 76#undef INTERFACE
 77#define INTERFACE IDCompositionScaleTransform
 78DECLARE_INTERFACE_IID_(IDCompositionScaleTransform,IDCompositionTransform,"71fde914-40ef-45ef-bd51-68b037c339f9")
 79{
 80#if defined(_MSC_VER) && defined(__cplusplus)
 81    STDMETHOD(SetScaleX)(THIS_ float) PURE;
 82    STDMETHOD(SetScaleX)(THIS_ IDCompositionAnimation*) PURE;
 83    STDMETHOD(SetScaleY)(THIS_ float) PURE;
 84    STDMETHOD(SetScaleY)(THIS_ IDCompositionAnimation*) PURE;
 85    STDMETHOD(SetCenterX)(THIS_ float) PURE;
 86    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
 87    STDMETHOD(SetCenterY)(THIS_ float) PURE;
 88    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
 89#else
 90    STDMETHOD(SetScaleX)(THIS_ IDCompositionAnimation*) PURE;
 91    STDMETHOD(SetScaleX)(THIS_ float) PURE;
 92    STDMETHOD(SetScaleY)(THIS_ IDCompositionAnimation*) PURE;
 93    STDMETHOD(SetScaleY)(THIS_ float) PURE;
 94    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
 95    STDMETHOD(SetCenterX)(THIS_ float) PURE;
 96    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
 97    STDMETHOD(SetCenterY)(THIS_ float) PURE;
 98#endif
 99};
100
101#undef INTERFACE
102#define INTERFACE IDCompositionRotateTransform
103DECLARE_INTERFACE_IID_(IDCompositionRotateTransform,IDCompositionTransform,"641ed83c-ae96-46c5-90dc-32774cc5c6d5")
104{
105#if defined(_MSC_VER) && defined(__cplusplus)
106    STDMETHOD(SetAngle)(THIS_ float) PURE;
107    STDMETHOD(SetAngle)(THIS_ IDCompositionAnimation*) PURE;
108    STDMETHOD(SetCenterX)(THIS_ float) PURE;
109    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
110    STDMETHOD(SetCenterY)(THIS_ float) PURE;
111    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
112#else
113    STDMETHOD(SetAngle)(THIS_ IDCompositionAnimation*) PURE;
114    STDMETHOD(SetAngle)(THIS_ float) PURE;
115    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
116    STDMETHOD(SetCenterX)(THIS_ float) PURE;
117    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
118    STDMETHOD(SetCenterY)(THIS_ float) PURE;
119#endif
120};
121
122#undef INTERFACE
123#define INTERFACE IDCompositionSkewTransform
124DECLARE_INTERFACE_IID_(IDCompositionSkewTransform,IDCompositionTransform,"e57aa735-dcdb-4c72-9c61-0591f58889ee")
125{
126#if defined(_MSC_VER) && defined(__cplusplus)
127    STDMETHOD(SetAngleX)(THIS_ float) PURE;
128    STDMETHOD(SetAngleX)(THIS_ IDCompositionAnimation*) PURE;
129    STDMETHOD(SetAngleY)(THIS_ float) PURE;
130    STDMETHOD(SetAngleY)(THIS_ IDCompositionAnimation*) PURE;
131    STDMETHOD(SetCenterX)(THIS_ float) PURE;
132    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
133    STDMETHOD(SetCenterY)(THIS_ float) PURE;
134    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
135#else
136    STDMETHOD(SetAngleX)(THIS_ IDCompositionAnimation*) PURE;
137    STDMETHOD(SetAngleX)(THIS_ float) PURE;
138    STDMETHOD(SetAngleY)(THIS_ IDCompositionAnimation*) PURE;
139    STDMETHOD(SetAngleY)(THIS_ float) PURE;
140    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
141    STDMETHOD(SetCenterX)(THIS_ float) PURE;
142    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
143    STDMETHOD(SetCenterY)(THIS_ float) PURE;
144#endif
145};
146
147#undef INTERFACE
148#define INTERFACE IDCompositionMatrixTransform
149DECLARE_INTERFACE_IID_(IDCompositionMatrixTransform,IDCompositionTransform,"16cdff07-c503-419c-83f2-0965c7af1fa6")
150{
151    STDMETHOD(SetMatrix)(THIS_ const D2D_MATRIX_3X2_F&) PURE;
152#if defined(_MSC_VER) && defined(__cplusplus)
153    STDMETHOD(SetMatrixElement)(THIS_ int,int,float) PURE;
154    STDMETHOD(SetMatrixElement)(THIS_ int,int,IDCompositionAnimation*) PURE;
155#else
156    STDMETHOD(SetMatrixElement)(THIS_ int,int,IDCompositionAnimation*) PURE;
157    STDMETHOD(SetMatrixElement)(THIS_ int,int,float) PURE;
158#endif
159};
160
161#undef INTERFACE
162#define INTERFACE IDCompositionTranslateTransform3D
163DECLARE_INTERFACE_IID_(IDCompositionTranslateTransform3D,IDCompositionTransform3D,"91636d4b-9ba1-4532-aaf7-e3344994d788")
164{
165#if defined(_MSC_VER) && defined(__cplusplus)
166    STDMETHOD(SetOffsetX)(THIS_ float) PURE;
167    STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
168    STDMETHOD(SetOffsetY)(THIS_ float) PURE;
169    STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
170    STDMETHOD(SetOffsetZ)(THIS_ float) PURE;
171    STDMETHOD(SetOffsetZ)(THIS_ IDCompositionAnimation*) PURE;
172#else
173    STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
174    STDMETHOD(SetOffsetX)(THIS_ float) PURE;
175    STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
176    STDMETHOD(SetOffsetY)(THIS_ float) PURE;
177    STDMETHOD(SetOffsetZ)(THIS_ IDCompositionAnimation*) PURE;
178    STDMETHOD(SetOffsetZ)(THIS_ float) PURE;
179#endif
180};
181
182#undef INTERFACE
183#define INTERFACE IDCompositionScaleTransform3D
184DECLARE_INTERFACE_IID_(IDCompositionScaleTransform3D,IDCompositionTransform3D,"2a9e9ead-364b-4b15-a7c4-a1997f78b389")
185{
186#if defined(_MSC_VER) && defined(__cplusplus)
187    STDMETHOD(SetScaleX)(THIS_ float) PURE;
188    STDMETHOD(SetScaleX)(THIS_ IDCompositionAnimation*) PURE;
189    STDMETHOD(SetScaleY)(THIS_ float) PURE;
190    STDMETHOD(SetScaleY)(THIS_ IDCompositionAnimation*) PURE;
191    STDMETHOD(SetScaleZ)(THIS_ float) PURE;
192    STDMETHOD(SetScaleZ)(THIS_ IDCompositionAnimation*) PURE;
193    STDMETHOD(SetCenterX)(THIS_ float) PURE;
194    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
195    STDMETHOD(SetCenterY)(THIS_ float) PURE;
196    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
197    STDMETHOD(SetCenterZ)(THIS_ float) PURE;
198    STDMETHOD(SetCenterZ)(THIS_ IDCompositionAnimation*) PURE;
199#else
200    STDMETHOD(SetScaleX)(THIS_ IDCompositionAnimation*) PURE;
201    STDMETHOD(SetScaleX)(THIS_ float) PURE;
202    STDMETHOD(SetScaleY)(THIS_ IDCompositionAnimation*) PURE;
203    STDMETHOD(SetScaleY)(THIS_ float) PURE;
204    STDMETHOD(SetScaleZ)(THIS_ IDCompositionAnimation*) PURE;
205    STDMETHOD(SetScaleZ)(THIS_ float) PURE;
206    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
207    STDMETHOD(SetCenterX)(THIS_ float) PURE;
208    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
209    STDMETHOD(SetCenterY)(THIS_ float) PURE;
210    STDMETHOD(SetCenterZ)(THIS_ IDCompositionAnimation*) PURE;
211    STDMETHOD(SetCenterZ)(THIS_ float) PURE;
212#endif
213};
214
215#undef INTERFACE
216#define INTERFACE IDCompositionRotateTransform3D
217DECLARE_INTERFACE_IID_(IDCompositionRotateTransform3D,IDCompositionTransform3D,"d8f5b23f-d429-4a91-b55a-d2f45fd75b18")
218{
219#if defined(_MSC_VER) && defined(__cplusplus)
220    STDMETHOD(SetAngle)(THIS_ float) PURE;
221    STDMETHOD(SetAngle)(THIS_ IDCompositionAnimation*) PURE;
222    STDMETHOD(SetAxisX)(THIS_ float) PURE;
223    STDMETHOD(SetAxisX)(THIS_ IDCompositionAnimation*) PURE;
224    STDMETHOD(SetAxisY)(THIS_ float) PURE;
225    STDMETHOD(SetAxisY)(THIS_ IDCompositionAnimation*) PURE;
226    STDMETHOD(SetAxisZ)(THIS_ float) PURE;
227    STDMETHOD(SetAxisZ)(THIS_ IDCompositionAnimation*) PURE;
228    STDMETHOD(SetCenterX)(THIS_ float) PURE;
229    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
230    STDMETHOD(SetCenterY)(THIS_ float) PURE;
231    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
232    STDMETHOD(SetCenterZ)(THIS_ float) PURE;
233    STDMETHOD(SetCenterZ)(THIS_ IDCompositionAnimation*) PURE;
234#else
235    STDMETHOD(SetAngle)(THIS_ IDCompositionAnimation*) PURE;
236    STDMETHOD(SetAngle)(THIS_ float) PURE;
237    STDMETHOD(SetAxisX)(THIS_ IDCompositionAnimation*) PURE;
238    STDMETHOD(SetAxisX)(THIS_ float) PURE;
239    STDMETHOD(SetAxisY)(THIS_ IDCompositionAnimation*) PURE;
240    STDMETHOD(SetAxisY)(THIS_ float) PURE;
241    STDMETHOD(SetAxisZ)(THIS_ IDCompositionAnimation*) PURE;
242    STDMETHOD(SetAxisZ)(THIS_ float) PURE;
243    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
244    STDMETHOD(SetCenterX)(THIS_ float) PURE;
245    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
246    STDMETHOD(SetCenterY)(THIS_ float) PURE;
247    STDMETHOD(SetCenterZ)(THIS_ IDCompositionAnimation*) PURE;
248    STDMETHOD(SetCenterZ)(THIS_ float) PURE;
249#endif
250};
251
252#undef INTERFACE
253#define INTERFACE IDCompositionMatrixTransform3D
254DECLARE_INTERFACE_IID_(IDCompositionMatrixTransform3D,IDCompositionTransform3D,"4b3363f0-643b-41b7-b6e0-ccf22d34467c")
255{
256    STDMETHOD(SetMatrix)(THIS_ const D3DMATRIX&) PURE;
257#if defined(_MSC_VER) && defined(__cplusplus)
258    STDMETHOD(SetMatrixElement)(THIS_ int,int,float) PURE;
259    STDMETHOD(SetMatrixElement)(THIS_ int,int,IDCompositionAnimation*) PURE;
260#else
261    STDMETHOD(SetMatrixElement)(THIS_ int,int,IDCompositionAnimation*) PURE;
262    STDMETHOD(SetMatrixElement)(THIS_ int,int,float) PURE;
263#endif
264};
265
266#undef INTERFACE
267#define INTERFACE IDCompositionEffectGroup
268DECLARE_INTERFACE_IID_(IDCompositionEffectGroup,IDCompositionEffect,"a7929a74-e6b2-4bd6-8b95-4040119ca34d")
269{
270#if defined(_MSC_VER) && defined(__cplusplus)
271    STDMETHOD(SetOpacity)(THIS_ float) PURE;
272    STDMETHOD(SetOpacity)(THIS_ IDCompositionAnimation*) PURE;
273#else
274    STDMETHOD(SetOpacity)(THIS_ IDCompositionAnimation*) PURE;
275    STDMETHOD(SetOpacity)(THIS_ float) PURE;
276#endif
277    STDMETHOD(SetTransform3D)(THIS_ IDCompositionTransform3D*) PURE;
278};
279
280#undef INTERFACE
281#define INTERFACE IDCompositionClip
282DECLARE_INTERFACE_IID_(IDCompositionClip,IUnknown,"64ac3703-9d3f-45ec-a109-7cac0e7a13a7")
283{
284};
285
286#undef INTERFACE
287#define INTERFACE IDCompositionRectangleClip
288DECLARE_INTERFACE_IID_(IDCompositionRectangleClip,IDCompositionClip,"9842ad7d-d9cf-4908-aed7-48b51da5e7c2")
289{
290#if defined(_MSC_VER) && defined(__cplusplus)
291    STDMETHOD(SetLeft)(THIS_ float) PURE;
292    STDMETHOD(SetLeft)(THIS_ IDCompositionAnimation*) PURE;
293    STDMETHOD(SetTop)(THIS_ float) PURE;
294    STDMETHOD(SetTop)(THIS_ IDCompositionAnimation*) PURE;
295    STDMETHOD(SetRight)(THIS_ float) PURE;
296    STDMETHOD(SetRight)(THIS_ IDCompositionAnimation*) PURE;
297    STDMETHOD(SetBottom)(THIS_ float) PURE;
298    STDMETHOD(SetBottom)(THIS_ IDCompositionAnimation*) PURE;
299    STDMETHOD(SetTopLeftRadiusX)(THIS_ float) PURE;
300    STDMETHOD(SetTopLeftRadiusX)(THIS_ IDCompositionAnimation*) PURE;
301    STDMETHOD(SetTopLeftRadiusY)(THIS_ float) PURE;
302    STDMETHOD(SetTopLeftRadiusY)(THIS_ IDCompositionAnimation*) PURE;
303    STDMETHOD(SetTopRightRadiusX)(THIS_ float) PURE;
304    STDMETHOD(SetTopRightRadiusX)(THIS_ IDCompositionAnimation*) PURE;
305    STDMETHOD(SetTopRightRadiusY)(THIS_ float) PURE;
306    STDMETHOD(SetTopRightRadiusY)(THIS_ IDCompositionAnimation*) PURE;
307    STDMETHOD(SetBottomLeftRadiusX)(THIS_ float) PURE;
308    STDMETHOD(SetBottomLeftRadiusX)(THIS_ IDCompositionAnimation*) PURE;
309    STDMETHOD(SetBottomLeftRadiusY)(THIS_ float) PURE;
310    STDMETHOD(SetBottomLeftRadiusY)(THIS_ IDCompositionAnimation*) PURE;
311    STDMETHOD(SetBottomRightRadiusX)(THIS_ float) PURE;
312    STDMETHOD(SetBottomRightRadiusX)(THIS_ IDCompositionAnimation*) PURE;
313    STDMETHOD(SetBottomRightRadiusY)(THIS_ float) PURE;
314    STDMETHOD(SetBottomRightRadiusY)(THIS_ IDCompositionAnimation*) PURE;
315#else
316    STDMETHOD(SetLeft)(THIS_ IDCompositionAnimation*) PURE;
317    STDMETHOD(SetLeft)(THIS_ float) PURE;
318    STDMETHOD(SetTop)(THIS_ IDCompositionAnimation*) PURE;
319    STDMETHOD(SetTop)(THIS_ float) PURE;
320    STDMETHOD(SetRight)(THIS_ IDCompositionAnimation*) PURE;
321    STDMETHOD(SetRight)(THIS_ float) PURE;
322    STDMETHOD(SetBottom)(THIS_ IDCompositionAnimation*) PURE;
323    STDMETHOD(SetBottom)(THIS_ float) PURE;
324    STDMETHOD(SetTopLeftRadiusX)(THIS_ IDCompositionAnimation*) PURE;
325    STDMETHOD(SetTopLeftRadiusX)(THIS_ float) PURE;
326    STDMETHOD(SetTopLeftRadiusY)(THIS_ IDCompositionAnimation*) PURE;
327    STDMETHOD(SetTopLeftRadiusY)(THIS_ float) PURE;
328    STDMETHOD(SetTopRightRadiusX)(THIS_ IDCompositionAnimation*) PURE;
329    STDMETHOD(SetTopRightRadiusX)(THIS_ float) PURE;
330    STDMETHOD(SetTopRightRadiusY)(THIS_ IDCompositionAnimation*) PURE;
331    STDMETHOD(SetTopRightRadiusY)(THIS_ float) PURE;
332    STDMETHOD(SetBottomLeftRadiusX)(THIS_ IDCompositionAnimation*) PURE;
333    STDMETHOD(SetBottomLeftRadiusX)(THIS_ float) PURE;
334    STDMETHOD(SetBottomLeftRadiusY)(THIS_ IDCompositionAnimation*) PURE;
335    STDMETHOD(SetBottomLeftRadiusY)(THIS_ float) PURE;
336    STDMETHOD(SetBottomRightRadiusX)(THIS_ IDCompositionAnimation*) PURE;
337    STDMETHOD(SetBottomRightRadiusX)(THIS_ float) PURE;
338    STDMETHOD(SetBottomRightRadiusY)(THIS_ IDCompositionAnimation*) PURE;
339    STDMETHOD(SetBottomRightRadiusY)(THIS_ float) PURE;
340#endif
341};
342
343#undef INTERFACE
344#define INTERFACE IDCompositionVisual
345DECLARE_INTERFACE_IID_(IDCompositionVisual,IUnknown,"4d93059d-097b-4651-9a60-f0f25116e2f3")
346{
347#if defined(_MSC_VER) && defined(__cplusplus)
348    STDMETHOD(SetOffsetX)(THIS_ float) PURE;
349    STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
350    STDMETHOD(SetOffsetY)(THIS_ float) PURE;
351    STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
352    STDMETHOD(SetTransform)(THIS_ const D2D_MATRIX_3X2_F&) PURE;
353    STDMETHOD(SetTransform)(THIS_ IDCompositionTransform*) PURE;
354#else
355    STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
356    STDMETHOD(SetOffsetX)(THIS_ float) PURE;
357    STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
358    STDMETHOD(SetOffsetY)(THIS_ float) PURE;
359    STDMETHOD(SetTransform)(THIS_ IDCompositionTransform*) PURE;
360    STDMETHOD(SetTransform)(THIS_ const D2D_MATRIX_3X2_F&) PURE;
361#endif
362    STDMETHOD(SetTransformParent)(THIS_ IDCompositionVisual*) PURE;
363    STDMETHOD(SetEffect)(THIS_ IDCompositionEffect*) PURE;
364    STDMETHOD(SetBitmapInterpolationMode)(THIS_ DCOMPOSITION_BITMAP_INTERPOLATION_MODE) PURE;
365    STDMETHOD(SetBorderMode)(THIS_ DCOMPOSITION_BORDER_MODE) PURE;
366#if defined(_MSC_VER) && defined(__cplusplus)
367    STDMETHOD(SetClip)(THIS_ const D2D_RECT_F&) PURE;
368    STDMETHOD(SetClip)(THIS_ IDCompositionClip*) PURE;
369#else
370    STDMETHOD(SetClip)(THIS_ IDCompositionClip*) PURE;
371    STDMETHOD(SetClip)(THIS_ const D2D_RECT_F&) PURE;
372#endif
373    STDMETHOD(SetContent)(THIS_ IUnknown*) PURE;
374    STDMETHOD(AddVisual)(THIS_ IDCompositionVisual*,BOOL,IDCompositionVisual*) PURE;
375    STDMETHOD(RemoveVisual)(THIS_ IDCompositionVisual*) PURE;
376    STDMETHOD(RemoveAllVisuals)(THIS_) PURE;
377    STDMETHOD(SetCompositeMode)(THIS_ DCOMPOSITION_COMPOSITE_MODE) PURE;
378};
379
380#undef INTERFACE
381#define INTERFACE IDCompositionTarget
382DECLARE_INTERFACE_IID_(IDCompositionTarget,IUnknown,"eacdd04c-117e-4e17-88f4-d1b12b0e3d89")
383{
384    STDMETHOD(SetRoot)(THIS_ IDCompositionVisual*) PURE;
385};
386
387#undef INTERFACE
388#define INTERFACE IDCompositionDevice
389DECLARE_INTERFACE_IID_(IDCompositionDevice,IUnknown,"c37ea93a-e7aa-450d-b16f-9746cb0407f3")
390{
391    STDMETHOD(Commit)(THIS) PURE;
392    STDMETHOD(WaitForCommitCompletion)(THIS) PURE;
393    STDMETHOD(GetFrameStatistics)(THIS_ DCOMPOSITION_FRAME_STATISTICS*) PURE;
394    STDMETHOD(CreateTargetForHwnd)(THIS_ HWND,BOOL,IDCompositionTarget**) PURE;
395    STDMETHOD(CreateVisual)(THIS_ IDCompositionVisual**) PURE;
396    STDMETHOD(CreateSurface)(THIS_ UINT,UINT,DXGI_FORMAT,DXGI_ALPHA_MODE,IDCompositionSurface**) PURE;
397    STDMETHOD(CreateVirtualSurface)(THIS_ UINT,UINT,DXGI_FORMAT,DXGI_ALPHA_MODE,IDCompositionVirtualSurface**) PURE;
398    STDMETHOD(CreateSurfaceFromHandle)(THIS_ HANDLE,IUnknown**) PURE;
399    STDMETHOD(CreateSurfaceFromHwnd)(THIS_ HWND,IUnknown**) PURE;
400    STDMETHOD(CreateTranslateTransform)(THIS_ IDCompositionTranslateTransform**) PURE;
401    STDMETHOD(CreateScaleTransform)(THIS_ IDCompositionScaleTransform**) PURE;
402    STDMETHOD(CreateRotateTransform)(THIS_ IDCompositionRotateTransform**) PURE;
403    STDMETHOD(CreateSkewTransform)(THIS_ IDCompositionSkewTransform**) PURE;
404    STDMETHOD(CreateMatrixTransform)(THIS_ IDCompositionMatrixTransform**) PURE;
405    STDMETHOD(CreateTransformGroup)(THIS_ IDCompositionTransform**,UINT,IDCompositionTransform**) PURE;
406    STDMETHOD(CreateTranslateTransform3D)(THIS_ IDCompositionTranslateTransform3D**) PURE;
407    STDMETHOD(CreateScaleTransform3D)(THIS_ IDCompositionScaleTransform3D**) PURE;
408    STDMETHOD(CreateRotateTransform3D)(THIS_ IDCompositionRotateTransform3D**) PURE;
409    STDMETHOD(CreateMatrixTransform3D)(THIS_ IDCompositionMatrixTransform3D**) PURE;
410    STDMETHOD(CreateTransform3DGroup)(THIS_ IDCompositionTransform3D**,UINT,IDCompositionTransform3D**) PURE;
411    STDMETHOD(CreateEffectGroup)(THIS_ IDCompositionEffectGroup**) PURE;
412    STDMETHOD(CreateRectangleClip)(THIS_ IDCompositionRectangleClip**) PURE;
413    STDMETHOD(CreateAnimation)(THIS_ IDCompositionAnimation**) PURE;
414    STDMETHOD(CheckDeviceState)(THIS_ BOOL*) PURE;
415};
416
417#ifdef __CRT_UUID_DECL
418__CRT_UUID_DECL(IDCompositionDevice,0xc37ea93a,0xe7aa,0x450d,0xb1,0x6f,0x97,0x46,0xcb,0x04,0x07,0xf3);
419#endif
420
421STDAPI DCompositionCreateDevice(IDXGIDevice *dxgiDevice, REFIID iid, void **dcompositionDevice);
422
423#if (_WIN32_WINNT >= 0x0603)
424
425STDAPI DCompositionCreateDevice2(IUnknown *renderingDevice, REFIID iid, void **dcompositionDevice);
426
427#undef INTERFACE
428#define INTERFACE IDCompositionVisual2
429DECLARE_INTERFACE_IID_(IDCompositionVisual2, IDCompositionVisual, "E8DE1639-4331-4B26-BC5F-6A321D347A85")
430{
431    STDMETHOD(SetOpacityMode)(THIS_ DCOMPOSITION_OPACITY_MODE) PURE;
432    STDMETHOD(SetBackFaceVisibility)(THIS_ DCOMPOSITION_BACKFACE_VISIBILITY) PURE;
433};
434
435#ifdef __CRT_UUID_DECL
436__CRT_UUID_DECL(IDCompositionVisual2,0xe8de1639,0x4331,0x4b26,0xbc,0x5f,0x6a,0x32,0x1d,0x34,0x7a,0x85);
437#endif
438
439
440#undef INTERFACE
441#define INTERFACE IDCompositionSurfaceFactory
442DECLARE_INTERFACE_IID_(IDCompositionSurfaceFactory, IUnknown, "E334BC12-3937-4E02-85EB-FCF4EB30D2C8")
443{
444    STDMETHOD(CreateSurface)(THIS_ UINT,UINT, DXGI_FORMAT, DXGI_ALPHA_MODE, IDCompositionSurface**) PURE;
445    STDMETHOD(CreateVirtualSurface)(THIS_ UINT, UINT, DXGI_FORMAT , DXGI_ALPHA_MODE, IDCompositionVirtualSurface**) PURE;
446};
447
448#ifdef __CRT_UUID_DECL
449__CRT_UUID_DECL(IDCompositionSurfaceFactory,0xe334bc12,0x3937,0x4e02,0x85,0xeb,0xfc,0xf4,0xeb,0x30,0xd2,0xc8);
450#endif
451
452
453#undef INTERFACE
454#define INTERFACE IDCompositionDevice2
455DECLARE_INTERFACE_IID_(IDCompositionDevice2, IUnknown, "75F6468D-1B8E-447C-9BC6-75FEA80B5B25")
456{
457    STDMETHOD(Commit)(THIS) PURE;
458    STDMETHOD(WaitForCommitCompletion)(THIS) PURE;
459    STDMETHOD(GetFrameStatistics)(THIS_ DCOMPOSITION_FRAME_STATISTICS*) PURE;
460    STDMETHOD(CreateVisual)(THIS_ IDCompositionVisual2**) PURE;
461    STDMETHOD(CreateSurfaceFactory)(THIS_ IUnknown*, IDCompositionSurfaceFactory**) PURE;
462    STDMETHOD(CreateSurface)(THIS_ UINT, UINT, DXGI_FORMAT, DXGI_ALPHA_MODE, IDCompositionSurface**) PURE;
463    STDMETHOD(CreateVirtualSurface)(THIS_ UINT, UINT, DXGI_FORMAT, DXGI_ALPHA_MODE, IDCompositionVirtualSurface**) PURE;
464    STDMETHOD(CreateTranslateTransform)(THIS_ IDCompositionTranslateTransform**) PURE;
465    STDMETHOD(CreateScaleTransform)(THIS_ IDCompositionScaleTransform**) PURE;
466    STDMETHOD(CreateRotateTransform)(THIS_ IDCompositionRotateTransform**) PURE;
467    STDMETHOD(CreateSkewTransform)(THIS_ IDCompositionSkewTransform**) PURE;
468    STDMETHOD(CreateMatrixTransform)(THIS_ IDCompositionMatrixTransform**) PURE;
469    STDMETHOD(CreateTransformGroup)(THIS_ IDCompositionTransform**, UINT, IDCompositionTransform**) PURE;
470    STDMETHOD(CreateTranslateTransform3D)(THIS_ IDCompositionTranslateTransform3D**) PURE;
471    STDMETHOD(CreateScaleTransform3D)(THIS_ IDCompositionScaleTransform3D**) PURE;
472    STDMETHOD(CreateRotateTransform3D)(THIS_ IDCompositionRotateTransform3D**) PURE;
473    STDMETHOD(CreateMatrixTransform3D)(THIS_ IDCompositionMatrixTransform3D**) PURE;
474    STDMETHOD(CreateTransform3DGroup)(THIS_ IDCompositionTransform3D**, UINT, IDCompositionTransform3D**) PURE;
475    STDMETHOD(CreateEffectGroup)(THIS_ IDCompositionEffectGroup**) PURE;
476    STDMETHOD(CreateRectangleClip)(THIS_ IDCompositionRectangleClip**) PURE;
477    STDMETHOD(CreateAnimation)(THIS_ IDCompositionAnimation**) PURE;
478};
479
480#ifdef __CRT_UUID_DECL
481__CRT_UUID_DECL(IDCompositionDevice2,0x75f6468d,0x1b8e,0x447c,0x9b,0xc6,0x75,0xfe,0xa8,0x0b,0x5b,0x25);
482#endif
483
484
485#undef INTERFACE
486#define INTERFACE IDCompositionDesktopDevice
487DECLARE_INTERFACE_IID_(IDCompositionDesktopDevice, IDCompositionDevice2, "5F4633FE-1E08-4CB8-8C75-CE24333F5602")
488{
489    STDMETHOD(CreateTargetForHwnd)(THIS_ HWND, BOOL, IDCompositionTarget**) PURE;
490    STDMETHOD(CreateSurfaceFromHandle)(THIS_ HANDLE, IUnknown**) PURE;
491    STDMETHOD(CreateSurfaceFromHwnd)(THIS_ HWND, IUnknown**) PURE;
492};
493
494#ifdef __CRT_UUID_DECL
495__CRT_UUID_DECL(IDCompositionDesktopDevice,0x5f4633fe,0x1e08,0x4cb8,0x8c,0x75,0xce,0x24,0x33,0x3f,0x56,0x02);
496#endif
497
498
499#undef INTERFACE
500#define INTERFACE IDCompositionDeviceDebug
501DECLARE_INTERFACE_IID_(IDCompositionDeviceDebug, IUnknown, "A1A3C64A-224F-4A81-9773-4F03A89D3C6C")
502{
503    STDMETHOD(EnableDebugCounters)(THIS_) PURE;
504    STDMETHOD(DisableDebugCounters)(THIS_) PURE;
505};
506
507#ifdef __CRT_UUID_DECL
508__CRT_UUID_DECL(IDCompositionDeviceDebug,0xa1a3c64a,0x224f,0x4a81,0x97,0x73,0x4f,0x03,0xa8,0x9d,0x3c,0x6c);
509#endif
510
511
512#undef INTERFACE
513#define INTERFACE IDCompositionVisualDebug
514DECLARE_INTERFACE_IID_(IDCompositionVisualDebug, IDCompositionVisual2, "FED2B808-5EB4-43A0-AEA3-35F65280F91B")
515{
516    STDMETHOD(EnableHeatMap)(THIS_ const D2D1_COLOR_F &color) PURE;
517    STDMETHOD(DisableHeatMap)(THIS_) PURE;
518    STDMETHOD(EnableRedrawRegions)(THIS_) PURE;
519    STDMETHOD(DisableRedrawRegions)(THIS_) PURE;
520};
521
522#ifdef __CRT_UUID_DECL
523__CRT_UUID_DECL(IDCompositionVisualDebug,0xfed2b808,0x5eb4,0x43a0,0xae,0xa3,0x35,0xf6,0x52,0x80,0xf9,0x1b);
524#endif
525
526
527#undef INTERFACE
528#define INTERFACE IDCompositionFilterEffect
529DECLARE_INTERFACE_IID_(IDCompositionFilterEffect, IDCompositionEffect, "30C421D5-8CB2-4E9F-B133-37BE270D4AC2")
530{
531    STDMETHOD(SetInput)(THIS_ UINT index, IUnknown *input, UINT flags) PURE;
532};
533
534#ifdef __CRT_UUID_DECL
535__CRT_UUID_DECL(IDCompositionFilterEffect,0x30c421d5,0x8cb2,0x4e9f,0xb1,0x33,0x37,0xbe,0x27,0x0d,0x4a,0xc2);
536#endif
537
538
539#undef INTERFACE
540#define INTERFACE IDCompositionSaturationEffect
541DECLARE_INTERFACE_IID_(IDCompositionSaturationEffect, IDCompositionFilterEffect, "A08DEBDA-3258-4FA4-9F16-9174D3FE93B1")
542{
543#if defined(_MSC_VER) && defined(__cplusplus)
544    STDMETHOD(SetSaturation)(THIS_ float ratio) PURE;
545    STDMETHOD(SetSaturation)(THIS_ IDCompositionAnimation* animation) PURE;
546#else
547    STDMETHOD(SetSaturation)(THIS_ IDCompositionAnimation* animation) PURE;
548    STDMETHOD(SetSaturation)(THIS_ float ratio ) PURE;
549#endif
550};
551
552#ifdef __CRT_UUID_DECL
553__CRT_UUID_DECL(IDCompositionSaturationEffect,0xa08debda,0x3258,0x4fa4,0x9f,0x16,0x91,0x74,0xd3,0xfe,0x93,0xb1);
554#endif
555
556
557#undef INTERFACE
558#define INTERFACE IDCompositionTableTransferEffect
559DECLARE_INTERFACE_IID_(IDCompositionTableTransferEffect, IDCompositionFilterEffect, "9B7E82E2-69C5-4EB4-A5F5-A7033F5132CD")
560{
561    STDMETHOD(SetRedTable)(THIS_ const float *tableValues, UINT count) PURE;
562    STDMETHOD(SetGreenTable)(THIS_ const float *tableValues, UINT count) PURE;
563    STDMETHOD(SetBlueTable)(THIS_ const float *tableValues, UINT count) PURE;
564    STDMETHOD(SetAlphaTable)(THIS_ const float *tableValues, UINT count) PURE;
565    STDMETHOD(SetRedDisable)(THIS_ BOOL redDisable) PURE;
566    STDMETHOD(SetGreenDisable)(THIS_ BOOL greenDisable) PURE;
567    STDMETHOD(SetBlueDisable)(THIS_ BOOL blueDisable) PURE;
568    STDMETHOD(SetAlphaDisable)(THIS_ BOOL alphaDisable) PURE;
569    STDMETHOD(SetClampOutput)(THIS_ BOOL clampOutput) PURE;
570#if defined(_MSC_VER) && defined(__cplusplus)
571    STDMETHOD(SetRedTableValue)(THIS_ UINT index, float value) PURE;
572    STDMETHOD(SetRedTableValue)(THIS_ UINT index, IDCompositionAnimation *animation) PURE;
573#else
574    STDMETHOD(SetRedTableValue)(THIS_ UINT index, IDCompositionAnimation *animation) PURE;
575    STDMETHOD(SetRedTableValue)(THIS_ UINT index, float value) PURE;
576#endif
577#if defined(_MSC_VER) && defined(__cplusplus)
578    STDMETHOD(SetGreenTableValue)(THIS_ UINT index, float value) PURE;
579    STDMETHOD(SetGreenTableValue)(THIS_ UINT index, IDCompositionAnimation *animation) PURE;
580#else
581    STDMETHOD(SetGreenTableValue)(THIS_ UINT index, IDCompositionAnimation *animation) PURE;
582    STDMETHOD(SetGreenTableValue)(THIS_ UINT index, float value) PURE;
583#endif
584#if defined(_MSC_VER) && defined(__cplusplus)
585    STDMETHOD(SetBlueTableValue)(THIS_ UINT index, float value) PURE;
586    STDMETHOD(SetBlueTableValue)(THIS_ UINT index, IDCompositionAnimation *animation) PURE;
587#else
588    STDMETHOD(SetBlueTableValue)(THIS_ UINT index, IDCompositionAnimation *animation) PURE;
589    STDMETHOD(SetBlueTableValue)(THIS_ UINT index, float value) PURE;
590#endif
591#if defined(_MSC_VER) && defined(__cplusplus)
592    STDMETHOD(SetAlphaTableValue)(THIS_ UINT index, float value) PURE;
593    STDMETHOD(SetAlphaTableValue)(THIS_ UINT index, IDCompositionAnimation *animation) PURE;
594#else
595    STDMETHOD(SetAlphaTableValue)(THIS_ UINT index, IDCompositionAnimation *animation) PURE;
596    STDMETHOD(SetAlphaTableValue)(THIS_ UINT index, float value) PURE;
597#endif
598};
599
600#ifdef __CRT_UUID_DECL
601__CRT_UUID_DECL(IDCompositionTableTransferEffect,0x9b7e82e2,0x69c5,0x4eb4,0xa5,0xf5,0xa7,0x03,0x3f,0x51,0x32,0xcd);
602#endif
603
604
605#undef INTERFACE
606#define INTERFACE IDCompositionGaussianBlurEffect
607DECLARE_INTERFACE_IID_(IDCompositionGaussianBlurEffect, IDCompositionFilterEffect, "45D4D0B7-1BD4-454E-8894-2BFA68443033")
608{
609
610#if defined(_MSC_VER) && defined(__cplusplus)
611    STDMETHOD(SetStandardDeviation)(THIS_ float amount) PURE;
612    STDMETHOD(SetStandardDeviation)(THIS_ IDCompositionAnimation* animation) PURE;
613#else
614    STDMETHOD(SetStandardDeviation)(THIS_ IDCompositionAnimation* animation) PURE;
615    STDMETHOD(SetStandardDeviation)(THIS_ float amount) PURE;
616#endif
617    STDMETHOD(SetBorderMode)(THIS_ D2D1_BORDER_MODE mode) PURE;
618};
619
620#ifdef __CRT_UUID_DECL
621__CRT_UUID_DECL(IDCompositionGaussianBlurEffect,0x45d4d0b7,0x1bd4,0x454e,0x88,0x94,0x2b,0xfa,0x68,0x44,0x30,0x33);
622#endif
623
624
625#undef INTERFACE
626#define INTERFACE IDCompositionColorMatrixEffect
627DECLARE_INTERFACE_IID_(IDCompositionColorMatrixEffect, IDCompositionFilterEffect, "C1170A22-3CE2-4966-90D4-55408BFC84C4")
628{
629    STDMETHOD(SetMatrix)(THIS_ const D2D1_MATRIX_5X4_F &matrix) PURE;
630#if defined(_MSC_VER) && defined(__cplusplus)
631    STDMETHOD(SetMatrixElement)(THIS_ int row, int column, float value) PURE;
632    STDMETHOD(SetMatrixElement)(THIS_ int row, int column, IDCompositionAnimation *animation) PURE;
633#else
634    STDMETHOD(SetMatrixElement)(THIS_ int row, int column, IDCompositionAnimation *animation) PURE;
635    STDMETHOD(SetMatrixElement)(THIS_ int row, int column, float value) PURE;
636#endif
637    STDMETHOD(SetAlphaMode)(THIS_ D2D1_COLORMATRIX_ALPHA_MODE mode) PURE;
638    STDMETHOD(SetClampOutput)(THIS_ BOOL clamp) PURE;
639};
640
641#ifdef __CRT_UUID_DECL
642__CRT_UUID_DECL(IDCompositionColorMatrixEffect,0xc1170a22,0x3ce2,0x4966,0x90,0xd4,0x55,0x40,0x8b,0xfc,0x84,0xc4);
643#endif
644
645
646/* WARNING: some of the arguments are replaced with void*, only what's used has been kept */
647#undef INTERFACE
648#define INTERFACE IDCompositionDevice3
649DECLARE_INTERFACE_IID_(IDCompositionDevice3, IDCompositionDevice2, "0987CB06-F916-48BF-8D35-CE7641781BD9")
650{
651    STDMETHOD(CreateGaussianBlurEffect)(THIS_ IDCompositionGaussianBlurEffect **gaussianBlurEffect) PURE;
652    STDMETHOD(CreateBrightnessEffect)(THIS_ /* TODO IDCompositionBrightnessEffect */ void **brightnessEffect) PURE;
653    STDMETHOD(CreateColorMatrixEffect)(THIS_ IDCompositionColorMatrixEffect **colorMatrixEffect) PURE;
654    STDMETHOD(CreateShadowEffect)(THIS_ /* TODO IDCompositionShadowEffect */ void **shadowEffect) PURE;
655    STDMETHOD(CreateHueRotationEffect)(THIS_ /* IDCompositionHueRotationEffect */ void **hueRotationEffect) PURE;
656    STDMETHOD(CreateSaturationEffect)(THIS_ IDCompositionSaturationEffect **saturationEffect) PURE;
657    STDMETHOD(CreateTurbulenceEffect)(THIS_ /* IDCompositionTurbulenceEffect */ void **turbulenceEffect) PURE;
658    STDMETHOD(CreateLinearTransferEffect)(THIS_ /* IDCompositionLinearTransferEffect */ void **linearTransferEffect) PURE;
659    STDMETHOD(CreateTableTransferEffect)(THIS_ IDCompositionTableTransferEffect **tableTransferEffect) PURE;
660    STDMETHOD(CreateCompositeEffect)(THIS_ /* IDCompositionCompositeEffect */ void **compositeEffect) PURE;
661    STDMETHOD(CreateBlendEffect)(THIS_ /* TODO IDCompositionBlendEffect */ void **blendEffect) PURE;
662    STDMETHOD(CreateArithmeticCompositeEffect)(THIS_ /* IDCompositionArithmeticCompositeEffect */ void **arithmeticCompositeEffect) PURE;
663    STDMETHOD(CreateAffineTransform2DEffect)(THIS_ /* IDCompositionAffineTransform2DEffect */ void **affineTransform2dEffect) PURE;
664};
665
666#ifdef __CRT_UUID_DECL
667__CRT_UUID_DECL(IDCompositionDevice3,0x0987cb06,0xf916,0x48bf,0x8d,0x35,0xce,0x76,0x41,0x78,0x1b,0xd9);
668#endif
669
670#endif /* WINAPI_PARTITION_DESKTOP */
671
672#if (_WIN32_WINNT >= 0x0A00)
673
674STDAPI DCompositionCreateDevice3(IUnknown *renderingDevice, REFIID iid, void **dcompositionDevice);
675
676#endif
677
678STDAPI DCompositionCreateSurfaceHandle(DWORD desiredAccess, SECURITY_ATTRIBUTES *securityAttributes, HANDLE *surfaceHandle);
679
680STDAPI DCompositionAttachMouseWheelToHwnd(IDCompositionVisual* visual, HWND hwnd, BOOL enable);
681
682STDAPI DCompositionAttachMouseDragToHwnd(IDCompositionVisual* visual, HWND hwnd, BOOL enable);
683
684
685#endif
686#endif /* _DCOMP_H_ */