1 module directx.dcomp;
2 //---------------------------------------------------------------------------
3 // Copyright (c) Microsoft Corporation.  All rights reserved.
4 //---------------------------------------------------------------------------
5 
6 version(Windows):
7 
8 public import directx.com, directx.dcommon;
9 public import directx.dcompanimation;
10 public import directx.d2dbasetypes, directx.d3d9;
11 public import directx.d2d1_1, directx.dcomptypes;
12 
13 extern(Windows)
14 {
15 	extern(Windows):	
16 	/// Creates a new DirectComposition device object, which can be used to create
17 	/// other DirectComposition objects.
18 	HRESULT DCompositionCreateDevice(
19 		IDXGIDevice dxgiDevice,
20 		REFIID iid,
21 		void** dcompositionDevice
22 	);
23 	/// Creates a new DirectComposition device object, which can be used to create
24 	/// other DirectComposition objects.
25 	HRESULT DCompositionCreateDevice2(
26 		IUnknown renderingDevice,
27 		REFIID iid,
28 		void** dcompositionDevice
29 	);
30 	/// Creates a new DirectComposition device object, which can be used to create
31 	/// other DirectComposition objects.
32 	HRESULT DCompositionCreateDevice3(
33 		IUnknown renderingDevice,
34 		REFIID iid,
35 		void** dcompositionDevice
36 	);
37 	/// Creates a new composition surface object, which can be bound to a
38 	/// DirectX swap chain or swap buffer or to a GDI bitmap and associated
39 	/// with a visual.
40 	HRESULT DCompositionCreateSurfaceHandle(
41 		DWORD desiredAccess,
42 		SECURITY_ATTRIBUTES* securityAttributes,
43 		HANDLE* surfaceHandle
44 	);
45 	/// Creates an Interaction/InputSink to route mouse wheel messages to the
46 	/// given HWND. After calling this API, the device owning the visual must
47 	/// be committed.
48 	HRESULT DCompositionAttachMouseWheelToHwnd(
49 		IDCompositionVisual visual,
50 		HWND hwnd,
51 		BOOL enable
52 	);
53 	/// Creates an Interaction/InputSink to route mouse button down and any 
54 	/// subsequent move and up events to the given HWND. There is no move 
55 	/// thresholding; when enabled, all events including and following the down 
56 	/// are unconditionally redirected to the specified window. After calling this 
57 	/// API, the device owning the visual must be committed.
58 	HRESULT DCompositionAttachMouseDragToHwnd(
59 		IDCompositionVisual visual,
60 		HWND hwnd,
61 		BOOL enable
62 	);
63 }
64 
65 mixin(uuid!(IDCompositionDevice, "C37EA93A-E7AA-450D-B16F-9746CB0407F3"));
66 /// Serves as the root factory for all other DirectComposition objects and
67 /// controls transactional composition.
68 interface IDCompositionDevice : IUnknown
69 {
70 	extern(Windows):
71     /// Commits all DirectComposition commands pending on this device.
72 	HRESULT Commit();
73     /// Waits for the last Commit to be processed by the composition engine
74 	HRESULT WaitForCommitCompletion();
75     /// Gets timing information about the composition engine.
76 	HRESULT GetFrameStatistics(DCOMPOSITION_FRAME_STATISTICS* statistics);
77     /// Creates a composition target bound to a window represented by an HWND.
78 	HRESULT CreateTargetForHwnd(
79 		HWND hwnd,
80 		BOOL topmost,
81 		IDCompositionTarget* target
82 	);
83     /// Creates a new visual object.
84 	HRESULT CreateVisual(IDCompositionVisual* visual);
85     /// Creates a DirectComposition surface object
86 	HRESULT CraeteSurface(
87 		UINT width,
88 		UINT height,
89 		DXGI_FORMAT pixelFormat,
90 		DXGI_ALPHA_MODE alphaMode,
91 		IDCompositionSurface* surface
92 	);
93     /// Creates a DirectComposition virtual surface object
94 	HRESULT CreateVirtualSurface(
95 		UINT initialWidth,
96 		UINT initialHeight,
97 		DXGI_FORMAT pixelFormat,
98 		DXGI_ALPHA_MODE alphaMode,
99 		IDCompositionVirtualSurface* virtualSurface
100 	);
101     /// Creates a surface wrapper around a pre-existing surface that can be associated with one or more visuals for composition.
102 	HRESULT CreateSurfaceForHandle(
103 		HANDLE handle,
104 		IUnknown* surface
105 	);
106 	/// Creates a wrapper object that represents the rasterization of a layered window and which can be associated with a visual for composition.
107 	HRESULT CreateSurfaceForHwnd(
108 		HWND hwnd,
109 		IUnknown* surface
110 	);
111     /// Creates a 2D translation transform object.
112 	HRESULT CreateTranslateTransform(IDCompositionTranslateTransform* translateTransform);
113     /// Creates a 2D scale transform object.
114 	HRESULT CreateScaleTransform(IDCompositionScaleTransform* scaleTransform);
115     /// Creates a 2D rotation transform object.
116 	HRESULT CreateRotateTransform(IDCompositionRotateTransform* rotateTransform);
117     /// Creates a 2D skew transform object.
118 	HRESULT CreateSkewTransform(IDCompositionSkewTransform* skewTransform);
119     /// Creates a 2D 3x2 matrix transform object.
120 	HRESULT CreateMatrixTransform(IDCompositionMatrixTransform* matrixTransform);
121     /// Creates a 2D transform object that holds an array of 2D transform objects.
122 	HRESULT CreateTransformGroup(
123 		IDCompositionTransform* transforms, UINT elements,
124 		IDCompositionTransform* transformGroup
125 	);
126     /// Creates a 3D translation transform object.
127 	HRESULT CreateTranslateTransform3D(IDCompositionTranslateTransform3D* translateTransform3D);
128     /// Creates a 3D scale transform object.
129 	HRESULT CreateScaleTransform3D(IDCompositionScaleTransform3D* scaleTransform3D);
130     /// Creates a 3D rotation transform object.
131 	HRESULT CreateRotateTransform3D(IDCompositionRotateTransform3D* rotateTransform3D);
132     /// Creates a 3D 4x4 matrix transform object.
133 	HRESULT CreateMatrixTransform3D(IDCompositionMatrixTransform3D* matrixTransform3D);
134     /// Creates a 3D transform object that holds an array of 3D transform objects.
135 	HRESULT CreateTransform3DGroup(
136 		IDCompositionTransform3D* transform3D, UINT elements,
137 		IDCompositionTransform3D* transform3DGroup
138 	);
139     /// Creates an effect group
140 	HRESULT CreateEffectrGroup(IDCompositionEffectGroup* effectGroup);
141     /// Creates a clip object that can be used to clip the contents of a visual subtree.
142 	HRESULT CreateRectangleClip(IDCompositionRectangleClip* clip);
143     /// Creates an animation object
144 	HRESULT CreateAnimation(IDCompositionAnimation animation);
145     /// Returns the states of the app's DX device and DWM's dx devices
146 	HRESULT CheckDeviceState(BOOL* pfValid);
147 }
148 
149 mixin(uuid!(IDCompositionTarget, "eacdd04c-117e-4e17-88f4-d1b12b0e3d89"));
150 /// An IDCompositionTarget interface represents a binding between a
151 /// DirectComposition visual tree and a destination on top of which the
152 /// visual tree should be composed.
153 interface IDCompositionTarget : IUnknown
154 {
155 	extern(Windows):
156     /// Sets the root visual
157 	HRESULT SetRoot(IDCompositionVisual visual);
158 }
159 
160 mixin(uuid!(IDCompositionVisual, "4d93059d-097b-4651-9a60-f0f25116e2f3"));
161 /// An IDCompositionVisual interface represents a visual that participates in
162 /// a visual tree.
163 interface IDCompositionVisual : IUnknown
164 {
165 	extern(Windows):
166     /// Changes the value of OffsetX property
167 	HRESULT SetOffsetX(float offsetX);
168     /// Animates the value of the OffsetX property.
169 	HRESULT SetOffsetX(IDCompositionAnimation animation);
170     /// Changes the value of OffsetY property
171 	HRESULT SetOffsetY(float offsetY);
172     /// Animates the value of the OffsetY property.
173 	HRESULT SetOffsetY(IDCompositionAnimation animation);
174     /// Sets the matrix that modifies the coordinate system of this visual.
175 	HRESULT SetTransform(const(D2D_MATRIX_3X2_F)* matrix);
176     /// Sets the transformation object that modifies the coordinate system of this visual.
177 	HRESULT SetTransform(IDCompositionTransform transform);
178     /// Sets the visual that should act as this visual's parent for the
179     /// purpose of establishing a base coordinate system.
180 	HRESULT SetTransformParent(IDCompositionVisual visual);
181     /// Sets the effect object that is applied during the rendering of this visual
182 	HRESULT SetEffect(IDCompositionEffect effect);
183     /// Sets the mode to use when interpolating pixels from bitmaps drawn not
184     /// exactly at scale and axis-aligned.
185 	HRESULT SetBitmapInterpolationMode(DCOMPOSITION_BITMAP_INTERPOLATION_MODE interpolationMode);
186     /// Sets the mode to use when drawing the edge of bitmaps that are not
187     /// exactly axis-aligned and at precise pixel boundaries.
188 	HRESULT SetBorderMode(DCOMPOSITION_BORDER_MODE borderMode);
189     /// Sets the clip object that restricts the rendering of this visual to a D2D rectangle.
190 	HRESULT SetClip(const(D2D_RECT_F)* rect);
191     /// Sets the clip object that restricts the rendering of this visual to a rectangle.
192 	HRESULT SetClip(IDCompositionClip clip);
193     /// Associates a bitmap with a visual
194 	HRESULT SetContent(IUnknown content);
195     /// Adds a visual to the children list of another visual.
196 	HRESULT AddVisual(
197 		IDCompositionVisual visual,
198 		BOOL insertAbove,
199 		IDCompositionVisual referenceVisual
200 	);
201     /// Removes a visual from the children list of another visual.
202 	HRESULT RemoveVisual(IDCompositionVisual visual);
203     /// Removes all visuals from the children list of another visual.
204 	HRESULT RemoveAllVisuals();
205     /// Sets the mode to use when composing the bitmap against the render target.
206 	HRESULT SetCompositeMode(DCOMPOSITION_COMPOSITE_MODE compositeMode);
207 }
208 
209 mixin(uuid!(IDCompositionEffect, "EC81B08F-BFCB-4e8d-B193-A915587999E8"));
210 /// An IDCompositionEffect interface represents an effect
211 interface IDCompositionEffect : IUnknown {}
212 mixin(uuid!(IDCompositionTransform3D, "71185722-246B-41f2-AAD1-0443F7F4BFC2"));
213 /// An IDCompositionTransform3D interface represents a 3D transformation.
214 interface IDCompositionTransform3D : IDCompositionEffect {}
215 mixin(uuid!(IDCompositionTransform, "FD55FAA7-37E0-4c20-95D2-9BE45BC33F55"));
216 /// An IDCompositionTransform interface represents a 2D transformation that
217 /// can be used to modify the coordinate space of a visual subtree.
218 interface IDCompositionTransform : IDCompositionTransform3D {}
219 mixin(uuid!(IDCompositionTranslateTransform, "06791122-C6F0-417d-8323-269E987F5954"));
220 /// An IDCompositionTranslateTransform interface represents a 2D transformation
221 /// that affects only the offset of a visual along the x and y axes.
222 interface IDCompositionTranslateTransform : IDCompositionTransform
223 {
224 	extern(Windows):
225     /// Changes the value of the OffsetX property.
226 	HRESULT SetOffsetX(float offsetX);
227     /// Animates the value of the OffsetX property.
228 	HRESULT SetOffsetX(IDCompositionAnimation animation);
229 	/// Changes the value of the OffsetY property.
230 	HRESULT SetOffsetY(float offsetY);
231 	/// Animates the value of the OffsetY property.
232 	HRESULT SetOffsetY(IDCompositionAnimation animation);
233 }
234 
235 mixin(uuid!(IDCompositionScaleTransform, "71FDE914-40EF-45ef-BD51-68B037C339F9"));
236 /// An IDCompositionScaleTransform interface represents a 2D transformation that
237 /// affects the scale of a visual along the x and y axes. The coordinate system
238 /// is scaled from the specified center point.
239 interface IDCompositionScaleTransform : IDCompositionTransform
240 {
241 	extern(Windows):
242     /// Changes the value of the ScaleX property.
243 	HRESULT SetScaleX(float scaleX);
244     /// Animates the value of the ScaleX property.
245 	HRESULT SetScaleX(IDCompositionAnimation animation);
246     /// Changes the value of the ScaleY property.
247 	HRESULT SetScaleY(float scaleY);
248     /// Animates the value of the ScaleY property.
249 	HRESULT SetScaleY(IDCompositionAnimation animation);
250     /// Changes the value of the CenterX property.
251 	HRESULT SetCenterX(float centerX);
252     /// Animates the value of the CenterX property.
253 	HRESULT SetCenterX(IDCompositionAnimation animation);
254     /// Changes the value of the CenterY property.
255 	HRESULT SetCenterY(float centerY);
256     /// Animates the value of the CenterY property.
257 	HRESULT SetCenterY(IDCompositionAnimation animation);
258 }
259 
260 mixin(uuid!(IDCompositionRotateTransform, "641ED83C-AE96-46c5-90DC-32774CC5C6D5"));
261 /// An IDCompositionRotateTransform interface represents a 2D transformation
262 /// that affects the rotation of a visual along the z axis. The coordinate system
263 /// is rotated around the specified center point.
264 interface IDCompositionRotateTransform : IDCompositionTransform
265 {
266 	extern(Windows):
267     /// Changes the value of the Angle property.
268 	HRESULT SetAngle(float angle);
269     /// Animates the value of the Angle property.
270 	HRESULT SetAngle(IDCompositionAnimation animation);
271     /// Changes the value of the CenterX property.
272 	HRESULT SetCenterX(float centerX);
273     /// Animates the value of the CenterX property.
274 	HRESULT SetCenterX(IDCompositionAnimation animation);
275     /// Changes the value of the CenterY property.
276 	HRESULT SetCenterY(float centerY);
277     /// Animates the value of the CenterY property.
278 	HRESULT SetCenterY(IDCompositionAnimation animation);
279 }
280 
281 mixin(uuid!(IDCompositionSkewTransform, "E57AA735-DCDB-4c72-9C61-0591F58889EE"));
282 /// An IDCompositionSkewTransform interface represents a 2D transformation that
283 /// affects the skew of a visual along the x and y axes. The coordinate system
284 /// is skewed around the specified center point.
285 interface IDCompositionSkewTransform : IDCompositionTransform
286 {
287 	extern(Windows):
288     /// Changes the value of the AngleX property.
289 	HRESULT SetAngleX(float angleX);
290     /// Animates the value of the AngleX property.
291 	HRESULT SetAngleX(IDCompositionAnimation animation);
292     /// Changes the value of the AngleY property.
293 	HRESULT SetAngleY(float angleY);
294     /// Animates the value of the AngleY property.
295 	HRESULT SetAngleY(IDCompositionAnimation animation);
296     /// Changes the value of the CenterX property.
297 	HRESULT SetCenterX(float centerX);
298     /// Animates the value of the CenterX property.
299 	HRESULT SetCenterX(IDCompositionAnimation animation);
300     /// Changes the value of the CenterY property.
301 	HRESULT SetCenterY(float centerY);
302     /// Animates the value of the CenterY property.
303 	HRESULT SetCenterY(IDCompositionAnimation animation);
304 }
305 
306 mixin(uuid!(IDCompositionMatrixTransform, "16CDFF07-C503-419c-83F2-0965C7AF1FA6"));
307 /// An IDCompositionMatrixTransform interface represents an arbitrary affine
308 /// 2D transformation defined by a 3x2 matrix.
309 interface IDCompositionMatrixTransform : IDCompositionTransform
310 {
311 	extern(Windows):
312     /// Changes all values of the matrix of this transform.
313 	HRESULT SetMatrix(const(D2D_MATRIX_3X2_F)* matrix);
314     /// Changes a single element of the matrix of this transform.
315 	HRESULT SetMatrixElement(int row, int column, float value);
316     /// Animates a single element of the matrix of this transform.
317 	HRESULT SetMatrixElement(int row, int column, IDCompositionAnimation animation);
318 }
319 
320 mixin(uuid!(IDCompositionEffectGroup, "A7929A74-E6B2-4bd6-8B95-4040119CA34D"));
321 /// An IDCompositionEffectGroup holds effects, inluding 3D transforms that can
322 /// be applied to a visual.
323 interface IDCompositionEffectGroup : IDCompositionEffect
324 {
325 	extern(Windows):
326     /// Changes the opacity property.
327 	HRESULT SetOpacity(float opacity);
328     /// Animates the opacity property
329 	HRESULT SetOpacity(IDCompositionAnimation animation);
330     /// Sets the 3D transform
331 	HRESULT SetTransform3D(IDCompositionTransform3D transform3D);
332 }
333 
334 mixin(uuid!(IDCompositionTranslateTransform3D, "91636D4B-9BA1-4532-AAF7-E3344994D788"));
335 /// An IDCompositionTranslateTransform3D interface represents a 3D transformation
336 /// that affects the offset of a visual along the x,y and z axes.
337 interface IDCompositionTranslateTransform3D : IDCompositionTransform3D
338 {
339 	extern(Windows):
340     /// Changes the value of the OffsetX property.
341 	HRESULT SetOffsetX(float offsetX);
342     /// Animates the value of the OffsetX property.
343 	HRESULT SetOffsetX(IDCompositionAnimation animation);
344 	/// Changes the value of the OffsetY property.
345 	HRESULT SetOffsetY(float offsetY);
346     /// Animates the value of the OffsetY property.
347 	HRESULT SetOffsetY(IDCompositionAnimation animation);
348 	/// Changes the value of the OffsetZ property.
349 	HRESULT SetOffsetZ(float offsetZ);
350     /// Animates the value of the OffsetZ property.
351 	HRESULT SetOffsetZ(IDCompositionAnimation animation);
352 }
353 
354 mixin(uuid!(IDCompositionScaleTransform3D, "2A9E9EAD-364B-4b15-A7C4-A1997F78B389"));
355 /// An IDCompositionScaleTransform3D interface represents a 3D transformation that
356 /// affects the scale of a visual along the x, y and z axes. The coordinate system
357 /// is scaled from the specified center point.
358 interface IDCompositionScaleTransform3D : IDCompositionTransform3D
359 {
360 	extern(Windows):
361     /// Changes the value of the ScaleX property.
362 	HRESULT SetScaleX(float scaleX);
363     /// Animates the value of the ScaleX property.
364 	HRESULT SetScaleX(IDCompositionAnimation animation);
365     /// Changes the value of the ScaleY property.
366 	HRESULT SetScaleY(float scaleY);
367     /// Animates the value of the ScaleY property.
368 	HRESULT SetScaleY(IDCompositionAnimation animation);
369     /// Changes the value of the ScaleZ property.
370 	HRESULT SetScaleZ(float scaleZ);
371     /// Animates the value of the ScaleZ property.
372 	HRESULT SetScaleZ(IDCompositionAnimation animation);
373     /// Changes the value of the CenterX property.
374 	HRESULT SetCenterX(float centerX);
375     /// Animates the value of the CenterX property.
376 	HRESULT SetCenterX(IDCompositionAnimation animation);
377     /// Changes the value of the CenterY property.
378 	HRESULT SetCenterY(float centerY);
379     /// Animates the value of the CenterY property.
380 	HRESULT SetCenterY(IDCompositionAnimation animation);
381     /// Changes the value of the CenterZ property.
382 	HRESULT SetCenterZ(float centerZ);
383     /// Animates the value of the CenterZ property.
384 	HRESULT SetCenterZ(IDCompositionAnimation animation);
385 }
386 
387 mixin(uuid!(IDCompositionRotateTransform3D, "D8F5B23F-D429-4a91-B55A-D2F45FD75B18"));
388 /// An IDCompositionRotateTransform3D interface represents a 3D transformation
389 /// that affects the rotation of a visual along the specified axis at the
390 /// specified center point.
391 interface IDCompositionRotateTransform3D : IDCompositionTransform3D
392 {
393 	extern(Windows):
394     /// Changes the value of the Angle property.
395 	HRESULT SetAngle(float angle);
396     /// Animates the value of the Angle property.
397 	HRESULT SetAngle(IDCompositionAnimation animation);
398     /// Changes the value of the AxisX property.
399 	HRESULT SetAxisX(float axisX);
400     /// Animates the value of the AxisX property.
401 	HRESULT SetAxisX(IDCompositionAnimation animation);
402     /// Changes the value of the AxisY property.
403 	HRESULT SetAxisY(float axisY);
404     /// Animates the value of the AxisY property.
405     HRESULT SetAxisY(IDCompositionAnimation animation);
406     /// Changes the value of the AxisZ property.
407     HRESULT SetAxisZ(float axisZ);
408     /// Animates the value of the AxisZ property.
409     HRESULT SetAxisZ(IDCompositionAnimation animation);
410     /// Changes the value of the CenterX property.
411     HRESULT SetCenterX(float centerX);
412     /// Animates the value of the CenterX property.
413     HRESULT SetCenterX(IDCompositionAnimation animation);
414     /// Changes the value of the CenterY property.
415     HRESULT SetCenterY(float centerY);
416     /// Animates the value of the CenterY property.
417     HRESULT SetCenterY(IDCompositionAnimation animation);
418     /// Changes the value of the CenterZ property.
419     HRESULT SetCenterZ(float centerZ);
420     /// Animates the value of the CenterZ property.
421 	HRESULT SetCenterZ(IDCompositionAnimation animation);
422 }
423 
424 mixin(uuid!(IDCompositionMatrixTransform3D, "4B3363F0-643B-41b7-B6E0-CCF22D34467C"));
425 /// An IDCompositionMatrixTransform3D interface represents an arbitrary
426 /// 3D transformation defined by a 4x4 matrix.
427 interface IDCompositionMatrixTransform3D : IDCompositionTransform3D
428 {
429 	extern(Windows):
430     /// Changes all values of the matrix of this transform.
431     HRESULT SetMatrix(const(D3DMATRIX)* matrix);
432     /// Changes a single element of the matrix of this transform.
433     HRESULT SetMatrixElement(int row, int column, float value);
434     /// Animates a single element of the matrix of this transform.
435     HRESULT SetMatrixElement(int row, int column, IDCompositionAnimation animation);
436 }
437 mixin(uuid!(IDCompositionClip, "64AC3703-9D3F-45ec-A109-7CAC0E7A13A7"));
438 /// An IDCompositionClip interface represents a rectangle that restricts the
439 /// rasterization of a visual subtree.
440 interface IDCompositionClip : IUnknown {}
441 mixin(uuid!(IDCompositionRectangleClip, "9842AD7D-D9CF-4908-AED7-48B51DA5E7C2"));
442 /// An IDCompositionRectangleClip interface represents a rectangle that restricts
443 /// the rasterization of a visual subtree.
444 interface IDCompositionRectangleClip : IDCompositionClip
445 {
446 	extern(Windows):
447     /// Changes the value of the Left property.
448     HRESULT SetLeft(float left);
449     /// Animates the value of the Left property.
450     HRESULT SetLeft(IDCompositionAnimation animation);
451     /// Changes the value of the Top property.
452     HRESULT SetTop(float top);
453     /// Animates the value of the Top property.
454     HRESULT SetTop(IDCompositionAnimation animation);
455     /// Changes the value of the Right property.
456     HRESULT SetRight(float right);
457     /// Animates the value of the Right property.
458     HRESULT SetRight(IDCompositionAnimation animation);
459     /// Changes the value of the Bottom property.
460     HRESULT SetBottom(float bottom);
461     /// Animates the value of the Bottom property.
462     HRESULT SetBottom(IDCompositionAnimation animation);
463     /// Changes the value of the x radius of the ellipse that rounds the
464     /// top-left corner of the clip.
465     HRESULT SetTopLeftRadiusX(float radius);
466     /// Animates the value of the x radius of the ellipse that rounds the
467     /// top-left corner of the clip.
468     HRESULT SetTopLeftRadiusX(IDCompositionAnimation animation);
469     /// Changes the value of the y radius of the ellipse that rounds the
470     /// top-left corner of the clip.
471     HRESULT SetTopLeftRadiusY(float radius);
472     /// Animates the value of the y radius of the ellipse that rounds the
473     /// top-left corner of the clip.
474     HRESULT SetTopLeftRadiusY(IDCompositionAnimation animation);
475     /// Changes the value of the x radius of the ellipse that rounds the
476     /// top-right corner of the clip.
477     HRESULT SetTopRightRadiusX(float radius);
478     /// Animates the value of the x radius of the ellipse that rounds the
479     /// top-right corner of the clip.
480     HRESULT SetTopRightRadiusX(IDCompositionAnimation animation);
481     /// Changes the value of the y radius of the ellipse that rounds the
482     /// top-right corner of the clip.
483     HRESULT SetTopRightRadiusY(float radius);
484     /// Animates the value of the y radius of the ellipse that rounds the
485     /// top-right corner of the clip.
486     HRESULT SettopRightRadiusY(IDCompositionAnimation animation);
487     /// Changes the value of the x radius of the ellipse that rounds the
488     /// bottom-left corner of the clip.
489     HRESULT SetBottomLeftRadiusX(float radius);
490     /// Animates the value of the x radius of the ellipse that rounds the
491     /// bottom-left corner of the clip.
492     HRESULT SetBottomLeftRadiusX(IDCompositionAnimation animation);
493     /// Changes the value of the y radius of the ellipse that rounds the
494     /// bottom-left corner of the clip.
495     HRESULT SetBottomLeftRadiusY(float radius);
496     /// Animates the value of the y radius of the ellipse that rounds the
497     /// bottom-left corner of the clip.
498     HRESULT SetBottomLeftRadiusY(IDCompositionAnimation animation);
499     /// Changes the value of the x radius of the ellipse that rounds the
500     /// bottom-right corner of the clip.
501     HRESULT SetBottomRightRadiusX(float radius);
502     /// Animates the value of the x radius of the ellipse that rounds the
503     /// bottom-right corner of the clip.
504     HRESULT SetBottomRightRadiusX(IDCompositionAnimation animation);
505     /// Changes the value of the y radius of the ellipse that rounds the
506     /// bottom-right corner of the clip.
507     HRESULT SetBottomRightRadiusY(float radius);
508     /// Animates the value of the y radius of the ellipse that rounds the
509     /// bottom-right corner of the clip.
510     HRESULT SetBottomRightRadiusY(IDCompositionAnimation animation);
511 }
512 
513 mixin(uuid!(IDCompositionSurface, "BB8A4953-2C99-4F5A-96F5-4819027FA3AC"));
514 /// An IDCompositionSurface interface represents a wrapper around a DirectX
515 /// object, or a sub-rectangle of one of those objects.
516 interface IDCompositionSurface : IUnknown
517 {
518 	extern(Windows):
519 	HRESULT BeginDraw(const(RECT)* updateRect, REFIID iid, void** updateObject, POINT* updateOffset);
520 	HRESULT EndDraw();
521 	HRESULT SuspendDraw();
522 	HRESULT ResumeDraw();
523 	HRESULT Scroll(
524 		const(RECT)* scrollRect,
525 		const(RECT)* clipRect,
526 		int offsetX,
527 		int offsetY);
528 }
529 mixin(uuid!(IDCompositionVirtualSurface, "AE471C51-5F53-4A24-8D3E-D0C39C30B3F0"));
530 /// An IDCompositionVirtualSurface interface represents a sparsely
531 /// allocated surface.
532 interface IDCompositionVirtualSurface : IDCompositionSurface
533 {
534 	extern(Windows):
535 	HRESULT Resize(UINT width, UINT height);
536 	HRESULT Trim(const(RECT)* rectangles, UINT count);
537 }
538 
539 mixin(uuid!(IDCompositionDevice2, "75F6468D-1B8E-447C-9BC6-75FEA80B5B25"));
540 /// Serves as the root factory for all other DirectComposition2 objects and
541 /// controls transactional composition.
542 interface IDCompositionDevice2 : IUnknown
543 {
544 	extern(Windows):
545     /// Commits all DirectComposition commands pending on this device.
546     HRESULT Commit();
547     /// Waits for the last Commit to be processed by the composition engine
548     HRESULT WaitForCommitCompletion();
549     /// Gets timing information about the composition engine.
550     HRESULT GetFrameStatistics(DCOMPOSITION_FRAME_STATISTICS* statistics);
551     /// Creates a new visual object.
552     HRESULT CreateVisual(IDCompositionVisual2* visual);
553     /// Creates a factory for surface objects
554     HRESULT CreateSurfaceFactory(IUnknown renderingDevice, IDCompositionSurfaceFactory* surfaceFactory);
555     /// Creates a DirectComposition surface object
556     HRESULT CreateSurface(
557 		UINT width,
558 		UINT height,
559 		DXGI_FORMAT pixelFormat,
560 		DXGI_ALPHA_MODE alphaMode,
561 		IDCompositionSurface* surface);
562     /// Creates a DirectComposition virtual surface object
563     HRESULT CreateVirtualSurface(
564 		UINT initialWidth,
565 		UINT initialHeight,
566 		DXGI_FORMAT pixelFormat,
567 		DXGI_ALPHA_MODE alphaMode,
568 		IDCompositionVirtualSurface* virtualSurface);
569     /// Creates a 2D translation transform object.
570     HRESULT CreateTranslateTransform(IDCompositionTranslateTransform* translateTransform);
571     /// Creates a 2D scale transform object.
572     HRESULT CreateScaleTransform(IDCompositionScaleTransform* scaleTransform);
573     /// Creates a 2D rotation transform object.
574     HRESULT CreateRotateTransform(IDCompositionRotateTransform* rotateTransform);
575     /// Creates a 2D skew transform object.
576     HRESULT CreateSkewTransform(IDCompositionSkewTransform* skewTransform);
577     /// Creates a 2D 3x2 matrix transform object.
578     HRESULT CreateMatrixTransform(IDCompositionMatrixTransform* matrixTransform);
579     /// Creates a 2D transform object that holds an array of 2D transform objects.
580     HRESULT CreateTransformGroup(
581 		IDCompositionTransform* transforms, UINT elements,
582 		IDCompositionTransform* transformGroup);
583     /// Creates a 3D translation transform object.
584     HRESULT CreateTranslateTransform3D(IDCompositionTranslateTransform3D* translateTransform3D);
585     /// Creates a 3D scale transform object.
586     HRESULT CreateScaleTransform3D(IDCompositionScaleTransform3D* scaleTransform3D);
587     /// Creates a 3D rotation transform object.
588 	HRESULT CreateRotateTransform3D(IDCompositionRotateTransform3D* rotateTransfrom3D);
589     /// Creates a 3D 4x4 matrix transform object.
590 	HRESULT CreateMatrixTransform3D(IDCompositionMatrixTransform3D* matrixTransform3D);
591     /// Creates a 3D transform object that holds an array of 3D transform objects.
592 	HRESULT CreateTransform3DGroup(
593 		IDCompositionTransform3D* transforms3D, UINT elements,
594 		IDCompositionTransform3D* transform3DGroup);
595     /// Creates an effect group
596 	HRESULT CreateEffectGroup(IDCompositionEffectGroup* effectGroup);
597     /// Creates a clip object that can be used to clip the contents of a visual subtree.
598     HRESULT CreateRectangleClip(IDCompositionRectangleClip* clip);
599     /// Creates an animation object
600 	HRESULT CreateAnimation(IDCompositionAnimation animation);
601 }
602 
603 mixin(uuid!(IDCompositionDesktopDevice, "5F4633FE-1E08-4CB8-8C75-CE24333F5602"));
604 /// Serves as the root factory for all other desktop DirectComposition
605 /// objects.
606 interface IDCompositionDesktopDevice : IDCompositionDevice2
607 {
608 	extern(Windows):
609 	HRESULT CreateTargetForHwnd(HWND hwnd, BOOL topmost, IDCompositionTarget* target);
610     /// Creates a surface wrapper around a pre-existing surface that can be associated with one or more visuals for composition.
611     HRESULT CreateSurfaceFromHandle(HANDLE handle, IUnknown* surface);
612     /// Creates a wrapper object that represents the rasterization of a layered window and which can be associated with a visual for composition.
613     HRESULT CreateSurfaceFromHwnd(HWND hwnd, IUnknown* surface);
614 }
615 
616 mixin(uuid!(IDCompositionDeviceDebug, "A1A3C64A-224F-4A81-9773-4F03A89D3C6C"));
617 /// IDCompositionDeviceDebug serves as a debug interface
618 interface IDCompositionDeviceDebug : IUnknown
619 {
620 	extern(Windows):
621     /// Enables debug counters
622 	HRESULT EnableDebugCounters();
623     /// Enables debug counters
624 	HRESULT DisableDebugCounters();
625 }
626 
627 mixin(uuid!(IDCompositionSurfaceFactory, "E334BC12-3937-4E02-85EB-FCF4EB30D2C8"));
628 /// An IDCompositionSurfaceFactory interface represents an object that can
629 /// create surfaces suitable for composition.
630 interface IDCompositionSurfaceFactory : IUnknown
631 {
632 	extern(Windows):
633     /// Creates a DirectComposition surface object
634     HRESULT CreateSurface(
635 		UINT width,
636 		UINT height,
637 		DXGI_FORMAT pixelFormat,
638 		DXGI_ALPHA_MODE alphaMode,
639 		IDCompositionSurface* surface);
640     /// Creates a DirectComposition virtual surface object
641     HRESULT CreateVirtualSurface(
642 		UINT initialWidth,
643 		UINT initialHeight,
644 		DXGI_FORMAT pixelFormat,
645 		DXGI_ALPHA_MODE alphaMode,
646 		IDCompositionVirtualSurface* virtualSurface);
647 }
648 
649 mixin(uuid!(IDCompositionVisual2, "E8DE1639-4331-4B26-BC5F-6A321D347A85"));
650 /// An IDCompositionVisual2 interface represents a visual that participates in
651 /// a visual tree.
652 interface IDCompositionVisual2 : IDCompositionVisual
653 {
654 	extern(Windows):
655     /// Changes the interpretation of the opacity property of an effect group
656     /// associated with this visual
657     HRESULT SetOpacityMode(DCOMPOSITION_OPACITY_MODE mode);
658     /// Sets back face visibility
659     HRESULT SetBackFaceVisibility(DCOMPOSITION_BACKFACE_VISIBILITY visibility);
660 }
661 
662 mixin(uuid!(IDCompositionVisualDebug, "FED2B808-5EB4-43A0-AEA3-35F65280F91B"));
663 /// An IDCompositionVisualDebug interface represents a debug visual
664 interface IDCompositionVisualDebug : IDCompositionVisual2
665 {
666 	extern(Windows):
667     /// Enable heat map
668     HRESULT EnableHeatMap(const(D2D1_COLOR_F)* color);
669     /// Disable heat map
670     HRESULT DisableHeatMap();
671     /// Enable redraw regions
672 	HRESULT EnableRedrawRegions();
673     /// Disable redraw regions
674 	HRESULT DisableRedrawRegions();
675 }
676 
677 mixin(uuid!(IDCompositionVisual3, "2775F462-B6C1-4015-B0BE-B3E7D6A4976D"));
678 /// An IDCompositionVisual3 interface represents a visual that participates in
679 /// a visual tree.
680 interface IDCompositionVisual3 : IDCompositionVisualDebug
681 {
682 	extern(Windows):
683     /// Sets depth mode property associated with this visual
684     HRESULT SetDepthMode(DCOMPOSITION_DEPTH_MODE mode);
685     /// Changes the value of OffsetZ property.
686     HRESULT SetOffsetZ(float offsetZ);
687     /// Animates the value of the OffsetZ property.
688     HRESULT SetOffsetZ(IDCompositionAnimation animation);
689     /// Changes the value of the Opacity property.
690     HRESULT SetOpacity(float opacity);
691     /// Animates the value of the Opacity property.
692     HRESULT SetOpacity(IDCompositionAnimation animation);
693     /// Sets the matrix that modifies the coordinate system of this visual.
694     HRESULT SetTransform(const(D2D_MATRIX_4X4_F)* matrix);
695     /// Sets the transformation object that modifies the coordinate system of this visual.
696     HRESULT SetTransform(IDCompositionTransform3D transform);
697     /// Changes the value of the Visible property
698     HRESULT SetVisible(BOOL visible);
699 }
700 
701 mixin(uuid!(IDCompositionDevice3, "0987CB06-F916-48BF-8D35-CE7641781BD9"));
702 /// Serves as the root factory for all other DirectComposition3 objects and
703 /// controls transactional composition.
704 interface IDCompositionDevice3 : IDCompositionDevice2
705 {
706 	extern(Windows):
707     /// Effect creation calls, each creates an interface around a D2D1Effect
708     HRESULT CreateGaussianBlurEffect(IDCompositionGaussianBlurEffect* gaussianBlurEffect);
709 	HRESULT CreateBrightnessEffect(IDCompositionBrightnessEffect* brightnessEffect);
710     HRESULT CreateColorMatrixEffect(IDCompositionColorMatrixEffect* colorMatrixEffect);
711 	HRESULT CreateShadowEffect(IDCompositionShadowEffect* shadowEffect);
712     HRESULT CreateHueRotationEffect(IDCompositionHueRotationEffect* hueRotationEffect);
713     HRESULT CreateSaturationEffect(IDCompositionSaturationEffect* saturationEffect);
714     HRESULT CreateTurbulenceEffect(IDCompositionTurbulenceEffect* turbulenceEffect);
715     HRESULT CreateLinearTransferEffect(IDCompositionLinearTransferEffect* linearTransferEffect);
716     HRESULT CreateTableTransferEffect(IDCompositionTableTransferEffect* tableTransferEffect);
717     HRESULT CreateCompositeEffect(IDCompositionCompositeEffect* compositeEffect);
718     HRESULT CreateBlendEffect(IDCompositionBlendEffect* blendEffect);
719 	HRESULT CreateArithmeticCompositeEffect(IDCompositionArithmeticCompositeEffect* arithmeticCompositeEffect);
720     HRESULT CreateAffineTransform2DEffect(IDCompositionAffineTransform2DEffect* affineTransform2dEffect);
721 }
722 
723 mixin(uuid!(IDCompositionFilterEffect, "30C421D5-8CB2-4E9F-B133-37BE270D4AC2"));
724 /// An IDCompositionFilterEffect interface represents a filter effect
725 interface IDCompositionFilterEffect : IDCompositionEffect
726 {
727 	extern(Windows):
728     /// Sets the input at the given index to the filterEffect (NULL will use source visual, unless flagged otherwise)
729     HRESULT SetInput(UINT index, IUnknown input, UINT flags);
730 }
731 
732 mixin(uuid!(IDCompositionGaussianBlurEffect, "45D4D0B7-1BD4-454E-8894-2BFA68443033"));
733 /// An IDCompositionGaussianBlurEffect interface represents a gaussian blur filter effect
734 interface IDCompositionGaussianBlurEffect : IDCompositionFilterEffect
735 {
736 	extern(Windows):
737     /// Changes the amount of blur to be applied.
738     HRESULT SetStandardDeviation(float amount);
739     HRESULT SetStandardDeviation(IDCompositionAnimation animation);
740     /// Changes border mode (see D2D1_GAUSSIANBLUR)
741     HRESULT SetBorderMode(D2D1_BORDER_MODE mode);
742 }
743 
744 mixin(uuid!(IDCompositionBrightnessEffect, "6027496E-CB3A-49AB-934F-D798DA4F7DA6"));
745 /// An IDCompositionBrightnessEffect interface represents a brightness filter effect
746 interface IDCompositionBrightnessEffect : IDCompositionFilterEffect
747 {
748 	extern(Windows):
749     /// Changes the value of white point property.
750     HRESULT SetWhitePoint(const(D2D1_VECTOR_2F)* whitePoint);
751     /// Changes the value of black point property
752     HRESULT SetBlackPoint(const(D2D1_VECTOR_2F)* blackPoint);
753     /// Changes the X value of the white point property.
754     HRESULT SetWhitePointX(float whitePointX);
755     HRESULT SetWhitePointX(IDCompositionAnimation animation);
756     /// Changes the Y value of the white point property.
757     HRESULT SetWhitePointY(float whitePointY);
758     HRESULT SetWhitePointY(IDCompositionAnimation animation);
759     /// Changes the X value of the black point property.
760     HRESULT SetBlackPointX(float blackPointX);
761     HRESULT SetBlackPointX(IDCompositionAnimation animation);
762     /// Changes the Y value of the black point property.
763     HRESULT SetBlackPointY(float blackPointY);
764     HRESULT SetBlackPointY(IDCompositionAnimation animation);
765 }
766 
767 mixin(uuid!(IDCompositionColorMatrixEffect, "C1170A22-3CE2-4966-90D4-55408BFC84C4"));
768 /// An IDCompositionColorMatrixEffect interface represents a color matrix filter effect
769 interface IDCompositionColorMatrixEffect : IDCompositionFilterEffect
770 {
771 	extern(Windows):
772     /// Changes all values of the matrix for a color transform
773     HRESULT SetMatrix(const(D2D1_MATRIX_5X4_F)* matrix);
774     /// Changes a single element of the matrix of this color transform.
775     HRESULT SetMatrixElement(int row, int column, float value);
776     /// Animates a single element of the matrix of this color transform.
777     HRESULT SetMatrixElement(int row, int column, IDCompositionAnimation animation);
778     /// Changes the alpha mode
779     HRESULT SetAlphaMode(D2D1_COLORMATRIX_ALPHA_MODE mode);
780     /// Sets the clamp output property
781     HRESULT SetClampOutput(BOOL clamp);
782 }
783 
784 mixin(uuid!(IDCompositionShadowEffect, "4AD18AC0-CFD2-4C2F-BB62-96E54FDB6879"));
785 /// An IDCompositionShadowEffect interface represents a shadow filter effect
786 interface IDCompositionShadowEffect : IDCompositionFilterEffect
787 {
788 	extern(Windows):
789     /// Changes the amount of blur to be applied.
790     HRESULT SetStandardDeviation(float amount);
791     HRESULT SetStandardDeviation(IDCompositionAnimation animation);
792     /// Changes shadow color
793     HRESULT SetColor(const(D2D1_VECTOR_4F)* color);
794     HRESULT SetRed(float amount);
795     HRESULT SetRed(IDCompositionAnimation animation);
796     HRESULT SetGreen(float amount);
797     HRESULT SetGreen(IDCompositionAnimation animation);
798     HRESULT SetBlue(float amount);
799     HRESULT SetBlue(IDCompositionAnimation animation);
800     HRESULT SetAlpha(float amount);
801     HRESULT SetAlpha(IDCompositionAnimation animation);
802 }
803 
804 mixin(uuid!(IDCompositionHueRotationEffect, "6DB9F920-0770-4781-B0C6-381912F9D167"));
805 /// An IDCompositionHueRotationEffect interface represents a hue rotation filter effect
806 interface IDCompositionHueRotationEffect : IDCompositionFilterEffect
807 {
808 	extern(Windows):
809     /// Changes the angle of rotation
810     HRESULT SetAngle(float amountDegrees);
811     HRESULT SetAngle(IDCompositionAnimation animation);
812 }
813 
814 mixin(uuid!(IDCompositionSaturationEffect, "A08DEBDA-3258-4FA4-9F16-9174D3FE93B1"));
815 /// An IDCompositionSaturationEffect interface represents a saturation filter effect
816 interface IDCompositionSaturationEffect : IDCompositionFilterEffect
817 {
818 	extern(Windows):
819     /// Changes the amount of saturation to be applied.
820     HRESULT SetSaturation(float ratio);
821     HRESULT SetSaturation(IDCompositionAnimation animation);
822 }
823 
824 mixin(uuid!(IDCompositionTurbulenceEffect, "A6A55BDA-C09C-49F3-9193-A41922C89715"));
825 /// An IDCompositionTurbulenceEffect interface represents a turbulence filter effect
826 interface IDCompositionTurbulenceEffect : IDCompositionFilterEffect
827 {
828 	extern(Windows):
829     /// Changes the starting offset of the turbulence
830     HRESULT SetOffset(const(D2D1_VECTOR_2F)* offset);
831     /// Changes the base frequency of the turbulence
832     HRESULT SetBaseFrequency(const(D2D1_VECTOR_2F)* frequency);
833     /// Changes the output size of the turbulence
834     HRESULT SetSize(const(D2D1_VECTOR_2F)* size);
835     /// Sets the number of octaves
836     HRESULT SetNumOctaves(UINT numOctaves);
837     /// Set the random number seed
838     HRESULT SetSeed(UINT seed);
839     /// Set the noise mode
840     HRESULT SetNoise(D2D1_TURBULENCE_NOISE noise);
841     /// Set stitchable
842     HRESULT SetStitchable(BOOL stitchable);
843 }
844 
845 mixin(uuid!(IDCompositionLinearTransferEffect, "4305EE5B-C4A0-4C88-9385-67124E017683"));
846 /// An IDCompositionLinearTransferEffect interface represents a linear transfer filter effect
847 interface IDCompositionLinearTransferEffect : IDCompositionFilterEffect
848 {
849 	extern(Windows):
850     HRESULT SetRedYIntercept(float redYIntercept);
851     HRESULT SetRedYIntercept(IDCompositionAnimation animation);
852     HRESULT SetRedSlope(float redSlope);
853     HRESULT SetRedSlope(IDCompositionAnimation animation);
854     HRESULT SetRedDisable(BOOL redDisable);
855     HRESULT SetGreenYIntercept(float greenYIntercept);
856     HRESULT SetGreenYIntercept(IDCompositionAnimation animation);
857     HRESULT SetGreenSlope(float greenSlope);
858     HRESULT SetGreenSlope(IDCompositionAnimation animation);
859     HRESULT SetGreenDisable(BOOL greenDisable);
860     HRESULT SetBlueYIntercept(float blueYIntercept);
861     HRESULT SetBlueYIntercept(IDCompositionAnimation animation);
862     HRESULT SetBlueSlope(float blueSlope);
863     HRESULT SetBlueSlope(IDCompositionAnimation animation);
864     HRESULT SetBlueDisable(BOOL blueDisable);
865     HRESULT SetAlphaYIntercept(float alphaYIntercept);
866     HRESULT SetAlphaYIntercept(IDCompositionAnimation animation);
867     HRESULT SetAlphaSlope(float alphaSlope);
868     HRESULT SetAlphaSlope(IDCompositionAnimation animation);
869     HRESULT SetAlphaDisable(BOOL alphaDisable);
870     HRESULT SetClampOutput(BOOL clampOutput);
871 }
872 
873 mixin(uuid!(IDCompositionTableTransferEffect, "9B7E82E2-69C5-4EB4-A5F5-A7033F5132CD"));
874 /// An IDCompositionTableTransferEffect interface represents a Table transfer filter effect
875 interface IDCompositionTableTransferEffect : IDCompositionFilterEffect
876 {
877 	extern(Windows):
878     HRESULT SetRedTable(const(float)* tableValues, UINT count);
879     HRESULT SetGreenTable(const(float)* tableValues, UINT count);
880     HRESULT SetBlueTable(const(float)* tableValues, UINT count);
881     HRESULT SetAlphaTable(const(float)* tableValues, UINT count);
882     HRESULT SetRedDisable(BOOL redDisable);
883     HRESULT SetGreenDisable(BOOL greenDisable);
884     HRESULT SetBlueDisable(BOOL blueDisable);
885     HRESULT SetAlphaDisable(BOOL alphaDisable);
886     HRESULT SetClampOutput(BOOL clampOutput);
887     /// Note:  To set individual values, the table must have already been initialized
888     ////   with a buffer of values of the appropriate size, or these calls will fail
889     HRESULT SetRedTableValue(UINT index, float value);
890     HRESULT SetRedTableValue(UINT index, IDCompositionAnimation animation);
891     HRESULT SetGreenTableValue(UINT index, float value);
892     HRESULT SetGreenTableValue(UINT index, IDCompositionAnimation animation);
893     HRESULT SetBlueTableValue(UINT index, float value);
894     HRESULT SetBlueTableValue(UINT index, IDCompositionAnimation animation);
895     HRESULT SetAlphaTableValue(UINT index, float value);
896     HRESULT SetAlphaTableValue(UINT index, IDCompositionAnimation animation);
897 }
898 
899 mixin(uuid!(IDCompositionCompositeEffect, "576616C0-A231-494D-A38D-00FD5EC4DB46"));
900 /// An IDCompositionCompositeEffect interface represents a composite filter effect
901 interface IDCompositionCompositeEffect : IDCompositionFilterEffect
902 {
903 	extern(Windows):
904     /// Changes the composite mode.
905     HRESULT SetMode(D2D1_COMPOSITE_MODE mode);
906 }
907 
908 mixin(uuid!(IDCompositionBlendEffect, "33ECDC0A-578A-4A11-9C14-0CB90517F9C5"));
909 /// An IDCompositionBlendEffect interface represents a blend filter effect
910 interface IDCompositionBlendEffect : IDCompositionFilterEffect
911 {
912 	extern(Windows):
913     HRESULT SetMode(D2D1_BLEND_MODE mode);
914 }
915 
916 mixin(uuid!(IDCompositionArithmeticCompositeEffect, "3B67DFA8-E3DD-4E61-B640-46C2F3D739DC"));
917 /// An IDCompositionArithmeticCompositeEffect interface represents an arithmetic composite filter effect
918 interface IDCompositionArithmeticCompositeEffect : IDCompositionFilterEffect
919 {
920 	extern(Windows):
921     HRESULT SetCoefficients(const(D2D1_VECTOR_4F)* coefficients);
922     HRESULT SetClampOutput(BOOL clampoutput);
923     HRESULT SetCoefficient1(float Coeffcient1);
924     HRESULT SetCoefficient1(IDCompositionAnimation animation);
925     HRESULT SetCoefficient2(float Coefficient2);
926     HRESULT SetCoefficient2(IDCompositionAnimation animation);
927     HRESULT SetCoefficient3(float Coefficient3);
928     HRESULT SetCoefficient3(IDCompositionAnimation animation);
929     HRESULT SetCoefficient4(float Coefficient4);
930     HRESULT SetCoefficient4(IDCompositionAnimation animation);
931 }
932 
933 mixin(uuid!(IDCompositionAffineTransform2DEffect, "0B74B9E8-CDD6-492F-BBBC-5ED32157026D"));
934 /// An IDCompositionAffineTransform2DEffect interface represents a affine transform 2D filter effect
935 interface IDCompositionAffineTransform2DEffect : IDCompositionFilterEffect
936 {
937 	extern(Windows):
938     HRESULT SetInterpolationMode(D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE interpolationMode);
939     HRESULT SetBorderMode(D2D1_BORDER_MODE borderMode);
940     HRESULT SetTransformMatrix(const(D2D1_MATRIX_3X2_F)* transformMatrix);
941     HRESULT SetTransformMatrixElement(int row, int column, float value);
942     HRESULT SetTransformMatrixElement(int row, int column, IDCompositionAnimation animation);
943     HRESULT SetSharpness(float sharpness);
944     HRESULT SetSharpness(IDCompositionAnimation animation);
945 }