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 IDCompositionTarget 224 DECLARE_INTERFACE_IID_(IDCompositionTarget,IUnknown,"eacdd04c-117e-4e17-88f4-d1b12b0e3d89") 225 { 226 STDMETHOD(SetRoot)(THIS_ IDCompositionVisual*) PURE; 227 }; 228 229 #undef INTERFACE 230 #define INTERFACE IDCompositionDevice 231 DECLARE_INTERFACE_IID_(IDCompositionDevice,IUnknown,"c37ea93a-e7aa-450d-b16f-9746cb0407f3") 232 { 233 STDMETHOD(Commit)(THIS) PURE; 234 STDMETHOD(WaitForCommitCompletion)(THIS) PURE; 235 STDMETHOD(GetFrameStatistics)(THIS_ DCOMPOSITION_FRAME_STATISTICS*) PURE; 236 STDMETHOD(CreateTargetForHwnd)(THIS_ HWND,BOOL,IDCompositionTarget**) PURE; 237 STDMETHOD(CreateVisual)(THIS_ IDCompositionVisual**) PURE; 238 STDMETHOD(CreateSurface)(THIS_ UINT,UINT,DXGI_FORMAT,DXGI_ALPHA_MODE,IDCompositionSurface**) PURE; 239 STDMETHOD(CreateVirtualSurface)(THIS_ UINT,UINT,DXGI_FORMAT,DXGI_ALPHA_MODE,IDCompositionVirtualSurface**) PURE; 240 STDMETHOD(CreateSurfaceFromHandle)(THIS_ HANDLE,IUnknown**) PURE; 241 STDMETHOD(CreateSurfaceFromHwnd)(THIS_ HWND,IUnknown**) PURE; 242 STDMETHOD(CreateTranslateTransform)(THIS_ IDCompositionTranslateTransform**) PURE; 243 STDMETHOD(CreateScaleTransform)(THIS_ IDCompositionScaleTransform**) PURE; 244 STDMETHOD(CreateRotateTransform)(THIS_ IDCompositionRotateTransform**) PURE; 245 STDMETHOD(CreateSkewTransform)(THIS_ IDCompositionSkewTransform**) PURE; 246 STDMETHOD(CreateMatrixTransform)(THIS_ IDCompositionMatrixTransform**) PURE; 247 STDMETHOD(CreateTransformGroup)(THIS_ IDCompositionTransform**,UINT,IDCompositionTransform**) PURE; 248 STDMETHOD(CreateTranslateTransform3D)(THIS_ IDCompositionTranslateTransform3D**) PURE; 249 STDMETHOD(CreateScaleTransform3D)(THIS_ IDCompositionScaleTransform3D**) PURE; 250 STDMETHOD(CreateRotateTransform3D)(THIS_ IDCompositionRotateTransform3D**) PURE; 251 STDMETHOD(CreateMatrixTransform3D)(THIS_ IDCompositionMatrixTransform3D**) PURE; 252 STDMETHOD(CreateTransform3DGroup)(THIS_ IDCompositionTransform3D**,UINT,IDCompositionTransform3D**) PURE; 253 STDMETHOD(CreateEffectGroup)(THIS_ IDCompositionEffectGroup**) PURE; 254 STDMETHOD(CreateRectangleClip)(THIS_ IDCompositionRectangleClip**) PURE; 255 STDMETHOD(CreateAnimation)(THIS_ IDCompositionAnimation**) PURE; 256 STDMETHOD(CheckDeviceState)(THIS_ BOOL*) PURE; 257 }; 258 259 #ifdef __CRT_UUID_DECL 260 __CRT_UUID_DECL(IDCompositionDevice,0xc37ea93a,0xe7aa,0x450d,0xb1,0x6f,0x97,0x46,0xcb,0x04,0x07,0xf3); 261 #endif 262 263 #undef INTERFACE 264 #define INTERFACE IDCompositionVisual 265 DECLARE_INTERFACE_IID_(IDCompositionVisual,IUnknown,"4d93059d-097b-4651-9a60-f0f25116e2f3") 266 { 267 STDMETHOD(SetOffsetX)(THIS_ float) PURE; 268 STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE; 269 STDMETHOD(SetOffsetY)(THIS_ float) PURE; 270 STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE; 271 STDMETHOD(SetTransform)(THIS_ const D2D_MATRIX_3X2_F&) PURE; 272 STDMETHOD(SetTransform)(THIS_ IDCompositionTransform*) PURE; 273 STDMETHOD(SetTransformParent)(THIS_ IDCompositionVisual*) PURE; 274 STDMETHOD(SetEffect)(THIS_ IDCompositionEffect*) PURE; 275 STDMETHOD(SetBitmapInterpolationMode)(THIS_ DCOMPOSITION_BITMAP_INTERPOLATION_MODE) PURE; 276 STDMETHOD(SetBorderMode)(THIS_ DCOMPOSITION_BORDER_MODE) PURE; 277 STDMETHOD(SetClip)(THIS_ const D2D_RECT_F&) PURE; 278 STDMETHOD(SetClip)(THIS_ IDCompositionClip*) PURE; 279 STDMETHOD(SetContent)(THIS_ IUnknown*) PURE; 280 STDMETHOD(AddVisual)(THIS_ IDCompositionVisual*,BOOL,IDCompositionVisual*) PURE; 281 STDMETHOD(RemoveVisual)(THIS_ IDCompositionVisual*) PURE; 282 STDMETHOD(RemoveAllVisuals)(THIS_) PURE; 283 STDMETHOD(SetCompositeMode)(THIS_ DCOMPOSITION_COMPOSITE_MODE) PURE; 284 }; 285 286 #endif 287 #endif /* _DCOMP_H_ */ 288