Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 
      7 #ifndef _DCOMP_H_
      8 #define _DCOMP_H_
      9 
     10 #include <d2dbasetypes.h>
     11 #ifndef D3DMATRIX_DEFINED
     12 #include <d3d9types.h>
     13 #endif
     14 #include <d2d1_1.h>
     15 #include <winapifamily.h>
     16 
     17 #include <dcomptypes.h>
     18 #include <dcompanimation.h>
     19 
     20 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
     21 
     22 #undef INTERFACE
     23 #define INTERFACE IDCompositionSurface
     24 DECLARE_INTERFACE_IID_(IDCompositionSurface,IUnknown,"bb8a4953-2c99-4f5a-96f5-4819027fa3ac")
     25 {
     26     STDMETHOD(BeginDraw)(THIS_ const RECT*,REFIID,void**,POINT*) PURE;
     27     STDMETHOD(EndDraw)(THIS) PURE;
     28     STDMETHOD(SuspendDraw)(THIS) PURE;
     29     STDMETHOD(ResumeDraw)(THIS) PURE;
     30     STDMETHOD(Scroll)(THIS_ const RECT*,const RECT*,int,int) PURE;
     31 };
     32 
     33 #undef INTERFACE
     34 #define INTERFACE IDCompositionVirtualSurface
     35 DECLARE_INTERFACE_IID_(IDCompositionVirtualSurface,IDCompositionSurface,"ae471c51-5f53-4a24-8d3e-d0c39c30b3f0")
     36 {
     37     STDMETHOD(Resize)(THIS_ UINT,UINT) PURE;
     38     STDMETHOD(Trim)(THIS_ const RECT*,UINT) PURE;
     39 };
     40 
     41 #undef INTERFACE
     42 #define INTERFACE IDCompositionEffect
     43 DECLARE_INTERFACE_IID_(IDCompositionEffect,IUnknown,"ec81b08f-bfcb-4e8d-b193-a915587999e8")
     44 {
     45 };
     46 
     47 #undef INTERFACE
     48 #define INTERFACE IDCompositionTransform3D
     49 DECLARE_INTERFACE_IID_(IDCompositionTransform3D,IDCompositionEffect,"71185722-246b-41f2-aad1-0443f7f4bfc2")
     50 {
     51 };
     52 
     53 #undef INTERFACE
     54 #define INTERFACE IDCompositionTransform
     55 DECLARE_INTERFACE_IID_(IDCompositionTransform,IDCompositionTransform3D,"fd55faa7-37e0-4c20-95d2-9be45bc33f55")
     56 {
     57 };
     58 
     59 #undef INTERFACE
     60 #define INTERFACE IDCompositionTranslateTransform
     61 DECLARE_INTERFACE_IID_(IDCompositionTranslateTransform,IDCompositionTransform,"06791122-c6f0-417d-8323-269e987f5954")
     62 {
     63     STDMETHOD(SetOffsetX)(THIS_ float) PURE;
     64     STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
     65     STDMETHOD(SetOffsetY)(THIS_ float) PURE;
     66     STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
     67 };
     68 
     69 #undef INTERFACE
     70 #define INTERFACE IDCompositionScaleTransform
     71 DECLARE_INTERFACE_IID_(IDCompositionScaleTransform,IDCompositionTransform,"71fde914-40ef-45ef-bd51-68b037c339f9")
     72 {
     73     STDMETHOD(SetScaleX)(THIS_ float) PURE;
     74     STDMETHOD(SetScaleX)(THIS_ IDCompositionAnimation*) PURE;
     75     STDMETHOD(SetScaleY)(THIS_ float) PURE;
     76     STDMETHOD(SetScaleY)(THIS_ IDCompositionAnimation*) PURE;
     77     STDMETHOD(SetCenterX)(THIS_ float) PURE;
     78     STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
     79     STDMETHOD(SetCenterY)(THIS_ float) PURE;
     80     STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
     81 };
     82 
     83 #undef INTERFACE
     84 #define INTERFACE IDCompositionRotateTransform
     85 DECLARE_INTERFACE_IID_(IDCompositionRotateTransform,IDCompositionTransform,"641ed83c-ae96-46c5-90dc-32774cc5c6d5")
     86 {
     87     STDMETHOD(SetAngle)(THIS_ float) PURE;
     88     STDMETHOD(SetAngle)(THIS_ IDCompositionAnimation*) PURE;
     89     STDMETHOD(SetCenterX)(THIS_ float) PURE;
     90     STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
     91     STDMETHOD(SetCenterY)(THIS_ float) PURE;
     92     STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
     93 };
     94 
     95 #undef INTERFACE
     96 #define INTERFACE IDCompositionSkewTransform
     97 DECLARE_INTERFACE_IID_(IDCompositionSkewTransform,IDCompositionTransform,"e57aa735-dcdb-4c72-9c61-0591f58889ee")
     98 {
     99     STDMETHOD(SetAngleX)(THIS_ float) PURE;
    100     STDMETHOD(SetAngleX)(THIS_ IDCompositionAnimation*) PURE;
    101     STDMETHOD(SetAngleY)(THIS_ float) PURE;
    102     STDMETHOD(SetAngleY)(THIS_ IDCompositionAnimation*) PURE;
    103     STDMETHOD(SetCenterX)(THIS_ float) PURE;
    104     STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
    105     STDMETHOD(SetCenterY)(THIS_ float) PURE;
    106     STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
    107 };
    108 
    109 #undef INTERFACE
    110 #define INTERFACE IDCompositionMatrixTransform
    111 DECLARE_INTERFACE_IID_(IDCompositionMatrixTransform,IDCompositionTransform,"16cdff07-c503-419c-83f2-0965c7af1fa6")
    112 {
    113     STDMETHOD(SetMatrix)(THIS_ const D2D_MATRIX_3X2_F&) PURE;
    114     STDMETHOD(SetMatrixElement)(THIS_ int,int,float) PURE;
    115     STDMETHOD(SetMatrixElement)(THIS_ int,int,IDCompositionAnimation*) PURE;
    116 };
    117 
    118 #undef INTERFACE
    119 #define INTERFACE IDCompositionTranslateTransform3D
    120 DECLARE_INTERFACE_IID_(IDCompositionTranslateTransform3D,IDCompositionTransform3D,"91636d4b-9ba1-4532-aaf7-e3344994d788")
    121 {
    122     STDMETHOD(SetOffsetX)(THIS_ float) PURE;
    123     STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
    124     STDMETHOD(SetOffsetY)(THIS_ float) PURE;
    125     STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
    126     STDMETHOD(SetOffsetZ)(THIS_ float) PURE;
    127     STDMETHOD(SetOffsetZ)(THIS_ IDCompositionAnimation*) PURE;
    128 };
    129 
    130 #undef INTERFACE
    131 #define INTERFACE IDCompositionScaleTransform3D
    132 DECLARE_INTERFACE_IID_(IDCompositionScaleTransform3D,IDCompositionTransform3D,"2a9e9ead-364b-4b15-a7c4-a1997f78b389")
    133 {
    134     STDMETHOD(SetScaleX)(THIS_ float) PURE;
    135     STDMETHOD(SetScaleX)(THIS_ IDCompositionAnimation*) PURE;
    136     STDMETHOD(SetScaleY)(THIS_ float) PURE;
    137     STDMETHOD(SetScaleY)(THIS_ IDCompositionAnimation*) PURE;
    138     STDMETHOD(SetScaleZ)(THIS_ float) PURE;
    139     STDMETHOD(SetScaleZ)(THIS_ IDCompositionAnimation*) PURE;
    140     STDMETHOD(SetCenterX)(THIS_ float) PURE;
    141     STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
    142     STDMETHOD(SetCenterY)(THIS_ float) PURE;
    143     STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
    144     STDMETHOD(SetCenterZ)(THIS_ float) PURE;
    145     STDMETHOD(SetCenterZ)(THIS_ IDCompositionAnimation*) PURE;
    146 };
    147 
    148 #undef INTERFACE
    149 #define INTERFACE IDCompositionRotateTransform3D
    150 DECLARE_INTERFACE_IID_(IDCompositionRotateTransform3D,IDCompositionTransform3D,"d8f5b23f-d429-4a91-b55a-d2f45fd75b18")
    151 {
    152     STDMETHOD(SetAngle)(THIS_ float) PURE;
    153     STDMETHOD(SetAngle)(THIS_ IDCompositionAnimation*) PURE;
    154     STDMETHOD(SetAxisX)(THIS_ float) PURE;
    155     STDMETHOD(SetAxisX)(THIS_ IDCompositionAnimation*) PURE;
    156     STDMETHOD(SetAxisY)(THIS_ float) PURE;
    157     STDMETHOD(SetAxisY)(THIS_ IDCompositionAnimation*) PURE;
    158     STDMETHOD(SetAxisZ)(THIS_ float) PURE;
    159     STDMETHOD(SetAxisZ)(THIS_ IDCompositionAnimation*) PURE;
    160     STDMETHOD(SetCenterX)(THIS_ float) PURE;
    161     STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
    162     STDMETHOD(SetCenterY)(THIS_ float) PURE;
    163     STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
    164     STDMETHOD(SetCenterZ)(THIS_ float) PURE;
    165     STDMETHOD(SetCenterZ)(THIS_ IDCompositionAnimation*) PURE;
    166 };
    167 
    168 #undef INTERFACE
    169 #define INTERFACE IDCompositionMatrixTransform3D
    170 DECLARE_INTERFACE_IID_(IDCompositionMatrixTransform3D,IDCompositionTransform3D,"4b3363f0-643b-41b7-b6e0-ccf22d34467c")
    171 {
    172     STDMETHOD(SetMatrix)(THIS_ const D3DMATRIX&) PURE;
    173     STDMETHOD(SetMatrixElement)(THIS_ int,int,float) PURE;
    174     STDMETHOD(SetMatrixElement)(THIS_ int,int,IDCompositionAnimation*) PURE;
    175 };
    176 
    177 #undef INTERFACE
    178 #define INTERFACE IDCompositionEffectGroup
    179 DECLARE_INTERFACE_IID_(IDCompositionEffectGroup,IDCompositionEffect,"a7929a74-e6b2-4bd6-8b95-4040119ca34d")
    180 {
    181     STDMETHOD(SetOpacity)(THIS_ float) PURE;
    182     STDMETHOD(SetOpacity)(THIS_ IDCompositionAnimation*) PURE;
    183     STDMETHOD(SetTransform3D)(THIS_ IDCompositionTransform3D*) PURE;
    184 };
    185 
    186 #undef INTERFACE
    187 #define INTERFACE IDCompositionClip
    188 DECLARE_INTERFACE_IID_(IDCompositionClip,IUnknown,"64ac3703-9d3f-45ec-a109-7cac0e7a13a7")
    189 {
    190 };
    191 
    192 #undef INTERFACE
    193 #define INTERFACE IDCompositionRectangleClip
    194 DECLARE_INTERFACE_IID_(IDCompositionRectangleClip,IDCompositionClip,"9842ad7d-d9cf-4908-aed7-48b51da5e7c2")
    195 {
    196     STDMETHOD(SetLeft)(THIS_ float) PURE;
    197     STDMETHOD(SetLeft)(THIS_ IDCompositionAnimation*) PURE;
    198     STDMETHOD(SetTop)(THIS_ float) PURE;
    199     STDMETHOD(SetTop)(THIS_ IDCompositionAnimation*) PURE;
    200     STDMETHOD(SetRight)(THIS_ float) PURE;
    201     STDMETHOD(SetRight)(THIS_ IDCompositionAnimation*) PURE;
    202     STDMETHOD(SetBottom)(THIS_ float) PURE;
    203     STDMETHOD(SetBottom)(THIS_ IDCompositionAnimation*) PURE;
    204     STDMETHOD(SetTopLeftRadiusX)(THIS_ float) PURE;
    205     STDMETHOD(SetTopLeftRadiusX)(THIS_ IDCompositionAnimation*) PURE;
    206     STDMETHOD(SetTopLeftRadiusY)(THIS_ float) PURE;
    207     STDMETHOD(SetTopLeftRadiusY)(THIS_ IDCompositionAnimation*) PURE;
    208     STDMETHOD(SetTopRightRadiusX)(THIS_ float) PURE;
    209     STDMETHOD(SetTopRightRadiusX)(THIS_ IDCompositionAnimation*) PURE;
    210     STDMETHOD(SetTopRightRadiusY)(THIS_ float) PURE;
    211     STDMETHOD(SetTopRightRadiusY)(THIS_ IDCompositionAnimation*) PURE;
    212     STDMETHOD(SetBottomLeftRadiusX)(THIS_ float) PURE;
    213     STDMETHOD(SetBottomLeftRadiusX)(THIS_ IDCompositionAnimation*) PURE;
    214     STDMETHOD(SetBottomLeftRadiusY)(THIS_ float) PURE;
    215     STDMETHOD(SetBottomLeftRadiusY)(THIS_ IDCompositionAnimation*) PURE;
    216     STDMETHOD(SetBottomRightRadiusX)(THIS_ float) PURE;
    217     STDMETHOD(SetBottomRightRadiusX)(THIS_ IDCompositionAnimation*) PURE;
    218     STDMETHOD(SetBottomRightRadiusY)(THIS_ float) PURE;
    219     STDMETHOD(SetBottomRightRadiusY)(THIS_ IDCompositionAnimation*) PURE;
    220 };
    221 
    222 #undef INTERFACE
    223 #define INTERFACE IDCompositionTarget
    224 DECLARE_INTERFACE_IID_(IDCompositionTarget,IUnknown,"eacdd04c-117e-4e17-88f4-d1b12b0e3d89")
    225 {
    226     STDMETHOD(SetRoot)(THIS_ IDCompositionVisual*) PURE;
    227 };
    228 
    229 #undef INTERFACE
    230 #define INTERFACE IDCompositionDevice
    231 DECLARE_INTERFACE_IID_(IDCompositionDevice,IUnknown,"c37ea93a-e7aa-450d-b16f-9746cb0407f3")
    232 {
    233     STDMETHOD(Commit)(THIS) PURE;
    234     STDMETHOD(WaitForCommitCompletion)(THIS) PURE;
    235     STDMETHOD(GetFrameStatistics)(THIS_ DCOMPOSITION_FRAME_STATISTICS*) PURE;
    236     STDMETHOD(CreateTargetForHwnd)(THIS_ HWND,BOOL,IDCompositionTarget**) PURE;
    237     STDMETHOD(CreateVisual)(THIS_ IDCompositionVisual**) PURE;
    238     STDMETHOD(CreateSurface)(THIS_ UINT,UINT,DXGI_FORMAT,DXGI_ALPHA_MODE,IDCompositionSurface**) PURE;
    239     STDMETHOD(CreateVirtualSurface)(THIS_ UINT,UINT,DXGI_FORMAT,DXGI_ALPHA_MODE,IDCompositionVirtualSurface**) PURE;
    240     STDMETHOD(CreateSurfaceFromHandle)(THIS_ HANDLE,IUnknown**) PURE;
    241     STDMETHOD(CreateSurfaceFromHwnd)(THIS_ HWND,IUnknown**) PURE;
    242     STDMETHOD(CreateTranslateTransform)(THIS_ IDCompositionTranslateTransform**) PURE;
    243     STDMETHOD(CreateScaleTransform)(THIS_ IDCompositionScaleTransform**) PURE;
    244     STDMETHOD(CreateRotateTransform)(THIS_ IDCompositionRotateTransform**) PURE;
    245     STDMETHOD(CreateSkewTransform)(THIS_ IDCompositionSkewTransform**) PURE;
    246     STDMETHOD(CreateMatrixTransform)(THIS_ IDCompositionMatrixTransform**) PURE;
    247     STDMETHOD(CreateTransformGroup)(THIS_ IDCompositionTransform**,UINT,IDCompositionTransform**) PURE;
    248     STDMETHOD(CreateTranslateTransform3D)(THIS_ IDCompositionTranslateTransform3D**) PURE;
    249     STDMETHOD(CreateScaleTransform3D)(THIS_ IDCompositionScaleTransform3D**) PURE;
    250     STDMETHOD(CreateRotateTransform3D)(THIS_ IDCompositionRotateTransform3D**) PURE;
    251     STDMETHOD(CreateMatrixTransform3D)(THIS_ IDCompositionMatrixTransform3D**) PURE;
    252     STDMETHOD(CreateTransform3DGroup)(THIS_ IDCompositionTransform3D**,UINT,IDCompositionTransform3D**) PURE;
    253     STDMETHOD(CreateEffectGroup)(THIS_ IDCompositionEffectGroup**) PURE;
    254     STDMETHOD(CreateRectangleClip)(THIS_ IDCompositionRectangleClip**) PURE;
    255     STDMETHOD(CreateAnimation)(THIS_ IDCompositionAnimation**) PURE;
    256     STDMETHOD(CheckDeviceState)(THIS_ BOOL*) PURE;
    257 };
    258 
    259 #ifdef __CRT_UUID_DECL
    260 __CRT_UUID_DECL(IDCompositionDevice,0xc37ea93a,0xe7aa,0x450d,0xb1,0x6f,0x97,0x46,0xcb,0x04,0x07,0xf3);
    261 #endif
    262 
    263 #undef INTERFACE
    264 #define INTERFACE IDCompositionVisual
    265 DECLARE_INTERFACE_IID_(IDCompositionVisual,IUnknown,"4d93059d-097b-4651-9a60-f0f25116e2f3")
    266 {
    267     STDMETHOD(SetOffsetX)(THIS_ float) PURE;
    268     STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
    269     STDMETHOD(SetOffsetY)(THIS_ float) PURE;
    270     STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
    271     STDMETHOD(SetTransform)(THIS_ const D2D_MATRIX_3X2_F&) PURE;
    272     STDMETHOD(SetTransform)(THIS_ IDCompositionTransform*) PURE;
    273     STDMETHOD(SetTransformParent)(THIS_ IDCompositionVisual*) PURE;
    274     STDMETHOD(SetEffect)(THIS_ IDCompositionEffect*) PURE;
    275     STDMETHOD(SetBitmapInterpolationMode)(THIS_ DCOMPOSITION_BITMAP_INTERPOLATION_MODE) PURE;
    276     STDMETHOD(SetBorderMode)(THIS_ DCOMPOSITION_BORDER_MODE) PURE;
    277     STDMETHOD(SetClip)(THIS_ const D2D_RECT_F&) PURE;
    278     STDMETHOD(SetClip)(THIS_ IDCompositionClip*) PURE;
    279     STDMETHOD(SetContent)(THIS_ IUnknown*) PURE;
    280     STDMETHOD(AddVisual)(THIS_ IDCompositionVisual*,BOOL,IDCompositionVisual*) PURE;
    281     STDMETHOD(RemoveVisual)(THIS_ IDCompositionVisual*) PURE;
    282     STDMETHOD(RemoveAllVisuals)(THIS_) PURE;
    283     STDMETHOD(SetCompositeMode)(THIS_ DCOMPOSITION_COMPOSITE_MODE) PURE;
    284 };
    285 
    286 #endif
    287 #endif /* _DCOMP_H_ */
    288