/*** Autogenerated by WIDL 10.0 from /build/wine-10.0/include/dcomp.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __dcomp_h__
#define __dcomp_h__

/* Forward declarations */

#ifndef __IDCompositionSurface_FWD_DEFINED__
#define __IDCompositionSurface_FWD_DEFINED__
typedef interface IDCompositionSurface IDCompositionSurface;
#ifdef __cplusplus
interface IDCompositionSurface;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionVirtualSurface_FWD_DEFINED__
#define __IDCompositionVirtualSurface_FWD_DEFINED__
typedef interface IDCompositionVirtualSurface IDCompositionVirtualSurface;
#ifdef __cplusplus
interface IDCompositionVirtualSurface;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionSurfaceFactory_FWD_DEFINED__
#define __IDCompositionSurfaceFactory_FWD_DEFINED__
typedef interface IDCompositionSurfaceFactory IDCompositionSurfaceFactory;
#ifdef __cplusplus
interface IDCompositionSurfaceFactory;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionClip_FWD_DEFINED__
#define __IDCompositionClip_FWD_DEFINED__
typedef interface IDCompositionClip IDCompositionClip;
#ifdef __cplusplus
interface IDCompositionClip;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionRectangleClip_FWD_DEFINED__
#define __IDCompositionRectangleClip_FWD_DEFINED__
typedef interface IDCompositionRectangleClip IDCompositionRectangleClip;
#ifdef __cplusplus
interface IDCompositionRectangleClip;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionEffect_FWD_DEFINED__
#define __IDCompositionEffect_FWD_DEFINED__
typedef interface IDCompositionEffect IDCompositionEffect;
#ifdef __cplusplus
interface IDCompositionEffect;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionTransform3D_FWD_DEFINED__
#define __IDCompositionTransform3D_FWD_DEFINED__
typedef interface IDCompositionTransform3D IDCompositionTransform3D;
#ifdef __cplusplus
interface IDCompositionTransform3D;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionEffectGroup_FWD_DEFINED__
#define __IDCompositionEffectGroup_FWD_DEFINED__
typedef interface IDCompositionEffectGroup IDCompositionEffectGroup;
#ifdef __cplusplus
interface IDCompositionEffectGroup;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionTranslateTransform3D_FWD_DEFINED__
#define __IDCompositionTranslateTransform3D_FWD_DEFINED__
typedef interface IDCompositionTranslateTransform3D IDCompositionTranslateTransform3D;
#ifdef __cplusplus
interface IDCompositionTranslateTransform3D;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionScaleTransform3D_FWD_DEFINED__
#define __IDCompositionScaleTransform3D_FWD_DEFINED__
typedef interface IDCompositionScaleTransform3D IDCompositionScaleTransform3D;
#ifdef __cplusplus
interface IDCompositionScaleTransform3D;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionRotateTransform3D_FWD_DEFINED__
#define __IDCompositionRotateTransform3D_FWD_DEFINED__
typedef interface IDCompositionRotateTransform3D IDCompositionRotateTransform3D;
#ifdef __cplusplus
interface IDCompositionRotateTransform3D;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionMatrixTransform3D_FWD_DEFINED__
#define __IDCompositionMatrixTransform3D_FWD_DEFINED__
typedef interface IDCompositionMatrixTransform3D IDCompositionMatrixTransform3D;
#ifdef __cplusplus
interface IDCompositionMatrixTransform3D;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionTransform_FWD_DEFINED__
#define __IDCompositionTransform_FWD_DEFINED__
typedef interface IDCompositionTransform IDCompositionTransform;
#ifdef __cplusplus
interface IDCompositionTransform;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionScaleTransform_FWD_DEFINED__
#define __IDCompositionScaleTransform_FWD_DEFINED__
typedef interface IDCompositionScaleTransform IDCompositionScaleTransform;
#ifdef __cplusplus
interface IDCompositionScaleTransform;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionRotateTransform_FWD_DEFINED__
#define __IDCompositionRotateTransform_FWD_DEFINED__
typedef interface IDCompositionRotateTransform IDCompositionRotateTransform;
#ifdef __cplusplus
interface IDCompositionRotateTransform;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionSkewTransform_FWD_DEFINED__
#define __IDCompositionSkewTransform_FWD_DEFINED__
typedef interface IDCompositionSkewTransform IDCompositionSkewTransform;
#ifdef __cplusplus
interface IDCompositionSkewTransform;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionMatrixTransform_FWD_DEFINED__
#define __IDCompositionMatrixTransform_FWD_DEFINED__
typedef interface IDCompositionMatrixTransform IDCompositionMatrixTransform;
#ifdef __cplusplus
interface IDCompositionMatrixTransform;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionTranslateTransform_FWD_DEFINED__
#define __IDCompositionTranslateTransform_FWD_DEFINED__
typedef interface IDCompositionTranslateTransform IDCompositionTranslateTransform;
#ifdef __cplusplus
interface IDCompositionTranslateTransform;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionVisual_FWD_DEFINED__
#define __IDCompositionVisual_FWD_DEFINED__
typedef interface IDCompositionVisual IDCompositionVisual;
#ifdef __cplusplus
interface IDCompositionVisual;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionVisual2_FWD_DEFINED__
#define __IDCompositionVisual2_FWD_DEFINED__
typedef interface IDCompositionVisual2 IDCompositionVisual2;
#ifdef __cplusplus
interface IDCompositionVisual2;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionTarget_FWD_DEFINED__
#define __IDCompositionTarget_FWD_DEFINED__
typedef interface IDCompositionTarget IDCompositionTarget;
#ifdef __cplusplus
interface IDCompositionTarget;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionDevice_FWD_DEFINED__
#define __IDCompositionDevice_FWD_DEFINED__
typedef interface IDCompositionDevice IDCompositionDevice;
#ifdef __cplusplus
interface IDCompositionDevice;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionDevice2_FWD_DEFINED__
#define __IDCompositionDevice2_FWD_DEFINED__
typedef interface IDCompositionDevice2 IDCompositionDevice2;
#ifdef __cplusplus
interface IDCompositionDevice2;
#endif /* __cplusplus */
#endif

#ifndef __IDCompositionDesktopDevice_FWD_DEFINED__
#define __IDCompositionDesktopDevice_FWD_DEFINED__
typedef interface IDCompositionDesktopDevice IDCompositionDesktopDevice;
#ifdef __cplusplus
interface IDCompositionDesktopDevice;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <objidl.h>
#include <d2dbasetypes.h>
#include <dcommon.h>
#include <dcompanimation.h>
#include <dcomptypes.h>
#include <unknwn.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef struct _D3DMATRIX {
    float m[4][4];
} D3DMATRIX;
/*****************************************************************************
 * IDCompositionSurface interface
 */
#ifndef __IDCompositionSurface_INTERFACE_DEFINED__
#define __IDCompositionSurface_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionSurface, 0xbb8a4953, 0x2c99, 0x4f5a, 0x96,0xf5, 0x48,0x19,0x02,0x7f,0xa3,0xac);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("bb8a4953-2c99-4f5a-96f5-4819027fa3ac")
IDCompositionSurface : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE BeginDraw(
        const RECT *rect,
        REFIID iid,
        void **object,
        POINT *offset) = 0;

    virtual HRESULT STDMETHODCALLTYPE EndDraw(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SuspendDraw(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ResumeDraw(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Scroll(
        const RECT *scroll,
        const RECT *clip,
        int offset_x,
        int offset_y) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionSurface, 0xbb8a4953, 0x2c99, 0x4f5a, 0x96,0xf5, 0x48,0x19,0x02,0x7f,0xa3,0xac)
#endif
#else
typedef struct IDCompositionSurfaceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionSurface *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionSurface *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionSurface *This);

    /*** IDCompositionSurface methods ***/
    HRESULT (STDMETHODCALLTYPE *BeginDraw)(
        IDCompositionSurface *This,
        const RECT *rect,
        REFIID iid,
        void **object,
        POINT *offset);

    HRESULT (STDMETHODCALLTYPE *EndDraw)(
        IDCompositionSurface *This);

    HRESULT (STDMETHODCALLTYPE *SuspendDraw)(
        IDCompositionSurface *This);

    HRESULT (STDMETHODCALLTYPE *ResumeDraw)(
        IDCompositionSurface *This);

    HRESULT (STDMETHODCALLTYPE *Scroll)(
        IDCompositionSurface *This,
        const RECT *scroll,
        const RECT *clip,
        int offset_x,
        int offset_y);

    END_INTERFACE
} IDCompositionSurfaceVtbl;

interface IDCompositionSurface {
    CONST_VTBL IDCompositionSurfaceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionSurface_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionSurface_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionSurface_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionSurface methods ***/
#define IDCompositionSurface_BeginDraw(This,rect,iid,object,offset) (This)->lpVtbl->BeginDraw(This,rect,iid,object,offset)
#define IDCompositionSurface_EndDraw(This) (This)->lpVtbl->EndDraw(This)
#define IDCompositionSurface_SuspendDraw(This) (This)->lpVtbl->SuspendDraw(This)
#define IDCompositionSurface_ResumeDraw(This) (This)->lpVtbl->ResumeDraw(This)
#define IDCompositionSurface_Scroll(This,scroll,clip,offset_x,offset_y) (This)->lpVtbl->Scroll(This,scroll,clip,offset_x,offset_y)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionSurface_QueryInterface(IDCompositionSurface* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionSurface_AddRef(IDCompositionSurface* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionSurface_Release(IDCompositionSurface* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionSurface methods ***/
static inline HRESULT IDCompositionSurface_BeginDraw(IDCompositionSurface* This,const RECT *rect,REFIID iid,void **object,POINT *offset) {
    return This->lpVtbl->BeginDraw(This,rect,iid,object,offset);
}
static inline HRESULT IDCompositionSurface_EndDraw(IDCompositionSurface* This) {
    return This->lpVtbl->EndDraw(This);
}
static inline HRESULT IDCompositionSurface_SuspendDraw(IDCompositionSurface* This) {
    return This->lpVtbl->SuspendDraw(This);
}
static inline HRESULT IDCompositionSurface_ResumeDraw(IDCompositionSurface* This) {
    return This->lpVtbl->ResumeDraw(This);
}
static inline HRESULT IDCompositionSurface_Scroll(IDCompositionSurface* This,const RECT *scroll,const RECT *clip,int offset_x,int offset_y) {
    return This->lpVtbl->Scroll(This,scroll,clip,offset_x,offset_y);
}
#endif
#endif

#endif


#endif  /* __IDCompositionSurface_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionVirtualSurface interface
 */
#ifndef __IDCompositionVirtualSurface_INTERFACE_DEFINED__
#define __IDCompositionVirtualSurface_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionVirtualSurface, 0xae471c51, 0x5f53, 0x4a24, 0x8d,0x3e, 0xd0,0xc3,0x9c,0x30,0xb3,0xf0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ae471c51-5f53-4a24-8d3e-d0c39c30b3f0")
IDCompositionVirtualSurface : public IDCompositionSurface
{
    virtual HRESULT STDMETHODCALLTYPE Resize(
        UINT width,
        UINT height) = 0;

    virtual HRESULT STDMETHODCALLTYPE Trim(
        const RECT *rectangles,
        UINT count) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionVirtualSurface, 0xae471c51, 0x5f53, 0x4a24, 0x8d,0x3e, 0xd0,0xc3,0x9c,0x30,0xb3,0xf0)
#endif
#else
typedef struct IDCompositionVirtualSurfaceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionVirtualSurface *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionVirtualSurface *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionVirtualSurface *This);

    /*** IDCompositionSurface methods ***/
    HRESULT (STDMETHODCALLTYPE *BeginDraw)(
        IDCompositionVirtualSurface *This,
        const RECT *rect,
        REFIID iid,
        void **object,
        POINT *offset);

    HRESULT (STDMETHODCALLTYPE *EndDraw)(
        IDCompositionVirtualSurface *This);

    HRESULT (STDMETHODCALLTYPE *SuspendDraw)(
        IDCompositionVirtualSurface *This);

    HRESULT (STDMETHODCALLTYPE *ResumeDraw)(
        IDCompositionVirtualSurface *This);

    HRESULT (STDMETHODCALLTYPE *Scroll)(
        IDCompositionVirtualSurface *This,
        const RECT *scroll,
        const RECT *clip,
        int offset_x,
        int offset_y);

    /*** IDCompositionVirtualSurface methods ***/
    HRESULT (STDMETHODCALLTYPE *Resize)(
        IDCompositionVirtualSurface *This,
        UINT width,
        UINT height);

    HRESULT (STDMETHODCALLTYPE *Trim)(
        IDCompositionVirtualSurface *This,
        const RECT *rectangles,
        UINT count);

    END_INTERFACE
} IDCompositionVirtualSurfaceVtbl;

interface IDCompositionVirtualSurface {
    CONST_VTBL IDCompositionVirtualSurfaceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionVirtualSurface_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionVirtualSurface_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionVirtualSurface_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionSurface methods ***/
#define IDCompositionVirtualSurface_BeginDraw(This,rect,iid,object,offset) (This)->lpVtbl->BeginDraw(This,rect,iid,object,offset)
#define IDCompositionVirtualSurface_EndDraw(This) (This)->lpVtbl->EndDraw(This)
#define IDCompositionVirtualSurface_SuspendDraw(This) (This)->lpVtbl->SuspendDraw(This)
#define IDCompositionVirtualSurface_ResumeDraw(This) (This)->lpVtbl->ResumeDraw(This)
#define IDCompositionVirtualSurface_Scroll(This,scroll,clip,offset_x,offset_y) (This)->lpVtbl->Scroll(This,scroll,clip,offset_x,offset_y)
/*** IDCompositionVirtualSurface methods ***/
#define IDCompositionVirtualSurface_Resize(This,width,height) (This)->lpVtbl->Resize(This,width,height)
#define IDCompositionVirtualSurface_Trim(This,rectangles,count) (This)->lpVtbl->Trim(This,rectangles,count)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionVirtualSurface_QueryInterface(IDCompositionVirtualSurface* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionVirtualSurface_AddRef(IDCompositionVirtualSurface* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionVirtualSurface_Release(IDCompositionVirtualSurface* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionSurface methods ***/
static inline HRESULT IDCompositionVirtualSurface_BeginDraw(IDCompositionVirtualSurface* This,const RECT *rect,REFIID iid,void **object,POINT *offset) {
    return This->lpVtbl->BeginDraw(This,rect,iid,object,offset);
}
static inline HRESULT IDCompositionVirtualSurface_EndDraw(IDCompositionVirtualSurface* This) {
    return This->lpVtbl->EndDraw(This);
}
static inline HRESULT IDCompositionVirtualSurface_SuspendDraw(IDCompositionVirtualSurface* This) {
    return This->lpVtbl->SuspendDraw(This);
}
static inline HRESULT IDCompositionVirtualSurface_ResumeDraw(IDCompositionVirtualSurface* This) {
    return This->lpVtbl->ResumeDraw(This);
}
static inline HRESULT IDCompositionVirtualSurface_Scroll(IDCompositionVirtualSurface* This,const RECT *scroll,const RECT *clip,int offset_x,int offset_y) {
    return This->lpVtbl->Scroll(This,scroll,clip,offset_x,offset_y);
}
/*** IDCompositionVirtualSurface methods ***/
static inline HRESULT IDCompositionVirtualSurface_Resize(IDCompositionVirtualSurface* This,UINT width,UINT height) {
    return This->lpVtbl->Resize(This,width,height);
}
static inline HRESULT IDCompositionVirtualSurface_Trim(IDCompositionVirtualSurface* This,const RECT *rectangles,UINT count) {
    return This->lpVtbl->Trim(This,rectangles,count);
}
#endif
#endif

#endif


#endif  /* __IDCompositionVirtualSurface_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionSurfaceFactory interface
 */
#ifndef __IDCompositionSurfaceFactory_INTERFACE_DEFINED__
#define __IDCompositionSurfaceFactory_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionSurfaceFactory, 0xe334bc12, 0x3937, 0x4e02, 0x85,0xeb, 0xfc,0xf4,0xeb,0x30,0xd2,0xc8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e334bc12-3937-4e02-85eb-fcf4eb30d2c8")
IDCompositionSurfaceFactory : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateSurface(
        UINT width,
        UINT height,
        DXGI_FORMAT pixel_format,
        DXGI_ALPHA_MODE alpha_mode,
        IDCompositionSurface **surface) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateVirtualSurface(
        UINT width,
        UINT height,
        DXGI_FORMAT pixel_format,
        DXGI_ALPHA_MODE alpha_mode,
        IDCompositionVirtualSurface **surface) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionSurfaceFactory, 0xe334bc12, 0x3937, 0x4e02, 0x85,0xeb, 0xfc,0xf4,0xeb,0x30,0xd2,0xc8)
#endif
#else
typedef struct IDCompositionSurfaceFactoryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionSurfaceFactory *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionSurfaceFactory *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionSurfaceFactory *This);

    /*** IDCompositionSurfaceFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateSurface)(
        IDCompositionSurfaceFactory *This,
        UINT width,
        UINT height,
        DXGI_FORMAT pixel_format,
        DXGI_ALPHA_MODE alpha_mode,
        IDCompositionSurface **surface);

    HRESULT (STDMETHODCALLTYPE *CreateVirtualSurface)(
        IDCompositionSurfaceFactory *This,
        UINT width,
        UINT height,
        DXGI_FORMAT pixel_format,
        DXGI_ALPHA_MODE alpha_mode,
        IDCompositionVirtualSurface **surface);

    END_INTERFACE
} IDCompositionSurfaceFactoryVtbl;

interface IDCompositionSurfaceFactory {
    CONST_VTBL IDCompositionSurfaceFactoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionSurfaceFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionSurfaceFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionSurfaceFactory_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionSurfaceFactory methods ***/
#define IDCompositionSurfaceFactory_CreateSurface(This,width,height,pixel_format,alpha_mode,surface) (This)->lpVtbl->CreateSurface(This,width,height,pixel_format,alpha_mode,surface)
#define IDCompositionSurfaceFactory_CreateVirtualSurface(This,width,height,pixel_format,alpha_mode,surface) (This)->lpVtbl->CreateVirtualSurface(This,width,height,pixel_format,alpha_mode,surface)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionSurfaceFactory_QueryInterface(IDCompositionSurfaceFactory* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionSurfaceFactory_AddRef(IDCompositionSurfaceFactory* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionSurfaceFactory_Release(IDCompositionSurfaceFactory* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionSurfaceFactory methods ***/
static inline HRESULT IDCompositionSurfaceFactory_CreateSurface(IDCompositionSurfaceFactory* This,UINT width,UINT height,DXGI_FORMAT pixel_format,DXGI_ALPHA_MODE alpha_mode,IDCompositionSurface **surface) {
    return This->lpVtbl->CreateSurface(This,width,height,pixel_format,alpha_mode,surface);
}
static inline HRESULT IDCompositionSurfaceFactory_CreateVirtualSurface(IDCompositionSurfaceFactory* This,UINT width,UINT height,DXGI_FORMAT pixel_format,DXGI_ALPHA_MODE alpha_mode,IDCompositionVirtualSurface **surface) {
    return This->lpVtbl->CreateVirtualSurface(This,width,height,pixel_format,alpha_mode,surface);
}
#endif
#endif

#endif


#endif  /* __IDCompositionSurfaceFactory_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionClip interface
 */
