zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

directmanipulation.h (104522B) - Raw


      1 /*** Autogenerated by WIDL 10.4 from include/directmanipulation.idl - Do not edit ***/
      2 
      3 #ifdef _WIN32
      4 #ifndef __REQUIRED_RPCNDR_H_VERSION__
      5 #define __REQUIRED_RPCNDR_H_VERSION__ 475
      6 #endif
      7 #include <rpc.h>
      8 #include <rpcndr.h>
      9 #endif
     10 
     11 #ifndef COM_NO_WINDOWS_H
     12 #include <windows.h>
     13 #include <ole2.h>
     14 #endif
     15 
     16 #ifndef __directmanipulation_h__
     17 #define __directmanipulation_h__
     18 
     19 /* Forward declarations */
     20 
     21 #ifndef __IDirectManipulationFrameInfoProvider_FWD_DEFINED__
     22 #define __IDirectManipulationFrameInfoProvider_FWD_DEFINED__
     23 typedef interface IDirectManipulationFrameInfoProvider IDirectManipulationFrameInfoProvider;
     24 #ifdef __cplusplus
     25 interface IDirectManipulationFrameInfoProvider;
     26 #endif /* __cplusplus */
     27 #endif
     28 
     29 #ifndef __IDirectManipulationManager_FWD_DEFINED__
     30 #define __IDirectManipulationManager_FWD_DEFINED__
     31 typedef interface IDirectManipulationManager IDirectManipulationManager;
     32 #ifdef __cplusplus
     33 interface IDirectManipulationManager;
     34 #endif /* __cplusplus */
     35 #endif
     36 
     37 #ifndef __IDirectManipulationContent_FWD_DEFINED__
     38 #define __IDirectManipulationContent_FWD_DEFINED__
     39 typedef interface IDirectManipulationContent IDirectManipulationContent;
     40 #ifdef __cplusplus
     41 interface IDirectManipulationContent;
     42 #endif /* __cplusplus */
     43 #endif
     44 
     45 #ifndef __IDirectManipulationUpdateHandler_FWD_DEFINED__
     46 #define __IDirectManipulationUpdateHandler_FWD_DEFINED__
     47 typedef interface IDirectManipulationUpdateHandler IDirectManipulationUpdateHandler;
     48 #ifdef __cplusplus
     49 interface IDirectManipulationUpdateHandler;
     50 #endif /* __cplusplus */
     51 #endif
     52 
     53 #ifndef __IDirectManipulationUpdateManager_FWD_DEFINED__
     54 #define __IDirectManipulationUpdateManager_FWD_DEFINED__
     55 typedef interface IDirectManipulationUpdateManager IDirectManipulationUpdateManager;
     56 #ifdef __cplusplus
     57 interface IDirectManipulationUpdateManager;
     58 #endif /* __cplusplus */
     59 #endif
     60 
     61 #ifndef __IDirectManipulationCompositor_FWD_DEFINED__
     62 #define __IDirectManipulationCompositor_FWD_DEFINED__
     63 typedef interface IDirectManipulationCompositor IDirectManipulationCompositor;
     64 #ifdef __cplusplus
     65 interface IDirectManipulationCompositor;
     66 #endif /* __cplusplus */
     67 #endif
     68 
     69 #ifndef __IDirectManipulationViewport_FWD_DEFINED__
     70 #define __IDirectManipulationViewport_FWD_DEFINED__
     71 typedef interface IDirectManipulationViewport IDirectManipulationViewport;
     72 #ifdef __cplusplus
     73 interface IDirectManipulationViewport;
     74 #endif /* __cplusplus */
     75 #endif
     76 
     77 #ifndef __IDirectManipulationViewport2_FWD_DEFINED__
     78 #define __IDirectManipulationViewport2_FWD_DEFINED__
     79 typedef interface IDirectManipulationViewport2 IDirectManipulationViewport2;
     80 #ifdef __cplusplus
     81 interface IDirectManipulationViewport2;
     82 #endif /* __cplusplus */
     83 #endif
     84 
     85 #ifndef __IDirectManipulationViewportEventHandler_FWD_DEFINED__
     86 #define __IDirectManipulationViewportEventHandler_FWD_DEFINED__
     87 typedef interface IDirectManipulationViewportEventHandler IDirectManipulationViewportEventHandler;
     88 #ifdef __cplusplus
     89 interface IDirectManipulationViewportEventHandler;
     90 #endif /* __cplusplus */
     91 #endif
     92 
     93 #ifndef __IDirectManipulationManager2_FWD_DEFINED__
     94 #define __IDirectManipulationManager2_FWD_DEFINED__
     95 typedef interface IDirectManipulationManager2 IDirectManipulationManager2;
     96 #ifdef __cplusplus
     97 interface IDirectManipulationManager2;
     98 #endif /* __cplusplus */
     99 #endif
    100 
    101 #ifndef __IDirectManipulationPrimaryContent_FWD_DEFINED__
    102 #define __IDirectManipulationPrimaryContent_FWD_DEFINED__
    103 typedef interface IDirectManipulationPrimaryContent IDirectManipulationPrimaryContent;
    104 #ifdef __cplusplus
    105 interface IDirectManipulationPrimaryContent;
    106 #endif /* __cplusplus */
    107 #endif
    108 
    109 #ifndef __IDirectManipulationCompositor2_FWD_DEFINED__
    110 #define __IDirectManipulationCompositor2_FWD_DEFINED__
    111 typedef interface IDirectManipulationCompositor2 IDirectManipulationCompositor2;
    112 #ifdef __cplusplus
    113 interface IDirectManipulationCompositor2;
    114 #endif /* __cplusplus */
    115 #endif
    116 
    117 #ifndef __IDirectManipulationInteractionEventHandler_FWD_DEFINED__
    118 #define __IDirectManipulationInteractionEventHandler_FWD_DEFINED__
    119 typedef interface IDirectManipulationInteractionEventHandler IDirectManipulationInteractionEventHandler;
    120 #ifdef __cplusplus
    121 interface IDirectManipulationInteractionEventHandler;
    122 #endif /* __cplusplus */
    123 #endif
    124 
    125 #ifndef __DirectManipulationManager_FWD_DEFINED__
    126 #define __DirectManipulationManager_FWD_DEFINED__
    127 #ifdef __cplusplus
    128 typedef class DirectManipulationManager DirectManipulationManager;
    129 #else
    130 typedef struct DirectManipulationManager DirectManipulationManager;
    131 #endif /* defined __cplusplus */
    132 #endif /* defined __DirectManipulationManager_FWD_DEFINED__ */
    133 
    134 #ifndef __DirectManipulationSharedManager_FWD_DEFINED__
    135 #define __DirectManipulationSharedManager_FWD_DEFINED__
    136 #ifdef __cplusplus
    137 typedef class DirectManipulationSharedManager DirectManipulationSharedManager;
    138 #else
    139 typedef struct DirectManipulationSharedManager DirectManipulationSharedManager;
    140 #endif /* defined __cplusplus */
    141 #endif /* defined __DirectManipulationSharedManager_FWD_DEFINED__ */
    142 
    143 #ifndef __DCompManipulationCompositor_FWD_DEFINED__
    144 #define __DCompManipulationCompositor_FWD_DEFINED__
    145 #ifdef __cplusplus
    146 typedef class DCompManipulationCompositor DCompManipulationCompositor;
    147 #else
    148 typedef struct DCompManipulationCompositor DCompManipulationCompositor;
    149 #endif /* defined __cplusplus */
    150 #endif /* defined __DCompManipulationCompositor_FWD_DEFINED__ */
    151 
    152 #ifndef __DirectManipulationViewport_FWD_DEFINED__
    153 #define __DirectManipulationViewport_FWD_DEFINED__
    154 #ifdef __cplusplus
    155 typedef class DirectManipulationViewport DirectManipulationViewport;
    156 #else
    157 typedef struct DirectManipulationViewport DirectManipulationViewport;
    158 #endif /* defined __cplusplus */
    159 #endif /* defined __DirectManipulationViewport_FWD_DEFINED__ */
    160 
    161 /* Headers for imported files */
    162 
    163 #include <oaidl.h>
    164 #include <ocidl.h>
    165 
    166 #ifdef __cplusplus
    167 extern "C" {
    168 #endif
    169 
    170 #if 0
    171 typedef void *HWND;
    172 #endif
    173 #ifndef __IDirectManipulationViewportEventHandler_FWD_DEFINED__
    174 #define __IDirectManipulationViewportEventHandler_FWD_DEFINED__
    175 typedef interface IDirectManipulationViewportEventHandler IDirectManipulationViewportEventHandler;
    176 #ifdef __cplusplus
    177 interface IDirectManipulationViewportEventHandler;
    178 #endif /* __cplusplus */
    179 #endif
    180 
    181 typedef enum DIRECTMANIPULATION_HITTEST_TYPE {
    182     DIRECTMANIPULATION_HITTEST_TYPE_ASYNCHRONOUS = 0x0,
    183     DIRECTMANIPULATION_HITTEST_TYPE_SYNCHRONOUS = 0x1,
    184     DIRECTMANIPULATION_HITTEST_TYPE_AUTO_SYNCHRONOUS = 0x2
    185 } DIRECTMANIPULATION_HITTEST_TYPE;
    186 DEFINE_ENUM_FLAG_OPERATORS(DIRECTMANIPULATION_HITTEST_TYPE)
    187 typedef enum DIRECTMANIPULATION_STATUS {
    188     DIRECTMANIPULATION_BUILDING = 0,
    189     DIRECTMANIPULATION_ENABLED = 1,
    190     DIRECTMANIPULATION_DISABLED = 2,
    191     DIRECTMANIPULATION_RUNNING = 3,
    192     DIRECTMANIPULATION_INERTIA = 4,
    193     DIRECTMANIPULATION_READY = 5,
    194     DIRECTMANIPULATION_SUSPENDED = 6
    195 } DIRECTMANIPULATION_STATUS;
    196 typedef enum DIRECTMANIPULATION_VIEWPORT_OPTIONS {
    197     DIRECTMANIPULATION_VIEWPORT_OPTIONS_DEFAULT = 0x0,
    198     DIRECTMANIPULATION_VIEWPORT_OPTIONS_AUTODISABLE = 0x1,
    199     DIRECTMANIPULATION_VIEWPORT_OPTIONS_MANUALUPDATE = 0x2,
    200     DIRECTMANIPULATION_VIEWPORT_OPTIONS_INPUT = 0x4,
    201     DIRECTMANIPULATION_VIEWPORT_OPTIONS_EXPLICITHITTEST = 0x8,
    202     DIRECTMANIPULATION_VIEWPORT_OPTIONS_DISABLEPIXELSNAPPING = 0x10
    203 } DIRECTMANIPULATION_VIEWPORT_OPTIONS;
    204 DEFINE_ENUM_FLAG_OPERATORS(DIRECTMANIPULATION_VIEWPORT_OPTIONS)
    205 typedef enum DIRECTMANIPULATION_CONFIGURATION {
    206     DIRECTMANIPULATION_CONFIGURATION_NONE = 0x0,
    207     DIRECTMANIPULATION_CONFIGURATION_INTERACTION = 0x1,
    208     DIRECTMANIPULATION_CONFIGURATION_TRANSLATION_X = 0x2,
    209     DIRECTMANIPULATION_CONFIGURATION_TRANSLATION_Y = 0x4,
    210     DIRECTMANIPULATION_CONFIGURATION_SCALING = 0x10,
    211     DIRECTMANIPULATION_CONFIGURATION_TRANSLATION_INERTIA = 0x20,
    212     DIRECTMANIPULATION_CONFIGURATION_SCALING_INERTIA = 0x80,
    213     DIRECTMANIPULATION_CONFIGURATION_RAILS_X = 0x100,
    214     DIRECTMANIPULATION_CONFIGURATION_RAILS_Y = 0x200
    215 } DIRECTMANIPULATION_CONFIGURATION;
    216 DEFINE_ENUM_FLAG_OPERATORS(DIRECTMANIPULATION_CONFIGURATION)
    217 typedef enum DIRECTMANIPULATION_GESTURE_CONFIGURATION {
    218     DIRECTMANIPULATION_GESTURE_NONE = 0x0,
    219     DIRECTMANIPULATION_GESTURE_DEFAULT = 0x0,
    220     DIRECTMANIPULATION_GESTURE_CROSS_SLIDE_VERTICAL = 0x8,
    221     DIRECTMANIPULATION_GESTURE_CROSS_SLIDE_HORIZONTAL = 0x10,
    222     DIRECTMANIPULATION_GESTURE_PINCH_ZOOM = 0x20
    223 } DIRECTMANIPULATION_GESTURE_CONFIGURATION;
    224 DEFINE_ENUM_FLAG_OPERATORS(DIRECTMANIPULATION_GESTURE_CONFIGURATION)
    225 typedef enum DIRECTMANIPULATION_MOTION_TYPES {
    226     DIRECTMANIPULATION_MOTION_NONE = 0x0,
    227     DIRECTMANIPULATION_MOTION_TRANSLATEX = 0x1,
    228     DIRECTMANIPULATION_MOTION_TRANSLATEY = 0x2,
    229     DIRECTMANIPULATION_MOTION_ZOOM = 0x4,
    230     DIRECTMANIPULATION_MOTION_CENTERX = 0x10,
    231     DIRECTMANIPULATION_MOTION_CENTERY = 0x20,
    232     DIRECTMANIPULATION_MOTION_ALL = (((DIRECTMANIPULATION_MOTION_TRANSLATEX | DIRECTMANIPULATION_MOTION_TRANSLATEY) | DIRECTMANIPULATION_MOTION_ZOOM) | DIRECTMANIPULATION_MOTION_CENTERX) | DIRECTMANIPULATION_MOTION_CENTERY
    233 } DIRECTMANIPULATION_MOTION_TYPES;
    234 DEFINE_ENUM_FLAG_OPERATORS(DIRECTMANIPULATION_MOTION_TYPES)
    235 typedef enum DIRECTMANIPULATION_SNAPPOINT_TYPE {
    236     DIRECTMANIPULATION_SNAPPOINT_MANDATORY = 0,
    237     DIRECTMANIPULATION_SNAPPOINT_OPTIONAL = 1,
    238     DIRECTMANIPULATION_SNAPPOINT_MANDATORY_SINGLE = 2,
    239     DIRECTMANIPULATION_SNAPPOINT_OPTIONAL_SINGLE = 3
    240 } DIRECTMANIPULATION_SNAPPOINT_TYPE;
    241 typedef enum DIRECTMANIPULATION_SNAPPOINT_COORDINATE {
    242     DIRECTMANIPULATION_COORDINATE_BOUNDARY = 0x0,
    243     DIRECTMANIPULATION_COORDINATE_ORIGIN = 0x1,
    244     DIRECTMANIPULATION_COORDINATE_MIRRORED = 0x10
    245 } DIRECTMANIPULATION_SNAPPOINT_COORDINATE;
    246 DEFINE_ENUM_FLAG_OPERATORS(DIRECTMANIPULATION_SNAPPOINT_COORDINATE)
    247 typedef enum DIRECTMANIPULATION_HORIZONTALALIGNMENT {
    248     DIRECTMANIPULATION_HORIZONTALALIGNMENT_NONE = 0x0,
    249     DIRECTMANIPULATION_HORIZONTALALIGNMENT_LEFT = 0x1,
    250     DIRECTMANIPULATION_HORIZONTALALIGNMENT_CENTER = 0x2,
    251     DIRECTMANIPULATION_HORIZONTALALIGNMENT_RIGHT = 0x4,
    252     DIRECTMANIPULATION_HORIZONTALALIGNMENT_UNLOCKCENTER = 0x8
    253 } DIRECTMANIPULATION_HORIZONTALALIGNMENT;
    254 DEFINE_ENUM_FLAG_OPERATORS(DIRECTMANIPULATION_HORIZONTALALIGNMENT)
    255 typedef enum DIRECTMANIPULATION_VERTICALALIGNMENT {
    256     DIRECTMANIPULATION_VERTICALALIGNMENT_NONE = 0x0,
    257     DIRECTMANIPULATION_VERTICALALIGNMENT_TOP = 0x1,
    258     DIRECTMANIPULATION_VERTICALALIGNMENT_CENTER = 0x2,
    259     DIRECTMANIPULATION_VERTICALALIGNMENT_BOTTOM = 0x4,
    260     DIRECTMANIPULATION_VERTICALALIGNMENT_UNLOCKCENTER = 0x8
    261 } DIRECTMANIPULATION_VERTICALALIGNMENT;
    262 DEFINE_ENUM_FLAG_OPERATORS(DIRECTMANIPULATION_VERTICALALIGNMENT)
    263 typedef enum DIRECTMANIPULATION_INPUT_MODE {
    264     DIRECTMANIPULATION_INPUT_MODE_AUTOMATIC = 0,
    265     DIRECTMANIPULATION_INPUT_MODE_MANUAL = 1
    266 } DIRECTMANIPULATION_INPUT_MODE;
    267 typedef enum DIRECTMANIPULATION_INTERACTION_TYPE {
    268     DIRECTMANIPULATION_INTERACTION_BEGIN = 0,
    269     DIRECTMANIPULATION_INTERACTION_TYPE_MANIPULATION = 1,
    270     DIRECTMANIPULATION_INTERACTION_TYPE_GESTURE_TAP = 2,
    271     DIRECTMANIPULATION_INTERACTION_TYPE_GESTURE_HOLD = 3,
    272     DIRECTMANIPULATION_INTERACTION_TYPE_GESTURE_CROSS_SLIDE = 4,
    273     DIRECTMANIPULATION_INTERACTION_TYPE_GESTURE_PINCH_ZOOM = 5,
    274     DIRECTMANIPULATION_INTERACTION_END = 100
    275 } DIRECTMANIPULATION_INTERACTION_TYPE;
    276 /*****************************************************************************
    277  * IDirectManipulationFrameInfoProvider interface
    278  */
    279 #ifndef __IDirectManipulationFrameInfoProvider_INTERFACE_DEFINED__
    280 #define __IDirectManipulationFrameInfoProvider_INTERFACE_DEFINED__
    281 
    282 DEFINE_GUID(IID_IDirectManipulationFrameInfoProvider, 0xfb759dba, 0x6f4c, 0x4c01, 0x87,0x4e, 0x19,0xc8,0xa0,0x59,0x07,0xf9);
    283 #if defined(__cplusplus) && !defined(CINTERFACE)
    284 MIDL_INTERFACE("fb759dba-6f4c-4c01-874e-19c8a05907f9")
    285 IDirectManipulationFrameInfoProvider : public IUnknown
    286 {
    287     virtual HRESULT STDMETHODCALLTYPE GetNextFrameInfo(
    288         ULONGLONG *time,
    289         ULONGLONG *process,
    290         ULONGLONG *composition) = 0;
    291 
    292 };
    293 #ifdef __CRT_UUID_DECL
    294 __CRT_UUID_DECL(IDirectManipulationFrameInfoProvider, 0xfb759dba, 0x6f4c, 0x4c01, 0x87,0x4e, 0x19,0xc8,0xa0,0x59,0x07,0xf9)
    295 #endif
    296 #else
    297 typedef struct IDirectManipulationFrameInfoProviderVtbl {
    298     BEGIN_INTERFACE
    299 
    300     /*** IUnknown methods ***/
    301     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    302         IDirectManipulationFrameInfoProvider *This,
    303         REFIID riid,
    304         void **ppvObject);
    305 
    306     ULONG (STDMETHODCALLTYPE *AddRef)(
    307         IDirectManipulationFrameInfoProvider *This);
    308 
    309     ULONG (STDMETHODCALLTYPE *Release)(
    310         IDirectManipulationFrameInfoProvider *This);
    311 
    312     /*** IDirectManipulationFrameInfoProvider methods ***/
    313     HRESULT (STDMETHODCALLTYPE *GetNextFrameInfo)(
    314         IDirectManipulationFrameInfoProvider *This,
    315         ULONGLONG *time,
    316         ULONGLONG *process,
    317         ULONGLONG *composition);
    318 
    319     END_INTERFACE
    320 } IDirectManipulationFrameInfoProviderVtbl;
    321 
    322 interface IDirectManipulationFrameInfoProvider {
    323     CONST_VTBL IDirectManipulationFrameInfoProviderVtbl* lpVtbl;
    324 };
    325 
    326 #ifdef COBJMACROS
    327 #ifndef WIDL_C_INLINE_WRAPPERS
    328 /*** IUnknown methods ***/
    329 #define IDirectManipulationFrameInfoProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    330 #define IDirectManipulationFrameInfoProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
    331 #define IDirectManipulationFrameInfoProvider_Release(This) (This)->lpVtbl->Release(This)
    332 /*** IDirectManipulationFrameInfoProvider methods ***/
    333 #define IDirectManipulationFrameInfoProvider_GetNextFrameInfo(This,time,process,composition) (This)->lpVtbl->GetNextFrameInfo(This,time,process,composition)
    334 #else
    335 /*** IUnknown methods ***/
    336 static inline HRESULT IDirectManipulationFrameInfoProvider_QueryInterface(IDirectManipulationFrameInfoProvider* This,REFIID riid,void **ppvObject) {
    337     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    338 }
    339 static inline ULONG IDirectManipulationFrameInfoProvider_AddRef(IDirectManipulationFrameInfoProvider* This) {
    340     return This->lpVtbl->AddRef(This);
    341 }
    342 static inline ULONG IDirectManipulationFrameInfoProvider_Release(IDirectManipulationFrameInfoProvider* This) {
    343     return This->lpVtbl->Release(This);
    344 }
    345 /*** IDirectManipulationFrameInfoProvider methods ***/
    346 static inline HRESULT IDirectManipulationFrameInfoProvider_GetNextFrameInfo(IDirectManipulationFrameInfoProvider* This,ULONGLONG *time,ULONGLONG *process,ULONGLONG *composition) {
    347     return This->lpVtbl->GetNextFrameInfo(This,time,process,composition);
    348 }
    349 #endif
    350 #endif
    351 
    352 #endif
    353 
    354 
    355 #endif  /* __IDirectManipulationFrameInfoProvider_INTERFACE_DEFINED__ */
    356 
    357 /*****************************************************************************
    358  * IDirectManipulationManager interface
    359  */
    360 #ifndef __IDirectManipulationManager_INTERFACE_DEFINED__
    361 #define __IDirectManipulationManager_INTERFACE_DEFINED__
    362 
    363 DEFINE_GUID(IID_IDirectManipulationManager, 0xfbf5d3b4, 0x70c7, 0x4163, 0x93,0x22, 0x5a,0x6f,0x66,0x0d,0x6f,0xbc);
    364 #if defined(__cplusplus) && !defined(CINTERFACE)
    365 MIDL_INTERFACE("fbf5d3b4-70c7-4163-9322-5a6f660d6fbc")
    366 IDirectManipulationManager : public IUnknown
    367 {
    368     virtual HRESULT STDMETHODCALLTYPE Activate(
    369         HWND window) = 0;
    370 
    371     virtual HRESULT STDMETHODCALLTYPE Deactivate(
    372         HWND window) = 0;
    373 
    374     virtual HRESULT STDMETHODCALLTYPE RegisterHitTestTarget(
    375         HWND window,
    376         HWND hittest,
    377         DIRECTMANIPULATION_HITTEST_TYPE type) = 0;
    378 
    379     virtual HRESULT STDMETHODCALLTYPE ProcessInput(
    380         const MSG *msg,
    381         WINBOOL *handled) = 0;
    382 
    383     virtual HRESULT STDMETHODCALLTYPE GetUpdateManager(
    384         REFIID riid,
    385         void **obj) = 0;
    386 
    387     virtual HRESULT STDMETHODCALLTYPE CreateViewport(
    388         IDirectManipulationFrameInfoProvider *frame,
    389         HWND window,
    390         REFIID riid,
    391         void **obj) = 0;
    392 
    393     virtual HRESULT STDMETHODCALLTYPE CreateContent(
    394         IDirectManipulationFrameInfoProvider *frame,
    395         REFCLSID clsid,
    396         REFIID riid,
    397         void **obj) = 0;
    398 
    399 };
    400 #ifdef __CRT_UUID_DECL
    401 __CRT_UUID_DECL(IDirectManipulationManager, 0xfbf5d3b4, 0x70c7, 0x4163, 0x93,0x22, 0x5a,0x6f,0x66,0x0d,0x6f,0xbc)
    402 #endif
    403 #else
    404 typedef struct IDirectManipulationManagerVtbl {
    405     BEGIN_INTERFACE
    406 
    407     /*** IUnknown methods ***/
    408     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    409         IDirectManipulationManager *This,
    410         REFIID riid,
    411         void **ppvObject);
    412 
    413     ULONG (STDMETHODCALLTYPE *AddRef)(
    414         IDirectManipulationManager *This);
    415 
    416     ULONG (STDMETHODCALLTYPE *Release)(
    417         IDirectManipulationManager *This);
    418 
    419     /*** IDirectManipulationManager methods ***/
    420     HRESULT (STDMETHODCALLTYPE *Activate)(
    421         IDirectManipulationManager *This,
    422         HWND window);
    423 
    424     HRESULT (STDMETHODCALLTYPE *Deactivate)(
    425         IDirectManipulationManager *This,
    426         HWND window);
    427 
    428     HRESULT (STDMETHODCALLTYPE *RegisterHitTestTarget)(
    429         IDirectManipulationManager *This,
    430         HWND window,
    431         HWND hittest,
    432         DIRECTMANIPULATION_HITTEST_TYPE type);
    433 
    434     HRESULT (STDMETHODCALLTYPE *ProcessInput)(
    435         IDirectManipulationManager *This,
    436         const MSG *msg,
    437         WINBOOL *handled);
    438 
    439     HRESULT (STDMETHODCALLTYPE *GetUpdateManager)(
    440         IDirectManipulationManager *This,
    441         REFIID riid,
    442         void **obj);
    443 
    444     HRESULT (STDMETHODCALLTYPE *CreateViewport)(
    445         IDirectManipulationManager *This,
    446         IDirectManipulationFrameInfoProvider *frame,
    447         HWND window,
    448         REFIID riid,
    449         void **obj);
    450 
    451     HRESULT (STDMETHODCALLTYPE *CreateContent)(
    452         IDirectManipulationManager *This,
    453         IDirectManipulationFrameInfoProvider *frame,
    454         REFCLSID clsid,
    455         REFIID riid,
    456         void **obj);
    457 
    458     END_INTERFACE
    459 } IDirectManipulationManagerVtbl;
    460 
    461 interface IDirectManipulationManager {
    462     CONST_VTBL IDirectManipulationManagerVtbl* lpVtbl;
    463 };
    464 
    465 #ifdef COBJMACROS
    466 #ifndef WIDL_C_INLINE_WRAPPERS
    467 /*** IUnknown methods ***/
    468 #define IDirectManipulationManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    469 #define IDirectManipulationManager_AddRef(This) (This)->lpVtbl->AddRef(This)
    470 #define IDirectManipulationManager_Release(This) (This)->lpVtbl->Release(This)
    471 /*** IDirectManipulationManager methods ***/
    472 #define IDirectManipulationManager_Activate(This,window) (This)->lpVtbl->Activate(This,window)
    473 #define IDirectManipulationManager_Deactivate(This,window) (This)->lpVtbl->Deactivate(This,window)
    474 #define IDirectManipulationManager_RegisterHitTestTarget(This,window,hittest,type) (This)->lpVtbl->RegisterHitTestTarget(This,window,hittest,type)
    475 #define IDirectManipulationManager_ProcessInput(This,msg,handled) (This)->lpVtbl->ProcessInput(This,msg,handled)
    476 #define IDirectManipulationManager_GetUpdateManager(This,riid,obj) (This)->lpVtbl->GetUpdateManager(This,riid,obj)
    477 #define IDirectManipulationManager_CreateViewport(This,frame,window,riid,obj) (This)->lpVtbl->CreateViewport(This,frame,window,riid,obj)
    478 #define IDirectManipulationManager_CreateContent(This,frame,clsid,riid,obj) (This)->lpVtbl->CreateContent(This,frame,clsid,riid,obj)
    479 #else
    480 /*** IUnknown methods ***/
    481 static inline HRESULT IDirectManipulationManager_QueryInterface(IDirectManipulationManager* This,REFIID riid,void **ppvObject) {
    482     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    483 }
    484 static inline ULONG IDirectManipulationManager_AddRef(IDirectManipulationManager* This) {
    485     return This->lpVtbl->AddRef(This);
    486 }
    487 static inline ULONG IDirectManipulationManager_Release(IDirectManipulationManager* This) {
    488     return This->lpVtbl->Release(This);
    489 }
    490 /*** IDirectManipulationManager methods ***/
    491 static inline HRESULT IDirectManipulationManager_Activate(IDirectManipulationManager* This,HWND window) {
    492     return This->lpVtbl->Activate(This,window);
    493 }
    494 static inline HRESULT IDirectManipulationManager_Deactivate(IDirectManipulationManager* This,HWND window) {
    495     return This->lpVtbl->Deactivate(This,window);
    496 }
    497 static inline HRESULT IDirectManipulationManager_RegisterHitTestTarget(IDirectManipulationManager* This,HWND window,HWND hittest,DIRECTMANIPULATION_HITTEST_TYPE type) {
    498     return This->lpVtbl->RegisterHitTestTarget(This,window,hittest,type);
    499 }
    500 static inline HRESULT IDirectManipulationManager_ProcessInput(IDirectManipulationManager* This,const MSG *msg,WINBOOL *handled) {
    501     return This->lpVtbl->ProcessInput(This,msg,handled);
    502 }
    503 static inline HRESULT IDirectManipulationManager_GetUpdateManager(IDirectManipulationManager* This,REFIID riid,void **obj) {
    504     return This->lpVtbl->GetUpdateManager(This,riid,obj);
    505 }
    506 static inline HRESULT IDirectManipulationManager_CreateViewport(IDirectManipulationManager* This,IDirectManipulationFrameInfoProvider *frame,HWND window,REFIID riid,void **obj) {
    507     return This->lpVtbl->CreateViewport(This,frame,window,riid,obj);
    508 }
    509 static inline HRESULT IDirectManipulationManager_CreateContent(IDirectManipulationManager* This,IDirectManipulationFrameInfoProvider *frame,REFCLSID clsid,REFIID riid,void **obj) {
    510     return This->lpVtbl->CreateContent(This,frame,clsid,riid,obj);
    511 }
    512 #endif
    513 #endif
    514 
    515 #endif
    516 
    517 
    518 #endif  /* __IDirectManipulationManager_INTERFACE_DEFINED__ */
    519 
    520 /*****************************************************************************
    521  * IDirectManipulationContent interface
    522  */
    523 #ifndef __IDirectManipulationContent_INTERFACE_DEFINED__
    524 #define __IDirectManipulationContent_INTERFACE_DEFINED__
    525 
    526 DEFINE_GUID(IID_IDirectManipulationContent, 0xb89962cb, 0x3d89, 0x442b, 0xbb,0x58, 0x50,0x98,0xfa,0x0f,0x9f,0x16);
    527 #if defined(__cplusplus) && !defined(CINTERFACE)
    528 MIDL_INTERFACE("b89962cb-3d89-442b-bb58-5098fa0f9f16")
    529 IDirectManipulationContent : public IUnknown
    530 {
    531     virtual HRESULT STDMETHODCALLTYPE GetContentRect(
    532         RECT *size) = 0;
    533 
    534     virtual HRESULT STDMETHODCALLTYPE SetContentRect(
    535         const RECT *size) = 0;
    536 
    537     virtual HRESULT STDMETHODCALLTYPE GetViewport(
    538         REFIID riid,
    539         void **object) = 0;
    540 
    541     virtual HRESULT STDMETHODCALLTYPE GetTag(
    542         REFIID riid,
    543         void **object,
    544         UINT32 *id) = 0;
    545 
    546     virtual HRESULT STDMETHODCALLTYPE SetTag(
    547         IUnknown *object,
    548         UINT32 id) = 0;
    549 
    550     virtual HRESULT STDMETHODCALLTYPE GetOutputTransform(
    551         float *matrix,
    552         DWORD count) = 0;
    553 
    554     virtual HRESULT STDMETHODCALLTYPE GetContentTransform(
    555         float *matrix,
    556         DWORD count) = 0;
    557 
    558     virtual HRESULT STDMETHODCALLTYPE SyncContentTransform(
    559         const float *matrix,
    560         DWORD count) = 0;
    561 
    562 };
    563 #ifdef __CRT_UUID_DECL
    564 __CRT_UUID_DECL(IDirectManipulationContent, 0xb89962cb, 0x3d89, 0x442b, 0xbb,0x58, 0x50,0x98,0xfa,0x0f,0x9f,0x16)
    565 #endif
    566 #else
    567 typedef struct IDirectManipulationContentVtbl {
    568     BEGIN_INTERFACE
    569 
    570     /*** IUnknown methods ***/
    571     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    572         IDirectManipulationContent *This,
    573         REFIID riid,
    574         void **ppvObject);
    575 
    576     ULONG (STDMETHODCALLTYPE *AddRef)(
    577         IDirectManipulationContent *This);
    578 
    579     ULONG (STDMETHODCALLTYPE *Release)(
    580         IDirectManipulationContent *This);
    581 
    582     /*** IDirectManipulationContent methods ***/
    583     HRESULT (STDMETHODCALLTYPE *GetContentRect)(
    584         IDirectManipulationContent *This,
    585         RECT *size);
    586 
    587     HRESULT (STDMETHODCALLTYPE *SetContentRect)(
    588         IDirectManipulationContent *This,
    589         const RECT *size);
    590 
    591     HRESULT (STDMETHODCALLTYPE *GetViewport)(
    592         IDirectManipulationContent *This,
    593         REFIID riid,
    594         void **object);
    595 
    596     HRESULT (STDMETHODCALLTYPE *GetTag)(
    597         IDirectManipulationContent *This,
    598         REFIID riid,
    599         void **object,
    600         UINT32 *id);
    601 
    602     HRESULT (STDMETHODCALLTYPE *SetTag)(
    603         IDirectManipulationContent *This,
    604         IUnknown *object,
    605         UINT32 id);
    606 
    607     HRESULT (STDMETHODCALLTYPE *GetOutputTransform)(
    608         IDirectManipulationContent *This,
    609         float *matrix,
    610         DWORD count);
    611 
    612     HRESULT (STDMETHODCALLTYPE *GetContentTransform)(
    613         IDirectManipulationContent *This,
    614         float *matrix,
    615         DWORD count);
    616 
    617     HRESULT (STDMETHODCALLTYPE *SyncContentTransform)(
    618         IDirectManipulationContent *This,
    619         const float *matrix,
    620         DWORD count);
    621 
    622     END_INTERFACE
    623 } IDirectManipulationContentVtbl;
    624 
    625 interface IDirectManipulationContent {
    626     CONST_VTBL IDirectManipulationContentVtbl* lpVtbl;
    627 };
    628 
    629 #ifdef COBJMACROS
    630 #ifndef WIDL_C_INLINE_WRAPPERS
    631 /*** IUnknown methods ***/
    632 #define IDirectManipulationContent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    633 #define IDirectManipulationContent_AddRef(This) (This)->lpVtbl->AddRef(This)
    634 #define IDirectManipulationContent_Release(This) (This)->lpVtbl->Release(This)
    635 /*** IDirectManipulationContent methods ***/
    636 #define IDirectManipulationContent_GetContentRect(This,size) (This)->lpVtbl->GetContentRect(This,size)
    637 #define IDirectManipulationContent_SetContentRect(This,size) (This)->lpVtbl->SetContentRect(This,size)
    638 #define IDirectManipulationContent_GetViewport(This,riid,object) (This)->lpVtbl->GetViewport(This,riid,object)
    639 #define IDirectManipulationContent_GetTag(This,riid,object,id) (This)->lpVtbl->GetTag(This,riid,object,id)
    640 #define IDirectManipulationContent_SetTag(This,object,id) (This)->lpVtbl->SetTag(This,object,id)
    641 #define IDirectManipulationContent_GetOutputTransform(This,matrix,count) (This)->lpVtbl->GetOutputTransform(This,matrix,count)
    642 #define IDirectManipulationContent_GetContentTransform(This,matrix,count) (This)->lpVtbl->GetContentTransform(This,matrix,count)
    643 #define IDirectManipulationContent_SyncContentTransform(This,matrix,count) (This)->lpVtbl->SyncContentTransform(This,matrix,count)
    644 #else
    645 /*** IUnknown methods ***/
    646 static inline HRESULT IDirectManipulationContent_QueryInterface(IDirectManipulationContent* This,REFIID riid,void **ppvObject) {
    647     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    648 }
    649 static inline ULONG IDirectManipulationContent_AddRef(IDirectManipulationContent* This) {
    650     return This->lpVtbl->AddRef(This);
    651 }
    652 static inline ULONG IDirectManipulationContent_Release(IDirectManipulationContent* This) {
    653     return This->lpVtbl->Release(This);
    654 }
    655 /*** IDirectManipulationContent methods ***/
    656 static inline HRESULT IDirectManipulationContent_GetContentRect(IDirectManipulationContent* This,RECT *size) {
    657     return This->lpVtbl->GetContentRect(This,size);
    658 }
    659 static inline HRESULT IDirectManipulationContent_SetContentRect(IDirectManipulationContent* This,const RECT *size) {
    660     return This->lpVtbl->SetContentRect(This,size);
    661 }
    662 static inline HRESULT IDirectManipulationContent_GetViewport(IDirectManipulationContent* This,REFIID riid,void **object) {
    663     return This->lpVtbl->GetViewport(This,riid,object);
    664 }
    665 static inline HRESULT IDirectManipulationContent_GetTag(IDirectManipulationContent* This,REFIID riid,void **object,UINT32 *id) {
    666     return This->lpVtbl->GetTag(This,riid,object,id);
    667 }
    668 static inline HRESULT IDirectManipulationContent_SetTag(IDirectManipulationContent* This,IUnknown *object,UINT32 id) {
    669     return This->lpVtbl->SetTag(This,object,id);
    670 }
    671 static inline HRESULT IDirectManipulationContent_GetOutputTransform(IDirectManipulationContent* This,float *matrix,DWORD count) {
    672     return This->lpVtbl->GetOutputTransform(This,matrix,count);
    673 }
    674 static inline HRESULT IDirectManipulationContent_GetContentTransform(IDirectManipulationContent* This,float *matrix,DWORD count) {
    675     return This->lpVtbl->GetContentTransform(This,matrix,count);
    676 }
    677 static inline HRESULT IDirectManipulationContent_SyncContentTransform(IDirectManipulationContent* This,const float *matrix,DWORD count) {
    678     return This->lpVtbl->SyncContentTransform(This,matrix,count);
    679 }
    680 #endif
    681 #endif
    682 
    683 #endif
    684 
    685 
    686 #endif  /* __IDirectManipulationContent_INTERFACE_DEFINED__ */
    687 
    688 /*****************************************************************************
    689  * IDirectManipulationUpdateHandler interface
    690  */
    691 #ifndef __IDirectManipulationUpdateHandler_INTERFACE_DEFINED__
    692 #define __IDirectManipulationUpdateHandler_INTERFACE_DEFINED__
    693 
    694 DEFINE_GUID(IID_IDirectManipulationUpdateHandler, 0x790b6337, 0x64f8, 0x4ff5, 0xa2,0x69, 0xb3,0x2b,0xc2,0xaf,0x27,0xa7);
    695 #if defined(__cplusplus) && !defined(CINTERFACE)
    696 MIDL_INTERFACE("790b6337-64f8-4ff5-a269-b32bc2af27a7")
    697 IDirectManipulationUpdateHandler : public IUnknown
    698 {
    699     virtual HRESULT STDMETHODCALLTYPE Update(
    700         ) = 0;
    701 
    702 };
    703 #ifdef __CRT_UUID_DECL
    704 __CRT_UUID_DECL(IDirectManipulationUpdateHandler, 0x790b6337, 0x64f8, 0x4ff5, 0xa2,0x69, 0xb3,0x2b,0xc2,0xaf,0x27,0xa7)
    705 #endif
    706 #else
    707 typedef struct IDirectManipulationUpdateHandlerVtbl {
    708     BEGIN_INTERFACE
    709 
    710     /*** IUnknown methods ***/
    711     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    712         IDirectManipulationUpdateHandler *This,
    713         REFIID riid,
    714         void **ppvObject);
    715 
    716     ULONG (STDMETHODCALLTYPE *AddRef)(
    717         IDirectManipulationUpdateHandler *This);
    718 
    719     ULONG (STDMETHODCALLTYPE *Release)(
    720         IDirectManipulationUpdateHandler *This);
    721 
    722     /*** IDirectManipulationUpdateHandler methods ***/
    723     HRESULT (STDMETHODCALLTYPE *Update)(
    724         IDirectManipulationUpdateHandler *This);
    725 
    726     END_INTERFACE
    727 } IDirectManipulationUpdateHandlerVtbl;
    728 
    729 interface IDirectManipulationUpdateHandler {
    730     CONST_VTBL IDirectManipulationUpdateHandlerVtbl* lpVtbl;
    731 };
    732 
    733 #ifdef COBJMACROS
    734 #ifndef WIDL_C_INLINE_WRAPPERS
    735 /*** IUnknown methods ***/
    736 #define IDirectManipulationUpdateHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    737 #define IDirectManipulationUpdateHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
    738 #define IDirectManipulationUpdateHandler_Release(This) (This)->lpVtbl->Release(This)
    739 /*** IDirectManipulationUpdateHandler methods ***/
    740 #define IDirectManipulationUpdateHandler_Update(This) (This)->lpVtbl->Update(This)
    741 #else
    742 /*** IUnknown methods ***/
    743 static inline HRESULT IDirectManipulationUpdateHandler_QueryInterface(IDirectManipulationUpdateHandler* This,REFIID riid,void **ppvObject) {
    744     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    745 }
    746 static inline ULONG IDirectManipulationUpdateHandler_AddRef(IDirectManipulationUpdateHandler* This) {
    747     return This->lpVtbl->AddRef(This);
    748 }
    749 static inline ULONG IDirectManipulationUpdateHandler_Release(IDirectManipulationUpdateHandler* This) {
    750     return This->lpVtbl->Release(This);
    751 }
    752 /*** IDirectManipulationUpdateHandler methods ***/
    753 static inline HRESULT IDirectManipulationUpdateHandler_Update(IDirectManipulationUpdateHandler* This) {
    754     return This->lpVtbl->Update(This);
    755 }
    756 #endif
    757 #endif
    758 
    759 #endif
    760 
    761 
    762 #endif  /* __IDirectManipulationUpdateHandler_INTERFACE_DEFINED__ */
    763 
    764 /*****************************************************************************
    765  * IDirectManipulationUpdateManager interface
    766  */
    767 #ifndef __IDirectManipulationUpdateManager_INTERFACE_DEFINED__
    768 #define __IDirectManipulationUpdateManager_INTERFACE_DEFINED__
    769 
    770 DEFINE_GUID(IID_IDirectManipulationUpdateManager, 0xb0ae62fd, 0xbe34, 0x46e7, 0x9c,0xaa, 0xd3,0x61,0xfa,0xcb,0xb9,0xcc);
    771 #if defined(__cplusplus) && !defined(CINTERFACE)
    772 MIDL_INTERFACE("b0ae62fd-be34-46e7-9caa-d361facbb9cc")
    773 IDirectManipulationUpdateManager : public IUnknown
    774 {
    775     virtual HRESULT STDMETHODCALLTYPE RegisterWaitHandleCallback(
    776         HANDLE handle,
    777         IDirectManipulationUpdateHandler *handler,
    778         DWORD *cookie) = 0;
    779 
    780     virtual HRESULT STDMETHODCALLTYPE UnregisterWaitHandleCallback(
    781         DWORD cookie) = 0;
    782 
    783     virtual HRESULT STDMETHODCALLTYPE Update(
    784         IDirectManipulationFrameInfoProvider *provider) = 0;
    785 
    786 };
    787 #ifdef __CRT_UUID_DECL
    788 __CRT_UUID_DECL(IDirectManipulationUpdateManager, 0xb0ae62fd, 0xbe34, 0x46e7, 0x9c,0xaa, 0xd3,0x61,0xfa,0xcb,0xb9,0xcc)
    789 #endif
    790 #else
    791 typedef struct IDirectManipulationUpdateManagerVtbl {
    792     BEGIN_INTERFACE
    793 
    794     /*** IUnknown methods ***/
    795     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    796         IDirectManipulationUpdateManager *This,
    797         REFIID riid,
    798         void **ppvObject);
    799 
    800     ULONG (STDMETHODCALLTYPE *AddRef)(
    801         IDirectManipulationUpdateManager *This);
    802 
    803     ULONG (STDMETHODCALLTYPE *Release)(
    804         IDirectManipulationUpdateManager *This);
    805 
    806     /*** IDirectManipulationUpdateManager methods ***/
    807     HRESULT (STDMETHODCALLTYPE *RegisterWaitHandleCallback)(
    808         IDirectManipulationUpdateManager *This,
    809         HANDLE handle,
    810         IDirectManipulationUpdateHandler *handler,
    811         DWORD *cookie);
    812 
    813     HRESULT (STDMETHODCALLTYPE *UnregisterWaitHandleCallback)(
    814         IDirectManipulationUpdateManager *This,
    815         DWORD cookie);
    816 
    817     HRESULT (STDMETHODCALLTYPE *Update)(
    818         IDirectManipulationUpdateManager *This,
    819         IDirectManipulationFrameInfoProvider *provider);
    820 
    821     END_INTERFACE
    822 } IDirectManipulationUpdateManagerVtbl;
    823 
    824 interface IDirectManipulationUpdateManager {
    825     CONST_VTBL IDirectManipulationUpdateManagerVtbl* lpVtbl;
    826 };
    827 
    828 #ifdef COBJMACROS
    829 #ifndef WIDL_C_INLINE_WRAPPERS
    830 /*** IUnknown methods ***/
    831 #define IDirectManipulationUpdateManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    832 #define IDirectManipulationUpdateManager_AddRef(This) (This)->lpVtbl->AddRef(This)
    833 #define IDirectManipulationUpdateManager_Release(This) (This)->lpVtbl->Release(This)
    834 /*** IDirectManipulationUpdateManager methods ***/
    835 #define IDirectManipulationUpdateManager_RegisterWaitHandleCallback(This,handle,handler,cookie) (This)->lpVtbl->RegisterWaitHandleCallback(This,handle,handler,cookie)
    836 #define IDirectManipulationUpdateManager_UnregisterWaitHandleCallback(This,cookie) (This)->lpVtbl->UnregisterWaitHandleCallback(This,cookie)
    837 #define IDirectManipulationUpdateManager_Update(This,provider) (This)->lpVtbl->Update(This,provider)
    838 #else
    839 /*** IUnknown methods ***/
    840 static inline HRESULT IDirectManipulationUpdateManager_QueryInterface(IDirectManipulationUpdateManager* This,REFIID riid,void **ppvObject) {
    841     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    842 }
    843 static inline ULONG IDirectManipulationUpdateManager_AddRef(IDirectManipulationUpdateManager* This) {
    844     return This->lpVtbl->AddRef(This);
    845 }
    846 static inline ULONG IDirectManipulationUpdateManager_Release(IDirectManipulationUpdateManager* This) {
    847     return This->lpVtbl->Release(This);
    848 }
    849 /*** IDirectManipulationUpdateManager methods ***/
    850 static inline HRESULT IDirectManipulationUpdateManager_RegisterWaitHandleCallback(IDirectManipulationUpdateManager* This,HANDLE handle,IDirectManipulationUpdateHandler *handler,DWORD *cookie) {
    851     return This->lpVtbl->RegisterWaitHandleCallback(This,handle,handler,cookie);
    852 }
    853 static inline HRESULT IDirectManipulationUpdateManager_UnregisterWaitHandleCallback(IDirectManipulationUpdateManager* This,DWORD cookie) {
    854     return This->lpVtbl->UnregisterWaitHandleCallback(This,cookie);
    855 }
    856 static inline HRESULT IDirectManipulationUpdateManager_Update(IDirectManipulationUpdateManager* This,IDirectManipulationFrameInfoProvider *provider) {
    857     return This->lpVtbl->Update(This,provider);
    858 }
    859 #endif
    860 #endif
    861 
    862 #endif
    863 
    864 
    865 #endif  /* __IDirectManipulationUpdateManager_INTERFACE_DEFINED__ */
    866 
    867 /*****************************************************************************
    868  * IDirectManipulationCompositor interface
    869  */
    870 #ifndef __IDirectManipulationCompositor_INTERFACE_DEFINED__
    871 #define __IDirectManipulationCompositor_INTERFACE_DEFINED__
    872 
    873 DEFINE_GUID(IID_IDirectManipulationCompositor, 0x537a0825, 0x0387, 0x4efa, 0xb6,0x2f, 0x71,0xeb,0x1f,0x08,0x5a,0x7e);
    874 #if defined(__cplusplus) && !defined(CINTERFACE)
    875 MIDL_INTERFACE("537a0825-0387-4efa-b62f-71eb1f085a7e")
    876 IDirectManipulationCompositor : public IUnknown
    877 {
    878     virtual HRESULT STDMETHODCALLTYPE AddContent(
    879         IDirectManipulationContent *content,
    880         IUnknown *device,
    881         IUnknown *parent,
    882         IUnknown *child) = 0;
    883 
    884     virtual HRESULT STDMETHODCALLTYPE RemoveContent(
    885         IDirectManipulationContent *content) = 0;
    886 
    887     virtual HRESULT STDMETHODCALLTYPE SetUpdateManager(
    888         IDirectManipulationUpdateManager *manager) = 0;
    889 
    890     virtual HRESULT STDMETHODCALLTYPE Flush(
    891         ) = 0;
    892 
    893 };
    894 #ifdef __CRT_UUID_DECL
    895 __CRT_UUID_DECL(IDirectManipulationCompositor, 0x537a0825, 0x0387, 0x4efa, 0xb6,0x2f, 0x71,0xeb,0x1f,0x08,0x5a,0x7e)
    896 #endif
    897 #else
    898 typedef struct IDirectManipulationCompositorVtbl {
    899     BEGIN_INTERFACE
    900 
    901     /*** IUnknown methods ***/
    902     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    903         IDirectManipulationCompositor *This,
    904         REFIID riid,
    905         void **ppvObject);
    906 
    907     ULONG (STDMETHODCALLTYPE *AddRef)(
    908         IDirectManipulationCompositor *This);
    909 
    910     ULONG (STDMETHODCALLTYPE *Release)(
    911         IDirectManipulationCompositor *This);
    912 
    913     /*** IDirectManipulationCompositor methods ***/
    914     HRESULT (STDMETHODCALLTYPE *AddContent)(
    915         IDirectManipulationCompositor *This,
    916         IDirectManipulationContent *content,
    917         IUnknown *device,
    918         IUnknown *parent,
    919         IUnknown *child);
    920 
    921     HRESULT (STDMETHODCALLTYPE *RemoveContent)(
    922         IDirectManipulationCompositor *This,
    923         IDirectManipulationContent *content);
    924 
    925     HRESULT (STDMETHODCALLTYPE *SetUpdateManager)(
    926         IDirectManipulationCompositor *This,
    927         IDirectManipulationUpdateManager *manager);
    928 
    929     HRESULT (STDMETHODCALLTYPE *Flush)(
    930         IDirectManipulationCompositor *This);
    931 
    932     END_INTERFACE
    933 } IDirectManipulationCompositorVtbl;
    934 
    935 interface IDirectManipulationCompositor {
    936     CONST_VTBL IDirectManipulationCompositorVtbl* lpVtbl;
    937 };
    938 
    939 #ifdef COBJMACROS
    940 #ifndef WIDL_C_INLINE_WRAPPERS
    941 /*** IUnknown methods ***/
    942 #define IDirectManipulationCompositor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    943 #define IDirectManipulationCompositor_AddRef(This) (This)->lpVtbl->AddRef(This)
    944 #define IDirectManipulationCompositor_Release(This) (This)->lpVtbl->Release(This)
    945 /*** IDirectManipulationCompositor methods ***/
    946 #define IDirectManipulationCompositor_AddContent(This,content,device,parent,child) (This)->lpVtbl->AddContent(This,content,device,parent,child)
    947 #define IDirectManipulationCompositor_RemoveContent(This,content) (This)->lpVtbl->RemoveContent(This,content)
    948 #define IDirectManipulationCompositor_SetUpdateManager(This,manager) (This)->lpVtbl->SetUpdateManager(This,manager)
    949 #define IDirectManipulationCompositor_Flush(This) (This)->lpVtbl->Flush(This)
    950 #else
    951 /*** IUnknown methods ***/
    952 static inline HRESULT IDirectManipulationCompositor_QueryInterface(IDirectManipulationCompositor* This,REFIID riid,void **ppvObject) {
    953     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    954 }
    955 static inline ULONG IDirectManipulationCompositor_AddRef(IDirectManipulationCompositor* This) {
    956     return This->lpVtbl->AddRef(This);
    957 }
    958 static inline ULONG IDirectManipulationCompositor_Release(IDirectManipulationCompositor* This) {
    959     return This->lpVtbl->Release(This);
    960 }
    961 /*** IDirectManipulationCompositor methods ***/
    962 static inline HRESULT IDirectManipulationCompositor_AddContent(IDirectManipulationCompositor* This,IDirectManipulationContent *content,IUnknown *device,IUnknown *parent,IUnknown *child) {
    963     return This->lpVtbl->AddContent(This,content,device,parent,child);
    964 }
    965 static inline HRESULT IDirectManipulationCompositor_RemoveContent(IDirectManipulationCompositor* This,IDirectManipulationContent *content) {
    966     return This->lpVtbl->RemoveContent(This,content);
    967 }
    968 static inline HRESULT IDirectManipulationCompositor_SetUpdateManager(IDirectManipulationCompositor* This,IDirectManipulationUpdateManager *manager) {
    969     return This->lpVtbl->SetUpdateManager(This,manager);
    970 }
    971 static inline HRESULT IDirectManipulationCompositor_Flush(IDirectManipulationCompositor* This) {
    972     return This->lpVtbl->Flush(This);
    973 }
    974 #endif
    975 #endif
    976 
    977 #endif
    978 
    979 
    980 #endif  /* __IDirectManipulationCompositor_INTERFACE_DEFINED__ */
    981 
    982 /*****************************************************************************
    983  * IDirectManipulationViewport interface
    984  */
    985 #ifndef __IDirectManipulationViewport_INTERFACE_DEFINED__
    986 #define __IDirectManipulationViewport_INTERFACE_DEFINED__
    987 
    988 DEFINE_GUID(IID_IDirectManipulationViewport, 0x28b85a3d, 0x60a0, 0x48bd, 0x9b,0xa1, 0x5c,0xe8,0xd9,0xea,0x3a,0x6d);
    989 #if defined(__cplusplus) && !defined(CINTERFACE)
    990 MIDL_INTERFACE("28b85a3d-60a0-48bd-9ba1-5ce8d9ea3a6d")
    991 IDirectManipulationViewport : public IUnknown
    992 {
    993     virtual HRESULT STDMETHODCALLTYPE Enable(
    994         ) = 0;
    995 
    996     virtual HRESULT STDMETHODCALLTYPE Disable(
    997         ) = 0;
    998 
    999     virtual HRESULT STDMETHODCALLTYPE SetContact(
   1000         UINT32 id) = 0;
   1001 
   1002     virtual HRESULT STDMETHODCALLTYPE ReleaseContact(
   1003         UINT32 id) = 0;
   1004 
   1005     virtual HRESULT STDMETHODCALLTYPE ReleaseAllContacts(
   1006         ) = 0;
   1007 
   1008     virtual HRESULT STDMETHODCALLTYPE GetStatus(
   1009         DIRECTMANIPULATION_STATUS *status) = 0;
   1010 
   1011     virtual HRESULT STDMETHODCALLTYPE GetTag(
   1012         REFIID riid,
   1013         void **object,
   1014         UINT32 *id) = 0;
   1015 
   1016     virtual HRESULT STDMETHODCALLTYPE SetTag(
   1017         IUnknown *object,
   1018         UINT32 id) = 0;
   1019 
   1020     virtual HRESULT STDMETHODCALLTYPE GetViewportRect(
   1021         RECT *viewport) = 0;
   1022 
   1023     virtual HRESULT STDMETHODCALLTYPE SetViewportRect(
   1024         const RECT *viewport) = 0;
   1025 
   1026     virtual HRESULT STDMETHODCALLTYPE ZoomToRect(
   1027         const float left,
   1028         const float top,
   1029         const float right,
   1030         const float bottom,
   1031         WINBOOL animate) = 0;
   1032 
   1033     virtual HRESULT STDMETHODCALLTYPE SetViewportTransform(
   1034         const float *matrix,
   1035         DWORD count) = 0;
   1036 
   1037     virtual HRESULT STDMETHODCALLTYPE SyncDisplayTransform(
   1038         const float *matrix,
   1039         DWORD count) = 0;
   1040 
   1041     virtual HRESULT STDMETHODCALLTYPE GetPrimaryContent(
   1042         REFIID riid,
   1043         void **object) = 0;
   1044 
   1045     virtual HRESULT STDMETHODCALLTYPE AddContent(
   1046         IDirectManipulationContent *content) = 0;
   1047 
   1048     virtual HRESULT STDMETHODCALLTYPE RemoveContent(
   1049         IDirectManipulationContent *content) = 0;
   1050 
   1051     virtual HRESULT STDMETHODCALLTYPE SetViewportOptions(
   1052         DIRECTMANIPULATION_VIEWPORT_OPTIONS options) = 0;
   1053 
   1054     virtual HRESULT STDMETHODCALLTYPE AddConfiguration(
   1055         DIRECTMANIPULATION_CONFIGURATION configuration) = 0;
   1056 
   1057     virtual HRESULT STDMETHODCALLTYPE RemoveConfiguration(
   1058         DIRECTMANIPULATION_CONFIGURATION configuration) = 0;
   1059 
   1060     virtual HRESULT STDMETHODCALLTYPE ActivateConfiguration(
   1061         DIRECTMANIPULATION_CONFIGURATION configuration) = 0;
   1062 
   1063     virtual HRESULT STDMETHODCALLTYPE SetManualGesture(
   1064         DIRECTMANIPULATION_GESTURE_CONFIGURATION configuration) = 0;
   1065 
   1066     virtual HRESULT STDMETHODCALLTYPE SetChaining(
   1067         DIRECTMANIPULATION_MOTION_TYPES enabledTypes) = 0;
   1068 
   1069     virtual HRESULT STDMETHODCALLTYPE AddEventHandler(
   1070         HWND window,
   1071         IDirectManipulationViewportEventHandler *eventHandler,
   1072         DWORD *cookie) = 0;
   1073 
   1074     virtual HRESULT STDMETHODCALLTYPE RemoveEventHandler(
   1075         DWORD cookie) = 0;
   1076 
   1077     virtual HRESULT STDMETHODCALLTYPE SetInputMode(
   1078         DIRECTMANIPULATION_INPUT_MODE mode) = 0;
   1079 
   1080     virtual HRESULT STDMETHODCALLTYPE SetUpdateMode(
   1081         DIRECTMANIPULATION_INPUT_MODE mode) = 0;
   1082 
   1083     virtual HRESULT STDMETHODCALLTYPE Stop(
   1084         ) = 0;
   1085 
   1086     virtual HRESULT STDMETHODCALLTYPE Abandon(
   1087         ) = 0;
   1088 
   1089 };
   1090 #ifdef __CRT_UUID_DECL
   1091 __CRT_UUID_DECL(IDirectManipulationViewport, 0x28b85a3d, 0x60a0, 0x48bd, 0x9b,0xa1, 0x5c,0xe8,0xd9,0xea,0x3a,0x6d)
   1092 #endif
   1093 #else
   1094 typedef struct IDirectManipulationViewportVtbl {
   1095     BEGIN_INTERFACE
   1096 
   1097     /*** IUnknown methods ***/
   1098     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1099         IDirectManipulationViewport *This,
   1100         REFIID riid,
   1101         void **ppvObject);
   1102 
   1103     ULONG (STDMETHODCALLTYPE *AddRef)(
   1104         IDirectManipulationViewport *This);
   1105 
   1106     ULONG (STDMETHODCALLTYPE *Release)(
   1107         IDirectManipulationViewport *This);
   1108 
   1109     /*** IDirectManipulationViewport methods ***/
   1110     HRESULT (STDMETHODCALLTYPE *Enable)(
   1111         IDirectManipulationViewport *This);
   1112 
   1113     HRESULT (STDMETHODCALLTYPE *Disable)(
   1114         IDirectManipulationViewport *This);
   1115 
   1116     HRESULT (STDMETHODCALLTYPE *SetContact)(
   1117         IDirectManipulationViewport *This,
   1118         UINT32 id);
   1119 
   1120     HRESULT (STDMETHODCALLTYPE *ReleaseContact)(
   1121         IDirectManipulationViewport *This,
   1122         UINT32 id);
   1123 
   1124     HRESULT (STDMETHODCALLTYPE *ReleaseAllContacts)(
   1125         IDirectManipulationViewport *This);
   1126 
   1127     HRESULT (STDMETHODCALLTYPE *GetStatus)(
   1128         IDirectManipulationViewport *This,
   1129         DIRECTMANIPULATION_STATUS *status);
   1130 
   1131     HRESULT (STDMETHODCALLTYPE *GetTag)(
   1132         IDirectManipulationViewport *This,
   1133         REFIID riid,
   1134         void **object,
   1135         UINT32 *id);
   1136 
   1137     HRESULT (STDMETHODCALLTYPE *SetTag)(
   1138         IDirectManipulationViewport *This,
   1139         IUnknown *object,
   1140         UINT32 id);
   1141 
   1142     HRESULT (STDMETHODCALLTYPE *GetViewportRect)(
   1143         IDirectManipulationViewport *This,
   1144         RECT *viewport);
   1145 
   1146     HRESULT (STDMETHODCALLTYPE *SetViewportRect)(
   1147         IDirectManipulationViewport *This,
   1148         const RECT *viewport);
   1149 
   1150     HRESULT (STDMETHODCALLTYPE *ZoomToRect)(
   1151         IDirectManipulationViewport *This,
   1152         const float left,
   1153         const float top,
   1154         const float right,
   1155         const float bottom,
   1156         WINBOOL animate);
   1157 
   1158     HRESULT (STDMETHODCALLTYPE *SetViewportTransform)(
   1159         IDirectManipulationViewport *This,
   1160         const float *matrix,
   1161         DWORD count);
   1162 
   1163     HRESULT (STDMETHODCALLTYPE *SyncDisplayTransform)(
   1164         IDirectManipulationViewport *This,
   1165         const float *matrix,
   1166         DWORD count);
   1167 
   1168     HRESULT (STDMETHODCALLTYPE *GetPrimaryContent)(
   1169         IDirectManipulationViewport *This,
   1170         REFIID riid,
   1171         void **object);
   1172 
   1173     HRESULT (STDMETHODCALLTYPE *AddContent)(
   1174         IDirectManipulationViewport *This,
   1175         IDirectManipulationContent *content);
   1176 
   1177     HRESULT (STDMETHODCALLTYPE *RemoveContent)(
   1178         IDirectManipulationViewport *This,
   1179         IDirectManipulationContent *content);
   1180 
   1181     HRESULT (STDMETHODCALLTYPE *SetViewportOptions)(
   1182         IDirectManipulationViewport *This,
   1183         DIRECTMANIPULATION_VIEWPORT_OPTIONS options);
   1184 
   1185     HRESULT (STDMETHODCALLTYPE *AddConfiguration)(
   1186         IDirectManipulationViewport *This,
   1187         DIRECTMANIPULATION_CONFIGURATION configuration);
   1188 
   1189     HRESULT (STDMETHODCALLTYPE *RemoveConfiguration)(
   1190         IDirectManipulationViewport *This,
   1191         DIRECTMANIPULATION_CONFIGURATION configuration);
   1192 
   1193     HRESULT (STDMETHODCALLTYPE *ActivateConfiguration)(
   1194         IDirectManipulationViewport *This,
   1195         DIRECTMANIPULATION_CONFIGURATION configuration);
   1196 
   1197     HRESULT (STDMETHODCALLTYPE *SetManualGesture)(
   1198         IDirectManipulationViewport *This,
   1199         DIRECTMANIPULATION_GESTURE_CONFIGURATION configuration);
   1200 
   1201     HRESULT (STDMETHODCALLTYPE *SetChaining)(
   1202         IDirectManipulationViewport *This,
   1203         DIRECTMANIPULATION_MOTION_TYPES enabledTypes);
   1204 
   1205     HRESULT (STDMETHODCALLTYPE *AddEventHandler)(
   1206         IDirectManipulationViewport *This,
   1207         HWND window,
   1208         IDirectManipulationViewportEventHandler *eventHandler,
   1209         DWORD *cookie);
   1210 
   1211     HRESULT (STDMETHODCALLTYPE *RemoveEventHandler)(
   1212         IDirectManipulationViewport *This,
   1213         DWORD cookie);
   1214 
   1215     HRESULT (STDMETHODCALLTYPE *SetInputMode)(
   1216         IDirectManipulationViewport *This,
   1217         DIRECTMANIPULATION_INPUT_MODE mode);
   1218 
   1219     HRESULT (STDMETHODCALLTYPE *SetUpdateMode)(
   1220         IDirectManipulationViewport *This,
   1221         DIRECTMANIPULATION_INPUT_MODE mode);
   1222 
   1223     HRESULT (STDMETHODCALLTYPE *Stop)(
   1224         IDirectManipulationViewport *This);
   1225 
   1226     HRESULT (STDMETHODCALLTYPE *Abandon)(
   1227         IDirectManipulationViewport *This);
   1228 
   1229     END_INTERFACE
   1230 } IDirectManipulationViewportVtbl;
   1231 
   1232 interface IDirectManipulationViewport {
   1233     CONST_VTBL IDirectManipulationViewportVtbl* lpVtbl;
   1234 };
   1235 
   1236 #ifdef COBJMACROS
   1237 #ifndef WIDL_C_INLINE_WRAPPERS
   1238 /*** IUnknown methods ***/
   1239 #define IDirectManipulationViewport_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1240 #define IDirectManipulationViewport_AddRef(This) (This)->lpVtbl->AddRef(This)
   1241 #define IDirectManipulationViewport_Release(This) (This)->lpVtbl->Release(This)
   1242 /*** IDirectManipulationViewport methods ***/
   1243 #define IDirectManipulationViewport_Enable(This) (This)->lpVtbl->Enable(This)
   1244 #define IDirectManipulationViewport_Disable(This) (This)->lpVtbl->Disable(This)
   1245 #define IDirectManipulationViewport_SetContact(This,id) (This)->lpVtbl->SetContact(This,id)
   1246 #define IDirectManipulationViewport_ReleaseContact(This,id) (This)->lpVtbl->ReleaseContact(This,id)
   1247 #define IDirectManipulationViewport_ReleaseAllContacts(This) (This)->lpVtbl->ReleaseAllContacts(This)
   1248 #define IDirectManipulationViewport_GetStatus(This,status) (This)->lpVtbl->GetStatus(This,status)
   1249 #define IDirectManipulationViewport_GetTag(This,riid,object,id) (This)->lpVtbl->GetTag(This,riid,object,id)
   1250 #define IDirectManipulationViewport_SetTag(This,object,id) (This)->lpVtbl->SetTag(This,object,id)
   1251 #define IDirectManipulationViewport_GetViewportRect(This,viewport) (This)->lpVtbl->GetViewportRect(This,viewport)
   1252 #define IDirectManipulationViewport_SetViewportRect(This,viewport) (This)->lpVtbl->SetViewportRect(This,viewport)
   1253 #define IDirectManipulationViewport_ZoomToRect(This,left,top,right,bottom,animate) (This)->lpVtbl->ZoomToRect(This,left,top,right,bottom,animate)
   1254 #define IDirectManipulationViewport_SetViewportTransform(This,matrix,count) (This)->lpVtbl->SetViewportTransform(This,matrix,count)
   1255 #define IDirectManipulationViewport_SyncDisplayTransform(This,matrix,count) (This)->lpVtbl->SyncDisplayTransform(This,matrix,count)
   1256 #define IDirectManipulationViewport_GetPrimaryContent(This,riid,object) (This)->lpVtbl->GetPrimaryContent(This,riid,object)
   1257 #define IDirectManipulationViewport_AddContent(This,content) (This)->lpVtbl->AddContent(This,content)
   1258 #define IDirectManipulationViewport_RemoveContent(This,content) (This)->lpVtbl->RemoveContent(This,content)
   1259 #define IDirectManipulationViewport_SetViewportOptions(This,options) (This)->lpVtbl->SetViewportOptions(This,options)
   1260 #define IDirectManipulationViewport_AddConfiguration(This,configuration) (This)->lpVtbl->AddConfiguration(This,configuration)
   1261 #define IDirectManipulationViewport_RemoveConfiguration(This,configuration) (This)->lpVtbl->RemoveConfiguration(This,configuration)
   1262 #define IDirectManipulationViewport_ActivateConfiguration(This,configuration) (This)->lpVtbl->ActivateConfiguration(This,configuration)
   1263 #define IDirectManipulationViewport_SetManualGesture(This,configuration) (This)->lpVtbl->SetManualGesture(This,configuration)
   1264 #define IDirectManipulationViewport_SetChaining(This,enabledTypes) (This)->lpVtbl->SetChaining(This,enabledTypes)
   1265 #define IDirectManipulationViewport_AddEventHandler(This,window,eventHandler,cookie) (This)->lpVtbl->AddEventHandler(This,window,eventHandler,cookie)
   1266 #define IDirectManipulationViewport_RemoveEventHandler(This,cookie) (This)->lpVtbl->RemoveEventHandler(This,cookie)
   1267 #define IDirectManipulationViewport_SetInputMode(This,mode) (This)->lpVtbl->SetInputMode(This,mode)
   1268 #define IDirectManipulationViewport_SetUpdateMode(This,mode) (This)->lpVtbl->SetUpdateMode(This,mode)
   1269 #define IDirectManipulationViewport_Stop(This) (This)->lpVtbl->Stop(This)
   1270 #define IDirectManipulationViewport_Abandon(This) (This)->lpVtbl->Abandon(This)
   1271 #else
   1272 /*** IUnknown methods ***/
   1273 static inline HRESULT IDirectManipulationViewport_QueryInterface(IDirectManipulationViewport* This,REFIID riid,void **ppvObject) {
   1274     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1275 }
   1276 static inline ULONG IDirectManipulationViewport_AddRef(IDirectManipulationViewport* This) {
   1277     return This->lpVtbl->AddRef(This);
   1278 }
   1279 static inline ULONG IDirectManipulationViewport_Release(IDirectManipulationViewport* This) {
   1280     return This->lpVtbl->Release(This);
   1281 }
   1282 /*** IDirectManipulationViewport methods ***/
   1283 static inline HRESULT IDirectManipulationViewport_Enable(IDirectManipulationViewport* This) {
   1284     return This->lpVtbl->Enable(This);
   1285 }
   1286 static inline HRESULT IDirectManipulationViewport_Disable(IDirectManipulationViewport* This) {
   1287     return This->lpVtbl->Disable(This);
   1288 }
   1289 static inline HRESULT IDirectManipulationViewport_SetContact(IDirectManipulationViewport* This,UINT32 id) {
   1290     return This->lpVtbl->SetContact(This,id);
   1291 }
   1292 static inline HRESULT IDirectManipulationViewport_ReleaseContact(IDirectManipulationViewport* This,UINT32 id) {
   1293     return This->lpVtbl->ReleaseContact(This,id);
   1294 }
   1295 static inline HRESULT IDirectManipulationViewport_ReleaseAllContacts(IDirectManipulationViewport* This) {
   1296     return This->lpVtbl->ReleaseAllContacts(This);
   1297 }
   1298 static inline HRESULT IDirectManipulationViewport_GetStatus(IDirectManipulationViewport* This,DIRECTMANIPULATION_STATUS *status) {
   1299     return This->lpVtbl->GetStatus(This,status);
   1300 }
   1301 static inline HRESULT IDirectManipulationViewport_GetTag(IDirectManipulationViewport* This,REFIID riid,void **object,UINT32 *id) {
   1302     return This->lpVtbl->GetTag(This,riid,object,id);
   1303 }
   1304 static inline HRESULT IDirectManipulationViewport_SetTag(IDirectManipulationViewport* This,IUnknown *object,UINT32 id) {
   1305     return This->lpVtbl->SetTag(This,object,id);
   1306 }
   1307 static inline HRESULT IDirectManipulationViewport_GetViewportRect(IDirectManipulationViewport* This,RECT *viewport) {
   1308     return This->lpVtbl->GetViewportRect(This,viewport);
   1309 }
   1310 static inline HRESULT IDirectManipulationViewport_SetViewportRect(IDirectManipulationViewport* This,const RECT *viewport) {
   1311     return This->lpVtbl->SetViewportRect(This,viewport);
   1312 }
   1313 static inline HRESULT IDirectManipulationViewport_ZoomToRect(IDirectManipulationViewport* This,const float left,const float top,const float right,const float bottom,WINBOOL animate) {
   1314     return This->lpVtbl->ZoomToRect(This,left,top,right,bottom,animate);
   1315 }
   1316 static inline HRESULT IDirectManipulationViewport_SetViewportTransform(IDirectManipulationViewport* This,const float *matrix,DWORD count) {
   1317     return This->lpVtbl->SetViewportTransform(This,matrix,count);
   1318 }
   1319 static inline HRESULT IDirectManipulationViewport_SyncDisplayTransform(IDirectManipulationViewport* This,const float *matrix,DWORD count) {
   1320     return This->lpVtbl->SyncDisplayTransform(This,matrix,count);
   1321 }
   1322 static inline HRESULT IDirectManipulationViewport_GetPrimaryContent(IDirectManipulationViewport* This,REFIID riid,void **object) {
   1323     return This->lpVtbl->GetPrimaryContent(This,riid,object);
   1324 }
   1325 static inline HRESULT IDirectManipulationViewport_AddContent(IDirectManipulationViewport* This,IDirectManipulationContent *content) {
   1326     return This->lpVtbl->AddContent(This,content);
   1327 }
   1328 static inline HRESULT IDirectManipulationViewport_RemoveContent(IDirectManipulationViewport* This,IDirectManipulationContent *content) {
   1329     return This->lpVtbl->RemoveContent(This,content);
   1330 }
   1331 static inline HRESULT IDirectManipulationViewport_SetViewportOptions(IDirectManipulationViewport* This,DIRECTMANIPULATION_VIEWPORT_OPTIONS options) {
   1332     return This->lpVtbl->SetViewportOptions(This,options);
   1333 }
   1334 static inline HRESULT IDirectManipulationViewport_AddConfiguration(IDirectManipulationViewport* This,DIRECTMANIPULATION_CONFIGURATION configuration) {
   1335     return This->lpVtbl->AddConfiguration(This,configuration);
   1336 }
   1337 static inline HRESULT IDirectManipulationViewport_RemoveConfiguration(IDirectManipulationViewport* This,DIRECTMANIPULATION_CONFIGURATION configuration) {
   1338     return This->lpVtbl->RemoveConfiguration(This,configuration);
   1339 }
   1340 static inline HRESULT IDirectManipulationViewport_ActivateConfiguration(IDirectManipulationViewport* This,DIRECTMANIPULATION_CONFIGURATION configuration) {
   1341     return This->lpVtbl->ActivateConfiguration(This,configuration);
   1342 }
   1343 static inline HRESULT IDirectManipulationViewport_SetManualGesture(IDirectManipulationViewport* This,DIRECTMANIPULATION_GESTURE_CONFIGURATION configuration) {
   1344     return This->lpVtbl->SetManualGesture(This,configuration);
   1345 }
   1346 static inline HRESULT IDirectManipulationViewport_SetChaining(IDirectManipulationViewport* This,DIRECTMANIPULATION_MOTION_TYPES enabledTypes) {
   1347     return This->lpVtbl->SetChaining(This,enabledTypes);
   1348 }
   1349 static inline HRESULT IDirectManipulationViewport_AddEventHandler(IDirectManipulationViewport* This,HWND window,IDirectManipulationViewportEventHandler *eventHandler,DWORD *cookie) {
   1350     return This->lpVtbl->AddEventHandler(This,window,eventHandler,cookie);
   1351 }
   1352 static inline HRESULT IDirectManipulationViewport_RemoveEventHandler(IDirectManipulationViewport* This,DWORD cookie) {
   1353     return This->lpVtbl->RemoveEventHandler(This,cookie);
   1354 }
   1355 static inline HRESULT IDirectManipulationViewport_SetInputMode(IDirectManipulationViewport* This,DIRECTMANIPULATION_INPUT_MODE mode) {
   1356     return This->lpVtbl->SetInputMode(This,mode);
   1357 }
   1358 static inline HRESULT IDirectManipulationViewport_SetUpdateMode(IDirectManipulationViewport* This,DIRECTMANIPULATION_INPUT_MODE mode) {
   1359     return This->lpVtbl->SetUpdateMode(This,mode);
   1360 }
   1361 static inline HRESULT IDirectManipulationViewport_Stop(IDirectManipulationViewport* This) {
   1362     return This->lpVtbl->Stop(This);
   1363 }
   1364 static inline HRESULT IDirectManipulationViewport_Abandon(IDirectManipulationViewport* This) {
   1365     return This->lpVtbl->Abandon(This);
   1366 }
   1367 #endif
   1368 #endif
   1369 
   1370 #endif
   1371 
   1372 
   1373 #endif  /* __IDirectManipulationViewport_INTERFACE_DEFINED__ */
   1374 
   1375 /*****************************************************************************
   1376  * IDirectManipulationViewport2 interface
   1377  */
   1378 #ifndef __IDirectManipulationViewport2_INTERFACE_DEFINED__
   1379 #define __IDirectManipulationViewport2_INTERFACE_DEFINED__
   1380 
   1381 DEFINE_GUID(IID_IDirectManipulationViewport2, 0x923ccaac, 0x61e1, 0x4385, 0xb7,0x26, 0x01,0x7a,0xf1,0x89,0x88,0x2a);
   1382 #if defined(__cplusplus) && !defined(CINTERFACE)
   1383 MIDL_INTERFACE("923ccaac-61e1-4385-b726-017af189882a")
   1384 IDirectManipulationViewport2 : public IDirectManipulationViewport
   1385 {
   1386     virtual HRESULT STDMETHODCALLTYPE AddBehavior(
   1387         IUnknown *behavior,
   1388         DWORD *cookie) = 0;
   1389 
   1390     virtual HRESULT STDMETHODCALLTYPE RemoveBehavior(
   1391         DWORD cookie) = 0;
   1392 
   1393     virtual HRESULT STDMETHODCALLTYPE RemoveAllBehaviors(
   1394         ) = 0;
   1395 
   1396 };
   1397 #ifdef __CRT_UUID_DECL
   1398 __CRT_UUID_DECL(IDirectManipulationViewport2, 0x923ccaac, 0x61e1, 0x4385, 0xb7,0x26, 0x01,0x7a,0xf1,0x89,0x88,0x2a)
   1399 #endif
   1400 #else
   1401 typedef struct IDirectManipulationViewport2Vtbl {
   1402     BEGIN_INTERFACE
   1403 
   1404     /*** IUnknown methods ***/
   1405     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1406         IDirectManipulationViewport2 *This,
   1407         REFIID riid,
   1408         void **ppvObject);
   1409 
   1410     ULONG (STDMETHODCALLTYPE *AddRef)(
   1411         IDirectManipulationViewport2 *This);
   1412 
   1413     ULONG (STDMETHODCALLTYPE *Release)(
   1414         IDirectManipulationViewport2 *This);
   1415 
   1416     /*** IDirectManipulationViewport methods ***/
   1417     HRESULT (STDMETHODCALLTYPE *Enable)(
   1418         IDirectManipulationViewport2 *This);
   1419 
   1420     HRESULT (STDMETHODCALLTYPE *Disable)(
   1421         IDirectManipulationViewport2 *This);
   1422 
   1423     HRESULT (STDMETHODCALLTYPE *SetContact)(
   1424         IDirectManipulationViewport2 *This,
   1425         UINT32 id);
   1426 
   1427     HRESULT (STDMETHODCALLTYPE *ReleaseContact)(
   1428         IDirectManipulationViewport2 *This,
   1429         UINT32 id);
   1430 
   1431     HRESULT (STDMETHODCALLTYPE *ReleaseAllContacts)(
   1432         IDirectManipulationViewport2 *This);
   1433 
   1434     HRESULT (STDMETHODCALLTYPE *GetStatus)(
   1435         IDirectManipulationViewport2 *This,
   1436         DIRECTMANIPULATION_STATUS *status);
   1437 
   1438     HRESULT (STDMETHODCALLTYPE *GetTag)(
   1439         IDirectManipulationViewport2 *This,
   1440         REFIID riid,
   1441         void **object,
   1442         UINT32 *id);
   1443 
   1444     HRESULT (STDMETHODCALLTYPE *SetTag)(
   1445         IDirectManipulationViewport2 *This,
   1446         IUnknown *object,
   1447         UINT32 id);
   1448 
   1449     HRESULT (STDMETHODCALLTYPE *GetViewportRect)(
   1450         IDirectManipulationViewport2 *This,
   1451         RECT *viewport);
   1452 
   1453     HRESULT (STDMETHODCALLTYPE *SetViewportRect)(
   1454         IDirectManipulationViewport2 *This,
   1455         const RECT *viewport);
   1456 
   1457     HRESULT (STDMETHODCALLTYPE *ZoomToRect)(
   1458         IDirectManipulationViewport2 *This,
   1459         const float left,
   1460         const float top,
   1461         const float right,
   1462         const float bottom,
   1463         WINBOOL animate);
   1464 
   1465     HRESULT (STDMETHODCALLTYPE *SetViewportTransform)(
   1466         IDirectManipulationViewport2 *This,
   1467         const float *matrix,
   1468         DWORD count);
   1469 
   1470     HRESULT (STDMETHODCALLTYPE *SyncDisplayTransform)(
   1471         IDirectManipulationViewport2 *This,
   1472         const float *matrix,
   1473         DWORD count);
   1474 
   1475     HRESULT (STDMETHODCALLTYPE *GetPrimaryContent)(
   1476         IDirectManipulationViewport2 *This,
   1477         REFIID riid,
   1478         void **object);
   1479 
   1480     HRESULT (STDMETHODCALLTYPE *AddContent)(
   1481         IDirectManipulationViewport2 *This,
   1482         IDirectManipulationContent *content);
   1483 
   1484     HRESULT (STDMETHODCALLTYPE *RemoveContent)(
   1485         IDirectManipulationViewport2 *This,
   1486         IDirectManipulationContent *content);
   1487 
   1488     HRESULT (STDMETHODCALLTYPE *SetViewportOptions)(
   1489         IDirectManipulationViewport2 *This,
   1490         DIRECTMANIPULATION_VIEWPORT_OPTIONS options);
   1491 
   1492     HRESULT (STDMETHODCALLTYPE *AddConfiguration)(
   1493         IDirectManipulationViewport2 *This,
   1494         DIRECTMANIPULATION_CONFIGURATION configuration);
   1495 
   1496     HRESULT (STDMETHODCALLTYPE *RemoveConfiguration)(
   1497         IDirectManipulationViewport2 *This,
   1498         DIRECTMANIPULATION_CONFIGURATION configuration);
   1499 
   1500     HRESULT (STDMETHODCALLTYPE *ActivateConfiguration)(
   1501         IDirectManipulationViewport2 *This,
   1502         DIRECTMANIPULATION_CONFIGURATION configuration);
   1503 
   1504     HRESULT (STDMETHODCALLTYPE *SetManualGesture)(
   1505         IDirectManipulationViewport2 *This,
   1506         DIRECTMANIPULATION_GESTURE_CONFIGURATION configuration);
   1507 
   1508     HRESULT (STDMETHODCALLTYPE *SetChaining)(
   1509         IDirectManipulationViewport2 *This,
   1510         DIRECTMANIPULATION_MOTION_TYPES enabledTypes);
   1511 
   1512     HRESULT (STDMETHODCALLTYPE *AddEventHandler)(
   1513         IDirectManipulationViewport2 *This,
   1514         HWND window,
   1515         IDirectManipulationViewportEventHandler *eventHandler,
   1516         DWORD *cookie);
   1517 
   1518     HRESULT (STDMETHODCALLTYPE *RemoveEventHandler)(
   1519         IDirectManipulationViewport2 *This,
   1520         DWORD cookie);
   1521 
   1522     HRESULT (STDMETHODCALLTYPE *SetInputMode)(
   1523         IDirectManipulationViewport2 *This,
   1524         DIRECTMANIPULATION_INPUT_MODE mode);
   1525 
   1526     HRESULT (STDMETHODCALLTYPE *SetUpdateMode)(
   1527         IDirectManipulationViewport2 *This,
   1528         DIRECTMANIPULATION_INPUT_MODE mode);
   1529 
   1530     HRESULT (STDMETHODCALLTYPE *Stop)(
   1531         IDirectManipulationViewport2 *This);
   1532 
   1533     HRESULT (STDMETHODCALLTYPE *Abandon)(
   1534         IDirectManipulationViewport2 *This);
   1535 
   1536     /*** IDirectManipulationViewport2 methods ***/
   1537     HRESULT (STDMETHODCALLTYPE *AddBehavior)(
   1538         IDirectManipulationViewport2 *This,
   1539         IUnknown *behavior,
   1540         DWORD *cookie);
   1541 
   1542     HRESULT (STDMETHODCALLTYPE *RemoveBehavior)(
   1543         IDirectManipulationViewport2 *This,
   1544         DWORD cookie);
   1545 
   1546     HRESULT (STDMETHODCALLTYPE *RemoveAllBehaviors)(
   1547         IDirectManipulationViewport2 *This);
   1548 
   1549     END_INTERFACE
   1550 } IDirectManipulationViewport2Vtbl;
   1551 
   1552 interface IDirectManipulationViewport2 {
   1553     CONST_VTBL IDirectManipulationViewport2Vtbl* lpVtbl;
   1554 };
   1555 
   1556 #ifdef COBJMACROS
   1557 #ifndef WIDL_C_INLINE_WRAPPERS
   1558 /*** IUnknown methods ***/
   1559 #define IDirectManipulationViewport2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1560 #define IDirectManipulationViewport2_AddRef(This) (This)->lpVtbl->AddRef(This)
   1561 #define IDirectManipulationViewport2_Release(This) (This)->lpVtbl->Release(This)
   1562 /*** IDirectManipulationViewport methods ***/
   1563 #define IDirectManipulationViewport2_Enable(This) (This)->lpVtbl->Enable(This)
   1564 #define IDirectManipulationViewport2_Disable(This) (This)->lpVtbl->Disable(This)
   1565 #define IDirectManipulationViewport2_SetContact(This,id) (This)->lpVtbl->SetContact(This,id)
   1566 #define IDirectManipulationViewport2_ReleaseContact(This,id) (This)->lpVtbl->ReleaseContact(This,id)
   1567 #define IDirectManipulationViewport2_ReleaseAllContacts(This) (This)->lpVtbl->ReleaseAllContacts(This)
   1568 #define IDirectManipulationViewport2_GetStatus(This,status) (This)->lpVtbl->GetStatus(This,status)
   1569 #define IDirectManipulationViewport2_GetTag(This,riid,object,id) (This)->lpVtbl->GetTag(This,riid,object,id)
   1570 #define IDirectManipulationViewport2_SetTag(This,object,id) (This)->lpVtbl->SetTag(This,object,id)
   1571 #define IDirectManipulationViewport2_GetViewportRect(This,viewport) (This)->lpVtbl->GetViewportRect(This,viewport)
   1572 #define IDirectManipulationViewport2_SetViewportRect(This,viewport) (This)->lpVtbl->SetViewportRect(This,viewport)
   1573 #define IDirectManipulationViewport2_ZoomToRect(This,left,top,right,bottom,animate) (This)->lpVtbl->ZoomToRect(This,left,top,right,bottom,animate)
   1574 #define IDirectManipulationViewport2_SetViewportTransform(This,matrix,count) (This)->lpVtbl->SetViewportTransform(This,matrix,count)
   1575 #define IDirectManipulationViewport2_SyncDisplayTransform(This,matrix,count) (This)->lpVtbl->SyncDisplayTransform(This,matrix,count)
   1576 #define IDirectManipulationViewport2_GetPrimaryContent(This,riid,object) (This)->lpVtbl->GetPrimaryContent(This,riid,object)
   1577 #define IDirectManipulationViewport2_AddContent(This,content) (This)->lpVtbl->AddContent(This,content)
   1578 #define IDirectManipulationViewport2_RemoveContent(This,content) (This)->lpVtbl->RemoveContent(This,content)
   1579 #define IDirectManipulationViewport2_SetViewportOptions(This,options) (This)->lpVtbl->SetViewportOptions(This,options)
   1580 #define IDirectManipulationViewport2_AddConfiguration(This,configuration) (This)->lpVtbl->AddConfiguration(This,configuration)
   1581 #define IDirectManipulationViewport2_RemoveConfiguration(This,configuration) (This)->lpVtbl->RemoveConfiguration(This,configuration)
   1582 #define IDirectManipulationViewport2_ActivateConfiguration(This,configuration) (This)->lpVtbl->ActivateConfiguration(This,configuration)
   1583 #define IDirectManipulationViewport2_SetManualGesture(This,configuration) (This)->lpVtbl->SetManualGesture(This,configuration)
   1584 #define IDirectManipulationViewport2_SetChaining(This,enabledTypes) (This)->lpVtbl->SetChaining(This,enabledTypes)
   1585 #define IDirectManipulationViewport2_AddEventHandler(This,window,eventHandler,cookie) (This)->lpVtbl->AddEventHandler(This,window,eventHandler,cookie)
   1586 #define IDirectManipulationViewport2_RemoveEventHandler(This,cookie) (This)->lpVtbl->RemoveEventHandler(This,cookie)
   1587 #define IDirectManipulationViewport2_SetInputMode(This,mode) (This)->lpVtbl->SetInputMode(This,mode)
   1588 #define IDirectManipulationViewport2_SetUpdateMode(This,mode) (This)->lpVtbl->SetUpdateMode(This,mode)
   1589 #define IDirectManipulationViewport2_Stop(This) (This)->lpVtbl->Stop(This)
   1590 #define IDirectManipulationViewport2_Abandon(This) (This)->lpVtbl->Abandon(This)
   1591 /*** IDirectManipulationViewport2 methods ***/
   1592 #define IDirectManipulationViewport2_AddBehavior(This,behavior,cookie) (This)->lpVtbl->AddBehavior(This,behavior,cookie)
   1593 #define IDirectManipulationViewport2_RemoveBehavior(This,cookie) (This)->lpVtbl->RemoveBehavior(This,cookie)
   1594 #define IDirectManipulationViewport2_RemoveAllBehaviors(This) (This)->lpVtbl->RemoveAllBehaviors(This)
   1595 #else
   1596 /*** IUnknown methods ***/
   1597 static inline HRESULT IDirectManipulationViewport2_QueryInterface(IDirectManipulationViewport2* This,REFIID riid,void **ppvObject) {
   1598     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1599 }
   1600 static inline ULONG IDirectManipulationViewport2_AddRef(IDirectManipulationViewport2* This) {
   1601     return This->lpVtbl->AddRef(This);
   1602 }
   1603 static inline ULONG IDirectManipulationViewport2_Release(IDirectManipulationViewport2* This) {
   1604     return This->lpVtbl->Release(This);
   1605 }
   1606 /*** IDirectManipulationViewport methods ***/
   1607 static inline HRESULT IDirectManipulationViewport2_Enable(IDirectManipulationViewport2* This) {
   1608     return This->lpVtbl->Enable(This);
   1609 }
   1610 static inline HRESULT IDirectManipulationViewport2_Disable(IDirectManipulationViewport2* This) {
   1611     return This->lpVtbl->Disable(This);
   1612 }
   1613 static inline HRESULT IDirectManipulationViewport2_SetContact(IDirectManipulationViewport2* This,UINT32 id) {
   1614     return This->lpVtbl->SetContact(This,id);
   1615 }
   1616 static inline HRESULT IDirectManipulationViewport2_ReleaseContact(IDirectManipulationViewport2* This,UINT32 id) {
   1617     return This->lpVtbl->ReleaseContact(This,id);
   1618 }
   1619 static inline HRESULT IDirectManipulationViewport2_ReleaseAllContacts(IDirectManipulationViewport2* This) {
   1620     return This->lpVtbl->ReleaseAllContacts(This);
   1621 }
   1622 static inline HRESULT IDirectManipulationViewport2_GetStatus(IDirectManipulationViewport2* This,DIRECTMANIPULATION_STATUS *status) {
   1623     return This->lpVtbl->GetStatus(This,status);
   1624 }
   1625 static inline HRESULT IDirectManipulationViewport2_GetTag(IDirectManipulationViewport2* This,REFIID riid,void **object,UINT32 *id) {
   1626     return This->lpVtbl->GetTag(This,riid,object,id);
   1627 }
   1628 static inline HRESULT IDirectManipulationViewport2_SetTag(IDirectManipulationViewport2* This,IUnknown *object,UINT32 id) {
   1629     return This->lpVtbl->SetTag(This,object,id);
   1630 }
   1631 static inline HRESULT IDirectManipulationViewport2_GetViewportRect(IDirectManipulationViewport2* This,RECT *viewport) {
   1632     return This->lpVtbl->GetViewportRect(This,viewport);
   1633 }
   1634 static inline HRESULT IDirectManipulationViewport2_SetViewportRect(IDirectManipulationViewport2* This,const RECT *viewport) {
   1635     return This->lpVtbl->SetViewportRect(This,viewport);
   1636 }
   1637 static inline HRESULT IDirectManipulationViewport2_ZoomToRect(IDirectManipulationViewport2* This,const float left,const float top,const float right,const float bottom,WINBOOL animate) {
   1638     return This->lpVtbl->ZoomToRect(This,left,top,right,bottom,animate);
   1639 }
   1640 static inline HRESULT IDirectManipulationViewport2_SetViewportTransform(IDirectManipulationViewport2* This,const float *matrix,DWORD count) {
   1641     return This->lpVtbl->SetViewportTransform(This,matrix,count);
   1642 }
   1643 static inline HRESULT IDirectManipulationViewport2_SyncDisplayTransform(IDirectManipulationViewport2* This,const float *matrix,DWORD count) {
   1644     return This->lpVtbl->SyncDisplayTransform(This,matrix,count);
   1645 }
   1646 static inline HRESULT IDirectManipulationViewport2_GetPrimaryContent(IDirectManipulationViewport2* This,REFIID riid,void **object) {
   1647     return This->lpVtbl->GetPrimaryContent(This,riid,object);
   1648 }
   1649 static inline HRESULT IDirectManipulationViewport2_AddContent(IDirectManipulationViewport2* This,IDirectManipulationContent *content) {
   1650     return This->lpVtbl->AddContent(This,content);
   1651 }
   1652 static inline HRESULT IDirectManipulationViewport2_RemoveContent(IDirectManipulationViewport2* This,IDirectManipulationContent *content) {
   1653     return This->lpVtbl->RemoveContent(This,content);
   1654 }
   1655 static inline HRESULT IDirectManipulationViewport2_SetViewportOptions(IDirectManipulationViewport2* This,DIRECTMANIPULATION_VIEWPORT_OPTIONS options) {
   1656     return This->lpVtbl->SetViewportOptions(This,options);
   1657 }
   1658 static inline HRESULT IDirectManipulationViewport2_AddConfiguration(IDirectManipulationViewport2* This,DIRECTMANIPULATION_CONFIGURATION configuration) {
   1659     return This->lpVtbl->AddConfiguration(This,configuration);
   1660 }
   1661 static inline HRESULT IDirectManipulationViewport2_RemoveConfiguration(IDirectManipulationViewport2* This,DIRECTMANIPULATION_CONFIGURATION configuration) {
   1662     return This->lpVtbl->RemoveConfiguration(This,configuration);
   1663 }
   1664 static inline HRESULT IDirectManipulationViewport2_ActivateConfiguration(IDirectManipulationViewport2* This,DIRECTMANIPULATION_CONFIGURATION configuration) {
   1665     return This->lpVtbl->ActivateConfiguration(This,configuration);
   1666 }
   1667 static inline HRESULT IDirectManipulationViewport2_SetManualGesture(IDirectManipulationViewport2* This,DIRECTMANIPULATION_GESTURE_CONFIGURATION configuration) {
   1668     return This->lpVtbl->SetManualGesture(This,configuration);
   1669 }
   1670 static inline HRESULT IDirectManipulationViewport2_SetChaining(IDirectManipulationViewport2* This,DIRECTMANIPULATION_MOTION_TYPES enabledTypes) {
   1671     return This->lpVtbl->SetChaining(This,enabledTypes);
   1672 }
   1673 static inline HRESULT IDirectManipulationViewport2_AddEventHandler(IDirectManipulationViewport2* This,HWND window,IDirectManipulationViewportEventHandler *eventHandler,DWORD *cookie) {
   1674     return This->lpVtbl->AddEventHandler(This,window,eventHandler,cookie);
   1675 }
   1676 static inline HRESULT IDirectManipulationViewport2_RemoveEventHandler(IDirectManipulationViewport2* This,DWORD cookie) {
   1677     return This->lpVtbl->RemoveEventHandler(This,cookie);
   1678 }
   1679 static inline HRESULT IDirectManipulationViewport2_SetInputMode(IDirectManipulationViewport2* This,DIRECTMANIPULATION_INPUT_MODE mode) {
   1680     return This->lpVtbl->SetInputMode(This,mode);
   1681 }
   1682 static inline HRESULT IDirectManipulationViewport2_SetUpdateMode(IDirectManipulationViewport2* This,DIRECTMANIPULATION_INPUT_MODE mode) {
   1683     return This->lpVtbl->SetUpdateMode(This,mode);
   1684 }
   1685 static inline HRESULT IDirectManipulationViewport2_Stop(IDirectManipulationViewport2* This) {
   1686     return This->lpVtbl->Stop(This);
   1687 }
   1688 static inline HRESULT IDirectManipulationViewport2_Abandon(IDirectManipulationViewport2* This) {
   1689     return This->lpVtbl->Abandon(This);
   1690 }
   1691 /*** IDirectManipulationViewport2 methods ***/
   1692 static inline HRESULT IDirectManipulationViewport2_AddBehavior(IDirectManipulationViewport2* This,IUnknown *behavior,DWORD *cookie) {
   1693     return This->lpVtbl->AddBehavior(This,behavior,cookie);
   1694 }
   1695 static inline HRESULT IDirectManipulationViewport2_RemoveBehavior(IDirectManipulationViewport2* This,DWORD cookie) {
   1696     return This->lpVtbl->RemoveBehavior(This,cookie);
   1697 }
   1698 static inline HRESULT IDirectManipulationViewport2_RemoveAllBehaviors(IDirectManipulationViewport2* This) {
   1699     return This->lpVtbl->RemoveAllBehaviors(This);
   1700 }
   1701 #endif
   1702 #endif
   1703 
   1704 #endif
   1705 
   1706 
   1707 #endif  /* __IDirectManipulationViewport2_INTERFACE_DEFINED__ */
   1708 
   1709 /*****************************************************************************
   1710  * IDirectManipulationViewportEventHandler interface
   1711  */
   1712 #ifndef __IDirectManipulationViewportEventHandler_INTERFACE_DEFINED__
   1713 #define __IDirectManipulationViewportEventHandler_INTERFACE_DEFINED__
   1714 
   1715 DEFINE_GUID(IID_IDirectManipulationViewportEventHandler, 0x952121da, 0xd69f, 0x45f9, 0xb0,0xf9, 0xf2,0x39,0x44,0x32,0x1a,0x6d);
   1716 #if defined(__cplusplus) && !defined(CINTERFACE)
   1717 MIDL_INTERFACE("952121da-d69f-45f9-b0f9-f23944321a6d")
   1718 IDirectManipulationViewportEventHandler : public IUnknown
   1719 {
   1720     virtual HRESULT STDMETHODCALLTYPE OnViewportStatusChanged(
   1721         IDirectManipulationViewport *viewport,
   1722         DIRECTMANIPULATION_STATUS current,
   1723         DIRECTMANIPULATION_STATUS previous) = 0;
   1724 
   1725     virtual HRESULT STDMETHODCALLTYPE OnViewportUpdated(
   1726         IDirectManipulationViewport *viewport) = 0;
   1727 
   1728     virtual HRESULT STDMETHODCALLTYPE OnContentUpdated(
   1729         IDirectManipulationViewport *viewport,
   1730         IDirectManipulationContent *content) = 0;
   1731 
   1732 };
   1733 #ifdef __CRT_UUID_DECL
   1734 __CRT_UUID_DECL(IDirectManipulationViewportEventHandler, 0x952121da, 0xd69f, 0x45f9, 0xb0,0xf9, 0xf2,0x39,0x44,0x32,0x1a,0x6d)
   1735 #endif
   1736 #else
   1737 typedef struct IDirectManipulationViewportEventHandlerVtbl {
   1738     BEGIN_INTERFACE
   1739 
   1740     /*** IUnknown methods ***/
   1741     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1742         IDirectManipulationViewportEventHandler *This,
   1743         REFIID riid,
   1744         void **ppvObject);
   1745 
   1746     ULONG (STDMETHODCALLTYPE *AddRef)(
   1747         IDirectManipulationViewportEventHandler *This);
   1748 
   1749     ULONG (STDMETHODCALLTYPE *Release)(
   1750         IDirectManipulationViewportEventHandler *This);
   1751 
   1752     /*** IDirectManipulationViewportEventHandler methods ***/
   1753     HRESULT (STDMETHODCALLTYPE *OnViewportStatusChanged)(
   1754         IDirectManipulationViewportEventHandler *This,
   1755         IDirectManipulationViewport *viewport,
   1756         DIRECTMANIPULATION_STATUS current,
   1757         DIRECTMANIPULATION_STATUS previous);
   1758 
   1759     HRESULT (STDMETHODCALLTYPE *OnViewportUpdated)(
   1760         IDirectManipulationViewportEventHandler *This,
   1761         IDirectManipulationViewport *viewport);
   1762 
   1763     HRESULT (STDMETHODCALLTYPE *OnContentUpdated)(
   1764         IDirectManipulationViewportEventHandler *This,
   1765         IDirectManipulationViewport *viewport,
   1766         IDirectManipulationContent *content);
   1767 
   1768     END_INTERFACE
   1769 } IDirectManipulationViewportEventHandlerVtbl;
   1770 
   1771 interface IDirectManipulationViewportEventHandler {
   1772     CONST_VTBL IDirectManipulationViewportEventHandlerVtbl* lpVtbl;
   1773 };
   1774 
   1775 #ifdef COBJMACROS
   1776 #ifndef WIDL_C_INLINE_WRAPPERS
   1777 /*** IUnknown methods ***/
   1778 #define IDirectManipulationViewportEventHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1779 #define IDirectManipulationViewportEventHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
   1780 #define IDirectManipulationViewportEventHandler_Release(This) (This)->lpVtbl->Release(This)
   1781 /*** IDirectManipulationViewportEventHandler methods ***/
   1782 #define IDirectManipulationViewportEventHandler_OnViewportStatusChanged(This,viewport,current,previous) (This)->lpVtbl->OnViewportStatusChanged(This,viewport,current,previous)
   1783 #define IDirectManipulationViewportEventHandler_OnViewportUpdated(This,viewport) (This)->lpVtbl->OnViewportUpdated(This,viewport)
   1784 #define IDirectManipulationViewportEventHandler_OnContentUpdated(This,viewport,content) (This)->lpVtbl->OnContentUpdated(This,viewport,content)
   1785 #else
   1786 /*** IUnknown methods ***/
   1787 static inline HRESULT IDirectManipulationViewportEventHandler_QueryInterface(IDirectManipulationViewportEventHandler* This,REFIID riid,void **ppvObject) {
   1788     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1789 }
   1790 static inline ULONG IDirectManipulationViewportEventHandler_AddRef(IDirectManipulationViewportEventHandler* This) {
   1791     return This->lpVtbl->AddRef(This);
   1792 }
   1793 static inline ULONG IDirectManipulationViewportEventHandler_Release(IDirectManipulationViewportEventHandler* This) {
   1794     return This->lpVtbl->Release(This);
   1795 }
   1796 /*** IDirectManipulationViewportEventHandler methods ***/
   1797 static inline HRESULT IDirectManipulationViewportEventHandler_OnViewportStatusChanged(IDirectManipulationViewportEventHandler* This,IDirectManipulationViewport *viewport,DIRECTMANIPULATION_STATUS current,DIRECTMANIPULATION_STATUS previous) {
   1798     return This->lpVtbl->OnViewportStatusChanged(This,viewport,current,previous);
   1799 }
   1800 static inline HRESULT IDirectManipulationViewportEventHandler_OnViewportUpdated(IDirectManipulationViewportEventHandler* This,IDirectManipulationViewport *viewport) {
   1801     return This->lpVtbl->OnViewportUpdated(This,viewport);
   1802 }
   1803 static inline HRESULT IDirectManipulationViewportEventHandler_OnContentUpdated(IDirectManipulationViewportEventHandler* This,IDirectManipulationViewport *viewport,IDirectManipulationContent *content) {
   1804     return This->lpVtbl->OnContentUpdated(This,viewport,content);
   1805 }
   1806 #endif
   1807 #endif
   1808 
   1809 #endif
   1810 
   1811 
   1812 #endif  /* __IDirectManipulationViewportEventHandler_INTERFACE_DEFINED__ */
   1813 
   1814 /*****************************************************************************
   1815  * IDirectManipulationManager2 interface
   1816  */
   1817 #ifndef __IDirectManipulationManager2_INTERFACE_DEFINED__
   1818 #define __IDirectManipulationManager2_INTERFACE_DEFINED__
   1819 
   1820 DEFINE_GUID(IID_IDirectManipulationManager2, 0xfa1005e9, 0x3d16, 0x484c, 0xbf,0xc9, 0x62,0xb6,0x1e,0x56,0xec,0x4e);
   1821 #if defined(__cplusplus) && !defined(CINTERFACE)
   1822 MIDL_INTERFACE("fa1005e9-3d16-484c-bfc9-62b61e56ec4e")
   1823 IDirectManipulationManager2 : public IDirectManipulationManager
   1824 {
   1825     virtual HRESULT STDMETHODCALLTYPE CreateBehavior(
   1826         REFCLSID clsid,
   1827         REFIID riid,
   1828         void **obj) = 0;
   1829 
   1830 };
   1831 #ifdef __CRT_UUID_DECL
   1832 __CRT_UUID_DECL(IDirectManipulationManager2, 0xfa1005e9, 0x3d16, 0x484c, 0xbf,0xc9, 0x62,0xb6,0x1e,0x56,0xec,0x4e)
   1833 #endif
   1834 #else
   1835 typedef struct IDirectManipulationManager2Vtbl {
   1836     BEGIN_INTERFACE
   1837 
   1838     /*** IUnknown methods ***/
   1839     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1840         IDirectManipulationManager2 *This,
   1841         REFIID riid,
   1842         void **ppvObject);
   1843 
   1844     ULONG (STDMETHODCALLTYPE *AddRef)(
   1845         IDirectManipulationManager2 *This);
   1846 
   1847     ULONG (STDMETHODCALLTYPE *Release)(
   1848         IDirectManipulationManager2 *This);
   1849 
   1850     /*** IDirectManipulationManager methods ***/
   1851     HRESULT (STDMETHODCALLTYPE *Activate)(
   1852         IDirectManipulationManager2 *This,
   1853         HWND window);
   1854 
   1855     HRESULT (STDMETHODCALLTYPE *Deactivate)(
   1856         IDirectManipulationManager2 *This,
   1857         HWND window);
   1858 
   1859     HRESULT (STDMETHODCALLTYPE *RegisterHitTestTarget)(
   1860         IDirectManipulationManager2 *This,
   1861         HWND window,
   1862         HWND hittest,
   1863         DIRECTMANIPULATION_HITTEST_TYPE type);
   1864 
   1865     HRESULT (STDMETHODCALLTYPE *ProcessInput)(
   1866         IDirectManipulationManager2 *This,
   1867         const MSG *msg,
   1868         WINBOOL *handled);
   1869 
   1870     HRESULT (STDMETHODCALLTYPE *GetUpdateManager)(
   1871         IDirectManipulationManager2 *This,
   1872         REFIID riid,
   1873         void **obj);
   1874 
   1875     HRESULT (STDMETHODCALLTYPE *CreateViewport)(
   1876         IDirectManipulationManager2 *This,
   1877         IDirectManipulationFrameInfoProvider *frame,
   1878         HWND window,
   1879         REFIID riid,
   1880         void **obj);
   1881 
   1882     HRESULT (STDMETHODCALLTYPE *CreateContent)(
   1883         IDirectManipulationManager2 *This,
   1884         IDirectManipulationFrameInfoProvider *frame,
   1885         REFCLSID clsid,
   1886         REFIID riid,
   1887         void **obj);
   1888 
   1889     /*** IDirectManipulationManager2 methods ***/
   1890     HRESULT (STDMETHODCALLTYPE *CreateBehavior)(
   1891         IDirectManipulationManager2 *This,
   1892         REFCLSID clsid,
   1893         REFIID riid,
   1894         void **obj);
   1895 
   1896     END_INTERFACE
   1897 } IDirectManipulationManager2Vtbl;
   1898 
   1899 interface IDirectManipulationManager2 {
   1900     CONST_VTBL IDirectManipulationManager2Vtbl* lpVtbl;
   1901 };
   1902 
   1903 #ifdef COBJMACROS
   1904 #ifndef WIDL_C_INLINE_WRAPPERS
   1905 /*** IUnknown methods ***/
   1906 #define IDirectManipulationManager2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1907 #define IDirectManipulationManager2_AddRef(This) (This)->lpVtbl->AddRef(This)
   1908 #define IDirectManipulationManager2_Release(This) (This)->lpVtbl->Release(This)
   1909 /*** IDirectManipulationManager methods ***/
   1910 #define IDirectManipulationManager2_Activate(This,window) (This)->lpVtbl->Activate(This,window)
   1911 #define IDirectManipulationManager2_Deactivate(This,window) (This)->lpVtbl->Deactivate(This,window)
   1912 #define IDirectManipulationManager2_RegisterHitTestTarget(This,window,hittest,type) (This)->lpVtbl->RegisterHitTestTarget(This,window,hittest,type)
   1913 #define IDirectManipulationManager2_ProcessInput(This,msg,handled) (This)->lpVtbl->ProcessInput(This,msg,handled)
   1914 #define IDirectManipulationManager2_GetUpdateManager(This,riid,obj) (This)->lpVtbl->GetUpdateManager(This,riid,obj)
   1915 #define IDirectManipulationManager2_CreateViewport(This,frame,window,riid,obj) (This)->lpVtbl->CreateViewport(This,frame,window,riid,obj)
   1916 #define IDirectManipulationManager2_CreateContent(This,frame,clsid,riid,obj) (This)->lpVtbl->CreateContent(This,frame,clsid,riid,obj)
   1917 /*** IDirectManipulationManager2 methods ***/
   1918 #define IDirectManipulationManager2_CreateBehavior(This,clsid,riid,obj) (This)->lpVtbl->CreateBehavior(This,clsid,riid,obj)
   1919 #else
   1920 /*** IUnknown methods ***/
   1921 static inline HRESULT IDirectManipulationManager2_QueryInterface(IDirectManipulationManager2* This,REFIID riid,void **ppvObject) {
   1922     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1923 }
   1924 static inline ULONG IDirectManipulationManager2_AddRef(IDirectManipulationManager2* This) {
   1925     return This->lpVtbl->AddRef(This);
   1926 }
   1927 static inline ULONG IDirectManipulationManager2_Release(IDirectManipulationManager2* This) {
   1928     return This->lpVtbl->Release(This);
   1929 }
   1930 /*** IDirectManipulationManager methods ***/
   1931 static inline HRESULT IDirectManipulationManager2_Activate(IDirectManipulationManager2* This,HWND window) {
   1932     return This->lpVtbl->Activate(This,window);
   1933 }
   1934 static inline HRESULT IDirectManipulationManager2_Deactivate(IDirectManipulationManager2* This,HWND window) {
   1935     return This->lpVtbl->Deactivate(This,window);
   1936 }
   1937 static inline HRESULT IDirectManipulationManager2_RegisterHitTestTarget(IDirectManipulationManager2* This,HWND window,HWND hittest,DIRECTMANIPULATION_HITTEST_TYPE type) {
   1938     return This->lpVtbl->RegisterHitTestTarget(This,window,hittest,type);
   1939 }
   1940 static inline HRESULT IDirectManipulationManager2_ProcessInput(IDirectManipulationManager2* This,const MSG *msg,WINBOOL *handled) {
   1941     return This->lpVtbl->ProcessInput(This,msg,handled);
   1942 }
   1943 static inline HRESULT IDirectManipulationManager2_GetUpdateManager(IDirectManipulationManager2* This,REFIID riid,void **obj) {
   1944     return This->lpVtbl->GetUpdateManager(This,riid,obj);
   1945 }
   1946 static inline HRESULT IDirectManipulationManager2_CreateViewport(IDirectManipulationManager2* This,IDirectManipulationFrameInfoProvider *frame,HWND window,REFIID riid,void **obj) {
   1947     return This->lpVtbl->CreateViewport(This,frame,window,riid,obj);
   1948 }
   1949 static inline HRESULT IDirectManipulationManager2_CreateContent(IDirectManipulationManager2* This,IDirectManipulationFrameInfoProvider *frame,REFCLSID clsid,REFIID riid,void **obj) {
   1950     return This->lpVtbl->CreateContent(This,frame,clsid,riid,obj);
   1951 }
   1952 /*** IDirectManipulationManager2 methods ***/
   1953 static inline HRESULT IDirectManipulationManager2_CreateBehavior(IDirectManipulationManager2* This,REFCLSID clsid,REFIID riid,void **obj) {
   1954     return This->lpVtbl->CreateBehavior(This,clsid,riid,obj);
   1955 }
   1956 #endif
   1957 #endif
   1958 
   1959 #endif
   1960 
   1961 
   1962 #endif  /* __IDirectManipulationManager2_INTERFACE_DEFINED__ */
   1963 
   1964 /*****************************************************************************
   1965  * IDirectManipulationPrimaryContent interface
   1966  */
   1967 #ifndef __IDirectManipulationPrimaryContent_INTERFACE_DEFINED__
   1968 #define __IDirectManipulationPrimaryContent_INTERFACE_DEFINED__
   1969 
   1970 DEFINE_GUID(IID_IDirectManipulationPrimaryContent, 0xc12851e4, 0x1698, 0x4625, 0xb9,0xb1, 0x7c,0xa3,0xec,0x18,0x63,0x0b);
   1971 #if defined(__cplusplus) && !defined(CINTERFACE)
   1972 MIDL_INTERFACE("c12851e4-1698-4625-b9b1-7ca3ec18630b")
   1973 IDirectManipulationPrimaryContent : public IUnknown
   1974 {
   1975     virtual HRESULT STDMETHODCALLTYPE SetSnapInterval(
   1976         DIRECTMANIPULATION_MOTION_TYPES motion,
   1977         float interval,
   1978         float offset) = 0;
   1979 
   1980     virtual HRESULT STDMETHODCALLTYPE SetSnapPoints(
   1981         DIRECTMANIPULATION_MOTION_TYPES motion,
   1982         const float *points,
   1983         DWORD count) = 0;
   1984 
   1985     virtual HRESULT STDMETHODCALLTYPE SetSnapType(
   1986         DIRECTMANIPULATION_MOTION_TYPES motion,
   1987         DIRECTMANIPULATION_SNAPPOINT_TYPE type) = 0;
   1988 
   1989     virtual HRESULT STDMETHODCALLTYPE SetSnapCoordinate(
   1990         DIRECTMANIPULATION_MOTION_TYPES motion,
   1991         DIRECTMANIPULATION_SNAPPOINT_COORDINATE coordinate,
   1992         float origin) = 0;
   1993 
   1994     virtual HRESULT STDMETHODCALLTYPE SetZoomBoundaries(
   1995         float minimum,
   1996         float maximum) = 0;
   1997 
   1998     virtual HRESULT STDMETHODCALLTYPE SetHorizontalAlignment(
   1999         DIRECTMANIPULATION_HORIZONTALALIGNMENT alignment) = 0;
   2000 
   2001     virtual HRESULT STDMETHODCALLTYPE SetVerticalAlignment(
   2002         DIRECTMANIPULATION_VERTICALALIGNMENT alignment) = 0;
   2003 
   2004     virtual HRESULT STDMETHODCALLTYPE GetInertiaEndTransform(
   2005         float *matrix,
   2006         DWORD count) = 0;
   2007 
   2008     virtual HRESULT STDMETHODCALLTYPE GetCenterPoint(
   2009         float *x,
   2010         float *y) = 0;
   2011 
   2012 };
   2013 #ifdef __CRT_UUID_DECL
   2014 __CRT_UUID_DECL(IDirectManipulationPrimaryContent, 0xc12851e4, 0x1698, 0x4625, 0xb9,0xb1, 0x7c,0xa3,0xec,0x18,0x63,0x0b)
   2015 #endif
   2016 #else
   2017 typedef struct IDirectManipulationPrimaryContentVtbl {
   2018     BEGIN_INTERFACE
   2019 
   2020     /*** IUnknown methods ***/
   2021     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2022         IDirectManipulationPrimaryContent *This,
   2023         REFIID riid,
   2024         void **ppvObject);
   2025 
   2026     ULONG (STDMETHODCALLTYPE *AddRef)(
   2027         IDirectManipulationPrimaryContent *This);
   2028 
   2029     ULONG (STDMETHODCALLTYPE *Release)(
   2030         IDirectManipulationPrimaryContent *This);
   2031 
   2032     /*** IDirectManipulationPrimaryContent methods ***/
   2033     HRESULT (STDMETHODCALLTYPE *SetSnapInterval)(
   2034         IDirectManipulationPrimaryContent *This,
   2035         DIRECTMANIPULATION_MOTION_TYPES motion,
   2036         float interval,
   2037         float offset);
   2038 
   2039     HRESULT (STDMETHODCALLTYPE *SetSnapPoints)(
   2040         IDirectManipulationPrimaryContent *This,
   2041         DIRECTMANIPULATION_MOTION_TYPES motion,
   2042         const float *points,
   2043         DWORD count);
   2044 
   2045     HRESULT (STDMETHODCALLTYPE *SetSnapType)(
   2046         IDirectManipulationPrimaryContent *This,
   2047         DIRECTMANIPULATION_MOTION_TYPES motion,
   2048         DIRECTMANIPULATION_SNAPPOINT_TYPE type);
   2049 
   2050     HRESULT (STDMETHODCALLTYPE *SetSnapCoordinate)(
   2051         IDirectManipulationPrimaryContent *This,
   2052         DIRECTMANIPULATION_MOTION_TYPES motion,
   2053         DIRECTMANIPULATION_SNAPPOINT_COORDINATE coordinate,
   2054         float origin);
   2055 
   2056     HRESULT (STDMETHODCALLTYPE *SetZoomBoundaries)(
   2057         IDirectManipulationPrimaryContent *This,
   2058         float minimum,
   2059         float maximum);
   2060 
   2061     HRESULT (STDMETHODCALLTYPE *SetHorizontalAlignment)(
   2062         IDirectManipulationPrimaryContent *This,
   2063         DIRECTMANIPULATION_HORIZONTALALIGNMENT alignment);
   2064 
   2065     HRESULT (STDMETHODCALLTYPE *SetVerticalAlignment)(
   2066         IDirectManipulationPrimaryContent *This,
   2067         DIRECTMANIPULATION_VERTICALALIGNMENT alignment);
   2068 
   2069     HRESULT (STDMETHODCALLTYPE *GetInertiaEndTransform)(
   2070         IDirectManipulationPrimaryContent *This,
   2071         float *matrix,
   2072         DWORD count);
   2073 
   2074     HRESULT (STDMETHODCALLTYPE *GetCenterPoint)(
   2075         IDirectManipulationPrimaryContent *This,
   2076         float *x,
   2077         float *y);
   2078 
   2079     END_INTERFACE
   2080 } IDirectManipulationPrimaryContentVtbl;
   2081 
   2082 interface IDirectManipulationPrimaryContent {
   2083     CONST_VTBL IDirectManipulationPrimaryContentVtbl* lpVtbl;
   2084 };
   2085 
   2086 #ifdef COBJMACROS
   2087 #ifndef WIDL_C_INLINE_WRAPPERS
   2088 /*** IUnknown methods ***/
   2089 #define IDirectManipulationPrimaryContent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2090 #define IDirectManipulationPrimaryContent_AddRef(This) (This)->lpVtbl->AddRef(This)
   2091 #define IDirectManipulationPrimaryContent_Release(This) (This)->lpVtbl->Release(This)
   2092 /*** IDirectManipulationPrimaryContent methods ***/
   2093 #define IDirectManipulationPrimaryContent_SetSnapInterval(This,motion,interval,offset) (This)->lpVtbl->SetSnapInterval(This,motion,interval,offset)
   2094 #define IDirectManipulationPrimaryContent_SetSnapPoints(This,motion,points,count) (This)->lpVtbl->SetSnapPoints(This,motion,points,count)
   2095 #define IDirectManipulationPrimaryContent_SetSnapType(This,motion,type) (This)->lpVtbl->SetSnapType(This,motion,type)
   2096 #define IDirectManipulationPrimaryContent_SetSnapCoordinate(This,motion,coordinate,origin) (This)->lpVtbl->SetSnapCoordinate(This,motion,coordinate,origin)
   2097 #define IDirectManipulationPrimaryContent_SetZoomBoundaries(This,minimum,maximum) (This)->lpVtbl->SetZoomBoundaries(This,minimum,maximum)
   2098 #define IDirectManipulationPrimaryContent_SetHorizontalAlignment(This,alignment) (This)->lpVtbl->SetHorizontalAlignment(This,alignment)
   2099 #define IDirectManipulationPrimaryContent_SetVerticalAlignment(This,alignment) (This)->lpVtbl->SetVerticalAlignment(This,alignment)
   2100 #define IDirectManipulationPrimaryContent_GetInertiaEndTransform(This,matrix,count) (This)->lpVtbl->GetInertiaEndTransform(This,matrix,count)
   2101 #define IDirectManipulationPrimaryContent_GetCenterPoint(This,x,y) (This)->lpVtbl->GetCenterPoint(This,x,y)
   2102 #else
   2103 /*** IUnknown methods ***/
   2104 static inline HRESULT IDirectManipulationPrimaryContent_QueryInterface(IDirectManipulationPrimaryContent* This,REFIID riid,void **ppvObject) {
   2105     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2106 }
   2107 static inline ULONG IDirectManipulationPrimaryContent_AddRef(IDirectManipulationPrimaryContent* This) {
   2108     return This->lpVtbl->AddRef(This);
   2109 }
   2110 static inline ULONG IDirectManipulationPrimaryContent_Release(IDirectManipulationPrimaryContent* This) {
   2111     return This->lpVtbl->Release(This);
   2112 }
   2113 /*** IDirectManipulationPrimaryContent methods ***/
   2114 static inline HRESULT IDirectManipulationPrimaryContent_SetSnapInterval(IDirectManipulationPrimaryContent* This,DIRECTMANIPULATION_MOTION_TYPES motion,float interval,float offset) {
   2115     return This->lpVtbl->SetSnapInterval(This,motion,interval,offset);
   2116 }
   2117 static inline HRESULT IDirectManipulationPrimaryContent_SetSnapPoints(IDirectManipulationPrimaryContent* This,DIRECTMANIPULATION_MOTION_TYPES motion,const float *points,DWORD count) {
   2118     return This->lpVtbl->SetSnapPoints(This,motion,points,count);
   2119 }
   2120 static inline HRESULT IDirectManipulationPrimaryContent_SetSnapType(IDirectManipulationPrimaryContent* This,DIRECTMANIPULATION_MOTION_TYPES motion,DIRECTMANIPULATION_SNAPPOINT_TYPE type) {
   2121     return This->lpVtbl->SetSnapType(This,motion,type);
   2122 }
   2123 static inline HRESULT IDirectManipulationPrimaryContent_SetSnapCoordinate(IDirectManipulationPrimaryContent* This,DIRECTMANIPULATION_MOTION_TYPES motion,DIRECTMANIPULATION_SNAPPOINT_COORDINATE coordinate,float origin) {
   2124     return This->lpVtbl->SetSnapCoordinate(This,motion,coordinate,origin);
   2125 }
   2126 static inline HRESULT IDirectManipulationPrimaryContent_SetZoomBoundaries(IDirectManipulationPrimaryContent* This,float minimum,float maximum) {
   2127     return This->lpVtbl->SetZoomBoundaries(This,minimum,maximum);
   2128 }
   2129 static inline HRESULT IDirectManipulationPrimaryContent_SetHorizontalAlignment(IDirectManipulationPrimaryContent* This,DIRECTMANIPULATION_HORIZONTALALIGNMENT alignment) {
   2130     return This->lpVtbl->SetHorizontalAlignment(This,alignment);
   2131 }
   2132 static inline HRESULT IDirectManipulationPrimaryContent_SetVerticalAlignment(IDirectManipulationPrimaryContent* This,DIRECTMANIPULATION_VERTICALALIGNMENT alignment) {
   2133     return This->lpVtbl->SetVerticalAlignment(This,alignment);
   2134 }
   2135 static inline HRESULT IDirectManipulationPrimaryContent_GetInertiaEndTransform(IDirectManipulationPrimaryContent* This,float *matrix,DWORD count) {
   2136     return This->lpVtbl->GetInertiaEndTransform(This,matrix,count);
   2137 }
   2138 static inline HRESULT IDirectManipulationPrimaryContent_GetCenterPoint(IDirectManipulationPrimaryContent* This,float *x,float *y) {
   2139     return This->lpVtbl->GetCenterPoint(This,x,y);
   2140 }
   2141 #endif
   2142 #endif
   2143 
   2144 #endif
   2145 
   2146 
   2147 #endif  /* __IDirectManipulationPrimaryContent_INTERFACE_DEFINED__ */
   2148 
   2149 /*****************************************************************************
   2150  * IDirectManipulationCompositor2 interface
   2151  */
   2152 #ifndef __IDirectManipulationCompositor2_INTERFACE_DEFINED__
   2153 #define __IDirectManipulationCompositor2_INTERFACE_DEFINED__
   2154 
   2155 DEFINE_GUID(IID_IDirectManipulationCompositor2, 0xd38c7822, 0xf1cb, 0x43cb, 0xb4,0xb9, 0xac,0x0c,0x76,0x7a,0x41,0x2e);
   2156 #if defined(__cplusplus) && !defined(CINTERFACE)
   2157 MIDL_INTERFACE("d38c7822-f1cb-43cb-b4b9-ac0c767a412e")
   2158 IDirectManipulationCompositor2 : public IDirectManipulationCompositor
   2159 {
   2160     virtual HRESULT STDMETHODCALLTYPE AddContentWithCrossProcessChaining(
   2161         IDirectManipulationPrimaryContent *content,
   2162         IUnknown *device,
   2163         IUnknown *parentVisual,
   2164         IUnknown *childVisual) = 0;
   2165 
   2166 };
   2167 #ifdef __CRT_UUID_DECL
   2168 __CRT_UUID_DECL(IDirectManipulationCompositor2, 0xd38c7822, 0xf1cb, 0x43cb, 0xb4,0xb9, 0xac,0x0c,0x76,0x7a,0x41,0x2e)
   2169 #endif
   2170 #else
   2171 typedef struct IDirectManipulationCompositor2Vtbl {
   2172     BEGIN_INTERFACE
   2173 
   2174     /*** IUnknown methods ***/
   2175     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2176         IDirectManipulationCompositor2 *This,
   2177         REFIID riid,
   2178         void **ppvObject);
   2179 
   2180     ULONG (STDMETHODCALLTYPE *AddRef)(
   2181         IDirectManipulationCompositor2 *This);
   2182 
   2183     ULONG (STDMETHODCALLTYPE *Release)(
   2184         IDirectManipulationCompositor2 *This);
   2185 
   2186     /*** IDirectManipulationCompositor methods ***/
   2187     HRESULT (STDMETHODCALLTYPE *AddContent)(
   2188         IDirectManipulationCompositor2 *This,
   2189         IDirectManipulationContent *content,
   2190         IUnknown *device,
   2191         IUnknown *parent,
   2192         IUnknown *child);
   2193 
   2194     HRESULT (STDMETHODCALLTYPE *RemoveContent)(
   2195         IDirectManipulationCompositor2 *This,
   2196         IDirectManipulationContent *content);
   2197 
   2198     HRESULT (STDMETHODCALLTYPE *SetUpdateManager)(
   2199         IDirectManipulationCompositor2 *This,
   2200         IDirectManipulationUpdateManager *manager);
   2201 
   2202     HRESULT (STDMETHODCALLTYPE *Flush)(
   2203         IDirectManipulationCompositor2 *This);
   2204 
   2205     /*** IDirectManipulationCompositor2 methods ***/
   2206     HRESULT (STDMETHODCALLTYPE *AddContentWithCrossProcessChaining)(
   2207         IDirectManipulationCompositor2 *This,
   2208         IDirectManipulationPrimaryContent *content,
   2209         IUnknown *device,
   2210         IUnknown *parentVisual,
   2211         IUnknown *childVisual);
   2212 
   2213     END_INTERFACE
   2214 } IDirectManipulationCompositor2Vtbl;
   2215 
   2216 interface IDirectManipulationCompositor2 {
   2217     CONST_VTBL IDirectManipulationCompositor2Vtbl* lpVtbl;
   2218 };
   2219 
   2220 #ifdef COBJMACROS
   2221 #ifndef WIDL_C_INLINE_WRAPPERS
   2222 /*** IUnknown methods ***/
   2223 #define IDirectManipulationCompositor2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2224 #define IDirectManipulationCompositor2_AddRef(This) (This)->lpVtbl->AddRef(This)
   2225 #define IDirectManipulationCompositor2_Release(This) (This)->lpVtbl->Release(This)
   2226 /*** IDirectManipulationCompositor methods ***/
   2227 #define IDirectManipulationCompositor2_AddContent(This,content,device,parent,child) (This)->lpVtbl->AddContent(This,content,device,parent,child)
   2228 #define IDirectManipulationCompositor2_RemoveContent(This,content) (This)->lpVtbl->RemoveContent(This,content)
   2229 #define IDirectManipulationCompositor2_SetUpdateManager(This,manager) (This)->lpVtbl->SetUpdateManager(This,manager)
   2230 #define IDirectManipulationCompositor2_Flush(This) (This)->lpVtbl->Flush(This)
   2231 /*** IDirectManipulationCompositor2 methods ***/
   2232 #define IDirectManipulationCompositor2_AddContentWithCrossProcessChaining(This,content,device,parentVisual,childVisual) (This)->lpVtbl->AddContentWithCrossProcessChaining(This,content,device,parentVisual,childVisual)
   2233 #else
   2234 /*** IUnknown methods ***/
   2235 static inline HRESULT IDirectManipulationCompositor2_QueryInterface(IDirectManipulationCompositor2* This,REFIID riid,void **ppvObject) {
   2236     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2237 }
   2238 static inline ULONG IDirectManipulationCompositor2_AddRef(IDirectManipulationCompositor2* This) {
   2239     return This->lpVtbl->AddRef(This);
   2240 }
   2241 static inline ULONG IDirectManipulationCompositor2_Release(IDirectManipulationCompositor2* This) {
   2242     return This->lpVtbl->Release(This);
   2243 }
   2244 /*** IDirectManipulationCompositor methods ***/
   2245 static inline HRESULT IDirectManipulationCompositor2_AddContent(IDirectManipulationCompositor2* This,IDirectManipulationContent *content,IUnknown *device,IUnknown *parent,IUnknown *child) {
   2246     return This->lpVtbl->AddContent(This,content,device,parent,child);
   2247 }
   2248 static inline HRESULT IDirectManipulationCompositor2_RemoveContent(IDirectManipulationCompositor2* This,IDirectManipulationContent *content) {
   2249     return This->lpVtbl->RemoveContent(This,content);
   2250 }
   2251 static inline HRESULT IDirectManipulationCompositor2_SetUpdateManager(IDirectManipulationCompositor2* This,IDirectManipulationUpdateManager *manager) {
   2252     return This->lpVtbl->SetUpdateManager(This,manager);
   2253 }
   2254 static inline HRESULT IDirectManipulationCompositor2_Flush(IDirectManipulationCompositor2* This) {
   2255     return This->lpVtbl->Flush(This);
   2256 }
   2257 /*** IDirectManipulationCompositor2 methods ***/
   2258 static inline HRESULT IDirectManipulationCompositor2_AddContentWithCrossProcessChaining(IDirectManipulationCompositor2* This,IDirectManipulationPrimaryContent *content,IUnknown *device,IUnknown *parentVisual,IUnknown *childVisual) {
   2259     return This->lpVtbl->AddContentWithCrossProcessChaining(This,content,device,parentVisual,childVisual);
   2260 }
   2261 #endif
   2262 #endif
   2263 
   2264 #endif
   2265 
   2266 
   2267 #endif  /* __IDirectManipulationCompositor2_INTERFACE_DEFINED__ */
   2268 
   2269 /*****************************************************************************
   2270  * IDirectManipulationInteractionEventHandler interface
   2271  */
   2272 #ifndef __IDirectManipulationInteractionEventHandler_INTERFACE_DEFINED__
   2273 #define __IDirectManipulationInteractionEventHandler_INTERFACE_DEFINED__
   2274 
   2275 DEFINE_GUID(IID_IDirectManipulationInteractionEventHandler, 0xe43f45b8, 0x42b4, 0x403e, 0xb1,0xf2, 0x27,0x3b,0x8f,0x51,0x08,0x30);
   2276 #if defined(__cplusplus) && !defined(CINTERFACE)
   2277 MIDL_INTERFACE("e43f45b8-42b4-403e-b1f2-273b8f510830")
   2278 IDirectManipulationInteractionEventHandler : public IUnknown
   2279 {
   2280     virtual HRESULT STDMETHODCALLTYPE OnInteraction(
   2281         IDirectManipulationViewport2 *viewport,
   2282         DIRECTMANIPULATION_INTERACTION_TYPE interaction) = 0;
   2283 
   2284 };
   2285 #ifdef __CRT_UUID_DECL
   2286 __CRT_UUID_DECL(IDirectManipulationInteractionEventHandler, 0xe43f45b8, 0x42b4, 0x403e, 0xb1,0xf2, 0x27,0x3b,0x8f,0x51,0x08,0x30)
   2287 #endif
   2288 #else
   2289 typedef struct IDirectManipulationInteractionEventHandlerVtbl {
   2290     BEGIN_INTERFACE
   2291 
   2292     /*** IUnknown methods ***/
   2293     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2294         IDirectManipulationInteractionEventHandler *This,
   2295         REFIID riid,
   2296         void **ppvObject);
   2297 
   2298     ULONG (STDMETHODCALLTYPE *AddRef)(
   2299         IDirectManipulationInteractionEventHandler *This);
   2300 
   2301     ULONG (STDMETHODCALLTYPE *Release)(
   2302         IDirectManipulationInteractionEventHandler *This);
   2303 
   2304     /*** IDirectManipulationInteractionEventHandler methods ***/
   2305     HRESULT (STDMETHODCALLTYPE *OnInteraction)(
   2306         IDirectManipulationInteractionEventHandler *This,
   2307         IDirectManipulationViewport2 *viewport,
   2308         DIRECTMANIPULATION_INTERACTION_TYPE interaction);
   2309 
   2310     END_INTERFACE
   2311 } IDirectManipulationInteractionEventHandlerVtbl;
   2312 
   2313 interface IDirectManipulationInteractionEventHandler {
   2314     CONST_VTBL IDirectManipulationInteractionEventHandlerVtbl* lpVtbl;
   2315 };
   2316 
   2317 #ifdef COBJMACROS
   2318 #ifndef WIDL_C_INLINE_WRAPPERS
   2319 /*** IUnknown methods ***/
   2320 #define IDirectManipulationInteractionEventHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2321 #define IDirectManipulationInteractionEventHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
   2322 #define IDirectManipulationInteractionEventHandler_Release(This) (This)->lpVtbl->Release(This)
   2323 /*** IDirectManipulationInteractionEventHandler methods ***/
   2324 #define IDirectManipulationInteractionEventHandler_OnInteraction(This,viewport,interaction) (This)->lpVtbl->OnInteraction(This,viewport,interaction)
   2325 #else
   2326 /*** IUnknown methods ***/
   2327 static inline HRESULT IDirectManipulationInteractionEventHandler_QueryInterface(IDirectManipulationInteractionEventHandler* This,REFIID riid,void **ppvObject) {
   2328     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2329 }
   2330 static inline ULONG IDirectManipulationInteractionEventHandler_AddRef(IDirectManipulationInteractionEventHandler* This) {
   2331     return This->lpVtbl->AddRef(This);
   2332 }
   2333 static inline ULONG IDirectManipulationInteractionEventHandler_Release(IDirectManipulationInteractionEventHandler* This) {
   2334     return This->lpVtbl->Release(This);
   2335 }
   2336 /*** IDirectManipulationInteractionEventHandler methods ***/
   2337 static inline HRESULT IDirectManipulationInteractionEventHandler_OnInteraction(IDirectManipulationInteractionEventHandler* This,IDirectManipulationViewport2 *viewport,DIRECTMANIPULATION_INTERACTION_TYPE interaction) {
   2338     return This->lpVtbl->OnInteraction(This,viewport,interaction);
   2339 }
   2340 #endif
   2341 #endif
   2342 
   2343 #endif
   2344 
   2345 
   2346 #endif  /* __IDirectManipulationInteractionEventHandler_INTERFACE_DEFINED__ */
   2347 
   2348 #ifndef __DirectManipulation_LIBRARY_DEFINED__
   2349 #define __DirectManipulation_LIBRARY_DEFINED__
   2350 
   2351 DEFINE_GUID(LIBID_DirectManipulation, 0x9fbedf98, 0xf6d8, 0x4e3b, 0xb4,0x88, 0xfa,0x66,0xdb,0xf5,0xe9,0xf3);
   2352 
   2353 /*****************************************************************************
   2354  * DirectManipulationManager coclass
   2355  */
   2356 
   2357 DEFINE_GUID(CLSID_DirectManipulationManager, 0x54e211b6, 0x3650, 0x4f75, 0x83,0x34, 0xfa,0x35,0x95,0x98,0xe1,0xc5);
   2358 
   2359 #ifdef __cplusplus
   2360 class DECLSPEC_UUID("54e211b6-3650-4f75-8334-fa359598e1c5") DirectManipulationManager;
   2361 #ifdef __CRT_UUID_DECL
   2362 __CRT_UUID_DECL(DirectManipulationManager, 0x54e211b6, 0x3650, 0x4f75, 0x83,0x34, 0xfa,0x35,0x95,0x98,0xe1,0xc5)
   2363 #endif
   2364 #endif
   2365 
   2366 /*****************************************************************************
   2367  * DirectManipulationSharedManager coclass
   2368  */
   2369 
   2370 DEFINE_GUID(CLSID_DirectManipulationSharedManager, 0x99793286, 0x77cc, 0x4b57, 0x96,0xdb, 0x3b,0x35,0x4f,0x6f,0x9f,0xb5);
   2371 
   2372 #ifdef __cplusplus
   2373 class DECLSPEC_UUID("99793286-77cc-4b57-96db-3b354f6f9fb5") DirectManipulationSharedManager;
   2374 #ifdef __CRT_UUID_DECL
   2375 __CRT_UUID_DECL(DirectManipulationSharedManager, 0x99793286, 0x77cc, 0x4b57, 0x96,0xdb, 0x3b,0x35,0x4f,0x6f,0x9f,0xb5)
   2376 #endif
   2377 #endif
   2378 
   2379 /*****************************************************************************
   2380  * DCompManipulationCompositor coclass
   2381  */
   2382 
   2383 DEFINE_GUID(CLSID_DCompManipulationCompositor, 0x79dea627, 0xa08a, 0x43ac, 0x8e,0xf5, 0x69,0x00,0xb9,0x29,0x91,0x26);
   2384 
   2385 #ifdef __cplusplus
   2386 class DECLSPEC_UUID("79dea627-a08a-43ac-8ef5-6900b9299126") DCompManipulationCompositor;
   2387 #ifdef __CRT_UUID_DECL
   2388 __CRT_UUID_DECL(DCompManipulationCompositor, 0x79dea627, 0xa08a, 0x43ac, 0x8e,0xf5, 0x69,0x00,0xb9,0x29,0x91,0x26)
   2389 #endif
   2390 #endif
   2391 
   2392 /*****************************************************************************
   2393  * DirectManipulationViewport coclass
   2394  */
   2395 
   2396 DEFINE_GUID(CLSID_DirectManipulationViewport, 0x34e211b6, 0x3650, 0x4f75, 0x83,0x34, 0xfa,0x35,0x95,0x98,0xe1,0xc5);
   2397 
   2398 #ifdef __cplusplus
   2399 class DECLSPEC_UUID("34e211b6-3650-4f75-8334-fa359598e1c5") DirectManipulationViewport;
   2400 #ifdef __CRT_UUID_DECL
   2401 __CRT_UUID_DECL(DirectManipulationViewport, 0x34e211b6, 0x3650, 0x4f75, 0x83,0x34, 0xfa,0x35,0x95,0x98,0xe1,0xc5)
   2402 #endif
   2403 #endif
   2404 
   2405 #endif /* __DirectManipulation_LIBRARY_DEFINED__ */
   2406 /* Begin additional prototypes for all interfaces */
   2407 
   2408 
   2409 /* End additional prototypes */
   2410 
   2411 #ifdef __cplusplus
   2412 }
   2413 #endif
   2414 
   2415 #endif /* __directmanipulation_h__ */