From: Zhiyi Zhang zzhang@codeweavers.com
Note that there are some C++ methods of IDCompositionVisual are renamed to avoid conflicts. --- include/Makefile.in | 1 + include/dcomp.h | 507 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 508 insertions(+) create mode 100644 include/dcomp.h
diff --git a/include/Makefile.in b/include/Makefile.in index 54939f1c900..fc4672f418d 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -182,6 +182,7 @@ SOURCES = \ dciddi.h \ dciman.h \ dcommon.idl \ + dcomp.h \ dcomptypes.h \ dde.h \ dde.rh \ diff --git a/include/dcomp.h b/include/dcomp.h new file mode 100644 index 00000000000..555efa8015d --- /dev/null +++ b/include/dcomp.h @@ -0,0 +1,507 @@ +/* + * Copyright 2023 Zhiyi Zhang for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __WINE_DCOMP_H +#define __WINE_DCOMP_H + +#include <dcommon.h> +#include <d2dbasetypes.h> +#ifndef D3DMATRIX_DEFINED +#include <d3d9types.h> +#endif +#include <dcomptypes.h> + +typedef interface IDCompositionAffineTransform2DEffect IDCompositionAffineTransform2DEffect; +typedef interface IDCompositionAnimation IDCompositionAnimation; +typedef interface IDCompositionArithmeticCompositeEffect IDCompositionArithmeticCompositeEffect; +typedef interface IDCompositionBlendEffect IDCompositionBlendEffect; +typedef interface IDCompositionBrightnessEffect IDCompositionBrightnessEffect; +typedef interface IDCompositionClip IDCompositionClip; +typedef interface IDCompositionColorMatrixEffect IDCompositionColorMatrixEffect; +typedef interface IDCompositionCompositeEffect IDCompositionCompositeEffect; +typedef interface IDCompositionDevice IDCompositionDevice; +typedef interface IDCompositionEffect IDCompositionEffect; +typedef interface IDCompositionEffectGroup IDCompositionEffectGroup; +typedef interface IDCompositionFilterEffect IDCompositionFilterEffect; +typedef interface IDCompositionGaussianBlurEffect IDCompositionGaussianBlurEffect; +typedef interface IDCompositionHueRotationEffect IDCompositionHueRotationEffect; +typedef interface IDCompositionLinearTransferEffect IDCompositionLinearTransferEffect; +typedef interface IDCompositionMatrixTransform IDCompositionMatrixTransform; +typedef interface IDCompositionMatrixTransform3D IDCompositionMatrixTransform3D; +typedef interface IDCompositionRectangleClip IDCompositionRectangleClip; +typedef interface IDCompositionRotateTransform IDCompositionRotateTransform; +typedef interface IDCompositionRotateTransform3D IDCompositionRotateTransform3D; +typedef interface IDCompositionSaturationEffect IDCompositionSaturationEffect; +typedef interface IDCompositionScaleTransform IDCompositionScaleTransform; +typedef interface IDCompositionScaleTransform3D IDCompositionScaleTransform3D; +typedef interface IDCompositionShadowEffect IDCompositionShadowEffect; +typedef interface IDCompositionSkewTransform IDCompositionSkewTransform; +typedef interface IDCompositionSurface IDCompositionSurface; +typedef interface IDCompositionTableTransferEffect IDCompositionTableTransferEffect; +typedef interface IDCompositionTarget IDCompositionTarget; +typedef interface IDCompositionTransform IDCompositionTransform; +typedef interface IDCompositionTransform3D IDCompositionTransform3D; +typedef interface IDCompositionTranslateTransform IDCompositionTranslateTransform; +typedef interface IDCompositionTranslateTransform3D IDCompositionTranslateTransform3D; +typedef interface IDCompositionTurbulenceEffect IDCompositionTurbulenceEffect; +typedef interface IDCompositionVirtualSurface IDCompositionVirtualSurface; +typedef interface IDCompositionVisual IDCompositionVisual; +typedef interface IDCompositionDesktopDevice IDCompositionDesktopDevice; +typedef interface IDCompositionDevice2 IDCompositionDevice2; +typedef interface IDCompositionDeviceDebug IDCompositionDeviceDebug; +typedef interface IDCompositionSurfaceFactory IDCompositionSurfaceFactory; +typedef interface IDCompositionVisual2 IDCompositionVisual2; +typedef interface IDCompositionVisualDebug IDCompositionVisualDebug; +typedef interface IDCompositionDevice3 IDCompositionDevice3; +typedef interface IDCompositionVisual3 IDCompositionVisual3; + +#define INTERFACE IDCompositionDevice +DECLARE_INTERFACE_IID_(IDCompositionDevice, IUnknown, "c37ea93a-e7aa-450d-b16f-9746cb0407f3") +{ + /* IUnknown methods */ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *out) PURE; + STDMETHOD_(ULONG, AddRef)(THIS) PURE; + STDMETHOD_(ULONG, Release)(THIS) PURE; + /* IDCompositionDevice methods */ + STDMETHOD(Commit)(THIS) PURE; + STDMETHOD(WaitForCommitCompletion)(THIS) PURE; + STDMETHOD(GetFrameStatistics)(THIS_ DCOMPOSITION_FRAME_STATISTICS *statistics) PURE; + STDMETHOD(CreateTargetForHwnd)(THIS_ HWND hwnd, BOOL topmost, IDCompositionTarget **target) PURE; + STDMETHOD(CreateVisual)(THIS_ IDCompositionVisual **visual) PURE; + STDMETHOD(CreateSurface)(THIS_ UINT width, UINT height, DXGI_FORMAT pixel_format, DXGI_ALPHA_MODE alpha_mode, IDCompositionSurface **surface) PURE; + STDMETHOD(CreateVirtualSurface)(THIS_ UINT width, UINT height, DXGI_FORMAT pixel_format, DXGI_ALPHA_MODE alpha_mode, IDCompositionVirtualSurface **surface) PURE; + STDMETHOD(CreateSurfaceFromHandle)(THIS_ HANDLE handle, IUnknown **surface) PURE; + STDMETHOD(CreateSurfaceFromHwnd)(THIS_ HWND hwnd, IUnknown **surface) PURE; + STDMETHOD(CreateTranslateTransform)(THIS_ IDCompositionTranslateTransform **transform) PURE; + STDMETHOD(CreateScaleTransform)(THIS_ IDCompositionScaleTransform **transform) PURE; + STDMETHOD(CreateRotateTransform)(THIS_ IDCompositionRotateTransform **transform) PURE; + STDMETHOD(CreateSkewTransform)(THIS_ IDCompositionSkewTransform **transform) PURE; + STDMETHOD(CreateMatrixTransform)(THIS_ IDCompositionMatrixTransform **transform) PURE; + STDMETHOD(CreateTransformGroup)(THIS_ IDCompositionTransform **transforms, UINT elements, IDCompositionTransform **transform_group) PURE; + STDMETHOD(CreateTranslateTransform3D)(THIS_ IDCompositionTranslateTransform3D **transform_3d) PURE; + STDMETHOD(CreateScaleTransform3D)(THIS_ IDCompositionScaleTransform3D **transform_3d) PURE; + STDMETHOD(CreateRotateTransform3D)(THIS_ IDCompositionRotateTransform3D **transform_3d) PURE; + STDMETHOD(CreateMatrixTransform3D)(THIS_ IDCompositionMatrixTransform3D **transform_3d) PURE; + STDMETHOD(CreateTransform3DGroup)(THIS_ IDCompositionTransform3D **transforms_3d, UINT elements, IDCompositionTransform3D **transform_3d_group) PURE; + STDMETHOD(CreateEffectGroup)(THIS_ IDCompositionEffectGroup **effect_group) PURE; + STDMETHOD(CreateRectangleClip)(THIS_ IDCompositionRectangleClip **clip) PURE; + STDMETHOD(CreateAnimation)(THIS_ IDCompositionAnimation **animation) PURE; + STDMETHOD(CheckDeviceState)(THIS_ BOOL *valid) PURE; +}; +#undef INTERFACE + +#if defined(COBJMACROS) && defined(__WINESRC__) +/* IUnknown methods */ +#define IDCompositionDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDCompositionDevice_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDCompositionDevice_Release(p) (p)->lpVtbl->Release(p) +/* IDCompositionDevice methods */ +#define IDCompositionDevice_Commit(p) (p)->lpVtbl->Commit(p) +#define IDCompositionDevice_WaitForCommitCompletion(p) (p)->lpVtbl->WaitForCommitCompletion(p) +#define IDCompositionDevice_GetFrameStatistics(p,a) (p)->lpVtbl->GetFrameStatistics(p,a) +#define IDCompositionDevice_CreateTargetForHwnd(p,a,b,c) (p)->lpVtbl->CreateTargetForHwnd(p,a,b,c) +#define IDCompositionDevice_CreateVisual(p,a) (p)->lpVtbl->CreateVisual(p,a) +#define IDCompositionDevice_CreateSurface(p,a,b,c,d,e) (p)->lpVtbl->CreateSurface(p,a,b,c,d,e) +#define IDCompositionDevice_CreateVirtualSurface(p,a,b,c,d,e) (p)->lpVtbl->CreateVirtualSurface(p,a,b,c,d,e) +#define IDCompositionDevice_CreateSurfaceFromHandle(p,a,b) (p)->lpVtbl->CreateSurfaceFromHandle(p,a,b) +#define IDCompositionDevice_CreateSurfaceFromHwnd(p,a,b) (p)->lpVtbl->CreateSurfaceFromHwnd(p,a,b) +#define IDCompositionDevice_CreateTranslateTransform(p,a) (p)->lpVtbl->CreateTranslateTransform(p,a) +#define IDCompositionDevice_CreateScaleTransform(p,a) (p)->lpVtbl->CreateScaleTransform(p,a) +#define IDCompositionDevice_CreateRotateTransform(p,a) (p)->lpVtbl->CreateRotateTransform(p,a) +#define IDCompositionDevice_CreateSkewTransform(p,a) (p)->lpVtbl->CreateSkewTransform(p,a) +#define IDCompositionDevice_CreateMatrixTransform(p,a) (p)->lpVtbl->CreateMatrixTransform(p,a) +#define IDCompositionDevice_CreateTransformGroup(p,a,b,c) (p)->lpVtbl->CreateTransformGroup(p,a,b,c) +#define IDCompositionDevice_CreateTranslateTransform3D(p,a) (p)->lpVtbl->CreateTranslateTransform3D(p,a) +#define IDCompositionDevice_CreateScaleTransform3D(p,a) (p)->lpVtbl->CreateScaleTransform3D(p,a) +#define IDCompositionDevice_CreateRotateTransform3D(p,a) (p)->lpVtbl->CreateRotateTransform3D(p,a) +#define IDCompositionDevice_CreateMatrixTransform3D(p,a) (p)->lpVtbl->CreateMatrixTransform3D(p,a) +#define IDCompositionDevice_CreateTransform3DGroup(p,a,b,c) (p)->lpVtbl->CreateTransform3DGroup(p,a,b,c) +#define IDCompositionDevice_CreateEffectGroup(p,a) (p)->lpVtbl->CreateEffectGroup(p,a) +#define IDCompositionDevice_CreateRectangleClip(p,a) (p)->lpVtbl->CreateRectangleClip(p,a) +#define IDCompositionDevice_CreateAnimation(p,a) (p)->lpVtbl->CreateAnimation(p,a) +#define IDCompositionDevice_CheckDeviceState(p,a) (p)->lpVtbl->CheckDeviceState(p,a) +#endif + +#define INTERFACE IDCompositionDevice2 +DECLARE_INTERFACE_IID_(IDCompositionDevice2, IUnknown, "75f6468d-1b8e-447c-9bc6-75fea80b5b25") +{ + /* IUnknown methods */ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *out) PURE; + STDMETHOD_(ULONG, AddRef)(THIS) PURE; + STDMETHOD_(ULONG, Release)(THIS) PURE; + /* IDCompositionDevice2 methods */ + STDMETHOD(Commit)(THIS) PURE; + STDMETHOD(WaitForCommitCompletion)(THIS) PURE; + STDMETHOD(GetFrameStatistics)(THIS_ DCOMPOSITION_FRAME_STATISTICS *statistics) PURE; + STDMETHOD(CreateVisual)(THIS_ IDCompositionVisual2 **visual) PURE; + STDMETHOD(CreateSurfaceFactory)(THIS_ IUnknown *rendering_device, IDCompositionSurfaceFactory **surface_factory) PURE; + STDMETHOD(CreateSurface)(THIS_ UINT width, UINT height, DXGI_FORMAT pixel_format, DXGI_ALPHA_MODE alpha_mode, IDCompositionSurface **surface) PURE; + STDMETHOD(CreateVirtualSurface)(THIS_ UINT width, UINT height, DXGI_FORMAT pixel_format, DXGI_ALPHA_MODE alpha_mode, IDCompositionVirtualSurface **surface) PURE; + STDMETHOD(CreateTranslateTransform)(THIS_ IDCompositionTranslateTransform **transform) PURE; + STDMETHOD(CreateScaleTransform)(THIS_ IDCompositionScaleTransform **transform) PURE; + STDMETHOD(CreateRotateTransform)(THIS_ IDCompositionRotateTransform **transform) PURE; + STDMETHOD(CreateSkewTransform)(THIS_ IDCompositionSkewTransform **transform) PURE; + STDMETHOD(CreateMatrixTransform)(THIS_ IDCompositionMatrixTransform **transform) PURE; + STDMETHOD(CreateTransformGroup)(THIS_ IDCompositionTransform **transforms, UINT elements, IDCompositionTransform **transform_group) PURE; + STDMETHOD(CreateTranslateTransform3D)(THIS_ IDCompositionTranslateTransform3D **transform_3d) PURE; + STDMETHOD(CreateScaleTransform3D)(THIS_ IDCompositionScaleTransform3D **transform_3d) PURE; + STDMETHOD(CreateRotateTransform3D)(THIS_ IDCompositionRotateTransform3D **transform_3d) PURE; + STDMETHOD(CreateMatrixTransform3D)(THIS_ IDCompositionMatrixTransform3D **transform_3d) PURE; + STDMETHOD(CreateTransform3DGroup)(THIS_ IDCompositionTransform3D **transforms_3d, UINT elements, IDCompositionTransform3D **transform_3d_group) PURE; + STDMETHOD(CreateEffectGroup)(THIS_ IDCompositionEffectGroup **effect_group) PURE; + STDMETHOD(CreateRectangleClip)(THIS_ IDCompositionRectangleClip **clip) PURE; + STDMETHOD(CreateAnimation)(THIS_ IDCompositionAnimation **animation) PURE; +}; +#undef INTERFACE + +#if defined(COBJMACROS) && defined(__WINESRC__) +/* IUnknown methods */ +#define IDCompositionDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDCompositionDevice2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDCompositionDevice2_Release(p) (p)->lpVtbl->Release(p) +/* IDCompositionDevice2 methods */ +#define IDCompositionDevice2_Commit(p) (p)->lpVtbl->Commit(p) +#define IDCompositionDevice2_WaitForCommitCompletion(p) (p)->lpVtbl->WaitForCommitCompletion(p) +#define IDCompositionDevice2_GetFrameStatistics(p,a) (p)->lpVtbl->GetFrameStatistics(p,a) +#define IDCompositionDevice2_CreateVisual(p,a) (p)->lpVtbl->CreateVisual(p,a) +#define IDCompositionDevice2_CreateSurfaceFactory(p,a,b) (p)->lpVtbl->CreateSurfaceFactory(p,a,b) +#define IDCompositionDevice2_CreateSurface(p,a,b,c,d,e) (p)->lpVtbl->CreateSurface(p,a,b,c,d,e) +#define IDCompositionDevice2_CreateVirtualSurface(p,a,b,c,d,e) (p)->lpVtbl->CreateVirtualSurface(p,a,b,c,d,e) +#define IDCompositionDevice2_CreateTranslateTransform(p,a) (p)->lpVtbl->CreateTranslateTransform(p,a) +#define IDCompositionDevice2_CreateScaleTransform(p,a) (p)->lpVtbl->CreateScaleTransform(p,a) +#define IDCompositionDevice2_CreateRotateTransform(p,a) (p)->lpVtbl->CreateRotateTransform(p,a) +#define IDCompositionDevice2_CreateSkewTransform(p,a) (p)->lpVtbl->CreateSkewTransform(p,a) +#define IDCompositionDevice2_CreateMatrixTransform(p,a) (p)->lpVtbl->CreateMatrixTransform(p,a) +#define IDCompositionDevice2_CreateTransformGroup(p,a,b,c) (p)->lpVtbl->CreateTransformGroup(p,a,b,c) +#define IDCompositionDevice2_CreateTranslateTransform3D(p,a) (p)->lpVtbl->CreateTranslateTransform3D(p,a) +#define IDCompositionDevice2_CreateScaleTransform3D(p,a) (p)->lpVtbl->CreateScaleTransform3D(p,a) +#define IDCompositionDevice2_CreateRotateTransform3D(p,a) (p)->lpVtbl->CreateRotateTransform3D(p,a) +#define IDCompositionDevice2_CreateMatrixTransform3D(p,a) (p)->lpVtbl->CreateMatrixTransform3D(p,a) +#define IDCompositionDevice2_CreateTransform3DGroup(p,a,b,c) (p)->lpVtbl->CreateTransform3DGroup(p,a,b,c) +#define IDCompositionDevice2_CreateEffectGroup(p,a) (p)->lpVtbl->CreateEffectGroup(p,a) +#define IDCompositionDevice2_CreateRectangleClip(p,a) (p)->lpVtbl->CreateRectangleClip(p,a) +#define IDCompositionDevice2_CreateAnimation(p,a) (p)->lpVtbl->CreateAnimation(p,a) +#endif + +#define INTERFACE IDCompositionDevice3 +DECLARE_INTERFACE_IID_(IDCompositionDevice3, IUnknown, "0987cb06-f916-48bf-8d35-ce7641781bd9") +{ + /* IUnknown methods */ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *out) PURE; + STDMETHOD_(ULONG, AddRef)(THIS) PURE; + STDMETHOD_(ULONG, Release)(THIS) PURE; + /* IDCompositionDevice2 methods */ + STDMETHOD(Commit)(THIS) PURE; + STDMETHOD(WaitForCommitCompletion)(THIS) PURE; + STDMETHOD(GetFrameStatistics)(THIS_ DCOMPOSITION_FRAME_STATISTICS *statistics) PURE; + STDMETHOD(CreateVisual)(THIS_ IDCompositionVisual2 **visual) PURE; + STDMETHOD(CreateSurfaceFactory)(THIS_ IUnknown *rendering_device, IDCompositionSurfaceFactory **surface_factory) PURE; + STDMETHOD(CreateSurface)(THIS_ UINT width, UINT height, DXGI_FORMAT pixel_format, DXGI_ALPHA_MODE alpha_mode, IDCompositionSurface **surface) PURE; + STDMETHOD(CreateVirtualSurface)(THIS_ UINT width, UINT height, DXGI_FORMAT pixel_format, DXGI_ALPHA_MODE alpha_mode, IDCompositionVirtualSurface **surface) PURE; + STDMETHOD(CreateTranslateTransform)(THIS_ IDCompositionTranslateTransform **transform) PURE; + STDMETHOD(CreateScaleTransform)(THIS_ IDCompositionScaleTransform **transform) PURE; + STDMETHOD(CreateRotateTransform)(THIS_ IDCompositionRotateTransform **transform) PURE; + STDMETHOD(CreateSkewTransform)(THIS_ IDCompositionSkewTransform **transform) PURE; + STDMETHOD(CreateMatrixTransform)(THIS_ IDCompositionMatrixTransform **transform) PURE; + STDMETHOD(CreateTransformGroup)(THIS_ IDCompositionTransform **transforms, UINT elements, IDCompositionTransform **transform_group) PURE; + STDMETHOD(CreateTranslateTransform3D)(THIS_ IDCompositionTranslateTransform3D **transform_3d) PURE; + STDMETHOD(CreateScaleTransform3D)(THIS_ IDCompositionScaleTransform3D **transform_3d) PURE; + STDMETHOD(CreateRotateTransform3D)(THIS_ IDCompositionRotateTransform3D **transform_3d) PURE; + STDMETHOD(CreateMatrixTransform3D)(THIS_ IDCompositionMatrixTransform3D **transform_3d) PURE; + STDMETHOD(CreateTransform3DGroup)(THIS_ IDCompositionTransform3D **transforms_3d, UINT elements, IDCompositionTransform3D **transform_3d_group) PURE; + STDMETHOD(CreateEffectGroup)(THIS_ IDCompositionEffectGroup **effect_group) PURE; + STDMETHOD(CreateRectangleClip)(THIS_ IDCompositionRectangleClip **clip) PURE; + STDMETHOD(CreateAnimation)(THIS_ IDCompositionAnimation **animation) PURE; + /* IDCompositionDevice3 methods */ + STDMETHOD(CreateGaussianBlurEffect)(THIS_ IDCompositionGaussianBlurEffect **effect) PURE; + STDMETHOD(CreateBrightnessEffect)(THIS_ IDCompositionBrightnessEffect **effect) PURE; + STDMETHOD(CreateColorMatrixEffect)(THIS_ IDCompositionColorMatrixEffect **effect) PURE; + STDMETHOD(CreateShadowEffect)(THIS_ IDCompositionShadowEffect **effect) PURE; + STDMETHOD(CreateHueRotationEffect)(THIS_ IDCompositionHueRotationEffect **effect) PURE; + STDMETHOD(CreateSaturationEffect)(THIS_ IDCompositionSaturationEffect **effect) PURE; + STDMETHOD(CreateTurbulenceEffect)(THIS_ IDCompositionTurbulenceEffect **effect) PURE; + STDMETHOD(CreateLinearTransferEffect)(THIS_ IDCompositionLinearTransferEffect **effect) PURE; + STDMETHOD(CreateTableTransferEffect)(THIS_ IDCompositionTableTransferEffect **effect) PURE; + STDMETHOD(CreateCompositeEffect)(THIS_ IDCompositionCompositeEffect **effect) PURE; + STDMETHOD(CreateBlendEffect)(THIS_ IDCompositionBlendEffect **effect) PURE; + STDMETHOD(CreateArithmeticCompositeEffect)(THIS_ IDCompositionArithmeticCompositeEffect **effect) PURE; + STDMETHOD(CreateAffineTransform2DEffect)(THIS_ IDCompositionAffineTransform2DEffect **effect) PURE; +}; +#undef INTERFACE + +#if defined(COBJMACROS) && defined(__WINESRC__) +/* IUnknown methods */ +#define IDCompositionDevice3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDCompositionDevice3_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDCompositionDevice3_Release(p) (p)->lpVtbl->Release(p) +/* IDCompositionDevice2 methods */ +#define IDCompositionDevice3_Commit(p) (p)->lpVtbl->Commit(p) +#define IDCompositionDevice3_WaitForCommitCompletion(p) (p)->lpVtbl->WaitForCommitCompletion(p) +#define IDCompositionDevice3_GetFrameStatistics(p,a) (p)->lpVtbl->GetFrameStatistics(p,a) +#define IDCompositionDevice3_CreateVisual(p,a) (p)->lpVtbl->CreateVisual(p,a) +#define IDCompositionDevice3_CreateSurfaceFactory(p,a,b) (p)->lpVtbl->CreateSurfaceFactory(p,a,b) +#define IDCompositionDevice3_CreateSurface(p,a,b,c,d,e) (p)->lpVtbl->CreateSurface(p,a,b,c,d,e) +#define IDCompositionDevice3_CreateVirtualSurface(p,a,b,c,d,e) (p)->lpVtbl->CreateVirtualSurface(p,a,b,c,d,e) +#define IDCompositionDevice3_CreateTranslateTransform(p,a) (p)->lpVtbl->CreateTranslateTransform(p,a) +#define IDCompositionDevice3_CreateScaleTransform(p,a) (p)->lpVtbl->CreateScaleTransform(p,a) +#define IDCompositionDevice3_CreateRotateTransform(p,a) (p)->lpVtbl->CreateRotateTransform(p,a) +#define IDCompositionDevice3_CreateSkewTransform(p,a) (p)->lpVtbl->CreateSkewTransform(p,a) +#define IDCompositionDevice3_CreateMatrixTransform(p,a) (p)->lpVtbl->CreateMatrixTransform(p,a) +#define IDCompositionDevice3_CreateTransformGroup(p,a,b,c) (p)->lpVtbl->CreateTransformGroup(p,a,b,c) +#define IDCompositionDevice3_CreateTranslateTransform3D(p,a) (p)->lpVtbl->CreateTranslateTransform3D(p,a) +#define IDCompositionDevice3_CreateScaleTransform3D(p,a) (p)->lpVtbl->CreateScaleTransform3D(p,a) +#define IDCompositionDevice3_CreateRotateTransform3D(p,a) (p)->lpVtbl->CreateRotateTransform3D(p,a) +#define IDCompositionDevice3_CreateMatrixTransform3D(p,a) (p)->lpVtbl->CreateMatrixTransform3D(p,a) +#define IDCompositionDevice3_CreateTransform3DGroup(p,a,b,c) (p)->lpVtbl->CreateTransform3DGroup(p,a,b,c) +#define IDCompositionDevice3_CreateEffectGroup(p,a) (p)->lpVtbl->CreateEffectGroup(p,a) +#define IDCompositionDevice3_CreateRectangleClip(p,a) (p)->lpVtbl->CreateRectangleClip(p,a) +#define IDCompositionDevice3_CreateAnimation(p,a) (p)->lpVtbl->CreateAnimation(p,a) +/* IDCompositionDevice3 methods */ +#define IDCompositionDevice3_CreateGaussianBlurEffect(p,a) (p)->lpVtbl->CreateGaussianBlurEffect(p,a) +#define IDCompositionDevice3_CreateBrightnessEffect(p,a) (p)->lpVtbl->CreateBrightnessEffect(p,a) +#define IDCompositionDevice3_CreateColorMatrixEffect(p,a) (p)->lpVtbl->CreateColorMatrixEffect(p,a) +#define IDCompositionDevice3_CreateShadowEffect(p,a) (p)->lpVtbl->CreateShadowEffect(p,a) +#define IDCompositionDevice3_CreateHueRotationEffect(p,a) (p)->lpVtbl->CreateHueRotationEffect(p,a) +#define IDCompositionDevice3_CreateSaturationEffect(p,a) (p)->lpVtbl->CreateSaturationEffect(p,a) +#define IDCompositionDevice3_CreateTurbulenceEffect(p,a) (p)->lpVtbl->CreateTurbulenceEffect(p,a) +#define IDCompositionDevice3_CreateLinearTransferEffect(p,a) (p)->lpVtbl->CreateLinearTransferEffect(p,a) +#define IDCompositionDevice3_CreateTableTransferEffect(p,a) (p)->lpVtbl->CreateTableTransferEffect(p,a) +#define IDCompositionDevice3_CreateCompositeEffect(p,a) (p)->lpVtbl->CreateCompositeEffect(p,a) +#define IDCompositionDevice3_CreateBlendEffect(p,a) (p)->lpVtbl->CreateBlendEffect(p,a) +#define IDCompositionDevice3_CreateArithmeticCompositeEffect(p,a) (p)->lpVtbl->CreateArithmeticCompositeEffect(p,a) +#define IDCompositionDevice3_CreateAffineTransform2DEffect(p,a) (p)->lpVtbl->CreateAffineTransform2DEffect(p,a) +#endif + +#define INTERFACE IDCompositionDesktopDevice +DECLARE_INTERFACE_IID_(IDCompositionDesktopDevice, IDCompositionDevice2, "5f4633fe-1e08-4cb8-8c75-ce24333f5602") +{ + /* IUnknown methods */ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *out) PURE; + STDMETHOD_(ULONG, AddRef)(THIS) PURE; + STDMETHOD_(ULONG, Release)(THIS) PURE; + /* IDCompositionDevice2 methods */ + STDMETHOD(Commit)(THIS) PURE; + STDMETHOD(WaitForCommitCompletion)(THIS) PURE; + STDMETHOD(GetFrameStatistics)(THIS_ DCOMPOSITION_FRAME_STATISTICS *statistics) PURE; + STDMETHOD(CreateVisual)(THIS_ IDCompositionVisual2 **visual) PURE; + STDMETHOD(CreateSurfaceFactory)(THIS_ IUnknown *rendering_device, IDCompositionSurfaceFactory **surface_factory) PURE; + STDMETHOD(CreateSurface)(THIS_ UINT width, UINT height, DXGI_FORMAT pixel_format, DXGI_ALPHA_MODE alpha_mode, IDCompositionSurface **surface) PURE; + STDMETHOD(CreateVirtualSurface)(THIS_ UINT width, UINT height, DXGI_FORMAT pixel_format, DXGI_ALPHA_MODE alpha_mode, IDCompositionVirtualSurface **surface) PURE; + STDMETHOD(CreateTranslateTransform)(THIS_ IDCompositionTranslateTransform **transform) PURE; + STDMETHOD(CreateScaleTransform)(THIS_ IDCompositionScaleTransform **transform) PURE; + STDMETHOD(CreateRotateTransform)(THIS_ IDCompositionRotateTransform **transform) PURE; + STDMETHOD(CreateSkewTransform)(THIS_ IDCompositionSkewTransform **transform) PURE; + STDMETHOD(CreateMatrixTransform)(THIS_ IDCompositionMatrixTransform **transform) PURE; + STDMETHOD(CreateTransformGroup)(THIS_ IDCompositionTransform **transforms, UINT elements, IDCompositionTransform **transform_group) PURE; + STDMETHOD(CreateTranslateTransform3D)(THIS_ IDCompositionTranslateTransform3D **transform_3d) PURE; + STDMETHOD(CreateScaleTransform3D)(THIS_ IDCompositionScaleTransform3D **transform_3d) PURE; + STDMETHOD(CreateRotateTransform3D)(THIS_ IDCompositionRotateTransform3D **transform_3d) PURE; + STDMETHOD(CreateMatrixTransform3D)(THIS_ IDCompositionMatrixTransform3D **transform_3d) PURE; + STDMETHOD(CreateTransform3DGroup)(THIS_ IDCompositionTransform3D **transforms_3d, UINT elements, IDCompositionTransform3D **transform_3d_group) PURE; + STDMETHOD(CreateEffectGroup)(THIS_ IDCompositionEffectGroup **effect_group) PURE; + STDMETHOD(CreateRectangleClip)(THIS_ IDCompositionRectangleClip **clip) PURE; + STDMETHOD(CreateAnimation)(THIS_ IDCompositionAnimation **animation) PURE; + /* IDCompositionDesktopDevice methods */ + STDMETHOD(CreateTargetForHwnd)(THIS_ HWND hwnd, BOOL topmost, IDCompositionTarget **target) PURE; + STDMETHOD(CreateSurfaceFromHandle)(THIS_ HANDLE handle, IUnknown **surface) PURE; + STDMETHOD(CreateSurfaceFromHwnd)(THIS_ HWND hwnd, IUnknown **surface) PURE; +}; +#undef INTERFACE + +#if defined(COBJMACROS) && defined(__WINESRC__) +/* IUnknown methods */ +#define IDCompositionDesktopDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDCompositionDesktopDevice_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDCompositionDesktopDevice_Release(p) (p)->lpVtbl->Release(p) +/* IDCompositionDevice2 methods */ +#define IDCompositionDesktopDevice_Commit(p) (p)->lpVtbl->Commit(p) +#define IDCompositionDesktopDevice_WaitForCommitCompletion(p) (p)->lpVtbl->WaitForCommitCompletion(p) +#define IDCompositionDesktopDevice_GetFrameStatistics(p,a) (p)->lpVtbl->GetFrameStatistics(p,a) +#define IDCompositionDesktopDevice_CreateVisual(p,a) (p)->lpVtbl->CreateVisual(p,a) +#define IDCompositionDesktopDevice_CreateSurfaceFactory(p,a,b) (p)->lpVtbl->CreateSurfaceFactory(p,a,b) +#define IDCompositionDesktopDevice_CreateSurface(p,a,b,c,d,e) (p)->lpVtbl->CreateSurface(p,a,b,c,d,e) +#define IDCompositionDesktopDevice_CreateVirtualSurface(p,a,b,c,d,e) (p)->lpVtbl->CreateVirtualSurface(p,a,b,c,d,e) +#define IDCompositionDesktopDevice_CreateTranslateTransform(p,a) (p)->lpVtbl->CreateTranslateTransform(p,a) +#define IDCompositionDesktopDevice_CreateScaleTransform(p,a) (p)->lpVtbl->CreateScaleTransform(p,a) +#define IDCompositionDesktopDevice_CreateRotateTransform(p,a) (p)->lpVtbl->CreateRotateTransform(p,a) +#define IDCompositionDesktopDevice_CreateSkewTransform(p,a) (p)->lpVtbl->CreateSkewTransform(p,a) +#define IDCompositionDesktopDevice_CreateMatrixTransform(p,a) (p)->lpVtbl->CreateMatrixTransform(p,a) +#define IDCompositionDesktopDevice_CreateTransformGroup(p,a,b,c) (p)->lpVtbl->CreateTransformGroup(p,a,b,c) +#define IDCompositionDesktopDevice_CreateTranslateTransform3D(p,a) (p)->lpVtbl->CreateTranslateTransform3D(p,a) +#define IDCompositionDesktopDevice_CreateScaleTransform3D(p,a) (p)->lpVtbl->CreateScaleTransform3D(p,a) +#define IDCompositionDesktopDevice_CreateRotateTransform3D(p,a) (p)->lpVtbl->CreateRotateTransform3D(p,a) +#define IDCompositionDesktopDevice_CreateMatrixTransform3D(p,a) (p)->lpVtbl->CreateMatrixTransform3D(p,a) +#define IDCompositionDesktopDevice_CreateTransform3DGroup(p,a,b,c) (p)->lpVtbl->CreateTransform3DGroup(p,a,b,c) +#define IDCompositionDesktopDevice_CreateEffectGroup(p,a) (p)->lpVtbl->CreateEffectGroup(p,a) +#define IDCompositionDesktopDevice_CreateRectangleClip(p,a) (p)->lpVtbl->CreateRectangleClip(p,a) +#define IDCompositionDesktopDevice_CreateAnimation(p,a) (p)->lpVtbl->CreateAnimation(p,a) +/* IDCompositionDesktopDevice methods */ +#define IDCompositionDesktopDevice_CreateTargetForHwnd(p,a,b,c) (p)->lpVtbl->CreateTargetForHwnd(p,a,b,c) +#define IDCompositionDesktopDevice_CreateSurfaceFromHandle(p,a,b) (p)->lpVtbl->CreateSurfaceFromHandle(p,a,b) +#define IDCompositionDesktopDevice_CreateSurfaceFromHwnd(p,a,b) (p)->lpVtbl->CreateSurfaceFromHwnd(p,a,b) +#endif + +#define INTERFACE IDCompositionTarget +DECLARE_INTERFACE_IID_(IDCompositionTarget, IUnknown, "eacdd04c-117e-4e17-88f4-d1b12b0e3d89") +{ + /* IUnknown methods */ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *out) PURE; + STDMETHOD_(ULONG, AddRef)(THIS) PURE; + STDMETHOD_(ULONG, Release)(THIS) PURE; + /* IDCompositionTarget methods */ + STDMETHOD(SetRoot)(THIS_ IDCompositionVisual *visual) PURE; +}; +#undef INTERFACE + +#if defined(COBJMACROS) && defined(__WINESRC__) +/* IUnknown methods */ +#define IDCompositionTarget_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDCompositionTarget_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDCompositionTarget_Release(p) (p)->lpVtbl->Release(p) +/* IDCompositionTarget methods */ +#define IDCompositionTarget_SetRoot(p,a) (p)->lpVtbl->SetRoot(p,a) +#endif + +#define INTERFACE IDCompositionVisual +DECLARE_INTERFACE_IID_(IDCompositionVisual, IUnknown, "4d93059d-097b-4651-9a60-f0f25116e2f3") +{ + /* IUnknown methods */ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *out) PURE; + STDMETHOD_(ULONG, AddRef)(THIS) PURE; + STDMETHOD_(ULONG, Release)(THIS) PURE; + /* IDCompositionVisual methods */ + STDMETHOD(SetOffsetX)(THIS_ float offset_x) PURE; + /* C++ method: STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation *animation) PURE; Rename it to SetOffsetXAnimation */ + STDMETHOD(SetOffsetXAnimation)(THIS_ IDCompositionAnimation *animation) PURE; + STDMETHOD(SetOffsetY)(THIS_ float offset_y) PURE; + /* C++ method: STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation *animation) PURE; Rename it to SetOffsetYAnimation */ + STDMETHOD(SetOffsetYAnimation)(THIS_ IDCompositionAnimation *animation) PURE; + /* C++ method: STDMETHOD(SetTransform)(THIS_ const D2D_MATRIX_3X2_F &matrix) PURE; Use pointer instead of reference */ + STDMETHOD(SetTransform)(THIS_ const D2D_MATRIX_3X2_F *matrix) PURE; + /* C++ method: STDMETHOD(SetTransform)(THIS_ IDCompositionTransform *transform) PURE; Rename it to SetTransformObject */ + STDMETHOD(SetTransformObject)(THIS_ IDCompositionTransform *transform) PURE; + STDMETHOD(SetTransformParent)(THIS_ IDCompositionVisual *visual) PURE; + STDMETHOD(SetEffect)(THIS_ IDCompositionEffect *effect) PURE; + STDMETHOD(SetBitmapInterpolationMode)(THIS_ enum DCOMPOSITION_BITMAP_INTERPOLATION_MODE interpolation_mode) PURE; + STDMETHOD(SetBorderMode)(THIS_ enum DCOMPOSITION_BORDER_MODE border_mode) PURE; + /* C++ method: STDMETHOD(SetClip)(THIS_ const D2D_RECT_F &rect) PURE; Use pointer instead of reference */ + STDMETHOD(SetClip)(THIS_ const D2D_RECT_F *rect) PURE; + /* C++ method: STDMETHOD(SetClip)(THIS_ IDCompositionClip *clip) PURE; Rename it to SetClipObject */ + STDMETHOD(SetClipObject)(THIS_ IDCompositionClip *clip) PURE; + STDMETHOD(SetContent)(THIS_ IUnknown *content) PURE; + STDMETHOD(AddVisual)(THIS_ IDCompositionVisual *visual, BOOL insert_above, IDCompositionVisual *reference_visual) PURE; + STDMETHOD(RemoveVisual)(THIS_ IDCompositionVisual *visual) PURE; + STDMETHOD(RemoveAllVisuals)(THIS) PURE; + STDMETHOD(SetCompositeMode)(THIS_ enum DCOMPOSITION_COMPOSITE_MODE composite_mode) PURE; +}; +#undef INTERFACE + +#if defined(COBJMACROS) && defined(__WINESRC__) +/* IUnknown methods */ +#define IDCompositionVisual_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDCompositionVisual_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDCompositionVisual_Release(p) (p)->lpVtbl->Release(p) +/* IDCompositionVisual methods */ +#define IDCompositionVisual_SetOffsetX(p,a) (p)->lpVtbl->SetOffsetX(p,a) +#define IDCompositionVisual_SetOffsetXAnimation(p,a) (p)->lpVtbl->SetOffsetXAnimation(p,a) +#define IDCompositionVisual_SetOffsetY(p,a) (p)->lpVtbl->SetOffsetY(p,a) +#define IDCompositionVisual_SetOffsetYAnimation(p,a) (p)->lpVtbl->SetOffsetYAnimation(p,a) +#define IDCompositionVisual_SetTransform(p,a) (p)->lpVtbl->SetTransform(p,a) +#define IDCompositionVisual_SetTransformObject(p,a) (p)->lpVtbl->SetTransformObject(p,a) +#define IDCompositionVisual_SetTransformParent(p,a) (p)->lpVtbl->SetTransformParent(p,a) +#define IDCompositionVisual_SetEffect(p,a) (p)->lpVtbl->SetEffect(p,a) +#define IDCompositionVisual_SetBitmapInterpolationMode(p,a) (p)->lpVtbl->SetBitmapInterpolationMode(p,a) +#define IDCompositionVisual_SetBorderMode(p,a) (p)->lpVtbl->SetBorderMode(p,a) +#define IDCompositionVisual_SetClip(p,a) (p)->lpVtbl->SetClip(p,a) +#define IDCompositionVisual_SetClipObject(p,a) (p)->lpVtbl->SetClipObject(p,a) +#define IDCompositionVisual_SetContent(p,a) (p)->lpVtbl->SetContent(p,a) +#define IDCompositionVisual_AddVisual(p,a,b,c) (p)->lpVtbl->AddVisual(p,a,b,c) +#define IDCompositionVisual_RemoveVisual(p,a) (p)->lpVtbl->RemoveVisual(p,a) +#define IDCompositionVisual_RemoveAllVisuals(p) (p)->lpVtbl->RemoveAllVisuals(p) +#define IDCompositionVisual_SetCompositeMode(p,a) (p)->lpVtbl->SetCompositeMode(p,a) +#endif + +#define INTERFACE IDCompositionVisual2 +DECLARE_INTERFACE_IID_(IDCompositionVisual2, IDCompositionVisual, "e8de1639-4331-4b26-bc5f-6a321d347a85") +{ + /* IUnknown methods */ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *out) PURE; + STDMETHOD_(ULONG, AddRef)(THIS) PURE; + STDMETHOD_(ULONG, Release)(THIS) PURE; + /* IDCompositionVisual methods */ + STDMETHOD(SetOffsetX)(THIS_ float offset_x) PURE; + /* C++ method: STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation *animation) PURE; Rename it to SetOffsetXAnimation */ + STDMETHOD(SetOffsetXAnimation)(THIS_ IDCompositionAnimation *animation) PURE; + STDMETHOD(SetOffsetY)(THIS_ float offset_y) PURE; + /* C++ method: STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation *animation) PURE; Rename it to SetOffsetYAnimation */ + STDMETHOD(SetOffsetYAnimation)(THIS_ IDCompositionAnimation *animation) PURE; + /* C++ method: STDMETHOD(SetTransform)(THIS_ const D2D_MATRIX_3X2_F &matrix) PURE; Use pointer instead of reference */ + STDMETHOD(SetTransform)(THIS_ const D2D_MATRIX_3X2_F *matrix) PURE; + /* C++ method: STDMETHOD(SetTransform)(THIS_ IDCompositionTransform *transform) PURE; Rename it to SetTransformObject */ + STDMETHOD(SetTransformObject)(THIS_ IDCompositionTransform *transform) PURE; + STDMETHOD(SetTransformParent)(THIS_ IDCompositionVisual *visual) PURE; + STDMETHOD(SetEffect)(THIS_ IDCompositionEffect *effect) PURE; + STDMETHOD(SetBitmapInterpolationMode)(THIS_ enum DCOMPOSITION_BITMAP_INTERPOLATION_MODE interpolation_mode) PURE; + STDMETHOD(SetBorderMode)(THIS_ enum DCOMPOSITION_BORDER_MODE border_mode) PURE; + /* C++ method: STDMETHOD(SetClip)(THIS_ const D2D_RECT_F &rect) PURE; Use pointer instead of reference */ + STDMETHOD(SetClip)(THIS_ const D2D_RECT_F *rect) PURE; + /* C++ method: STDMETHOD(SetClip)(THIS_ IDCompositionClip *clip) PURE; Rename it to SetClipObject */ + STDMETHOD(SetClipObject)(THIS_ IDCompositionClip *clip) PURE; + STDMETHOD(SetContent)(THIS_ IUnknown *content) PURE; + STDMETHOD(AddVisual)(THIS_ IDCompositionVisual *visual, BOOL insert_above, IDCompositionVisual *reference_visual) PURE; + STDMETHOD(RemoveVisual)(THIS_ IDCompositionVisual *visual) PURE; + STDMETHOD(RemoveAllVisuals)(THIS) PURE; + STDMETHOD(SetCompositeMode)(THIS_ enum DCOMPOSITION_COMPOSITE_MODE composite_mode) PURE; + /* IDCompositionVisual2 methods */ + STDMETHOD(SetOpacityMode)(THIS_ enum DCOMPOSITION_OPACITY_MODE opacity_mode) PURE; + STDMETHOD(SetBackFaceVisibility)(THIS_ enum DCOMPOSITION_BACKFACE_VISIBILITY visibility) PURE; +}; +#undef INTERFACE + +#if defined(COBJMACROS) && defined(__WINESRC__) +/* IUnknown methods */ +#define IDCompositionVisual2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDCompositionVisual2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDCompositionVisual2_Release(p) (p)->lpVtbl->Release(p) +/* IDCompositionVisual methods */ +#define IDCompositionVisual2_SetOffsetX(p,a) (p)->lpVtbl->SetOffsetX(p,a) +#define IDCompositionVisual2_SetOffsetXAnimation(p,a) (p)->lpVtbl->SetOffsetXAnimation(p,a) +#define IDCompositionVisual2_SetOffsetY(p,a) (p)->lpVtbl->SetOffsetY(p,a) +#define IDCompositionVisual2_SetOffsetYAnimation(p,a) (p)->lpVtbl->SetOffsetYAnimation(p,a) +#define IDCompositionVisual2_SetTransform(p,a) (p)->lpVtbl->SetTransform(p,a) +#define IDCompositionVisual2_SetTransformObject(p,a) (p)->lpVtbl->SetTransformObject(p,a) +#define IDCompositionVisual2_SetTransformParent(p,a) (p)->lpVtbl->SetTransformParent(p,a) +#define IDCompositionVisual2_SetEffect(p,a) (p)->lpVtbl->SetEffect(p,a) +#define IDCompositionVisual2_SetBitmapInterpolationMode(p,a) (p)->lpVtbl->SetBitmapInterpolationMode(p,a) +#define IDCompositionVisual2_SetBorderMode(p,a) (p)->lpVtbl->SetBorderMode(p,a) +#define IDCompositionVisual2_SetClip(p,a) (p)->lpVtbl->SetClip(p,a) +#define IDCompositionVisual2_SetClipObject(p,a) (p)->lpVtbl->SetClipObject(p,a) +#define IDCompositionVisual2_SetContent(p,a) (p)->lpVtbl->SetContent(p,a) +#define IDCompositionVisual2_AddVisual(p,a,b,c) (p)->lpVtbl->AddVisual(p,a,b,c) +#define IDCompositionVisual2_RemoveVisual(p,a) (p)->lpVtbl->RemoveVisual(p,a) +#define IDCompositionVisual2_RemoveAllVisuals(p) (p)->lpVtbl->RemoveAllVisuals(p) +#define IDCompositionVisual2_SetCompositeMode(p,a) (p)->lpVtbl->SetCompositeMode(p,a) +/* IDCompositionVisual2 methods */ +#define IDCompositionVisual2_SetOpacityMode(p,a) (p)->lpVtbl->SetOpacityMode(p,a) +#define IDCompositionVisual2_SetBackFaceVisibility(p,a) (p)->lpVtbl->SetBackFaceVisibility(p,a) +#endif + +STDAPI DCompositionCreateDevice(IDXGIDevice *dxgi_device, REFIID iid, void **device); +STDAPI DCompositionCreateDevice2(IUnknown *rendering_device, REFIID iid, void **device); + +#endif /* __WINE_DCOMP_H */