#ifndef __IDCompositionClip_INTERFACE_DEFINED__
#define __IDCompositionClip_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionClip, 0x64ac3703, 0x9d3f, 0x45ec, 0xa1,0x09, 0x7c,0xac,0x0e,0x7a,0x13,0xa7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("64ac3703-9d3f-45ec-a109-7cac0e7a13a7")
IDCompositionClip : public IUnknown
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionClip, 0x64ac3703, 0x9d3f, 0x45ec, 0xa1,0x09, 0x7c,0xac,0x0e,0x7a,0x13,0xa7)
#endif
#else
typedef struct IDCompositionClipVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionClip *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionClip *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionClip *This);

    END_INTERFACE
} IDCompositionClipVtbl;

interface IDCompositionClip {
    CONST_VTBL IDCompositionClipVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionClip_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionClip_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionClip_Release(This) (This)->lpVtbl->Release(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionClip_QueryInterface(IDCompositionClip* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionClip_AddRef(IDCompositionClip* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionClip_Release(IDCompositionClip* This) {
    return This->lpVtbl->Release(This);
}
#endif
#endif

#endif


#endif  /* __IDCompositionClip_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionRectangleClip interface
 */
#ifndef __IDCompositionRectangleClip_INTERFACE_DEFINED__
#define __IDCompositionRectangleClip_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionRectangleClip, 0x9842ad7d, 0xd9cf, 0x4908, 0xae,0xd7, 0x48,0xb5,0x1d,0xa5,0xe7,0xc2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9842ad7d-d9cf-4908-aed7-48b51da5e7c2")
IDCompositionRectangleClip : public IDCompositionClip
{
    virtual HRESULT STDMETHODCALLTYPE SetLeft(
        float left) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetLeftAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTop(
        float top) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTopAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRight(
        float right) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRightAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBottom(
        float bottom) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBottomAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTopLeftRadiusX(
        float radius) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTopLeftRadiusXAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTopLeftRadiusY(
        float radius) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTopLeftRadiusYAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTopRightRadiusX(
        float radius) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTopRightRadiusXAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTopRightRadiusY(
        float radius) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTopRightRadiusYAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBottomLeftRadiusX(
        float radius) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBottomLeftRadiusXAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBottomLeftRadiusY(
        float radius) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBottomLeftRadiusYAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBottomRightRadiusX(
        float radius) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBottomRightRadiusXAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBottomRightRadiusY(
        float radius) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBottomRightRadiusYAnimation(
        IDCompositionAnimation *animation) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionRectangleClip, 0x9842ad7d, 0xd9cf, 0x4908, 0xae,0xd7, 0x48,0xb5,0x1d,0xa5,0xe7,0xc2)
#endif
#else
typedef struct IDCompositionRectangleClipVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionRectangleClip *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionRectangleClip *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionRectangleClip *This);

    /*** IDCompositionRectangleClip methods ***/
    HRESULT (STDMETHODCALLTYPE *SetLeft)(
        IDCompositionRectangleClip *This,
        float left);

    HRESULT (STDMETHODCALLTYPE *SetLeftAnimation)(
        IDCompositionRectangleClip *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetTop)(
        IDCompositionRectangleClip *This,
        float top);

    HRESULT (STDMETHODCALLTYPE *SetTopAnimation)(
        IDCompositionRectangleClip *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetRight)(
        IDCompositionRectangleClip *This,
        float right);

    HRESULT (STDMETHODCALLTYPE *SetRightAnimation)(
        IDCompositionRectangleClip *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetBottom)(
        IDCompositionRectangleClip *This,
        float bottom);

    HRESULT (STDMETHODCALLTYPE *SetBottomAnimation)(
        IDCompositionRectangleClip *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetTopLeftRadiusX)(
        IDCompositionRectangleClip *This,
        float radius);

    HRESULT (STDMETHODCALLTYPE *SetTopLeftRadiusXAnimation)(
        IDCompositionRectangleClip *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetTopLeftRadiusY)(
        IDCompositionRectangleClip *This,
        float radius);

    HRESULT (STDMETHODCALLTYPE *SetTopLeftRadiusYAnimation)(
        IDCompositionRectangleClip *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetTopRightRadiusX)(
        IDCompositionRectangleClip *This,
        float radius);

    HRESULT (STDMETHODCALLTYPE *SetTopRightRadiusXAnimation)(
        IDCompositionRectangleClip *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetTopRightRadiusY)(
        IDCompositionRectangleClip *This,
        float radius);

    HRESULT (STDMETHODCALLTYPE *SetTopRightRadiusYAnimation)(
        IDCompositionRectangleClip *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetBottomLeftRadiusX)(
        IDCompositionRectangleClip *This,
        float radius);

    HRESULT (STDMETHODCALLTYPE *SetBottomLeftRadiusXAnimation)(
        IDCompositionRectangleClip *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetBottomLeftRadiusY)(
        IDCompositionRectangleClip *This,
        float radius);

    HRESULT (STDMETHODCALLTYPE *SetBottomLeftRadiusYAnimation)(
        IDCompositionRectangleClip *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetBottomRightRadiusX)(
        IDCompositionRectangleClip *This,
        float radius);

    HRESULT (STDMETHODCALLTYPE *SetBottomRightRadiusXAnimation)(
        IDCompositionRectangleClip *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetBottomRightRadiusY)(
        IDCompositionRectangleClip *This,
        float radius);

    HRESULT (STDMETHODCALLTYPE *SetBottomRightRadiusYAnimation)(
        IDCompositionRectangleClip *This,
        IDCompositionAnimation *animation);

    END_INTERFACE
} IDCompositionRectangleClipVtbl;

interface IDCompositionRectangleClip {
    CONST_VTBL IDCompositionRectangleClipVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionRectangleClip_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionRectangleClip_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionRectangleClip_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionRectangleClip methods ***/
#define IDCompositionRectangleClip_SetLeft(This,left) (This)->lpVtbl->SetLeft(This,left)
#define IDCompositionRectangleClip_SetLeftAnimation(This,animation) (This)->lpVtbl->SetLeftAnimation(This,animation)
#define IDCompositionRectangleClip_SetTop(This,top) (This)->lpVtbl->SetTop(This,top)
#define IDCompositionRectangleClip_SetTopAnimation(This,animation) (This)->lpVtbl->SetTopAnimation(This,animation)
#define IDCompositionRectangleClip_SetRight(This,right) (This)->lpVtbl->SetRight(This,right)
#define IDCompositionRectangleClip_SetRightAnimation(This,animation) (This)->lpVtbl->SetRightAnimation(This,animation)
#define IDCompositionRectangleClip_SetBottom(This,bottom) (This)->lpVtbl->SetBottom(This,bottom)
#define IDCompositionRectangleClip_SetBottomAnimation(This,animation) (This)->lpVtbl->SetBottomAnimation(This,animation)
#define IDCompositionRectangleClip_SetTopLeftRadiusX(This,radius) (This)->lpVtbl->SetTopLeftRadiusX(This,radius)
#define IDCompositionRectangleClip_SetTopLeftRadiusXAnimation(This,animation) (This)->lpVtbl->SetTopLeftRadiusXAnimation(This,animation)
#define IDCompositionRectangleClip_SetTopLeftRadiusY(This,radius) (This)->lpVtbl->SetTopLeftRadiusY(This,radius)
#define IDCompositionRectangleClip_SetTopLeftRadiusYAnimation(This,animation) (This)->lpVtbl->SetTopLeftRadiusYAnimation(This,animation)
#define IDCompositionRectangleClip_SetTopRightRadiusX(This,radius) (This)->lpVtbl->SetTopRightRadiusX(This,radius)
#define IDCompositionRectangleClip_SetTopRightRadiusXAnimation(This,animation) (This)->lpVtbl->SetTopRightRadiusXAnimation(This,animation)
#define IDCompositionRectangleClip_SetTopRightRadiusY(This,radius) (This)->lpVtbl->SetTopRightRadiusY(This,radius)
#define IDCompositionRectangleClip_SetTopRightRadiusYAnimation(This,animation) (This)->lpVtbl->SetTopRightRadiusYAnimation(This,animation)
#define IDCompositionRectangleClip_SetBottomLeftRadiusX(This,radius) (This)->lpVtbl->SetBottomLeftRadiusX(This,radius)
#define IDCompositionRectangleClip_SetBottomLeftRadiusXAnimation(This,animation) (This)->lpVtbl->SetBottomLeftRadiusXAnimation(This,animation)
#define IDCompositionRectangleClip_SetBottomLeftRadiusY(This,radius) (This)->lpVtbl->SetBottomLeftRadiusY(This,radius)
#define IDCompositionRectangleClip_SetBottomLeftRadiusYAnimation(This,animation) (This)->lpVtbl->SetBottomLeftRadiusYAnimation(This,animation)
#define IDCompositionRectangleClip_SetBottomRightRadiusX(This,radius) (This)->lpVtbl->SetBottomRightRadiusX(This,radius)
#define IDCompositionRectangleClip_SetBottomRightRadiusXAnimation(This,animation) (This)->lpVtbl->SetBottomRightRadiusXAnimation(This,animation)
#define IDCompositionRectangleClip_SetBottomRightRadiusY(This,radius) (This)->lpVtbl->SetBottomRightRadiusY(This,radius)
#define IDCompositionRectangleClip_SetBottomRightRadiusYAnimation(This,animation) (This)->lpVtbl->SetBottomRightRadiusYAnimation(This,animation)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionRectangleClip_QueryInterface(IDCompositionRectangleClip* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionRectangleClip_AddRef(IDCompositionRectangleClip* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionRectangleClip_Release(IDCompositionRectangleClip* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionRectangleClip methods ***/
static inline HRESULT IDCompositionRectangleClip_SetLeft(IDCompositionRectangleClip* This,float left) {
    return This->lpVtbl->SetLeft(This,left);
}
static inline HRESULT IDCompositionRectangleClip_SetLeftAnimation(IDCompositionRectangleClip* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetLeftAnimation(This,animation);
}
static inline HRESULT IDCompositionRectangleClip_SetTop(IDCompositionRectangleClip* This,float top) {
    return This->lpVtbl->SetTop(This,top);
}
static inline HRESULT IDCompositionRectangleClip_SetTopAnimation(IDCompositionRectangleClip* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetTopAnimation(This,animation);
}
static inline HRESULT IDCompositionRectangleClip_SetRight(IDCompositionRectangleClip* This,float right) {
    return This->lpVtbl->SetRight(This,right);
}
static inline HRESULT IDCompositionRectangleClip_SetRightAnimation(IDCompositionRectangleClip* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetRightAnimation(This,animation);
}
static inline HRESULT IDCompositionRectangleClip_SetBottom(IDCompositionRectangleClip* This,float bottom) {
    return This->lpVtbl->SetBottom(This,bottom);
}
static inline HRESULT IDCompositionRectangleClip_SetBottomAnimation(IDCompositionRectangleClip* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetBottomAnimation(This,animation);
}
static inline HRESULT IDCompositionRectangleClip_SetTopLeftRadiusX(IDCompositionRectangleClip* This,float radius) {
    return This->lpVtbl->SetTopLeftRadiusX(This,radius);
}
static inline HRESULT IDCompositionRectangleClip_SetTopLeftRadiusXAnimation(IDCompositionRectangleClip* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetTopLeftRadiusXAnimation(This,animation);
}
static inline HRESULT IDCompositionRectangleClip_SetTopLeftRadiusY(IDCompositionRectangleClip* This,float radius) {
    return This->lpVtbl->SetTopLeftRadiusY(This,radius);
}
static inline HRESULT IDCompositionRectangleClip_SetTopLeftRadiusYAnimation(IDCompositionRectangleClip* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetTopLeftRadiusYAnimation(This,animation);
}
static inline HRESULT IDCompositionRectangleClip_SetTopRightRadiusX(IDCompositionRectangleClip* This,float radius) {
    return This->lpVtbl->SetTopRightRadiusX(This,radius);
}
static inline HRESULT IDCompositionRectangleClip_SetTopRightRadiusXAnimation(IDCompositionRectangleClip* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetTopRightRadiusXAnimation(This,animation);
}
static inline HRESULT IDCompositionRectangleClip_SetTopRightRadiusY(IDCompositionRectangleClip* This,float radius) {
    return This->lpVtbl->SetTopRightRadiusY(This,radius);
}
static inline HRESULT IDCompositionRectangleClip_SetTopRightRadiusYAnimation(IDCompositionRectangleClip* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetTopRightRadiusYAnimation(This,animation);
}
static inline HRESULT IDCompositionRectangleClip_SetBottomLeftRadiusX(IDCompositionRectangleClip* This,float radius) {
    return This->lpVtbl->SetBottomLeftRadiusX(This,radius);
}
static inline HRESULT IDCompositionRectangleClip_SetBottomLeftRadiusXAnimation(IDCompositionRectangleClip* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetBottomLeftRadiusXAnimation(This,animation);
}
static inline HRESULT IDCompositionRectangleClip_SetBottomLeftRadiusY(IDCompositionRectangleClip* This,float radius) {
    return This->lpVtbl->SetBottomLeftRadiusY(This,radius);
}
static inline HRESULT IDCompositionRectangleClip_SetBottomLeftRadiusYAnimation(IDCompositionRectangleClip* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetBottomLeftRadiusYAnimation(This,animation);
}
static inline HRESULT IDCompositionRectangleClip_SetBottomRightRadiusX(IDCompositionRectangleClip* This,float radius) {
    return This->lpVtbl->SetBottomRightRadiusX(This,radius);
}
static inline HRESULT IDCompositionRectangleClip_SetBottomRightRadiusXAnimation(IDCompositionRectangleClip* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetBottomRightRadiusXAnimation(This,animation);
}
static inline HRESULT IDCompositionRectangleClip_SetBottomRightRadiusY(IDCompositionRectangleClip* This,float radius) {
    return This->lpVtbl->SetBottomRightRadiusY(This,radius);
}
static inline HRESULT IDCompositionRectangleClip_SetBottomRightRadiusYAnimation(IDCompositionRectangleClip* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetBottomRightRadiusYAnimation(This,animation);
}
#endif
#endif

#endif


#endif  /* __IDCompositionRectangleClip_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionEffect interface
 */
#ifndef __IDCompositionEffect_INTERFACE_DEFINED__
#define __IDCompositionEffect_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionEffect, 0xec81b08f, 0xbfcb, 0x4e8d, 0xb1,0x93, 0xa9,0x15,0x58,0x79,0x99,0xe8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ec81b08f-bfcb-4e8d-b193-a915587999e8")
IDCompositionEffect : public IUnknown
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionEffect, 0xec81b08f, 0xbfcb, 0x4e8d, 0xb1,0x93, 0xa9,0x15,0x58,0x79,0x99,0xe8)
#endif
#else
typedef struct IDCompositionEffectVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionEffect *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionEffect *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionEffect *This);

    END_INTERFACE
} IDCompositionEffectVtbl;

