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