dcomp.h 27 KB

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