interface IDCompositionEffect {
    CONST_VTBL IDCompositionEffectVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionEffect_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionEffect_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionEffect_Release(This) (This)->lpVtbl->Release(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionEffect_QueryInterface(IDCompositionEffect* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionEffect_AddRef(IDCompositionEffect* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionEffect_Release(IDCompositionEffect* This) {
    return This->lpVtbl->Release(This);
}
#endif
#endif

#endif


#endif  /* __IDCompositionEffect_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionTransform3D interface
 */
#ifndef __IDCompositionTransform3D_INTERFACE_DEFINED__
#define __IDCompositionTransform3D_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionTransform3D, 0x71185722, 0x246b, 0x41f2, 0xaa,0xd1, 0x04,0x43,0xf7,0xf4,0xbf,0xc2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("71185722-246b-41f2-aad1-0443f7f4bfc2")
IDCompositionTransform3D : public IDCompositionEffect
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionTransform3D, 0x71185722, 0x246b, 0x41f2, 0xaa,0xd1, 0x04,0x43,0xf7,0xf4,0xbf,0xc2)
#endif
#else
typedef struct IDCompositionTransform3DVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionTransform3D *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionTransform3D *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionTransform3D *This);

    END_INTERFACE
} IDCompositionTransform3DVtbl;

interface IDCompositionTransform3D {
    CONST_VTBL IDCompositionTransform3DVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionTransform3D_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionTransform3D_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionTransform3D_Release(This) (This)->lpVtbl->Release(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionTransform3D_QueryInterface(IDCompositionTransform3D* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionTransform3D_AddRef(IDCompositionTransform3D* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionTransform3D_Release(IDCompositionTransform3D* This) {
    return This->lpVtbl->Release(This);
}
#endif
#endif

#endif


#endif  /* __IDCompositionTransform3D_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionEffectGroup interface
 */
#ifndef __IDCompositionEffectGroup_INTERFACE_DEFINED__
#define __IDCompositionEffectGroup_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionEffectGroup, 0xa7929a74, 0xe6b2, 0x4bd6, 0x8b,0x95, 0x40,0x40,0x11,0x9c,0xa3,0x4d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a7929a74-e6b2-4bd6-8b95-4040119ca34d")
IDCompositionEffectGroup : public IDCompositionEffect
{
    virtual HRESULT STDMETHODCALLTYPE SetOpacity(
        float opacity) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOpacityAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTransform3D(
        IDCompositionTransform3D *transform) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionEffectGroup, 0xa7929a74, 0xe6b2, 0x4bd6, 0x8b,0x95, 0x40,0x40,0x11,0x9c,0xa3,0x4d)
#endif
#else
typedef struct IDCompositionEffectGroupVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionEffectGroup *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionEffectGroup *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionEffectGroup *This);

    /*** IDCompositionEffectGroup methods ***/
    HRESULT (STDMETHODCALLTYPE *SetOpacity)(
        IDCompositionEffectGroup *This,
        float opacity);

    HRESULT (STDMETHODCALLTYPE *SetOpacityAnimation)(
        IDCompositionEffectGroup *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetTransform3D)(
        IDCompositionEffectGroup *This,
        IDCompositionTransform3D *transform);

    END_INTERFACE
} IDCompositionEffectGroupVtbl;

interface IDCompositionEffectGroup {
    CONST_VTBL IDCompositionEffectGroupVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionEffectGroup_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionEffectGroup_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionEffectGroup_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionEffectGroup methods ***/
#define IDCompositionEffectGroup_SetOpacity(This,opacity) (This)->lpVtbl->SetOpacity(This,opacity)
#define IDCompositionEffectGroup_SetOpacityAnimation(This,animation) (This)->lpVtbl->SetOpacityAnimation(This,animation)
#define IDCompositionEffectGroup_SetTransform3D(This,transform) (This)->lpVtbl->SetTransform3D(This,transform)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionEffectGroup_QueryInterface(IDCompositionEffectGroup* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionEffectGroup_AddRef(IDCompositionEffectGroup* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionEffectGroup_Release(IDCompositionEffectGroup* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionEffectGroup methods ***/
static inline HRESULT IDCompositionEffectGroup_SetOpacity(IDCompositionEffectGroup* This,float opacity) {
    return This->lpVtbl->SetOpacity(This,opacity);
}
static inline HRESULT IDCompositionEffectGroup_SetOpacityAnimation(IDCompositionEffectGroup* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetOpacityAnimation(This,animation);
}
static inline HRESULT IDCompositionEffectGroup_SetTransform3D(IDCompositionEffectGroup* This,IDCompositionTransform3D *transform) {
    return This->lpVtbl->SetTransform3D(This,transform);
}
#endif
#endif

#endif


#endif  /* __IDCompositionEffectGroup_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionTranslateTransform3D interface
 */
#ifndef __IDCompositionTranslateTransform3D_INTERFACE_DEFINED__
#define __IDCompositionTranslateTransform3D_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionTranslateTransform3D, 0x91636d4b, 0x9ba1, 0x4532, 0xaa,0xf7, 0xe3,0x34,0x49,0x94,0xd7,0x88);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("91636d4b-9ba1-4532-aaf7-e3344994d788")
IDCompositionTranslateTransform3D : public IDCompositionTransform3D
{
    virtual HRESULT STDMETHODCALLTYPE SetOffsetX(
        float offset) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOffsetXAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOffsetY(
        float offset) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOffsetYAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOffsetZ(
        float offset) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOffsetZAnimation(
        IDCompositionAnimation *animation) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionTranslateTransform3D, 0x91636d4b, 0x9ba1, 0x4532, 0xaa,0xf7, 0xe3,0x34,0x49,0x94,0xd7,0x88)
#endif
#else
typedef struct IDCompositionTranslateTransform3DVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionTranslateTransform3D *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionTranslateTransform3D *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionTranslateTransform3D *This);

    /*** IDCompositionTranslateTransform3D methods ***/
    HRESULT (STDMETHODCALLTYPE *SetOffsetX)(
        IDCompositionTranslateTransform3D *This,
        float offset);

    HRESULT (STDMETHODCALLTYPE *SetOffsetXAnimation)(
        IDCompositionTranslateTransform3D *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetOffsetY)(
        IDCompositionTranslateTransform3D *This,
        float offset);

    HRESULT (STDMETHODCALLTYPE *SetOffsetYAnimation)(
        IDCompositionTranslateTransform3D *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetOffsetZ)(
        IDCompositionTranslateTransform3D *This,
        float offset);

    HRESULT (STDMETHODCALLTYPE *SetOffsetZAnimation)(
        IDCompositionTranslateTransform3D *This,
        IDCompositionAnimation *animation);

    END_INTERFACE
} IDCompositionTranslateTransform3DVtbl;

interface IDCompositionTranslateTransform3D {
    CONST_VTBL IDCompositionTranslateTransform3DVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionTranslateTransform3D_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionTranslateTransform3D_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionTranslateTransform3D_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionTranslateTransform3D methods ***/
#define IDCompositionTranslateTransform3D_SetOffsetX(This,offset) (This)->lpVtbl->SetOffsetX(This,offset)
#define IDCompositionTranslateTransform3D_SetOffsetXAnimation(This,animation) (This)->lpVtbl->SetOffsetXAnimation(This,animation)
#define IDCompositionTranslateTransform3D_SetOffsetY(This,offset) (This)->lpVtbl->SetOffsetY(This,offset)
#define IDCompositionTranslateTransform3D_SetOffsetYAnimation(This,animation) (This)->lpVtbl->SetOffsetYAnimation(This,animation)
#define IDCompositionTranslateTransform3D_SetOffsetZ(This,offset) (This)->lpVtbl->SetOffsetZ(This,offset)
#define IDCompositionTranslateTransform3D_SetOffsetZAnimation(This,animation) (This)->lpVtbl->SetOffsetZAnimation(This,animation)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionTranslateTransform3D_QueryInterface(IDCompositionTranslateTransform3D* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionTranslateTransform3D_AddRef(IDCompositionTranslateTransform3D* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionTranslateTransform3D_Release(IDCompositionTranslateTransform3D* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionTranslateTransform3D methods ***/
static inline HRESULT IDCompositionTranslateTransform3D_SetOffsetX(IDCompositionTranslateTransform3D* This,float offset) {
    return This->lpVtbl->SetOffsetX(This,offset);
}
static inline HRESULT IDCompositionTranslateTransform3D_SetOffsetXAnimation(IDCompositionTranslateTransform3D* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetOffsetXAnimation(This,animation);
}
static inline HRESULT IDCompositionTranslateTransform3D_SetOffsetY(IDCompositionTranslateTransform3D* This,float offset) {
    return This->lpVtbl->SetOffsetY(This,offset);
}
static inline HRESULT IDCompositionTranslateTransform3D_SetOffsetYAnimation(IDCompositionTranslateTransform3D* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetOffsetYAnimation(This,animation);
}
static inline HRESULT IDCompositionTranslateTransform3D_SetOffsetZ(IDCompositionTranslateTransform3D* This,float offset) {
    return This->lpVtbl->SetOffsetZ(This,offset);
}
static inline HRESULT IDCompositionTranslateTransform3D_SetOffsetZAnimation(IDCompositionTranslateTransform3D* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetOffsetZAnimation(This,animation);
}
#endif
#endif

#endif


#endif  /* __IDCompositionTranslateTransform3D_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionScaleTransform3D interface
 */
#ifndef __IDCompositionScaleTransform3D_INTERFACE_DEFINED__
#define __IDCompositionScaleTransform3D_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionScaleTransform3D, 0x2a9e9ead, 0x364b, 0x4b15, 0xa7,0xc4, 0xa1,0x99,0x7f,0x78,0xb3,0x89);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2a9e9ead-364b-4b15-a7c4-a1997f78b389")
IDCompositionScaleTransform3D : public IDCompositionTransform3D
{
    virtual HRESULT STDMETHODCALLTYPE SetScaleX(
        float scale) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScaleXAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScaleY(
        float scale) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScaleYAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScaleZ(
        float scale) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScaleZAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterX(
        float center) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterXAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterY(
        float center) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterYAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterZ(
        float center) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterZAnimation(
        IDCompositionAnimation *animation) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionScaleTransform3D, 0x2a9e9ead, 0x364b, 0x4b15, 0xa7,0xc4, 0xa1,0x99,0x7f,0x78,0xb3,0x89)
#endif
#else
typedef struct IDCompositionScaleTransform3DVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionScaleTransform3D *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionScaleTransform3D *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionScaleTransform3D *This);

    /*** IDCompositionScaleTransform3D methods ***/
    HRESULT (STDMETHODCALLTYPE *SetScaleX)(
        IDCompositionScaleTransform3D *This,
        float scale);

    HRESULT (STDMETHODCALLTYPE *SetScaleXAnimation)(
        IDCompositionScaleTransform3D *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetScaleY)(
        IDCompositionScaleTransform3D *This,
        float scale);

    HRESULT (STDMETHODCALLTYPE *SetScaleYAnimation)(
        IDCompositionScaleTransform3D *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetScaleZ)(
        IDCompositionScaleTransform3D *This,
        float scale);

    HRESULT (STDMETHODCALLTYPE *SetScaleZAnimation)(
        IDCompositionScaleTransform3D *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetCenterX)(
        IDCompositionScaleTransform3D *This,
        float center);

    HRESULT (STDMETHODCALLTYPE *SetCenterXAnimation)(
        IDCompositionScaleTransform3D *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetCenterY)(
        IDCompositionScaleTransform3D *This,
        float center);

    HRESULT (STDMETHODCALLTYPE *SetCenterYAnimation)(
        IDCompositionScaleTransform3D *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetCenterZ)(
        IDCompositionScaleTransform3D *This,
        float center);

    HRESULT (STDMETHODCALLTYPE *SetCenterZAnimation)(
        IDCompositionScaleTransform3D *This,
        IDCompositionAnimation *animation);

    END_INTERFACE
} IDCompositionScaleTransform3DVtbl;

interface IDCompositionScaleTransform3D {
    CONST_VTBL IDCompositionScaleTransform3DVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionScaleTransform3D_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionScaleTransform3D_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionScaleTransform3D_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionScaleTransform3D methods ***/
#define IDCompositionScaleTransform3D_SetScaleX(This,scale) (This)->lpVtbl->SetScaleX(This,scale)
#define IDCompositionScaleTransform3D_SetScaleXAnimation(This,animation) (This)->lpVtbl->SetScaleXAnimation(This,animation)
#define IDCompositionScaleTransform3D_SetScaleY(This,scale) (This)->lpVtbl->SetScaleY(This,scale)
#define IDCompositionScaleTransform3D_SetScaleYAnimation(This,animation) (This)->lpVtbl->SetScaleYAnimation(This,animation)
#define IDCompositionScaleTransform3D_SetScaleZ(This,scale) (This)->lpVtbl->SetScaleZ(This,scale)
#define IDCompositionScaleTransform3D_SetScaleZAnimation(This,animation) (This)->lpVtbl->SetScaleZAnimation(This,animation)
#define IDCompositionScaleTransform3D_SetCenterX(This,center) (This)->lpVtbl->SetCenterX(This,center)
#define IDCompositionScaleTransform3D_SetCenterXAnimation(This,animation) (This)->lpVtbl->SetCenterXAnimation(This,animation)
#define IDCompositionScaleTransform3D_SetCenterY(This,center) (This)->lpVtbl->SetCenterY(This,center)
#define IDCompositionScaleTransform3D_SetCenterYAnimation(This,animation) (This)->lpVtbl->SetCenterYAnimation(This,animation)
#define IDCompositionScaleTransform3D_SetCenterZ(This,center) (This)->lpVtbl->SetCenterZ(This,center)
#define IDCompositionScaleTransform3D_SetCenterZAnimation(This,animation) (This)->lpVtbl->SetCenterZAnimation(This,animation)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionScaleTransform3D_QueryInterface(IDCompositionScaleTransform3D* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionScaleTransform3D_AddRef(IDCompositionScaleTransform3D* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionScaleTransform3D_Release(IDCompositionScaleTransform3D* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionScaleTransform3D methods ***/
static inline HRESULT IDCompositionScaleTransform3D_SetScaleX(IDCompositionScaleTransform3D* This,float scale) {
    return This->lpVtbl->SetScaleX(This,scale);
}
static inline HRESULT IDCompositionScaleTransform3D_SetScaleXAnimation(IDCompositionScaleTransform3D* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetScaleXAnimation(This,animation);
}
static inline HRESULT IDCompositionScaleTransform3D_SetScaleY(IDCompositionScaleTransform3D* This,float scale) {
    return This->lpVtbl->SetScaleY(This,scale);
}
static inline HRESULT IDCompositionScaleTransform3D_SetScaleYAnimation(IDCompositionScaleTransform3D* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetScaleYAnimation(This,animation);
}
static inline HRESULT IDCompositionScaleTransform3D_SetScaleZ(IDCompositionScaleTransform3D* This,float scale) {
    return This->lpVtbl->SetScaleZ(This,scale);
}
static inline HRESULT IDCompositionScaleTransform3D_SetScaleZAnimation(IDCompositionScaleTransform3D* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetScaleZAnimation(This,animation);
}
static inline HRESULT IDCompositionScaleTransform3D_SetCenterX(IDCompositionScaleTransform3D* This,float center) {
    return This->lpVtbl->SetCenterX(This,center);
}
static inline HRESULT IDCompositionScaleTransform3D_SetCenterXAnimation(IDCompositionScaleTransform3D* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetCenterXAnimation(This,animation);
}
static inline HRESULT IDCompositionScaleTransform3D_SetCenterY(IDCompositionScaleTransform3D* This,float center) {
    return This->lpVtbl->SetCenterY(This,center);
}
static inline HRESULT IDCompositionScaleTransform3D_SetCenterYAnimation(IDCompositionScaleTransform3D* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetCenterYAnimation(This,animation);
}
static inline HRESULT IDCompositionScaleTransform3D_SetCenterZ(IDCompositionScaleTransform3D* This,float center) {
    return This->lpVtbl->SetCenterZ(This,center);
}
static inline HRESULT IDCompositionScaleTransform3D_SetCenterZAnimation(IDCompositionScaleTransform3D* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetCenterZAnimation(This,animation);
}
#endif
#endif

#endif


#endif  /* __IDCompositionScaleTransform3D_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionRotateTransform3D interface
 */
#ifndef __IDCompositionRotateTransform3D_INTERFACE_DEFINED__
#define __IDCompositionRotateTransform3D_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionRotateTransform3D, 0xd8f5b23f, 0xd429, 0x4a91, 0xb5,0x5a, 0xd2,0xf4,0x5f,0xd7,0x5b,0x18);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d8f5b23f-d429-4a91-b55a-d2f45fd75b18")
IDCompositionRotateTransform3D : public IDCompositionTransform3D
{
    virtual HRESULT STDMETHODCALLTYPE SetScaleX(
        float scale) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScaleXAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScaleY(
        float scale) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScaleYAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScaleZ(
        float scale) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScaleZAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterX(
        float center) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterXAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterY(
        float center) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterYAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterZ(
        float center) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterZAnimation(
        IDCompositionAnimation *animation) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionRotateTransform3D, 0xd8f5b23f, 0xd429, 0x4a91, 0xb5,0x5a, 0xd2,0xf4,0x5f,0xd7,0x5b,0x18)
#endif
#else
typedef struct IDCompositionRotateTransform3DVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionRotateTransform3D *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionRotateTransform3D *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionRotateTransform3D *This);

    /*** IDCompositionRotateTransform3D methods ***/
    HRESULT (STDMETHODCALLTYPE *SetScaleX)(
        IDCompositionRotateTransform3D *This,
        float scale);

    HRESULT (STDMETHODCALLTYPE *SetScaleXAnimation)(
        IDCompositionRotateTransform3D *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetScaleY)(
        IDCompositionRotateTransform3D *This,
        float scale);

    HRESULT (STDMETHODCALLTYPE *SetScaleYAnimation)(
        IDCompositionRotateTransform3D *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetScaleZ)(
        IDCompositionRotateTransform3D *This,
        float scale);

    HRESULT (STDMETHODCALLTYPE *SetScaleZAnimation)(
        IDCompositionRotateTransform3D *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetCenterX)(
        IDCompositionRotateTransform3D *This,
        float center);

    HRESULT (STDMETHODCALLTYPE *SetCenterXAnimation)(
        IDCompositionRotateTransform3D *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetCenterY)(
        IDCompositionRotateTransform3D *This,
        float center);

    HRESULT (STDMETHODCALLTYPE *SetCenterYAnimation)(
        IDCompositionRotateTransform3D *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetCenterZ)(
        IDCompositionRotateTransform3D *This,
        float center);

    HRESULT (STDMETHODCALLTYPE *SetCenterZAnimation)(
        IDCompositionRotateTransform3D *This,
        IDCompositionAnimation *animation);

    END_INTERFACE
} IDCompositionRotateTransform3DVtbl;

interface IDCompositionRotateTransform3D {
    CONST_VTBL IDCompositionRotateTransform3DVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionRotateTransform3D_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionRotateTransform3D_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionRotateTransform3D_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionRotateTransform3D methods ***/
#define IDCompositionRotateTransform3D_SetScaleX(This,scale) (This)->lpVtbl->SetScaleX(This,scale)
#define IDCompositionRotateTransform3D_SetScaleXAnimation(This,animation) (This)->lpVtbl->SetScaleXAnimation(This,animation)
#define IDCompositionRotateTransform3D_SetScaleY(This,scale) (This)->lpVtbl->SetScaleY(This,scale)
#define IDCompositionRotateTransform3D_SetScaleYAnimation(This,animation) (This)->lpVtbl->SetScaleYAnimation(This,animation)
#define IDCompositionRotateTransform3D_SetScaleZ(This,scale) (This)->lpVtbl->SetScaleZ(This,scale)
#define IDCompositionRotateTransform3D_SetScaleZAnimation(This,animation) (This)->lpVtbl->SetScaleZAnimation(This,animation)
#define IDCompositionRotateTransform3D_SetCenterX(This,center) (This)->lpVtbl->SetCenterX(This,center)
#define IDCompositionRotateTransform3D_SetCenterXAnimation(This,animation) (This)->lpVtbl->SetCenterXAnimation(This,animation)
#define IDCompositionRotateTransform3D_SetCenterY(This,center) (This)->lpVtbl->SetCenterY(This,center)
#define IDCompositionRotateTransform3D_SetCenterYAnimation(This,animation) (This)->lpVtbl->SetCenterYAnimation(This,animation)
#define IDCompositionRotateTransform3D_SetCenterZ(This,center) (This)->lpVtbl->SetCenterZ(This,center)
#define IDCompositionRotateTransform3D_SetCenterZAnimation(This,animation) (This)->lpVtbl->SetCenterZAnimation(This,animation)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionRotateTransform3D_QueryInterface(IDCompositionRotateTransform3D* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionRotateTransform3D_AddRef(IDCompositionRotateTransform3D* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionRotateTransform3D_Release(IDCompositionRotateTransform3D* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionRotateTransform3D methods ***/
static inline HRESULT IDCompositionRotateTransform3D_SetScaleX(IDCompositionRotateTransform3D* This,float scale) {
    return This->lpVtbl->SetScaleX(This,scale);
}
static inline HRESULT IDCompositionRotateTransform3D_SetScaleXAnimation(IDCompositionRotateTransform3D* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetScaleXAnimation(This,animation);
}
static inline HRESULT IDCompositionRotateTransform3D_SetScaleY(IDCompositionRotateTransform3D* This,float scale) {
    return This->lpVtbl->SetScaleY(This,scale);
}
static inline HRESULT IDCompositionRotateTransform3D_SetScaleYAnimation(IDCompositionRotateTransform3D* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetScaleYAnimation(This,animation);
}
static inline HRESULT IDCompositionRotateTransform3D_SetScaleZ(IDCompositionRotateTransform3D* This,float scale) {
    return This->lpVtbl->SetScaleZ(This,scale);
}
static inline HRESULT IDCompositionRotateTransform3D_SetScaleZAnimation(IDCompositionRotateTransform3D* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetScaleZAnimation(This,animation);
}
static inline HRESULT IDCompositionRotateTransform3D_SetCenterX(IDCompositionRotateTransform3D* This,float center) {
    return This->lpVtbl->SetCenterX(This,center);
}
static inline HRESULT IDCompositionRotateTransform3D_SetCenterXAnimation(IDCompositionRotateTransform3D* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetCenterXAnimation(This,animation);
}
static inline HRESULT IDCompositionRotateTransform3D_SetCenterY(IDCompositionRotateTransform3D* This,float center) {
    return This->lpVtbl->SetCenterY(This,center);
}
static inline HRESULT IDCompositionRotateTransform3D_SetCenterYAnimation(IDCompositionRotateTransform3D* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetCenterYAnimation(This,animation);
}
static inline HRESULT IDCompositionRotateTransform3D_SetCenterZ(IDCompositionRotateTransform3D* This,float center) {
    return This->lpVtbl->SetCenterZ(This,center);
}
static inline HRESULT IDCompositionRotateTransform3D_SetCenterZAnimation(IDCompositionRotateTransform3D* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetCenterZAnimation(This,animation);
}
#endif
#endif

#endif


#endif  /* __IDCompositionRotateTransform3D_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionMatrixTransform3D interface
 */
#ifndef __IDCompositionMatrixTransform3D_INTERFACE_DEFINED__
#define __IDCompositionMatrixTransform3D_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionMatrixTransform3D, 0x4b3363f0, 0x643b, 0x41b7, 0xb6,0xe0, 0xcc,0xf2,0x2d,0x34,0x46,0x7c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4b3363f0-643b-41b7-b6e0-ccf22d34467c")
IDCompositionMatrixTransform3D : public IDCompositionTransform3D
{
    virtual HRESULT STDMETHODCALLTYPE SetMatrix(
        const D3DMATRIX *matrix) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMatrixElement(
        int row,
        int column,
        float value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMatrixElementAnimation(
        int row,
        int column,
        IDCompositionAnimation *animation) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionMatrixTransform3D, 0x4b3363f0, 0x643b, 0x41b7, 0xb6,0xe0, 0xcc,0xf2,0x2d,0x34,0x46,0x7c)
#endif
#else
typedef struct IDCompositionMatrixTransform3DVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionMatrixTransform3D *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionMatrixTransform3D *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionMatrixTransform3D *This);

    /*** IDCompositionMatrixTransform3D methods ***/
    HRESULT (STDMETHODCALLTYPE *SetMatrix)(
        IDCompositionMatrixTransform3D *This,
        const D3DMATRIX *matrix);

    HRESULT (STDMETHODCALLTYPE *SetMatrixElement)(
        IDCompositionMatrixTransform3D *This,
        int row,
        int column,
        float value);

    HRESULT (STDMETHODCALLTYPE *SetMatrixElementAnimation)(
        IDCompositionMatrixTransform3D *This,
        int row,
        int column,
        IDCompositionAnimation *animation);

    END_INTERFACE
} IDCompositionMatrixTransform3DVtbl;

interface IDCompositionMatrixTransform3D {
    CONST_VTBL IDCompositionMatrixTransform3DVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionMatrixTransform3D_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionMatrixTransform3D_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionMatrixTransform3D_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionMatrixTransform3D methods ***/
#define IDCompositionMatrixTransform3D_SetMatrix(This,matrix) (This)->lpVtbl->SetMatrix(This,matrix)
#define IDCompositionMatrixTransform3D_SetMatrixElement(This,row,column,value) (This)->lpVtbl->SetMatrixElement(This,row,column,value)
#define IDCompositionMatrixTransform3D_SetMatrixElementAnimation(This,row,column,animation) (This)->lpVtbl->SetMatrixElementAnimation(This,row,column,animation)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionMatrixTransform3D_QueryInterface(IDCompositionMatrixTransform3D* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionMatrixTransform3D_AddRef(IDCompositionMatrixTransform3D* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionMatrixTransform3D_Release(IDCompositionMatrixTransform3D* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionMatrixTransform3D methods ***/
static inline HRESULT IDCompositionMatrixTransform3D_SetMatrix(IDCompositionMatrixTransform3D* This,const D3DMATRIX *matrix) {
    return This->lpVtbl->SetMatrix(This,matrix);
}
static inline HRESULT IDCompositionMatrixTransform3D_SetMatrixElement(IDCompositionMatrixTransform3D* This,int row,int column,float value) {
    return This->lpVtbl->SetMatrixElement(This,row,column,value);
}
static inline HRESULT IDCompositionMatrixTransform3D_SetMatrixElementAnimation(IDCompositionMatrixTransform3D* This,int row,int column,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetMatrixElementAnimation(This,row,column,animation);
}
#endif
#endif

#endif


#endif  /* __IDCompositionMatrixTransform3D_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionTransform interface
 */
#ifndef __IDCompositionTransform_INTERFACE_DEFINED__
#define __IDCompositionTransform_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionTransform, 0xfd55faa7, 0x37e0, 0x4c20, 0x95,0xd2, 0x9b,0xe4,0x5b,0xc3,0x3f,0x55);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fd55faa7-37e0-4c20-95d2-9be45bc33f55")
IDCompositionTransform : public IDCompositionTransform3D
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionTransform, 0xfd55faa7, 0x37e0, 0x4c20, 0x95,0xd2, 0x9b,0xe4,0x5b,0xc3,0x3f,0x55)
#endif
#else
typedef struct IDCompositionTransformVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionTransform *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionTransform *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionTransform *This);

    END_INTERFACE
} IDCompositionTransformVtbl;

interface IDCompositionTransform {
    CONST_VTBL IDCompositionTransformVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionTransform_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionTransform_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionTransform_Release(This) (This)->lpVtbl->Release(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionTransform_QueryInterface(IDCompositionTransform* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionTransform_AddRef(IDCompositionTransform* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionTransform_Release(IDCompositionTransform* This) {
    return This->lpVtbl->Release(This);
}
#endif
#endif

#endif


#endif  /* __IDCompositionTransform_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionScaleTransform interface
 */
#ifndef __IDCompositionScaleTransform_INTERFACE_DEFINED__
#define __IDCompositionScaleTransform_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionScaleTransform, 0x71fde914, 0x40ef, 0x45ef, 0xbd,0x51, 0x68,0xb0,0x37,0xc3,0x39,0xf9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("71fde914-40ef-45ef-bd51-68b037c339f9")
IDCompositionScaleTransform : public IDCompositionTransform
{
    virtual HRESULT STDMETHODCALLTYPE SetScaleX(
        float scale) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScaleXAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScaleY(
        float scale) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScaleYAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterX(
        float center) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterXAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterY(
        float center) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterYAnimation(
        IDCompositionAnimation *animation) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionScaleTransform, 0x71fde914, 0x40ef, 0x45ef, 0xbd,0x51, 0x68,0xb0,0x37,0xc3,0x39,0xf9)
#endif
#else
typedef struct IDCompositionScaleTransformVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionScaleTransform *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionScaleTransform *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionScaleTransform *This);

    /*** IDCompositionScaleTransform methods ***/
    HRESULT (STDMETHODCALLTYPE *SetScaleX)(
        IDCompositionScaleTransform *This,
        float scale);

    HRESULT (STDMETHODCALLTYPE *SetScaleXAnimation)(
        IDCompositionScaleTransform *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetScaleY)(
        IDCompositionScaleTransform *This,
        float scale);

    HRESULT (STDMETHODCALLTYPE *SetScaleYAnimation)(
        IDCompositionScaleTransform *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetCenterX)(
        IDCompositionScaleTransform *This,
        float center);

    HRESULT (STDMETHODCALLTYPE *SetCenterXAnimation)(
        IDCompositionScaleTransform *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetCenterY)(
        IDCompositionScaleTransform *This,
        float center);

    HRESULT (STDMETHODCALLTYPE *SetCenterYAnimation)(
        IDCompositionScaleTransform *This,
        IDCompositionAnimation *animation);

    END_INTERFACE
} IDCompositionScaleTransformVtbl;

interface IDCompositionScaleTransform {
    CONST_VTBL IDCompositionScaleTransformVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionScaleTransform_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionScaleTransform_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionScaleTransform_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionScaleTransform methods ***/
#define IDCompositionScaleTransform_SetScaleX(This,scale) (This)->lpVtbl->SetScaleX(This,scale)
#define IDCompositionScaleTransform_SetScaleXAnimation(This,animation) (This)->lpVtbl->SetScaleXAnimation(This,animation)
#define IDCompositionScaleTransform_SetScaleY(This,scale) (This)->lpVtbl->SetScaleY(This,scale)
#define IDCompositionScaleTransform_SetScaleYAnimation(This,animation) (This)->lpVtbl->SetScaleYAnimation(This,animation)
#define IDCompositionScaleTransform_SetCenterX(This,center) (This)->lpVtbl->SetCenterX(This,center)
#define IDCompositionScaleTransform_SetCenterXAnimation(This,animation) (This)->lpVtbl->SetCenterXAnimation(This,animation)
#define IDCompositionScaleTransform_SetCenterY(This,center) (This)->lpVtbl->SetCenterY(This,center)
#define IDCompositionScaleTransform_SetCenterYAnimation(This,animation) (This)->lpVtbl->SetCenterYAnimation(This,animation)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionScaleTransform_QueryInterface(IDCompositionScaleTransform* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionScaleTransform_AddRef(IDCompositionScaleTransform* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionScaleTransform_Release(IDCompositionScaleTransform* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionScaleTransform methods ***/
static inline HRESULT IDCompositionScaleTransform_SetScaleX(IDCompositionScaleTransform* This,float scale) {
    return This->lpVtbl->SetScaleX(This,scale);
}
static inline HRESULT IDCompositionScaleTransform_SetScaleXAnimation(IDCompositionScaleTransform* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetScaleXAnimation(This,animation);
}
static inline HRESULT IDCompositionScaleTransform_SetScaleY(IDCompositionScaleTransform* This,float scale) {
    return This->lpVtbl->SetScaleY(This,scale);
}
static inline HRESULT IDCompositionScaleTransform_SetScaleYAnimation(IDCompositionScaleTransform* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetScaleYAnimation(This,animation);
}
static inline HRESULT IDCompositionScaleTransform_SetCenterX(IDCompositionScaleTransform* This,float center) {
    return This->lpVtbl->SetCenterX(This,center);
}
static inline HRESULT IDCompositionScaleTransform_SetCenterXAnimation(IDCompositionScaleTransform* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetCenterXAnimation(This,animation);
}
static inline HRESULT IDCompositionScaleTransform_SetCenterY(IDCompositionScaleTransform* This,float center) {
    return This->lpVtbl->SetCenterY(This,center);
}
static inline HRESULT IDCompositionScaleTransform_SetCenterYAnimation(IDCompositionScaleTransform* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetCenterYAnimation(This,animation);
}
#endif
#endif

#endif


#endif  /* __IDCompositionScaleTransform_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionRotateTransform interface
 */
#ifndef __IDCompositionRotateTransform_INTERFACE_DEFINED__
#define __IDCompositionRotateTransform_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionRotateTransform, 0x641ed83c, 0xae96, 0x46c5, 0x90,0xdc, 0x32,0x77,0x4c,0xc5,0xc6,0xd5);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("641ed83c-ae96-46c5-90dc-32774cc5c6d5")
IDCompositionRotateTransform : public IDCompositionTransform
{
    virtual HRESULT STDMETHODCALLTYPE SetAngle(
        float angle) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAngleAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterX(
        float center_x) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterXAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterY(
        float center_y) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterYAnimation(
        IDCompositionAnimation *animation) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionRotateTransform, 0x641ed83c, 0xae96, 0x46c5, 0x90,0xdc, 0x32,0x77,0x4c,0xc5,0xc6,0xd5)
#endif
#else
typedef struct IDCompositionRotateTransformVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionRotateTransform *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionRotateTransform *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionRotateTransform *This);

    /*** IDCompositionRotateTransform methods ***/
    HRESULT (STDMETHODCALLTYPE *SetAngle)(
        IDCompositionRotateTransform *This,
        float angle);

    HRESULT (STDMETHODCALLTYPE *SetAngleAnimation)(
        IDCompositionRotateTransform *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetCenterX)(
        IDCompositionRotateTransform *This,
        float center_x);

    HRESULT (STDMETHODCALLTYPE *SetCenterXAnimation)(
        IDCompositionRotateTransform *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetCenterY)(
        IDCompositionRotateTransform *This,
        float center_y);

    HRESULT (STDMETHODCALLTYPE *SetCenterYAnimation)(
        IDCompositionRotateTransform *This,
        IDCompositionAnimation *animation);

    END_INTERFACE
} IDCompositionRotateTransformVtbl;

interface IDCompositionRotateTransform {
    CONST_VTBL IDCompositionRotateTransformVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionRotateTransform_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionRotateTransform_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionRotateTransform_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionRotateTransform methods ***/
#define IDCompositionRotateTransform_SetAngle(This,angle) (This)->lpVtbl->SetAngle(This,angle)
#define IDCompositionRotateTransform_SetAngleAnimation(This,animation) (This)->lpVtbl->SetAngleAnimation(This,animation)
#define IDCompositionRotateTransform_SetCenterX(This,center_x) (This)->lpVtbl->SetCenterX(This,center_x)
#define IDCompositionRotateTransform_SetCenterXAnimation(This,animation) (This)->lpVtbl->SetCenterXAnimation(This,animation)
#define IDCompositionRotateTransform_SetCenterY(This,center_y) (This)->lpVtbl->SetCenterY(This,center_y)
#define IDCompositionRotateTransform_SetCenterYAnimation(This,animation) (This)->lpVtbl->SetCenterYAnimation(This,animation)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionRotateTransform_QueryInterface(IDCompositionRotateTransform* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionRotateTransform_AddRef(IDCompositionRotateTransform* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionRotateTransform_Release(IDCompositionRotateTransform* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionRotateTransform methods ***/
static inline HRESULT IDCompositionRotateTransform_SetAngle(IDCompositionRotateTransform* This,float angle) {
    return This->lpVtbl->SetAngle(This,angle);
}
static inline HRESULT IDCompositionRotateTransform_SetAngleAnimation(IDCompositionRotateTransform* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetAngleAnimation(This,animation);
}
static inline HRESULT IDCompositionRotateTransform_SetCenterX(IDCompositionRotateTransform* This,float center_x) {
    return This->lpVtbl->SetCenterX(This,center_x);
}
static inline HRESULT IDCompositionRotateTransform_SetCenterXAnimation(IDCompositionRotateTransform* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetCenterXAnimation(This,animation);
}
static inline HRESULT IDCompositionRotateTransform_SetCenterY(IDCompositionRotateTransform* This,float center_y) {
    return This->lpVtbl->SetCenterY(This,center_y);
}
static inline HRESULT IDCompositionRotateTransform_SetCenterYAnimation(IDCompositionRotateTransform* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetCenterYAnimation(This,animation);
}
#endif
#endif

#endif


#endif  /* __IDCompositionRotateTransform_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionSkewTransform interface
 */
#ifndef __IDCompositionSkewTransform_INTERFACE_DEFINED__
#define __IDCompositionSkewTransform_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionSkewTransform, 0xe57aa735, 0xdcdb, 0x4c72, 0x9c,0x61, 0x05,0x91,0xf5,0x88,0x89,0xee);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e57aa735-dcdb-4c72-9c61-0591f58889ee")
IDCompositionSkewTransform : public IDCompositionTransform
{
    virtual HRESULT STDMETHODCALLTYPE SetAngleX(
        float angle) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAngleXAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAngleY(
        float angle) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAngleYAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterX(
        float center) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterXAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterY(
        float center) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCenterYAnimation(
        IDCompositionAnimation *animation) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionSkewTransform, 0xe57aa735, 0xdcdb, 0x4c72, 0x9c,0x61, 0x05,0x91,0xf5,0x88,0x89,0xee)
#endif
#else
typedef struct IDCompositionSkewTransformVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionSkewTransform *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionSkewTransform *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionSkewTransform *This);

    /*** IDCompositionSkewTransform methods ***/
    HRESULT (STDMETHODCALLTYPE *SetAngleX)(
        IDCompositionSkewTransform *This,
        float angle);

    HRESULT (STDMETHODCALLTYPE *SetAngleXAnimation)(
        IDCompositionSkewTransform *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetAngleY)(
        IDCompositionSkewTransform *This,
        float angle);

    HRESULT (STDMETHODCALLTYPE *SetAngleYAnimation)(
        IDCompositionSkewTransform *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetCenterX)(
        IDCompositionSkewTransform *This,
        float center);

    HRESULT (STDMETHODCALLTYPE *SetCenterXAnimation)(
        IDCompositionSkewTransform *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetCenterY)(
        IDCompositionSkewTransform *This,
        float center);

    HRESULT (STDMETHODCALLTYPE *SetCenterYAnimation)(
        IDCompositionSkewTransform *This,
        IDCompositionAnimation *animation);

    END_INTERFACE
} IDCompositionSkewTransformVtbl;

interface IDCompositionSkewTransform {
    CONST_VTBL IDCompositionSkewTransformVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionSkewTransform_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionSkewTransform_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionSkewTransform_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionSkewTransform methods ***/
#define IDCompositionSkewTransform_SetAngleX(This,angle) (This)->lpVtbl->SetAngleX(This,angle)
#define IDCompositionSkewTransform_SetAngleXAnimation(This,animation) (This)->lpVtbl->SetAngleXAnimation(This,animation)
#define IDCompositionSkewTransform_SetAngleY(This,angle) (This)->lpVtbl->SetAngleY(This,angle)
#define IDCompositionSkewTransform_SetAngleYAnimation(This,animation) (This)->lpVtbl->SetAngleYAnimation(This,animation)
#define IDCompositionSkewTransform_SetCenterX(This,center) (This)->lpVtbl->SetCenterX(This,center)
#define IDCompositionSkewTransform_SetCenterXAnimation(This,animation) (This)->lpVtbl->SetCenterXAnimation(This,animation)
#define IDCompositionSkewTransform_SetCenterY(This,center) (This)->lpVtbl->SetCenterY(This,center)
#define IDCompositionSkewTransform_SetCenterYAnimation(This,animation) (This)->lpVtbl->SetCenterYAnimation(This,animation)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionSkewTransform_QueryInterface(IDCompositionSkewTransform* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionSkewTransform_AddRef(IDCompositionSkewTransform* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionSkewTransform_Release(IDCompositionSkewTransform* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionSkewTransform methods ***/
static inline HRESULT IDCompositionSkewTransform_SetAngleX(IDCompositionSkewTransform* This,float angle) {
    return This->lpVtbl->SetAngleX(This,angle);
}
static inline HRESULT IDCompositionSkewTransform_SetAngleXAnimation(IDCompositionSkewTransform* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetAngleXAnimation(This,animation);
}
static inline HRESULT IDCompositionSkewTransform_SetAngleY(IDCompositionSkewTransform* This,float angle) {
    return This->lpVtbl->SetAngleY(This,angle);
}
static inline HRESULT IDCompositionSkewTransform_SetAngleYAnimation(IDCompositionSkewTransform* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetAngleYAnimation(This,animation);
}
static inline HRESULT IDCompositionSkewTransform_SetCenterX(IDCompositionSkewTransform* This,float center) {
    return This->lpVtbl->SetCenterX(This,center);
}
static inline HRESULT IDCompositionSkewTransform_SetCenterXAnimation(IDCompositionSkewTransform* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetCenterXAnimation(This,animation);
}
static inline HRESULT IDCompositionSkewTransform_SetCenterY(IDCompositionSkewTransform* This,float center) {
    return This->lpVtbl->SetCenterY(This,center);
}
static inline HRESULT IDCompositionSkewTransform_SetCenterYAnimation(IDCompositionSkewTransform* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetCenterYAnimation(This,animation);
}
#endif
#endif

#endif


#endif  /* __IDCompositionSkewTransform_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionMatrixTransform interface
 */
#ifndef __IDCompositionMatrixTransform_INTERFACE_DEFINED__
#define __IDCompositionMatrixTransform_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionMatrixTransform, 0x16cdff07, 0xc503, 0x419c, 0x83,0xf2, 0x09,0x65,0xc7,0xaf,0x1f,0xa6);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("16cdff07-c503-419c-83f2-0965c7af1fa6")
IDCompositionMatrixTransform : public IDCompositionTransform
{
    virtual HRESULT STDMETHODCALLTYPE SetMatrix(
        const D2D_MATRIX_3X2_F *matrix) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMatrixElement(
        int row,
        int column,
        float value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMatrixElementAnimation(
        int row,
        int column,
        IDCompositionAnimation *animation) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionMatrixTransform, 0x16cdff07, 0xc503, 0x419c, 0x83,0xf2, 0x09,0x65,0xc7,0xaf,0x1f,0xa6)
#endif
#else
typedef struct IDCompositionMatrixTransformVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionMatrixTransform *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionMatrixTransform *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionMatrixTransform *This);

    /*** IDCompositionMatrixTransform methods ***/
    HRESULT (STDMETHODCALLTYPE *SetMatrix)(
        IDCompositionMatrixTransform *This,
        const D2D_MATRIX_3X2_F *matrix);

    HRESULT (STDMETHODCALLTYPE *SetMatrixElement)(
        IDCompositionMatrixTransform *This,
        int row,
        int column,
        float value);

    HRESULT (STDMETHODCALLTYPE *SetMatrixElementAnimation)(
        IDCompositionMatrixTransform *This,
        int row,
        int column,
        IDCompositionAnimation *animation);

    END_INTERFACE
} IDCompositionMatrixTransformVtbl;

interface IDCompositionMatrixTransform {
    CONST_VTBL IDCompositionMatrixTransformVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionMatrixTransform_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionMatrixTransform_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionMatrixTransform_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionMatrixTransform methods ***/
#define IDCompositionMatrixTransform_SetMatrix(This,matrix) (This)->lpVtbl->SetMatrix(This,matrix)
#define IDCompositionMatrixTransform_SetMatrixElement(This,row,column,value) (This)->lpVtbl->SetMatrixElement(This,row,column,value)
#define IDCompositionMatrixTransform_SetMatrixElementAnimation(This,row,column,animation) (This)->lpVtbl->SetMatrixElementAnimation(This,row,column,animation)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionMatrixTransform_QueryInterface(IDCompositionMatrixTransform* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionMatrixTransform_AddRef(IDCompositionMatrixTransform* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionMatrixTransform_Release(IDCompositionMatrixTransform* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionMatrixTransform methods ***/
static inline HRESULT IDCompositionMatrixTransform_SetMatrix(IDCompositionMatrixTransform* This,const D2D_MATRIX_3X2_F *matrix) {
    return This->lpVtbl->SetMatrix(This,matrix);
}
static inline HRESULT IDCompositionMatrixTransform_SetMatrixElement(IDCompositionMatrixTransform* This,int row,int column,float value) {
    return This->lpVtbl->SetMatrixElement(This,row,column,value);
}
static inline HRESULT IDCompositionMatrixTransform_SetMatrixElementAnimation(IDCompositionMatrixTransform* This,int row,int column,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetMatrixElementAnimation(This,row,column,animation);
}
#endif
#endif

#endif


#endif  /* __IDCompositionMatrixTransform_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionTranslateTransform interface
 */
#ifndef __IDCompositionTranslateTransform_INTERFACE_DEFINED__
#define __IDCompositionTranslateTransform_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionTranslateTransform, 0x06791122, 0xc6f0, 0x417d, 0x83,0x23, 0x26,0x9e,0x98,0x7f,0x59,0x54);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("06791122-c6f0-417d-8323-269e987f5954")
IDCompositionTranslateTransform : public IDCompositionTransform
{
    virtual HRESULT STDMETHODCALLTYPE SetOffsetX(
        float offset) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOffsetXAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOffsetY(
        float offset) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOffsetYAnimation(
        IDCompositionAnimation *animation) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionTranslateTransform, 0x06791122, 0xc6f0, 0x417d, 0x83,0x23, 0x26,0x9e,0x98,0x7f,0x59,0x54)
#endif
#else
typedef struct IDCompositionTranslateTransformVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionTranslateTransform *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionTranslateTransform *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionTranslateTransform *This);

    /*** IDCompositionTranslateTransform methods ***/
    HRESULT (STDMETHODCALLTYPE *SetOffsetX)(
        IDCompositionTranslateTransform *This,
        float offset);

    HRESULT (STDMETHODCALLTYPE *SetOffsetXAnimation)(
        IDCompositionTranslateTransform *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetOffsetY)(
        IDCompositionTranslateTransform *This,
        float offset);

    HRESULT (STDMETHODCALLTYPE *SetOffsetYAnimation)(
        IDCompositionTranslateTransform *This,
        IDCompositionAnimation *animation);

    END_INTERFACE
} IDCompositionTranslateTransformVtbl;

interface IDCompositionTranslateTransform {
    CONST_VTBL IDCompositionTranslateTransformVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionTranslateTransform_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionTranslateTransform_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionTranslateTransform_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionTranslateTransform methods ***/
#define IDCompositionTranslateTransform_SetOffsetX(This,offset) (This)->lpVtbl->SetOffsetX(This,offset)
#define IDCompositionTranslateTransform_SetOffsetXAnimation(This,animation) (This)->lpVtbl->SetOffsetXAnimation(This,animation)
#define IDCompositionTranslateTransform_SetOffsetY(This,offset) (This)->lpVtbl->SetOffsetY(This,offset)
#define IDCompositionTranslateTransform_SetOffsetYAnimation(This,animation) (This)->lpVtbl->SetOffsetYAnimation(This,animation)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionTranslateTransform_QueryInterface(IDCompositionTranslateTransform* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionTranslateTransform_AddRef(IDCompositionTranslateTransform* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionTranslateTransform_Release(IDCompositionTranslateTransform* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionTranslateTransform methods ***/
static inline HRESULT IDCompositionTranslateTransform_SetOffsetX(IDCompositionTranslateTransform* This,float offset) {
    return This->lpVtbl->SetOffsetX(This,offset);
}
static inline HRESULT IDCompositionTranslateTransform_SetOffsetXAnimation(IDCompositionTranslateTransform* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetOffsetXAnimation(This,animation);
}
static inline HRESULT IDCompositionTranslateTransform_SetOffsetY(IDCompositionTranslateTransform* This,float offset) {
    return This->lpVtbl->SetOffsetY(This,offset);
}
static inline HRESULT IDCompositionTranslateTransform_SetOffsetYAnimation(IDCompositionTranslateTransform* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetOffsetYAnimation(This,animation);
}
#endif
#endif

#endif


#endif  /* __IDCompositionTranslateTransform_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionVisual interface
 */
#ifndef __IDCompositionVisual_INTERFACE_DEFINED__
#define __IDCompositionVisual_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionVisual, 0x4d93059d, 0x097b, 0x4651, 0x9a,0x60, 0xf0,0xf2,0x51,0x16,0xe2,0xf3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4d93059d-097b-4651-9a60-f0f25116e2f3")
IDCompositionVisual : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetOffsetX(
        float offset_x) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOffsetXAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOffsetY(
        float offset_y) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOffsetYAnimation(
        IDCompositionAnimation *animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTransform(
        const D2D_MATRIX_3X2_F *matrix) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTransformObject(
        IDCompositionTransform *transform) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTransformParent(
        IDCompositionVisual *visual) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetEffect(
        IDCompositionEffect *effect) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBitmapInterpolationMode(
        enum DCOMPOSITION_BITMAP_INTERPOLATION_MODE interpolation_mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBorderMode(
        enum DCOMPOSITION_BORDER_MODE border_mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetClip(
        const D2D_RECT_F *rect) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetClipObject(
        IDCompositionClip *clip) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetContent(
        IUnknown *content) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddVisual(
        IDCompositionVisual *visual,
        BOOL insert_above,
        IDCompositionVisual *reference_visual) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveVisual(
        IDCompositionVisual *visual) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveAllVisuals(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCompositeMode(
        enum DCOMPOSITION_COMPOSITE_MODE composite_mode) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionVisual, 0x4d93059d, 0x097b, 0x4651, 0x9a,0x60, 0xf0,0xf2,0x51,0x16,0xe2,0xf3)
#endif
#else
typedef struct IDCompositionVisualVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionVisual *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionVisual *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionVisual *This);

    /*** IDCompositionVisual methods ***/
    HRESULT (STDMETHODCALLTYPE *SetOffsetX)(
        IDCompositionVisual *This,
        float offset_x);

    HRESULT (STDMETHODCALLTYPE *SetOffsetXAnimation)(
        IDCompositionVisual *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetOffsetY)(
        IDCompositionVisual *This,
        float offset_y);

    HRESULT (STDMETHODCALLTYPE *SetOffsetYAnimation)(
        IDCompositionVisual *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetTransform)(
        IDCompositionVisual *This,
        const D2D_MATRIX_3X2_F *matrix);

    HRESULT (STDMETHODCALLTYPE *SetTransformObject)(
        IDCompositionVisual *This,
        IDCompositionTransform *transform);

    HRESULT (STDMETHODCALLTYPE *SetTransformParent)(
        IDCompositionVisual *This,
        IDCompositionVisual *visual);

    HRESULT (STDMETHODCALLTYPE *SetEffect)(
        IDCompositionVisual *This,
        IDCompositionEffect *effect);

    HRESULT (STDMETHODCALLTYPE *SetBitmapInterpolationMode)(
        IDCompositionVisual *This,
        enum DCOMPOSITION_BITMAP_INTERPOLATION_MODE interpolation_mode);

    HRESULT (STDMETHODCALLTYPE *SetBorderMode)(
        IDCompositionVisual *This,
        enum DCOMPOSITION_BORDER_MODE border_mode);

    HRESULT (STDMETHODCALLTYPE *SetClip)(
        IDCompositionVisual *This,
        const D2D_RECT_F *rect);

    HRESULT (STDMETHODCALLTYPE *SetClipObject)(
        IDCompositionVisual *This,
        IDCompositionClip *clip);

    HRESULT (STDMETHODCALLTYPE *SetContent)(
        IDCompositionVisual *This,
        IUnknown *content);

    HRESULT (STDMETHODCALLTYPE *AddVisual)(
        IDCompositionVisual *This,
        IDCompositionVisual *visual,
        BOOL insert_above,
        IDCompositionVisual *reference_visual);

    HRESULT (STDMETHODCALLTYPE *RemoveVisual)(
        IDCompositionVisual *This,
        IDCompositionVisual *visual);

    HRESULT (STDMETHODCALLTYPE *RemoveAllVisuals)(
        IDCompositionVisual *This);

    HRESULT (STDMETHODCALLTYPE *SetCompositeMode)(
        IDCompositionVisual *This,
        enum DCOMPOSITION_COMPOSITE_MODE composite_mode);

    END_INTERFACE
} IDCompositionVisualVtbl;

interface IDCompositionVisual {
    CONST_VTBL IDCompositionVisualVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionVisual_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionVisual_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionVisual_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionVisual methods ***/
#define IDCompositionVisual_SetOffsetX(This,offset_x) (This)->lpVtbl->SetOffsetX(This,offset_x)
#define IDCompositionVisual_SetOffsetXAnimation(This,animation) (This)->lpVtbl->SetOffsetXAnimation(This,animation)
#define IDCompositionVisual_SetOffsetY(This,offset_y) (This)->lpVtbl->SetOffsetY(This,offset_y)
#define IDCompositionVisual_SetOffsetYAnimation(This,animation) (This)->lpVtbl->SetOffsetYAnimation(This,animation)
#define IDCompositionVisual_SetTransform(This,matrix) (This)->lpVtbl->SetTransform(This,matrix)
#define IDCompositionVisual_SetTransformObject(This,transform) (This)->lpVtbl->SetTransformObject(This,transform)
#define IDCompositionVisual_SetTransformParent(This,visual) (This)->lpVtbl->SetTransformParent(This,visual)
#define IDCompositionVisual_SetEffect(This,effect) (This)->lpVtbl->SetEffect(This,effect)
#define IDCompositionVisual_SetBitmapInterpolationMode(This,interpolation_mode) (This)->lpVtbl->SetBitmapInterpolationMode(This,interpolation_mode)
#define IDCompositionVisual_SetBorderMode(This,border_mode) (This)->lpVtbl->SetBorderMode(This,border_mode)
#define IDCompositionVisual_SetClip(This,rect) (This)->lpVtbl->SetClip(This,rect)
#define IDCompositionVisual_SetClipObject(This,clip) (This)->lpVtbl->SetClipObject(This,clip)
#define IDCompositionVisual_SetContent(This,content) (This)->lpVtbl->SetContent(This,content)
#define IDCompositionVisual_AddVisual(This,visual,insert_above,reference_visual) (This)->lpVtbl->AddVisual(This,visual,insert_above,reference_visual)
#define IDCompositionVisual_RemoveVisual(This,visual) (This)->lpVtbl->RemoveVisual(This,visual)
#define IDCompositionVisual_RemoveAllVisuals(This) (This)->lpVtbl->RemoveAllVisuals(This)
#define IDCompositionVisual_SetCompositeMode(This,composite_mode) (This)->lpVtbl->SetCompositeMode(This,composite_mode)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionVisual_QueryInterface(IDCompositionVisual* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionVisual_AddRef(IDCompositionVisual* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionVisual_Release(IDCompositionVisual* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionVisual methods ***/
static inline HRESULT IDCompositionVisual_SetOffsetX(IDCompositionVisual* This,float offset_x) {
    return This->lpVtbl->SetOffsetX(This,offset_x);
}
static inline HRESULT IDCompositionVisual_SetOffsetXAnimation(IDCompositionVisual* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetOffsetXAnimation(This,animation);
}
static inline HRESULT IDCompositionVisual_SetOffsetY(IDCompositionVisual* This,float offset_y) {
    return This->lpVtbl->SetOffsetY(This,offset_y);
}
static inline HRESULT IDCompositionVisual_SetOffsetYAnimation(IDCompositionVisual* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetOffsetYAnimation(This,animation);
}
static inline HRESULT IDCompositionVisual_SetTransform(IDCompositionVisual* This,const D2D_MATRIX_3X2_F *matrix) {
    return This->lpVtbl->SetTransform(This,matrix);
}
static inline HRESULT IDCompositionVisual_SetTransformObject(IDCompositionVisual* This,IDCompositionTransform *transform) {
    return This->lpVtbl->SetTransformObject(This,transform);
}
static inline HRESULT IDCompositionVisual_SetTransformParent(IDCompositionVisual* This,IDCompositionVisual *visual) {
    return This->lpVtbl->SetTransformParent(This,visual);
}
static inline HRESULT IDCompositionVisual_SetEffect(IDCompositionVisual* This,IDCompositionEffect *effect) {
    return This->lpVtbl->SetEffect(This,effect);
}
static inline HRESULT IDCompositionVisual_SetBitmapInterpolationMode(IDCompositionVisual* This,enum DCOMPOSITION_BITMAP_INTERPOLATION_MODE interpolation_mode) {
    return This->lpVtbl->SetBitmapInterpolationMode(This,interpolation_mode);
}
static inline HRESULT IDCompositionVisual_SetBorderMode(IDCompositionVisual* This,enum DCOMPOSITION_BORDER_MODE border_mode) {
    return This->lpVtbl->SetBorderMode(This,border_mode);
}
static inline HRESULT IDCompositionVisual_SetClip(IDCompositionVisual* This,const D2D_RECT_F *rect) {
    return This->lpVtbl->SetClip(This,rect);
}
static inline HRESULT IDCompositionVisual_SetClipObject(IDCompositionVisual* This,IDCompositionClip *clip) {
    return This->lpVtbl->SetClipObject(This,clip);
}
static inline HRESULT IDCompositionVisual_SetContent(IDCompositionVisual* This,IUnknown *content) {
    return This->lpVtbl->SetContent(This,content);
}
static inline HRESULT IDCompositionVisual_AddVisual(IDCompositionVisual* This,IDCompositionVisual *visual,BOOL insert_above,IDCompositionVisual *reference_visual) {
    return This->lpVtbl->AddVisual(This,visual,insert_above,reference_visual);
}
static inline HRESULT IDCompositionVisual_RemoveVisual(IDCompositionVisual* This,IDCompositionVisual *visual) {
    return This->lpVtbl->RemoveVisual(This,visual);
}
static inline HRESULT IDCompositionVisual_RemoveAllVisuals(IDCompositionVisual* This) {
    return This->lpVtbl->RemoveAllVisuals(This);
}
static inline HRESULT IDCompositionVisual_SetCompositeMode(IDCompositionVisual* This,enum DCOMPOSITION_COMPOSITE_MODE composite_mode) {
    return This->lpVtbl->SetCompositeMode(This,composite_mode);
}
#endif
#endif

#endif


#endif  /* __IDCompositionVisual_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionVisual2 interface
 */
#ifndef __IDCompositionVisual2_INTERFACE_DEFINED__
#define __IDCompositionVisual2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionVisual2, 0xe8de1639, 0x4331, 0x4b26, 0xbc,0x5f, 0x6a,0x32,0x1d,0x34,0x7a,0x85);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e8de1639-4331-4b26-bc5f-6a321d347a85")
IDCompositionVisual2 : public IDCompositionVisual
{
    virtual HRESULT STDMETHODCALLTYPE SetOpacityMode(
        enum DCOMPOSITION_OPACITY_MODE opacity_mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBackFaceVisibility(
        enum DCOMPOSITION_BACKFACE_VISIBILITY visibility) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionVisual2, 0xe8de1639, 0x4331, 0x4b26, 0xbc,0x5f, 0x6a,0x32,0x1d,0x34,0x7a,0x85)
#endif
#else
typedef struct IDCompositionVisual2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionVisual2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionVisual2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionVisual2 *This);

    /*** IDCompositionVisual methods ***/
    HRESULT (STDMETHODCALLTYPE *SetOffsetX)(
        IDCompositionVisual2 *This,
        float offset_x);

    HRESULT (STDMETHODCALLTYPE *SetOffsetXAnimation)(
        IDCompositionVisual2 *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetOffsetY)(
        IDCompositionVisual2 *This,
        float offset_y);

    HRESULT (STDMETHODCALLTYPE *SetOffsetYAnimation)(
        IDCompositionVisual2 *This,
        IDCompositionAnimation *animation);

    HRESULT (STDMETHODCALLTYPE *SetTransform)(
        IDCompositionVisual2 *This,
        const D2D_MATRIX_3X2_F *matrix);

    HRESULT (STDMETHODCALLTYPE *SetTransformObject)(
        IDCompositionVisual2 *This,
        IDCompositionTransform *transform);

    HRESULT (STDMETHODCALLTYPE *SetTransformParent)(
        IDCompositionVisual2 *This,
        IDCompositionVisual *visual);

    HRESULT (STDMETHODCALLTYPE *SetEffect)(
        IDCompositionVisual2 *This,
        IDCompositionEffect *effect);

    HRESULT (STDMETHODCALLTYPE *SetBitmapInterpolationMode)(
        IDCompositionVisual2 *This,
        enum DCOMPOSITION_BITMAP_INTERPOLATION_MODE interpolation_mode);

    HRESULT (STDMETHODCALLTYPE *SetBorderMode)(
        IDCompositionVisual2 *This,
        enum DCOMPOSITION_BORDER_MODE border_mode);

    HRESULT (STDMETHODCALLTYPE *SetClip)(
        IDCompositionVisual2 *This,
        const D2D_RECT_F *rect);

    HRESULT (STDMETHODCALLTYPE *SetClipObject)(
        IDCompositionVisual2 *This,
        IDCompositionClip *clip);

    HRESULT (STDMETHODCALLTYPE *SetContent)(
        IDCompositionVisual2 *This,
        IUnknown *content);

    HRESULT (STDMETHODCALLTYPE *AddVisual)(
        IDCompositionVisual2 *This,
        IDCompositionVisual *visual,
        BOOL insert_above,
        IDCompositionVisual *reference_visual);

    HRESULT (STDMETHODCALLTYPE *RemoveVisual)(
        IDCompositionVisual2 *This,
        IDCompositionVisual *visual);

    HRESULT (STDMETHODCALLTYPE *RemoveAllVisuals)(
        IDCompositionVisual2 *This);

    HRESULT (STDMETHODCALLTYPE *SetCompositeMode)(
        IDCompositionVisual2 *This,
        enum DCOMPOSITION_COMPOSITE_MODE composite_mode);

    /*** IDCompositionVisual2 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetOpacityMode)(
        IDCompositionVisual2 *This,
        enum DCOMPOSITION_OPACITY_MODE opacity_mode);

    HRESULT (STDMETHODCALLTYPE *SetBackFaceVisibility)(
        IDCompositionVisual2 *This,
        enum DCOMPOSITION_BACKFACE_VISIBILITY visibility);

    END_INTERFACE
} IDCompositionVisual2Vtbl;

interface IDCompositionVisual2 {
    CONST_VTBL IDCompositionVisual2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionVisual2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionVisual2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionVisual2_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionVisual methods ***/
#define IDCompositionVisual2_SetOffsetX(This,offset_x) (This)->lpVtbl->SetOffsetX(This,offset_x)
#define IDCompositionVisual2_SetOffsetXAnimation(This,animation) (This)->lpVtbl->SetOffsetXAnimation(This,animation)
#define IDCompositionVisual2_SetOffsetY(This,offset_y) (This)->lpVtbl->SetOffsetY(This,offset_y)
#define IDCompositionVisual2_SetOffsetYAnimation(This,animation) (This)->lpVtbl->SetOffsetYAnimation(This,animation)
#define IDCompositionVisual2_SetTransform(This,matrix) (This)->lpVtbl->SetTransform(This,matrix)
#define IDCompositionVisual2_SetTransformObject(This,transform) (This)->lpVtbl->SetTransformObject(This,transform)
#define IDCompositionVisual2_SetTransformParent(This,visual) (This)->lpVtbl->SetTransformParent(This,visual)
#define IDCompositionVisual2_SetEffect(This,effect) (This)->lpVtbl->SetEffect(This,effect)
#define IDCompositionVisual2_SetBitmapInterpolationMode(This,interpolation_mode) (This)->lpVtbl->SetBitmapInterpolationMode(This,interpolation_mode)
#define IDCompositionVisual2_SetBorderMode(This,border_mode) (This)->lpVtbl->SetBorderMode(This,border_mode)
#define IDCompositionVisual2_SetClip(This,rect) (This)->lpVtbl->SetClip(This,rect)
#define IDCompositionVisual2_SetClipObject(This,clip) (This)->lpVtbl->SetClipObject(This,clip)
#define IDCompositionVisual2_SetContent(This,content) (This)->lpVtbl->SetContent(This,content)
#define IDCompositionVisual2_AddVisual(This,visual,insert_above,reference_visual) (This)->lpVtbl->AddVisual(This,visual,insert_above,reference_visual)
#define IDCompositionVisual2_RemoveVisual(This,visual) (This)->lpVtbl->RemoveVisual(This,visual)
#define IDCompositionVisual2_RemoveAllVisuals(This) (This)->lpVtbl->RemoveAllVisuals(This)
#define IDCompositionVisual2_SetCompositeMode(This,composite_mode) (This)->lpVtbl->SetCompositeMode(This,composite_mode)
/*** IDCompositionVisual2 methods ***/
#define IDCompositionVisual2_SetOpacityMode(This,opacity_mode) (This)->lpVtbl->SetOpacityMode(This,opacity_mode)
#define IDCompositionVisual2_SetBackFaceVisibility(This,visibility) (This)->lpVtbl->SetBackFaceVisibility(This,visibility)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionVisual2_QueryInterface(IDCompositionVisual2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionVisual2_AddRef(IDCompositionVisual2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionVisual2_Release(IDCompositionVisual2* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionVisual methods ***/
static inline HRESULT IDCompositionVisual2_SetOffsetX(IDCompositionVisual2* This,float offset_x) {
    return This->lpVtbl->SetOffsetX(This,offset_x);
}
static inline HRESULT IDCompositionVisual2_SetOffsetXAnimation(IDCompositionVisual2* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetOffsetXAnimation(This,animation);
}
static inline HRESULT IDCompositionVisual2_SetOffsetY(IDCompositionVisual2* This,float offset_y) {
    return This->lpVtbl->SetOffsetY(This,offset_y);
}
static inline HRESULT IDCompositionVisual2_SetOffsetYAnimation(IDCompositionVisual2* This,IDCompositionAnimation *animation) {
    return This->lpVtbl->SetOffsetYAnimation(This,animation);
}
static inline HRESULT IDCompositionVisual2_SetTransform(IDCompositionVisual2* This,const D2D_MATRIX_3X2_F *matrix) {
    return This->lpVtbl->SetTransform(This,matrix);
}
static inline HRESULT IDCompositionVisual2_SetTransformObject(IDCompositionVisual2* This,IDCompositionTransform *transform) {
    return This->lpVtbl->SetTransformObject(This,transform);
}
static inline HRESULT IDCompositionVisual2_SetTransformParent(IDCompositionVisual2* This,IDCompositionVisual *visual) {
    return This->lpVtbl->SetTransformParent(This,visual);
}
static inline HRESULT IDCompositionVisual2_SetEffect(IDCompositionVisual2* This,IDCompositionEffect *effect) {
    return This->lpVtbl->SetEffect(This,effect);
}
static inline HRESULT IDCompositionVisual2_SetBitmapInterpolationMode(IDCompositionVisual2* This,enum DCOMPOSITION_BITMAP_INTERPOLATION_MODE interpolation_mode) {
    return This->lpVtbl->SetBitmapInterpolationMode(This,interpolation_mode);
}
static inline HRESULT IDCompositionVisual2_SetBorderMode(IDCompositionVisual2* This,enum DCOMPOSITION_BORDER_MODE border_mode) {
    return This->lpVtbl->SetBorderMode(This,border_mode);
}
static inline HRESULT IDCompositionVisual2_SetClip(IDCompositionVisual2* This,const D2D_RECT_F *rect) {
    return This->lpVtbl->SetClip(This,rect);
}
static inline HRESULT IDCompositionVisual2_SetClipObject(IDCompositionVisual2* This,IDCompositionClip *clip) {
    return This->lpVtbl->SetClipObject(This,clip);
}
static inline HRESULT IDCompositionVisual2_SetContent(IDCompositionVisual2* This,IUnknown *content) {
    return This->lpVtbl->SetContent(This,content);
}
static inline HRESULT IDCompositionVisual2_AddVisual(IDCompositionVisual2* This,IDCompositionVisual *visual,BOOL insert_above,IDCompositionVisual *reference_visual) {
    return This->lpVtbl->AddVisual(This,visual,insert_above,reference_visual);
}
static inline HRESULT IDCompositionVisual2_RemoveVisual(IDCompositionVisual2* This,IDCompositionVisual *visual) {
    return This->lpVtbl->RemoveVisual(This,visual);
}
static inline HRESULT IDCompositionVisual2_RemoveAllVisuals(IDCompositionVisual2* This) {
    return This->lpVtbl->RemoveAllVisuals(This);
}
static inline HRESULT IDCompositionVisual2_SetCompositeMode(IDCompositionVisual2* This,enum DCOMPOSITION_COMPOSITE_MODE composite_mode) {
    return This->lpVtbl->SetCompositeMode(This,composite_mode);
}
/*** IDCompositionVisual2 methods ***/
static inline HRESULT IDCompositionVisual2_SetOpacityMode(IDCompositionVisual2* This,enum DCOMPOSITION_OPACITY_MODE opacity_mode) {
    return This->lpVtbl->SetOpacityMode(This,opacity_mode);
}
static inline HRESULT IDCompositionVisual2_SetBackFaceVisibility(IDCompositionVisual2* This,enum DCOMPOSITION_BACKFACE_VISIBILITY visibility) {
    return This->lpVtbl->SetBackFaceVisibility(This,visibility);
}
#endif
#endif

#endif


#endif  /* __IDCompositionVisual2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionTarget interface
 */
#ifndef __IDCompositionTarget_INTERFACE_DEFINED__
#define __IDCompositionTarget_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionTarget, 0xeacdd04c, 0x117e, 0x4e17, 0x88,0xf4, 0xd1,0xb1,0x2b,0x0e,0x3d,0x89);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("eacdd04c-117e-4e17-88f4-d1b12b0e3d89")
IDCompositionTarget : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetRoot(
        IDCompositionVisual *visual) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionTarget, 0xeacdd04c, 0x117e, 0x4e17, 0x88,0xf4, 0xd1,0xb1,0x2b,0x0e,0x3d,0x89)
#endif
#else
typedef struct IDCompositionTargetVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionTarget *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionTarget *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionTarget *This);

    /*** IDCompositionTarget methods ***/
    HRESULT (STDMETHODCALLTYPE *SetRoot)(
        IDCompositionTarget *This,
        IDCompositionVisual *visual);

    END_INTERFACE
} IDCompositionTargetVtbl;

interface IDCompositionTarget {
    CONST_VTBL IDCompositionTargetVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionTarget_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionTarget_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionTarget_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionTarget methods ***/
#define IDCompositionTarget_SetRoot(This,visual) (This)->lpVtbl->SetRoot(This,visual)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionTarget_QueryInterface(IDCompositionTarget* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionTarget_AddRef(IDCompositionTarget* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionTarget_Release(IDCompositionTarget* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionTarget methods ***/
static inline HRESULT IDCompositionTarget_SetRoot(IDCompositionTarget* This,IDCompositionVisual *visual) {
    return This->lpVtbl->SetRoot(This,visual);
}
#endif
#endif

#endif


#endif  /* __IDCompositionTarget_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionDevice interface
 */
#ifndef __IDCompositionDevice_INTERFACE_DEFINED__
#define __IDCompositionDevice_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionDevice, 0xc37ea93a, 0xe7aa, 0x450d, 0xb1,0x6f, 0x97,0x46,0xcb,0x04,0x07,0xf3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c37ea93a-e7aa-450d-b16f-9746cb0407f3")
IDCompositionDevice : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Commit(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE WaitForCommitCompletion(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFrameStatistics(
        DCOMPOSITION_FRAME_STATISTICS *statistics) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateTargetForHwnd(
        HWND hwnd,
        BOOL topmost,
        IDCompositionTarget **target) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateVisual(
        IDCompositionVisual **visual) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateSurface(
        UINT width,
        UINT height,
        DXGI_FORMAT pixel_format,
        DXGI_ALPHA_MODE alpha_mode,
        IDCompositionSurface **surface) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateVirtualSurface(
        UINT width,
        UINT height,
        DXGI_FORMAT pixel_format,
        DXGI_ALPHA_MODE alpha_mode,
        IDCompositionVirtualSurface **surface) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateSurfaceFromHandle(
        HANDLE handle,
        IUnknown **surface) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateSurfaceFromHwnd(
        HWND hwnd,
        IUnknown **surface) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateTranslateTransform(
        IDCompositionTranslateTransform **transform) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateScaleTransform(
        IDCompositionScaleTransform **transform) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateRotateTransform(
        IDCompositionRotateTransform **transform) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateSkewTransform(
        IDCompositionSkewTransform **transform) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateMatrixTransform(
        IDCompositionMatrixTransform **transform) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateTransformGroup(
        IDCompositionTransform **transforms,
        UINT elements,
        IDCompositionTransform **transform_group) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateTranslateTransform3D(
        IDCompositionTranslateTransform3D **transform_3d) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateScaleTransform3D(
        IDCompositionScaleTransform3D **transform_3d) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateRotateTransform3D(
        IDCompositionRotateTransform3D **transform_3d) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateMatrixTransform3D(
        IDCompositionMatrixTransform3D **transform_3d) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateTransform3DGroup(
        IDCompositionTransform3D **transforms_3d,
        UINT elements,
        IDCompositionTransform3D **transform_3d_group) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateEffectGroup(
        IDCompositionEffectGroup **effect_group) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateRectangleClip(
        IDCompositionRectangleClip **clip) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateAnimation(
        IDCompositionAnimation **animation) = 0;

    virtual HRESULT STDMETHODCALLTYPE CheckDeviceState(
        BOOL *valid) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionDevice, 0xc37ea93a, 0xe7aa, 0x450d, 0xb1,0x6f, 0x97,0x46,0xcb,0x04,0x07,0xf3)
#endif
#else
typedef struct IDCompositionDeviceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionDevice *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionDevice *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionDevice *This);

    /*** IDCompositionDevice methods ***/
    HRESULT (STDMETHODCALLTYPE *Commit)(
        IDCompositionDevice *This);

    HRESULT (STDMETHODCALLTYPE *WaitForCommitCompletion)(
        IDCompositionDevice *This);

    HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
        IDCompositionDevice *This,
        DCOMPOSITION_FRAME_STATISTICS *statistics);

    HRESULT (STDMETHODCALLTYPE *CreateTargetForHwnd)(
        IDCompositionDevice *This,
        HWND hwnd,
        BOOL topmost,
        IDCompositionTarget **target);

    HRESULT (STDMETHODCALLTYPE *CreateVisual)(
        IDCompositionDevice *This,
        IDCompositionVisual **visual);

    HRESULT (STDMETHODCALLTYPE *CreateSurface)(
        IDCompositionDevice *This,
        UINT width,
        UINT height,
        DXGI_FORMAT pixel_format,
        DXGI_ALPHA_MODE alpha_mode,
        IDCompositionSurface **surface);

    HRESULT (STDMETHODCALLTYPE *CreateVirtualSurface)(
        IDCompositionDevice *This,
        UINT width,
        UINT height,
        DXGI_FORMAT pixel_format,
        DXGI_ALPHA_MODE alpha_mode,
        IDCompositionVirtualSurface **surface);

    HRESULT (STDMETHODCALLTYPE *CreateSurfaceFromHandle)(
        IDCompositionDevice *This,
        HANDLE handle,
        IUnknown **surface);

    HRESULT (STDMETHODCALLTYPE *CreateSurfaceFromHwnd)(
        IDCompositionDevice *This,
        HWND hwnd,
        IUnknown **surface);

    HRESULT (STDMETHODCALLTYPE *CreateTranslateTransform)(
        IDCompositionDevice *This,
        IDCompositionTranslateTransform **transform);

    HRESULT (STDMETHODCALLTYPE *CreateScaleTransform)(
        IDCompositionDevice *This,
        IDCompositionScaleTransform **transform);

    HRESULT (STDMETHODCALLTYPE *CreateRotateTransform)(
        IDCompositionDevice *This,
        IDCompositionRotateTransform **transform);

    HRESULT (STDMETHODCALLTYPE *CreateSkewTransform)(
        IDCompositionDevice *This,
        IDCompositionSkewTransform **transform);

    HRESULT (STDMETHODCALLTYPE *CreateMatrixTransform)(
        IDCompositionDevice *This,
        IDCompositionMatrixTransform **transform);

    HRESULT (STDMETHODCALLTYPE *CreateTransformGroup)(
        IDCompositionDevice *This,
        IDCompositionTransform **transforms,
        UINT elements,
        IDCompositionTransform **transform_group);

    HRESULT (STDMETHODCALLTYPE *CreateTranslateTransform3D)(
        IDCompositionDevice *This,
        IDCompositionTranslateTransform3D **transform_3d);

    HRESULT (STDMETHODCALLTYPE *CreateScaleTransform3D)(
        IDCompositionDevice *This,
        IDCompositionScaleTransform3D **transform_3d);

    HRESULT (STDMETHODCALLTYPE *CreateRotateTransform3D)(
        IDCompositionDevice *This,
        IDCompositionRotateTransform3D **transform_3d);

    HRESULT (STDMETHODCALLTYPE *CreateMatrixTransform3D)(
        IDCompositionDevice *This,
        IDCompositionMatrixTransform3D **transform_3d);

    HRESULT (STDMETHODCALLTYPE *CreateTransform3DGroup)(
        IDCompositionDevice *This,
        IDCompositionTransform3D **transforms_3d,
        UINT elements,
        IDCompositionTransform3D **transform_3d_group);

    HRESULT (STDMETHODCALLTYPE *CreateEffectGroup)(
        IDCompositionDevice *This,
        IDCompositionEffectGroup **effect_group);

    HRESULT (STDMETHODCALLTYPE *CreateRectangleClip)(
        IDCompositionDevice *This,
        IDCompositionRectangleClip **clip);

    HRESULT (STDMETHODCALLTYPE *CreateAnimation)(
        IDCompositionDevice *This,
        IDCompositionAnimation **animation);

    HRESULT (STDMETHODCALLTYPE *CheckDeviceState)(
        IDCompositionDevice *This,
        BOOL *valid);

    END_INTERFACE
} IDCompositionDeviceVtbl;

interface IDCompositionDevice {
    CONST_VTBL IDCompositionDeviceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionDevice_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionDevice_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionDevice_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionDevice methods ***/
#define IDCompositionDevice_Commit(This) (This)->lpVtbl->Commit(This)
#define IDCompositionDevice_WaitForCommitCompletion(This) (This)->lpVtbl->WaitForCommitCompletion(This)
#define IDCompositionDevice_GetFrameStatistics(This,statistics) (This)->lpVtbl->GetFrameStatistics(This,statistics)
#define IDCompositionDevice_CreateTargetForHwnd(This,hwnd,topmost,target) (This)->lpVtbl->CreateTargetForHwnd(This,hwnd,topmost,target)
#define IDCompositionDevice_CreateVisual(This,visual) (This)->lpVtbl->CreateVisual(This,visual)
#define IDCompositionDevice_CreateSurface(This,width,height,pixel_format,alpha_mode,surface) (This)->lpVtbl->CreateSurface(This,width,height,pixel_format,alpha_mode,surface)
#define IDCompositionDevice_CreateVirtualSurface(This,width,height,pixel_format,alpha_mode,surface) (This)->lpVtbl->CreateVirtualSurface(This,width,height,pixel_format,alpha_mode,surface)
#define IDCompositionDevice_CreateSurfaceFromHandle(This,handle,surface) (This)->lpVtbl->CreateSurfaceFromHandle(This,handle,surface)
#define IDCompositionDevice_CreateSurfaceFromHwnd(This,hwnd,surface) (This)->lpVtbl->CreateSurfaceFromHwnd(This,hwnd,surface)
#define IDCompositionDevice_CreateTranslateTransform(This,transform) (This)->lpVtbl->CreateTranslateTransform(This,transform)
#define IDCompositionDevice_CreateScaleTransform(This,transform) (This)->lpVtbl->CreateScaleTransform(This,transform)
#define IDCompositionDevice_CreateRotateTransform(This,transform) (This)->lpVtbl->CreateRotateTransform(This,transform)
#define IDCompositionDevice_CreateSkewTransform(This,transform) (This)->lpVtbl->CreateSkewTransform(This,transform)
#define IDCompositionDevice_CreateMatrixTransform(This,transform) (This)->lpVtbl->CreateMatrixTransform(This,transform)
#define IDCompositionDevice_CreateTransformGroup(This,transforms,elements,transform_group) (This)->lpVtbl->CreateTransformGroup(This,transforms,elements,transform_group)
#define IDCompositionDevice_CreateTranslateTransform3D(This,transform_3d) (This)->lpVtbl->CreateTranslateTransform3D(This,transform_3d)
#define IDCompositionDevice_CreateScaleTransform3D(This,transform_3d) (This)->lpVtbl->CreateScaleTransform3D(This,transform_3d)
#define IDCompositionDevice_CreateRotateTransform3D(This,transform_3d) (This)->lpVtbl->CreateRotateTransform3D(This,transform_3d)
#define IDCompositionDevice_CreateMatrixTransform3D(This,transform_3d) (This)->lpVtbl->CreateMatrixTransform3D(This,transform_3d)
#define IDCompositionDevice_CreateTransform3DGroup(This,transforms_3d,elements,transform_3d_group) (This)->lpVtbl->CreateTransform3DGroup(This,transforms_3d,elements,transform_3d_group)
#define IDCompositionDevice_CreateEffectGroup(This,effect_group) (This)->lpVtbl->CreateEffectGroup(This,effect_group)
#define IDCompositionDevice_CreateRectangleClip(This,clip) (This)->lpVtbl->CreateRectangleClip(This,clip)
#define IDCompositionDevice_CreateAnimation(This,animation) (This)->lpVtbl->CreateAnimation(This,animation)
#define IDCompositionDevice_CheckDeviceState(This,valid) (This)->lpVtbl->CheckDeviceState(This,valid)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionDevice_QueryInterface(IDCompositionDevice* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionDevice_AddRef(IDCompositionDevice* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionDevice_Release(IDCompositionDevice* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionDevice methods ***/
static inline HRESULT IDCompositionDevice_Commit(IDCompositionDevice* This) {
    return This->lpVtbl->Commit(This);
}
static inline HRESULT IDCompositionDevice_WaitForCommitCompletion(IDCompositionDevice* This) {
    return This->lpVtbl->WaitForCommitCompletion(This);
}
static inline HRESULT IDCompositionDevice_GetFrameStatistics(IDCompositionDevice* This,DCOMPOSITION_FRAME_STATISTICS *statistics) {
    return This->lpVtbl->GetFrameStatistics(This,statistics);
}
static inline HRESULT IDCompositionDevice_CreateTargetForHwnd(IDCompositionDevice* This,HWND hwnd,BOOL topmost,IDCompositionTarget **target) {
    return This->lpVtbl->CreateTargetForHwnd(This,hwnd,topmost,target);
}
static inline HRESULT IDCompositionDevice_CreateVisual(IDCompositionDevice* This,IDCompositionVisual **visual) {
    return This->lpVtbl->CreateVisual(This,visual);
}
static inline HRESULT IDCompositionDevice_CreateSurface(IDCompositionDevice* This,UINT width,UINT height,DXGI_FORMAT pixel_format,DXGI_ALPHA_MODE alpha_mode,IDCompositionSurface **surface) {
    return This->lpVtbl->CreateSurface(This,width,height,pixel_format,alpha_mode,surface);
}
static inline HRESULT IDCompositionDevice_CreateVirtualSurface(IDCompositionDevice* This,UINT width,UINT height,DXGI_FORMAT pixel_format,DXGI_ALPHA_MODE alpha_mode,IDCompositionVirtualSurface **surface) {
    return This->lpVtbl->CreateVirtualSurface(This,width,height,pixel_format,alpha_mode,surface);
}
static inline HRESULT IDCompositionDevice_CreateSurfaceFromHandle(IDCompositionDevice* This,HANDLE handle,IUnknown **surface) {
    return This->lpVtbl->CreateSurfaceFromHandle(This,handle,surface);
}
static inline HRESULT IDCompositionDevice_CreateSurfaceFromHwnd(IDCompositionDevice* This,HWND hwnd,IUnknown **surface) {
    return This->lpVtbl->CreateSurfaceFromHwnd(This,hwnd,surface);
}
static inline HRESULT IDCompositionDevice_CreateTranslateTransform(IDCompositionDevice* This,IDCompositionTranslateTransform **transform) {
    return This->lpVtbl->CreateTranslateTransform(This,transform);
}
static inline HRESULT IDCompositionDevice_CreateScaleTransform(IDCompositionDevice* This,IDCompositionScaleTransform **transform) {
    return This->lpVtbl->CreateScaleTransform(This,transform);
}
static inline HRESULT IDCompositionDevice_CreateRotateTransform(IDCompositionDevice* This,IDCompositionRotateTransform **transform) {
    return This->lpVtbl->CreateRotateTransform(This,transform);
}
static inline HRESULT IDCompositionDevice_CreateSkewTransform(IDCompositionDevice* This,IDCompositionSkewTransform **transform) {
    return This->lpVtbl->CreateSkewTransform(This,transform);
}
static inline HRESULT IDCompositionDevice_CreateMatrixTransform(IDCompositionDevice* This,IDCompositionMatrixTransform **transform) {
    return This->lpVtbl->CreateMatrixTransform(This,transform);
}
static inline HRESULT IDCompositionDevice_CreateTransformGroup(IDCompositionDevice* This,IDCompositionTransform **transforms,UINT elements,IDCompositionTransform **transform_group) {
    return This->lpVtbl->CreateTransformGroup(This,transforms,elements,transform_group);
}
static inline HRESULT IDCompositionDevice_CreateTranslateTransform3D(IDCompositionDevice* This,IDCompositionTranslateTransform3D **transform_3d) {
    return This->lpVtbl->CreateTranslateTransform3D(This,transform_3d);
}
static inline HRESULT IDCompositionDevice_CreateScaleTransform3D(IDCompositionDevice* This,IDCompositionScaleTransform3D **transform_3d) {
    return This->lpVtbl->CreateScaleTransform3D(This,transform_3d);
}
static inline HRESULT IDCompositionDevice_CreateRotateTransform3D(IDCompositionDevice* This,IDCompositionRotateTransform3D **transform_3d) {
    return This->lpVtbl->CreateRotateTransform3D(This,transform_3d);
}
static inline HRESULT IDCompositionDevice_CreateMatrixTransform3D(IDCompositionDevice* This,IDCompositionMatrixTransform3D **transform_3d) {
    return This->lpVtbl->CreateMatrixTransform3D(This,transform_3d);
}
static inline HRESULT IDCompositionDevice_CreateTransform3DGroup(IDCompositionDevice* This,IDCompositionTransform3D **transforms_3d,UINT elements,IDCompositionTransform3D **transform_3d_group) {
    return This->lpVtbl->CreateTransform3DGroup(This,transforms_3d,elements,transform_3d_group);
}
static inline HRESULT IDCompositionDevice_CreateEffectGroup(IDCompositionDevice* This,IDCompositionEffectGroup **effect_group) {
    return This->lpVtbl->CreateEffectGroup(This,effect_group);
}
static inline HRESULT IDCompositionDevice_CreateRectangleClip(IDCompositionDevice* This,IDCompositionRectangleClip **clip) {
    return This->lpVtbl->CreateRectangleClip(This,clip);
}
static inline HRESULT IDCompositionDevice_CreateAnimation(IDCompositionDevice* This,IDCompositionAnimation **animation) {
    return This->lpVtbl->CreateAnimation(This,animation);
}
static inline HRESULT IDCompositionDevice_CheckDeviceState(IDCompositionDevice* This,BOOL *valid) {
    return This->lpVtbl->CheckDeviceState(This,valid);
}
#endif
#endif

#endif


#endif  /* __IDCompositionDevice_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionDevice2 interface
 */
#ifndef __IDCompositionDevice2_INTERFACE_DEFINED__
#define __IDCompositionDevice2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionDevice2, 0x75f6468d, 0x1b8e, 0x447c, 0x9b,0xc6, 0x75,0xfe,0xa8,0x0b,0x5b,0x25);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("75f6468d-1b8e-447c-9bc6-75fea80b5b25")
IDCompositionDevice2 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Commit(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE WaitForCommitCompletion(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFrameStatistics(
        DCOMPOSITION_FRAME_STATISTICS *statistics) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateVisual(
        IDCompositionVisual2 **visual) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateSurfaceFactory(
        IUnknown *rendering_device,
        IDCompositionSurfaceFactory **surface_factory) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateSurface(
        UINT width,
        UINT height,
        DXGI_FORMAT pixel_format,
        DXGI_ALPHA_MODE alpha_mode,
        IDCompositionSurface **surface) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateVirtualSurface(
        UINT width,
        UINT height,
        DXGI_FORMAT pixel_format,
        DXGI_ALPHA_MODE alpha_mode,
        IDCompositionVirtualSurface **surface) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateTranslateTransform(
        IDCompositionTranslateTransform **transform) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateScaleTransform(
        IDCompositionScaleTransform **transform) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateRotateTransform(
        IDCompositionRotateTransform **transform) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateSkewTransform(
        IDCompositionSkewTransform **transform) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateMatrixTransform(
        IDCompositionMatrixTransform **transform) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateTransformGroup(
        IDCompositionTransform **transforms,
        UINT elements,
        IDCompositionTransform **transform_group) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateTranslateTransform3D(
        IDCompositionTranslateTransform3D **transform_3d) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateScaleTransform3D(
        IDCompositionScaleTransform3D **transform_3d) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateRotateTransform3D(
        IDCompositionRotateTransform3D **transform_3d) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateMatrixTransform3D(
        IDCompositionMatrixTransform3D **transform_3d) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateTransform3DGroup(
        IDCompositionTransform3D **transforms_3d,
        UINT elements,
        IDCompositionTransform3D **transform_3d_group) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateEffectGroup(
        IDCompositionEffectGroup **effect_group) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateRectangleClip(
        IDCompositionRectangleClip **clip) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateAnimation(
        IDCompositionAnimation **animation) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionDevice2, 0x75f6468d, 0x1b8e, 0x447c, 0x9b,0xc6, 0x75,0xfe,0xa8,0x0b,0x5b,0x25)
#endif
#else
typedef struct IDCompositionDevice2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionDevice2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionDevice2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionDevice2 *This);

    /*** IDCompositionDevice2 methods ***/
    HRESULT (STDMETHODCALLTYPE *Commit)(
        IDCompositionDevice2 *This);

    HRESULT (STDMETHODCALLTYPE *WaitForCommitCompletion)(
        IDCompositionDevice2 *This);

    HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
        IDCompositionDevice2 *This,
        DCOMPOSITION_FRAME_STATISTICS *statistics);

    HRESULT (STDMETHODCALLTYPE *CreateVisual)(
        IDCompositionDevice2 *This,
        IDCompositionVisual2 **visual);

    HRESULT (STDMETHODCALLTYPE *CreateSurfaceFactory)(
        IDCompositionDevice2 *This,
        IUnknown *rendering_device,
        IDCompositionSurfaceFactory **surface_factory);

    HRESULT (STDMETHODCALLTYPE *CreateSurface)(
        IDCompositionDevice2 *This,
        UINT width,
        UINT height,
        DXGI_FORMAT pixel_format,
        DXGI_ALPHA_MODE alpha_mode,
        IDCompositionSurface **surface);

    HRESULT (STDMETHODCALLTYPE *CreateVirtualSurface)(
        IDCompositionDevice2 *This,
        UINT width,
        UINT height,
        DXGI_FORMAT pixel_format,
        DXGI_ALPHA_MODE alpha_mode,
        IDCompositionVirtualSurface **surface);

    HRESULT (STDMETHODCALLTYPE *CreateTranslateTransform)(
        IDCompositionDevice2 *This,
        IDCompositionTranslateTransform **transform);

    HRESULT (STDMETHODCALLTYPE *CreateScaleTransform)(
        IDCompositionDevice2 *This,
        IDCompositionScaleTransform **transform);

    HRESULT (STDMETHODCALLTYPE *CreateRotateTransform)(
        IDCompositionDevice2 *This,
        IDCompositionRotateTransform **transform);

    HRESULT (STDMETHODCALLTYPE *CreateSkewTransform)(
        IDCompositionDevice2 *This,
        IDCompositionSkewTransform **transform);

    HRESULT (STDMETHODCALLTYPE *CreateMatrixTransform)(
        IDCompositionDevice2 *This,
        IDCompositionMatrixTransform **transform);

    HRESULT (STDMETHODCALLTYPE *CreateTransformGroup)(
        IDCompositionDevice2 *This,
        IDCompositionTransform **transforms,
        UINT elements,
        IDCompositionTransform **transform_group);

    HRESULT (STDMETHODCALLTYPE *CreateTranslateTransform3D)(
        IDCompositionDevice2 *This,
        IDCompositionTranslateTransform3D **transform_3d);

    HRESULT (STDMETHODCALLTYPE *CreateScaleTransform3D)(
        IDCompositionDevice2 *This,
        IDCompositionScaleTransform3D **transform_3d);

    HRESULT (STDMETHODCALLTYPE *CreateRotateTransform3D)(
        IDCompositionDevice2 *This,
        IDCompositionRotateTransform3D **transform_3d);

    HRESULT (STDMETHODCALLTYPE *CreateMatrixTransform3D)(
        IDCompositionDevice2 *This,
        IDCompositionMatrixTransform3D **transform_3d);

    HRESULT (STDMETHODCALLTYPE *CreateTransform3DGroup)(
        IDCompositionDevice2 *This,
        IDCompositionTransform3D **transforms_3d,
        UINT elements,
        IDCompositionTransform3D **transform_3d_group);

    HRESULT (STDMETHODCALLTYPE *CreateEffectGroup)(
        IDCompositionDevice2 *This,
        IDCompositionEffectGroup **effect_group);

    HRESULT (STDMETHODCALLTYPE *CreateRectangleClip)(
        IDCompositionDevice2 *This,
        IDCompositionRectangleClip **clip);

    HRESULT (STDMETHODCALLTYPE *CreateAnimation)(
        IDCompositionDevice2 *This,
        IDCompositionAnimation **animation);

    END_INTERFACE
} IDCompositionDevice2Vtbl;

interface IDCompositionDevice2 {
    CONST_VTBL IDCompositionDevice2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionDevice2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionDevice2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionDevice2_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionDevice2 methods ***/
#define IDCompositionDevice2_Commit(This) (This)->lpVtbl->Commit(This)
#define IDCompositionDevice2_WaitForCommitCompletion(This) (This)->lpVtbl->WaitForCommitCompletion(This)
#define IDCompositionDevice2_GetFrameStatistics(This,statistics) (This)->lpVtbl->GetFrameStatistics(This,statistics)
#define IDCompositionDevice2_CreateVisual(This,visual) (This)->lpVtbl->CreateVisual(This,visual)
#define IDCompositionDevice2_CreateSurfaceFactory(This,rendering_device,surface_factory) (This)->lpVtbl->CreateSurfaceFactory(This,rendering_device,surface_factory)
#define IDCompositionDevice2_CreateSurface(This,width,height,pixel_format,alpha_mode,surface) (This)->lpVtbl->CreateSurface(This,width,height,pixel_format,alpha_mode,surface)
#define IDCompositionDevice2_CreateVirtualSurface(This,width,height,pixel_format,alpha_mode,surface) (This)->lpVtbl->CreateVirtualSurface(This,width,height,pixel_format,alpha_mode,surface)
#define IDCompositionDevice2_CreateTranslateTransform(This,transform) (This)->lpVtbl->CreateTranslateTransform(This,transform)
#define IDCompositionDevice2_CreateScaleTransform(This,transform) (This)->lpVtbl->CreateScaleTransform(This,transform)
#define IDCompositionDevice2_CreateRotateTransform(This,transform) (This)->lpVtbl->CreateRotateTransform(This,transform)
#define IDCompositionDevice2_CreateSkewTransform(This,transform) (This)->lpVtbl->CreateSkewTransform(This,transform)
#define IDCompositionDevice2_CreateMatrixTransform(This,transform) (This)->lpVtbl->CreateMatrixTransform(This,transform)
#define IDCompositionDevice2_CreateTransformGroup(This,transforms,elements,transform_group) (This)->lpVtbl->CreateTransformGroup(This,transforms,elements,transform_group)
#define IDCompositionDevice2_CreateTranslateTransform3D(This,transform_3d) (This)->lpVtbl->CreateTranslateTransform3D(This,transform_3d)
#define IDCompositionDevice2_CreateScaleTransform3D(This,transform_3d) (This)->lpVtbl->CreateScaleTransform3D(This,transform_3d)
#define IDCompositionDevice2_CreateRotateTransform3D(This,transform_3d) (This)->lpVtbl->CreateRotateTransform3D(This,transform_3d)
#define IDCompositionDevice2_CreateMatrixTransform3D(This,transform_3d) (This)->lpVtbl->CreateMatrixTransform3D(This,transform_3d)
#define IDCompositionDevice2_CreateTransform3DGroup(This,transforms_3d,elements,transform_3d_group) (This)->lpVtbl->CreateTransform3DGroup(This,transforms_3d,elements,transform_3d_group)
#define IDCompositionDevice2_CreateEffectGroup(This,effect_group) (This)->lpVtbl->CreateEffectGroup(This,effect_group)
#define IDCompositionDevice2_CreateRectangleClip(This,clip) (This)->lpVtbl->CreateRectangleClip(This,clip)
#define IDCompositionDevice2_CreateAnimation(This,animation) (This)->lpVtbl->CreateAnimation(This,animation)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionDevice2_QueryInterface(IDCompositionDevice2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionDevice2_AddRef(IDCompositionDevice2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionDevice2_Release(IDCompositionDevice2* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionDevice2 methods ***/
static inline HRESULT IDCompositionDevice2_Commit(IDCompositionDevice2* This) {
    return This->lpVtbl->Commit(This);
}
static inline HRESULT IDCompositionDevice2_WaitForCommitCompletion(IDCompositionDevice2* This) {
    return This->lpVtbl->WaitForCommitCompletion(This);
}
static inline HRESULT IDCompositionDevice2_GetFrameStatistics(IDCompositionDevice2* This,DCOMPOSITION_FRAME_STATISTICS *statistics) {
    return This->lpVtbl->GetFrameStatistics(This,statistics);
}
static inline HRESULT IDCompositionDevice2_CreateVisual(IDCompositionDevice2* This,IDCompositionVisual2 **visual) {
    return This->lpVtbl->CreateVisual(This,visual);
}
static inline HRESULT IDCompositionDevice2_CreateSurfaceFactory(IDCompositionDevice2* This,IUnknown *rendering_device,IDCompositionSurfaceFactory **surface_factory) {
    return This->lpVtbl->CreateSurfaceFactory(This,rendering_device,surface_factory);
}
static inline HRESULT IDCompositionDevice2_CreateSurface(IDCompositionDevice2* This,UINT width,UINT height,DXGI_FORMAT pixel_format,DXGI_ALPHA_MODE alpha_mode,IDCompositionSurface **surface) {
    return This->lpVtbl->CreateSurface(This,width,height,pixel_format,alpha_mode,surface);
}
static inline HRESULT IDCompositionDevice2_CreateVirtualSurface(IDCompositionDevice2* This,UINT width,UINT height,DXGI_FORMAT pixel_format,DXGI_ALPHA_MODE alpha_mode,IDCompositionVirtualSurface **surface) {
    return This->lpVtbl->CreateVirtualSurface(This,width,height,pixel_format,alpha_mode,surface);
}
static inline HRESULT IDCompositionDevice2_CreateTranslateTransform(IDCompositionDevice2* This,IDCompositionTranslateTransform **transform) {
    return This->lpVtbl->CreateTranslateTransform(This,transform);
}
static inline HRESULT IDCompositionDevice2_CreateScaleTransform(IDCompositionDevice2* This,IDCompositionScaleTransform **transform) {
    return This->lpVtbl->CreateScaleTransform(This,transform);
}
static inline HRESULT IDCompositionDevice2_CreateRotateTransform(IDCompositionDevice2* This,IDCompositionRotateTransform **transform) {
    return This->lpVtbl->CreateRotateTransform(This,transform);
}
static inline HRESULT IDCompositionDevice2_CreateSkewTransform(IDCompositionDevice2* This,IDCompositionSkewTransform **transform) {
    return This->lpVtbl->CreateSkewTransform(This,transform);
}
static inline HRESULT IDCompositionDevice2_CreateMatrixTransform(IDCompositionDevice2* This,IDCompositionMatrixTransform **transform) {
    return This->lpVtbl->CreateMatrixTransform(This,transform);
}
static inline HRESULT IDCompositionDevice2_CreateTransformGroup(IDCompositionDevice2* This,IDCompositionTransform **transforms,UINT elements,IDCompositionTransform **transform_group) {
    return This->lpVtbl->CreateTransformGroup(This,transforms,elements,transform_group);
}
static inline HRESULT IDCompositionDevice2_CreateTranslateTransform3D(IDCompositionDevice2* This,IDCompositionTranslateTransform3D **transform_3d) {
    return This->lpVtbl->CreateTranslateTransform3D(This,transform_3d);
}
static inline HRESULT IDCompositionDevice2_CreateScaleTransform3D(IDCompositionDevice2* This,IDCompositionScaleTransform3D **transform_3d) {
    return This->lpVtbl->CreateScaleTransform3D(This,transform_3d);
}
static inline HRESULT IDCompositionDevice2_CreateRotateTransform3D(IDCompositionDevice2* This,IDCompositionRotateTransform3D **transform_3d) {
    return This->lpVtbl->CreateRotateTransform3D(This,transform_3d);
}
static inline HRESULT IDCompositionDevice2_CreateMatrixTransform3D(IDCompositionDevice2* This,IDCompositionMatrixTransform3D **transform_3d) {
    return This->lpVtbl->CreateMatrixTransform3D(This,transform_3d);
}
static inline HRESULT IDCompositionDevice2_CreateTransform3DGroup(IDCompositionDevice2* This,IDCompositionTransform3D **transforms_3d,UINT elements,IDCompositionTransform3D **transform_3d_group) {
    return This->lpVtbl->CreateTransform3DGroup(This,transforms_3d,elements,transform_3d_group);
}
static inline HRESULT IDCompositionDevice2_CreateEffectGroup(IDCompositionDevice2* This,IDCompositionEffectGroup **effect_group) {
    return This->lpVtbl->CreateEffectGroup(This,effect_group);
}
static inline HRESULT IDCompositionDevice2_CreateRectangleClip(IDCompositionDevice2* This,IDCompositionRectangleClip **clip) {
    return This->lpVtbl->CreateRectangleClip(This,clip);
}
static inline HRESULT IDCompositionDevice2_CreateAnimation(IDCompositionDevice2* This,IDCompositionAnimation **animation) {
    return This->lpVtbl->CreateAnimation(This,animation);
}
#endif
#endif

#endif


#endif  /* __IDCompositionDevice2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCompositionDesktopDevice interface
 */
#ifndef __IDCompositionDesktopDevice_INTERFACE_DEFINED__
#define __IDCompositionDesktopDevice_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDCompositionDesktopDevice, 0x5f4633fe, 0x1e08, 0x4cb8, 0x8c,0x75, 0xce,0x24,0x33,0x3f,0x56,0x02);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5f4633fe-1e08-4cb8-8c75-ce24333f5602")
IDCompositionDesktopDevice : public IDCompositionDevice2
{
    virtual HRESULT STDMETHODCALLTYPE CreateTargetForHwnd(
        HWND hwnd,
        BOOL topmost,
        IDCompositionTarget **target) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateSurfaceFromHandle(
        HANDLE handle,
        IUnknown **surface) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateSurfaceFromHwnd(
        HWND hwnd,
        IUnknown **surface) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDCompositionDesktopDevice, 0x5f4633fe, 0x1e08, 0x4cb8, 0x8c,0x75, 0xce,0x24,0x33,0x3f,0x56,0x02)
#endif
#else
typedef struct IDCompositionDesktopDeviceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDCompositionDesktopDevice *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDCompositionDesktopDevice *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDCompositionDesktopDevice *This);

    /*** IDCompositionDevice2 methods ***/
    HRESULT (STDMETHODCALLTYPE *Commit)(
        IDCompositionDesktopDevice *This);

    HRESULT (STDMETHODCALLTYPE *WaitForCommitCompletion)(
        IDCompositionDesktopDevice *This);

    HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
        IDCompositionDesktopDevice *This,
        DCOMPOSITION_FRAME_STATISTICS *statistics);

    HRESULT (STDMETHODCALLTYPE *CreateVisual)(
        IDCompositionDesktopDevice *This,
        IDCompositionVisual2 **visual);

    HRESULT (STDMETHODCALLTYPE *CreateSurfaceFactory)(
        IDCompositionDesktopDevice *This,
        IUnknown *rendering_device,
        IDCompositionSurfaceFactory **surface_factory);

    HRESULT (STDMETHODCALLTYPE *CreateSurface)(
        IDCompositionDesktopDevice *This,
        UINT width,
        UINT height,
        DXGI_FORMAT pixel_format,
        DXGI_ALPHA_MODE alpha_mode,
        IDCompositionSurface **surface);

    HRESULT (STDMETHODCALLTYPE *CreateVirtualSurface)(
        IDCompositionDesktopDevice *This,
        UINT width,
        UINT height,
        DXGI_FORMAT pixel_format,
        DXGI_ALPHA_MODE alpha_mode,
        IDCompositionVirtualSurface **surface);

    HRESULT (STDMETHODCALLTYPE *CreateTranslateTransform)(
        IDCompositionDesktopDevice *This,
        IDCompositionTranslateTransform **transform);

    HRESULT (STDMETHODCALLTYPE *CreateScaleTransform)(
        IDCompositionDesktopDevice *This,
        IDCompositionScaleTransform **transform);

    HRESULT (STDMETHODCALLTYPE *CreateRotateTransform)(
        IDCompositionDesktopDevice *This,
        IDCompositionRotateTransform **transform);

    HRESULT (STDMETHODCALLTYPE *CreateSkewTransform)(
        IDCompositionDesktopDevice *This,
        IDCompositionSkewTransform **transform);

    HRESULT (STDMETHODCALLTYPE *CreateMatrixTransform)(
        IDCompositionDesktopDevice *This,
        IDCompositionMatrixTransform **transform);

    HRESULT (STDMETHODCALLTYPE *CreateTransformGroup)(
        IDCompositionDesktopDevice *This,
        IDCompositionTransform **transforms,
        UINT elements,
        IDCompositionTransform **transform_group);

    HRESULT (STDMETHODCALLTYPE *CreateTranslateTransform3D)(
        IDCompositionDesktopDevice *This,
        IDCompositionTranslateTransform3D **transform_3d);

    HRESULT (STDMETHODCALLTYPE *CreateScaleTransform3D)(
        IDCompositionDesktopDevice *This,
        IDCompositionScaleTransform3D **transform_3d);

    HRESULT (STDMETHODCALLTYPE *CreateRotateTransform3D)(
        IDCompositionDesktopDevice *This,
        IDCompositionRotateTransform3D **transform_3d);

    HRESULT (STDMETHODCALLTYPE *CreateMatrixTransform3D)(
        IDCompositionDesktopDevice *This,
        IDCompositionMatrixTransform3D **transform_3d);

    HRESULT (STDMETHODCALLTYPE *CreateTransform3DGroup)(
        IDCompositionDesktopDevice *This,
        IDCompositionTransform3D **transforms_3d,
        UINT elements,
        IDCompositionTransform3D **transform_3d_group);

    HRESULT (STDMETHODCALLTYPE *CreateEffectGroup)(
        IDCompositionDesktopDevice *This,
        IDCompositionEffectGroup **effect_group);

    HRESULT (STDMETHODCALLTYPE *CreateRectangleClip)(
        IDCompositionDesktopDevice *This,
        IDCompositionRectangleClip **clip);

    HRESULT (STDMETHODCALLTYPE *CreateAnimation)(
        IDCompositionDesktopDevice *This,
        IDCompositionAnimation **animation);

    /*** IDCompositionDesktopDevice methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateTargetForHwnd)(
        IDCompositionDesktopDevice *This,
        HWND hwnd,
        BOOL topmost,
        IDCompositionTarget **target);

    HRESULT (STDMETHODCALLTYPE *CreateSurfaceFromHandle)(
        IDCompositionDesktopDevice *This,
        HANDLE handle,
        IUnknown **surface);

    HRESULT (STDMETHODCALLTYPE *CreateSurfaceFromHwnd)(
        IDCompositionDesktopDevice *This,
        HWND hwnd,
        IUnknown **surface);

    END_INTERFACE
} IDCompositionDesktopDeviceVtbl;

interface IDCompositionDesktopDevice {
    CONST_VTBL IDCompositionDesktopDeviceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDCompositionDesktopDevice_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCompositionDesktopDevice_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCompositionDesktopDevice_Release(This) (This)->lpVtbl->Release(This)
/*** IDCompositionDevice2 methods ***/
#define IDCompositionDesktopDevice_Commit(This) (This)->lpVtbl->Commit(This)
#define IDCompositionDesktopDevice_WaitForCommitCompletion(This) (This)->lpVtbl->WaitForCommitCompletion(This)
#define IDCompositionDesktopDevice_GetFrameStatistics(This,statistics) (This)->lpVtbl->GetFrameStatistics(This,statistics)
#define IDCompositionDesktopDevice_CreateVisual(This,visual) (This)->lpVtbl->CreateVisual(This,visual)
#define IDCompositionDesktopDevice_CreateSurfaceFactory(This,rendering_device,surface_factory) (This)->lpVtbl->CreateSurfaceFactory(This,rendering_device,surface_factory)
#define IDCompositionDesktopDevice_CreateSurface(This,width,height,pixel_format,alpha_mode,surface) (This)->lpVtbl->CreateSurface(This,width,height,pixel_format,alpha_mode,surface)
#define IDCompositionDesktopDevice_CreateVirtualSurface(This,width,height,pixel_format,alpha_mode,surface) (This)->lpVtbl->CreateVirtualSurface(This,width,height,pixel_format,alpha_mode,surface)
#define IDCompositionDesktopDevice_CreateTranslateTransform(This,transform) (This)->lpVtbl->CreateTranslateTransform(This,transform)
#define IDCompositionDesktopDevice_CreateScaleTransform(This,transform) (This)->lpVtbl->CreateScaleTransform(This,transform)
#define IDCompositionDesktopDevice_CreateRotateTransform(This,transform) (This)->lpVtbl->CreateRotateTransform(This,transform)
#define IDCompositionDesktopDevice_CreateSkewTransform(This,transform) (This)->lpVtbl->CreateSkewTransform(This,transform)
#define IDCompositionDesktopDevice_CreateMatrixTransform(This,transform) (This)->lpVtbl->CreateMatrixTransform(This,transform)
#define IDCompositionDesktopDevice_CreateTransformGroup(This,transforms,elements,transform_group) (This)->lpVtbl->CreateTransformGroup(This,transforms,elements,transform_group)
#define IDCompositionDesktopDevice_CreateTranslateTransform3D(This,transform_3d) (This)->lpVtbl->CreateTranslateTransform3D(This,transform_3d)
#define IDCompositionDesktopDevice_CreateScaleTransform3D(This,transform_3d) (This)->lpVtbl->CreateScaleTransform3D(This,transform_3d)
#define IDCompositionDesktopDevice_CreateRotateTransform3D(This,transform_3d) (This)->lpVtbl->CreateRotateTransform3D(This,transform_3d)
#define IDCompositionDesktopDevice_CreateMatrixTransform3D(This,transform_3d) (This)->lpVtbl->CreateMatrixTransform3D(This,transform_3d)
#define IDCompositionDesktopDevice_CreateTransform3DGroup(This,transforms_3d,elements,transform_3d_group) (This)->lpVtbl->CreateTransform3DGroup(This,transforms_3d,elements,transform_3d_group)
#define IDCompositionDesktopDevice_CreateEffectGroup(This,effect_group) (This)->lpVtbl->CreateEffectGroup(This,effect_group)
#define IDCompositionDesktopDevice_CreateRectangleClip(This,clip) (This)->lpVtbl->CreateRectangleClip(This,clip)
#define IDCompositionDesktopDevice_CreateAnimation(This,animation) (This)->lpVtbl->CreateAnimation(This,animation)
/*** IDCompositionDesktopDevice methods ***/
#define IDCompositionDesktopDevice_CreateTargetForHwnd(This,hwnd,topmost,target) (This)->lpVtbl->CreateTargetForHwnd(This,hwnd,topmost,target)
#define IDCompositionDesktopDevice_CreateSurfaceFromHandle(This,handle,surface) (This)->lpVtbl->CreateSurfaceFromHandle(This,handle,surface)
#define IDCompositionDesktopDevice_CreateSurfaceFromHwnd(This,hwnd,surface) (This)->lpVtbl->CreateSurfaceFromHwnd(This,hwnd,surface)
#else
/*** IUnknown methods ***/
static inline HRESULT IDCompositionDesktopDevice_QueryInterface(IDCompositionDesktopDevice* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDCompositionDesktopDevice_AddRef(IDCompositionDesktopDevice* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDCompositionDesktopDevice_Release(IDCompositionDesktopDevice* This) {
    return This->lpVtbl->Release(This);
}
/*** IDCompositionDevice2 methods ***/
static inline HRESULT IDCompositionDesktopDevice_Commit(IDCompositionDesktopDevice* This) {
    return This->lpVtbl->Commit(This);
}
static inline HRESULT IDCompositionDesktopDevice_WaitForCommitCompletion(IDCompositionDesktopDevice* This) {
    return This->lpVtbl->WaitForCommitCompletion(This);
}
static inline HRESULT IDCompositionDesktopDevice_GetFrameStatistics(IDCompositionDesktopDevice* This,DCOMPOSITION_FRAME_STATISTICS *statistics) {
    return This->lpVtbl->GetFrameStatistics(This,statistics);
}
static inline HRESULT IDCompositionDesktopDevice_CreateVisual(IDCompositionDesktopDevice* This,IDCompositionVisual2 **visual) {
    return This->lpVtbl->CreateVisual(This,visual);
}
static inline HRESULT IDCompositionDesktopDevice_CreateSurfaceFactory(IDCompositionDesktopDevice* This,IUnknown *rendering_device,IDCompositionSurfaceFactory **surface_factory) {
    return This->lpVtbl->CreateSurfaceFactory(This,rendering_device,surface_factory);
}
static inline HRESULT IDCompositionDesktopDevice_CreateSurface(IDCompositionDesktopDevice* This,UINT width,UINT height,DXGI_FORMAT pixel_format,DXGI_ALPHA_MODE alpha_mode,IDCompositionSurface **surface) {
    return This->lpVtbl->CreateSurface(This,width,height,pixel_format,alpha_mode,surface);
}
static inline HRESULT IDCompositionDesktopDevice_CreateVirtualSurface(IDCompositionDesktopDevice* This,UINT width,UINT height,DXGI_FORMAT pixel_format,DXGI_ALPHA_MODE alpha_mode,IDCompositionVirtualSurface **surface) {
    return This->lpVtbl->CreateVirtualSurface(This,width,height,pixel_format,alpha_mode,surface);
}
static inline HRESULT IDCompositionDesktopDevice_CreateTranslateTransform(IDCompositionDesktopDevice* This,IDCompositionTranslateTransform **transform) {
    return This->lpVtbl->CreateTranslateTransform(This,transform);
}
static inline HRESULT IDCompositionDesktopDevice_CreateScaleTransform(IDCompositionDesktopDevice* This,IDCompositionScaleTransform **transform) {
    return This->lpVtbl->CreateScaleTransform(This,transform);
}
static inline HRESULT IDCompositionDesktopDevice_CreateRotateTransform(IDCompositionDesktopDevice* This,IDCompositionRotateTransform **transform) {
    return This->lpVtbl->CreateRotateTransform(This,transform);
}
static inline HRESULT IDCompositionDesktopDevice_CreateSkewTransform(IDCompositionDesktopDevice* This,IDCompositionSkewTransform **transform) {
    return This->lpVtbl->CreateSkewTransform(This,transform);
}
static inline HRESULT IDCompositionDesktopDevice_CreateMatrixTransform(IDCompositionDesktopDevice* This,IDCompositionMatrixTransform **transform) {
    return This->lpVtbl->CreateMatrixTransform(This,transform);
}
static inline HRESULT IDCompositionDesktopDevice_CreateTransformGroup(IDCompositionDesktopDevice* This,IDCompositionTransform **transforms,UINT elements,IDCompositionTransform **transform_group) {
    return This->lpVtbl->CreateTransformGroup(This,transforms,elements,transform_group);
}
static inline HRESULT IDCompositionDesktopDevice_CreateTranslateTransform3D(IDCompositionDesktopDevice* This,IDCompositionTranslateTransform3D **transform_3d) {
    return This->lpVtbl->CreateTranslateTransform3D(This,transform_3d);
}
static inline HRESULT IDCompositionDesktopDevice_CreateScaleTransform3D(IDCompositionDesktopDevice* This,IDCompositionScaleTransform3D **transform_3d) {
    return This->lpVtbl->CreateScaleTransform3D(This,transform_3d);
}
static inline HRESULT IDCompositionDesktopDevice_CreateRotateTransform3D(IDCompositionDesktopDevice* This,IDCompositionRotateTransform3D **transform_3d) {
    return This->lpVtbl->CreateRotateTransform3D(This,transform_3d);
}
static inline HRESULT IDCompositionDesktopDevice_CreateMatrixTransform3D(IDCompositionDesktopDevice* This,IDCompositionMatrixTransform3D **transform_3d) {
    return This->lpVtbl->CreateMatrixTransform3D(This,transform_3d);
}
static inline HRESULT IDCompositionDesktopDevice_CreateTransform3DGroup(IDCompositionDesktopDevice* This,IDCompositionTransform3D **transforms_3d,UINT elements,IDCompositionTransform3D **transform_3d_group) {
    return This->lpVtbl->CreateTransform3DGroup(This,transforms_3d,elements,transform_3d_group);
}
static inline HRESULT IDCompositionDesktopDevice_CreateEffectGroup(IDCompositionDesktopDevice* This,IDCompositionEffectGroup **effect_group) {
    return This->lpVtbl->CreateEffectGroup(This,effect_group);
}
static inline HRESULT IDCompositionDesktopDevice_CreateRectangleClip(IDCompositionDesktopDevice* This,IDCompositionRectangleClip **clip) {
    return This->lpVtbl->CreateRectangleClip(This,clip);
}
static inline HRESULT IDCompositionDesktopDevice_CreateAnimation(IDCompositionDesktopDevice* This,IDCompositionAnimation **animation) {
    return This->lpVtbl->CreateAnimation(This,animation);
}
/*** IDCompositionDesktopDevice methods ***/
static inline HRESULT IDCompositionDesktopDevice_CreateTargetForHwnd(IDCompositionDesktopDevice* This,HWND hwnd,BOOL topmost,IDCompositionTarget **target) {
    return This->lpVtbl->CreateTargetForHwnd(This,hwnd,topmost,target);
}
static inline HRESULT IDCompositionDesktopDevice_CreateSurfaceFromHandle(IDCompositionDesktopDevice* This,HANDLE handle,IUnknown **surface) {
    return This->lpVtbl->CreateSurfaceFromHandle(This,handle,surface);
}
static inline HRESULT IDCompositionDesktopDevice_CreateSurfaceFromHwnd(IDCompositionDesktopDevice* This,HWND hwnd,IUnknown **surface) {
    return This->lpVtbl->CreateSurfaceFromHwnd(This,hwnd,surface);
}
#endif
#endif

#endif


#endif  /* __IDCompositionDesktopDevice_INTERFACE_DEFINED__ */

STDAPI DCompositionCreateDevice(IDXGIDevice *dxgi_device, REFIID iid, void **device);
STDAPI DCompositionCreateDevice2(IUnknown *rendering_device, REFIID iid, void **device);
/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __dcomp_h__ */
