| 1 | /* | 
 
 
 
 
 | 2 | * Copyright 2019 Alistair Leslie-Hughes | 
 
 
 
 
 | 3 | * | 
 
 
 
 
 | 4 | * This library is free software; you can redistribute it and/or | 
 
 
 
 
 | 5 | * modify it under the terms of the GNU Lesser General Public | 
 
 
 
 
 | 6 | * License as published by the Free Software Foundation; either | 
 
 
 
 
 | 7 | * version 2.1 of the License, or (at your option) any later version. | 
 
 
 
 
 | 8 | * | 
 
 
 
 
 | 9 | * This library is distributed in the hope that it will be useful, | 
 
 
 
 
 | 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 
 
 
 
 | 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
 
 
 
 
 | 12 | * Lesser General Public License for more details. | 
 
 
 
 
 | 13 | * | 
 
 
 
 
 | 14 | * You should have received a copy of the GNU Lesser General Public | 
 
 
 
 
 | 15 | * License along with this library; if not, write to the Free Software | 
 
 
 
 
 | 16 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
 
 
 
 
 | 17 | */ | 
 
 
 
 
 | 18 |  | 
 
 
 
 
 | 19 | import "oaidl.idl"; | 
 
 
 
 
 | 20 | import "ocidl.idl"; | 
 
 
 
 
 | 21 |  | 
 
 
 
 
 | 22 | cpp_quote("#if 0") | 
 
 
 
 
 | 23 | typedef void* HWND; | 
 
 
 
 
 | 24 | cpp_quote("#endif") | 
 
 
 
 
 | 25 |  | 
 
 
 
 
 | 26 | interface IDirectManipulationViewportEventHandler; | 
 
 
 
 
 | 27 |  | 
 
 
 
 
 | 28 | typedef enum DIRECTMANIPULATION_HITTEST_TYPE | 
 
 
 
 
 | 29 | { | 
 
 
 
 
 | 30 | DIRECTMANIPULATION_HITTEST_TYPE_ASYNCHRONOUS     = 0x00000000, | 
 
 
 
 
 | 31 | DIRECTMANIPULATION_HITTEST_TYPE_SYNCHRONOUS      = 0x00000001, | 
 
 
 
 
 | 32 | DIRECTMANIPULATION_HITTEST_TYPE_AUTO_SYNCHRONOUS = 0x00000002 | 
 
 
 
 
 | 33 | } DIRECTMANIPULATION_HITTEST_TYPE; | 
 
 
 
 
 | 34 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(DIRECTMANIPULATION_HITTEST_TYPE)") | 
 
 
 
 
 | 35 |  | 
 
 
 
 
 | 36 | typedef enum DIRECTMANIPULATION_STATUS | 
 
 
 
 
 | 37 | { | 
 
 
 
 
 | 38 | DIRECTMANIPULATION_BUILDING, | 
 
 
 
 
 | 39 | DIRECTMANIPULATION_ENABLED, | 
 
 
 
 
 | 40 | DIRECTMANIPULATION_DISABLED, | 
 
 
 
 
 | 41 | DIRECTMANIPULATION_RUNNING, | 
 
 
 
 
 | 42 | DIRECTMANIPULATION_INERTIA, | 
 
 
 
 
 | 43 | DIRECTMANIPULATION_READY, | 
 
 
 
 
 | 44 | DIRECTMANIPULATION_SUSPENDED | 
 
 
 
 
 | 45 | } DIRECTMANIPULATION_STATUS; | 
 
 
 
 
 | 46 |  | 
 
 
 
 
 | 47 | typedef enum DIRECTMANIPULATION_VIEWPORT_OPTIONS | 
 
 
 
 
 | 48 | { | 
 
 
 
 
 | 49 | DIRECTMANIPULATION_VIEWPORT_OPTIONS_DEFAULT              = 0x00000000, | 
 
 
 
 
 | 50 | DIRECTMANIPULATION_VIEWPORT_OPTIONS_AUTODISABLE          = 0x00000001, | 
 
 
 
 
 | 51 | DIRECTMANIPULATION_VIEWPORT_OPTIONS_MANUALUPDATE         = 0x00000002, | 
 
 
 
 
 | 52 | DIRECTMANIPULATION_VIEWPORT_OPTIONS_INPUT                = 0x00000004, | 
 
 
 
 
 | 53 | DIRECTMANIPULATION_VIEWPORT_OPTIONS_EXPLICITHITTEST      = 0x00000008, | 
 
 
 
 
 | 54 | DIRECTMANIPULATION_VIEWPORT_OPTIONS_DISABLEPIXELSNAPPING = 0x00000010, | 
 
 
 
 
 | 55 | } DIRECTMANIPULATION_VIEWPORT_OPTIONS; | 
 
 
 
 
 | 56 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(DIRECTMANIPULATION_VIEWPORT_OPTIONS)") | 
 
 
 
 
 | 57 |  | 
 
 
 
 
 | 58 | typedef enum DIRECTMANIPULATION_CONFIGURATION | 
 
 
 
 
 | 59 | { | 
 
 
 
 
 | 60 | DIRECTMANIPULATION_CONFIGURATION_NONE                = 0x00000000, | 
 
 
 
 
 | 61 | DIRECTMANIPULATION_CONFIGURATION_INTERACTION         = 0x00000001, | 
 
 
 
 
 | 62 | DIRECTMANIPULATION_CONFIGURATION_TRANSLATION_X       = 0x00000002, | 
 
 
 
 
 | 63 | DIRECTMANIPULATION_CONFIGURATION_TRANSLATION_Y       = 0x00000004, | 
 
 
 
 
 | 64 | DIRECTMANIPULATION_CONFIGURATION_SCALING             = 0x00000010, | 
 
 
 
 
 | 65 | DIRECTMANIPULATION_CONFIGURATION_TRANSLATION_INERTIA = 0x00000020, | 
 
 
 
 
 | 66 | DIRECTMANIPULATION_CONFIGURATION_SCALING_INERTIA     = 0x00000080, | 
 
 
 
 
 | 67 | DIRECTMANIPULATION_CONFIGURATION_RAILS_X             = 0x00000100, | 
 
 
 
 
 | 68 | DIRECTMANIPULATION_CONFIGURATION_RAILS_Y             = 0x00000200, | 
 
 
 
 
 | 69 | } DIRECTMANIPULATION_CONFIGURATION; | 
 
 
 
 
 | 70 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(DIRECTMANIPULATION_CONFIGURATION)") | 
 
 
 
 
 | 71 |  | 
 
 
 
 
 | 72 | typedef enum DIRECTMANIPULATION_GESTURE_CONFIGURATION | 
 
 
 
 
 | 73 | { | 
 
 
 
 
 | 74 | DIRECTMANIPULATION_GESTURE_NONE                   = 0x00000000, | 
 
 
 
 
 | 75 | DIRECTMANIPULATION_GESTURE_DEFAULT                = 0x00000000, | 
 
 
 
 
 | 76 | DIRECTMANIPULATION_GESTURE_CROSS_SLIDE_VERTICAL   = 0x00000008, | 
 
 
 
 
 | 77 | DIRECTMANIPULATION_GESTURE_CROSS_SLIDE_HORIZONTAL = 0x00000010, | 
 
 
 
 
 | 78 | DIRECTMANIPULATION_GESTURE_PINCH_ZOOM             = 0x00000020, | 
 
 
 
 
 | 79 | } DIRECTMANIPULATION_GESTURE_CONFIGURATION; | 
 
 
 
 
 | 80 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(DIRECTMANIPULATION_GESTURE_CONFIGURATION)") | 
 
 
 
 
 | 81 |  | 
 
 
 
 
 | 82 | typedef enum DIRECTMANIPULATION_MOTION_TYPES | 
 
 
 
 
 | 83 | { | 
 
 
 
 
 | 84 | DIRECTMANIPULATION_MOTION_NONE       = 0x00000000, | 
 
 
 
 
 | 85 | DIRECTMANIPULATION_MOTION_TRANSLATEX = 0x00000001, | 
 
 
 
 
 | 86 | DIRECTMANIPULATION_MOTION_TRANSLATEY = 0x00000002, | 
 
 
 
 
 | 87 | DIRECTMANIPULATION_MOTION_ZOOM       = 0x00000004, | 
 
 
 
 
 | 88 | DIRECTMANIPULATION_MOTION_CENTERX    = 0x00000010, | 
 
 
 
 
 | 89 | DIRECTMANIPULATION_MOTION_CENTERY    = 0x00000020, | 
 
 
 
 
 | 90 | DIRECTMANIPULATION_MOTION_ALL        = DIRECTMANIPULATION_MOTION_TRANSLATEX | DIRECTMANIPULATION_MOTION_TRANSLATEY | | 
 
 
 
 
 | 91 | DIRECTMANIPULATION_MOTION_ZOOM | DIRECTMANIPULATION_MOTION_CENTERX | | 
 
 
 
 
 | 92 | DIRECTMANIPULATION_MOTION_CENTERY | 
 
 
 
 
 | 93 | } DIRECTMANIPULATION_MOTION_TYPES; | 
 
 
 
 
 | 94 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(DIRECTMANIPULATION_MOTION_TYPES)") | 
 
 
 
 
 | 95 |  | 
 
 
 
 
 | 96 | typedef enum DIRECTMANIPULATION_SNAPPOINT_TYPE | 
 
 
 
 
 | 97 | { | 
 
 
 
 
 | 98 | DIRECTMANIPULATION_SNAPPOINT_MANDATORY, | 
 
 
 
 
 | 99 | DIRECTMANIPULATION_SNAPPOINT_OPTIONAL, | 
 
 
 
 
 | 100 | DIRECTMANIPULATION_SNAPPOINT_MANDATORY_SINGLE, | 
 
 
 
 
 | 101 | DIRECTMANIPULATION_SNAPPOINT_OPTIONAL_SINGLE | 
 
 
 
 
 | 102 | } DIRECTMANIPULATION_SNAPPOINT_TYPE; | 
 
 
 
 
 | 103 |  | 
 
 
 
 
 | 104 | typedef enum DIRECTMANIPULATION_SNAPPOINT_COORDINATE | 
 
 
 
 
 | 105 | { | 
 
 
 
 
 | 106 | DIRECTMANIPULATION_COORDINATE_BOUNDARY  = 0x00000000, | 
 
 
 
 
 | 107 | DIRECTMANIPULATION_COORDINATE_ORIGIN    = 0x00000001, | 
 
 
 
 
 | 108 | DIRECTMANIPULATION_COORDINATE_MIRRORED  = 0x00000010 | 
 
 
 
 
 | 109 | } DIRECTMANIPULATION_SNAPPOINT_COORDINATE; | 
 
 
 
 
 | 110 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(DIRECTMANIPULATION_SNAPPOINT_COORDINATE)") | 
 
 
 
 
 | 111 |  | 
 
 
 
 
 | 112 | typedef enum DIRECTMANIPULATION_HORIZONTALALIGNMENT | 
 
 
 
 
 | 113 | { | 
 
 
 
 
 | 114 | DIRECTMANIPULATION_HORIZONTALALIGNMENT_NONE         = 0x00000000, | 
 
 
 
 
 | 115 | DIRECTMANIPULATION_HORIZONTALALIGNMENT_LEFT         = 0x00000001, | 
 
 
 
 
 | 116 | DIRECTMANIPULATION_HORIZONTALALIGNMENT_CENTER       = 0x00000002, | 
 
 
 
 
 | 117 | DIRECTMANIPULATION_HORIZONTALALIGNMENT_RIGHT        = 0x00000004, | 
 
 
 
 
 | 118 | DIRECTMANIPULATION_HORIZONTALALIGNMENT_UNLOCKCENTER = 0x00000008 | 
 
 
 
 
 | 119 | } DIRECTMANIPULATION_HORIZONTALALIGNMENT; | 
 
 
 
 
 | 120 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(DIRECTMANIPULATION_HORIZONTALALIGNMENT)") | 
 
 
 
 
 | 121 |  | 
 
 
 
 
 | 122 | typedef enum DIRECTMANIPULATION_VERTICALALIGNMENT | 
 
 
 
 
 | 123 | { | 
 
 
 
 
 | 124 | DIRECTMANIPULATION_VERTICALALIGNMENT_NONE         = 0x00000000, | 
 
 
 
 
 | 125 | DIRECTMANIPULATION_VERTICALALIGNMENT_TOP          = 0x00000001, | 
 
 
 
 
 | 126 | DIRECTMANIPULATION_VERTICALALIGNMENT_CENTER       = 0x00000002, | 
 
 
 
 
 | 127 | DIRECTMANIPULATION_VERTICALALIGNMENT_BOTTOM       = 0x00000004, | 
 
 
 
 
 | 128 | DIRECTMANIPULATION_VERTICALALIGNMENT_UNLOCKCENTER = 0x00000008 | 
 
 
 
 
 | 129 | } DIRECTMANIPULATION_VERTICALALIGNMENT; | 
 
 
 
 
 | 130 | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(DIRECTMANIPULATION_VERTICALALIGNMENT)") | 
 
 
 
 
 | 131 |  | 
 
 
 
 
 | 132 | typedef enum DIRECTMANIPULATION_INPUT_MODE | 
 
 
 
 
 | 133 | { | 
 
 
 
 
 | 134 | DIRECTMANIPULATION_INPUT_MODE_AUTOMATIC, | 
 
 
 
 
 | 135 | DIRECTMANIPULATION_INPUT_MODE_MANUAL | 
 
 
 
 
 | 136 | } DIRECTMANIPULATION_INPUT_MODE; | 
 
 
 
 
 | 137 |  | 
 
 
 
 
 | 138 | [ | 
 
 
 
 
 | 139 | local, | 
 
 
 
 
 | 140 | object, | 
 
 
 
 
 | 141 | uuid(fb759dba-6f4c-4c01-874e-19c8a05907f9), | 
 
 
 
 
 | 142 | pointer_default(unique) | 
 
 
 
 
 | 143 | ] | 
 
 
 
 
 | 144 | interface IDirectManipulationFrameInfoProvider : IUnknown | 
 
 
 
 
 | 145 | { | 
 
 
 
 
 | 146 | HRESULT GetNextFrameInfo([out] ULONGLONG *time, [out] ULONGLONG *process, [out] ULONGLONG *composition); | 
 
 
 
 
 | 147 | } | 
 
 
 
 
 | 148 |  | 
 
 
 
 
 | 149 | [ | 
 
 
 
 
 | 150 | local, | 
 
 
 
 
 | 151 | object, | 
 
 
 
 
 | 152 | uuid(fbf5d3b4-70c7-4163-9322-5a6f660d6fbc), | 
 
 
 
 
 | 153 | pointer_default(unique) | 
 
 
 
 
 | 154 | ] | 
 
 
 
 
 | 155 | interface IDirectManipulationManager : IUnknown | 
 
 
 
 
 | 156 | { | 
 
 
 
 
 | 157 | HRESULT Activate([in] HWND window); | 
 
 
 
 
 | 158 |  | 
 
 
 
 
 | 159 | HRESULT Deactivate([in] HWND window); | 
 
 
 
 
 | 160 |  | 
 
 
 
 
 | 161 | HRESULT RegisterHitTestTarget([in] HWND window, [in] HWND hittest, [in] DIRECTMANIPULATION_HITTEST_TYPE type); | 
 
 
 
 
 | 162 |  | 
 
 
 
 
 | 163 | HRESULT ProcessInput([in] const MSG *msg, [out, retval] BOOL *handled); | 
 
 
 
 
 | 164 |  | 
 
 
 
 
 | 165 | HRESULT GetUpdateManager([in] REFIID riid, [out, iid_is(riid), retval,] void **obj); | 
 
 
 
 
 | 166 |  | 
 
 
 
 
 | 167 | HRESULT CreateViewport([in] IDirectManipulationFrameInfoProvider *frame, [in] HWND window, | 
 
 
 
 
 | 168 | [in] REFIID riid, [out, iid_is(riid), retval] void **obj); | 
 
 
 
 
 | 169 |  | 
 
 
 
 
 | 170 | HRESULT CreateContent([in] IDirectManipulationFrameInfoProvider *frame, [in] REFCLSID clsid, | 
 
 
 
 
 | 171 | [in] REFIID riid, [out, iid_is(riid), retval] void **obj); | 
 
 
 
 
 | 172 | } | 
 
 
 
 
 | 173 |  | 
 
 
 
 
 | 174 | [ | 
 
 
 
 
 | 175 | local, | 
 
 
 
 
 | 176 | object, | 
 
 
 
 
 | 177 | uuid(b89962cb-3d89-442b-bb58-5098fa0f9f16), | 
 
 
 
 
 | 178 | pointer_default(unique) | 
 
 
 
 
 | 179 | ] | 
 
 
 
 
 | 180 | interface IDirectManipulationContent : IUnknown | 
 
 
 
 
 | 181 | { | 
 
 
 
 
 | 182 | HRESULT GetContentRect([out] RECT *size); | 
 
 
 
 
 | 183 |  | 
 
 
 
 
 | 184 | HRESULT SetContentRect([in] const RECT *size); | 
 
 
 
 
 | 185 |  | 
 
 
 
 
 | 186 | HRESULT GetViewport([in] REFIID riid, [out, iid_is(riid)] void **object); | 
 
 
 
 
 | 187 |  | 
 
 
 
 
 | 188 | HRESULT GetTag([in] REFIID riid, [out, iid_is(riid)] void **object, [out] UINT32 *id); | 
 
 
 
 
 | 189 |  | 
 
 
 
 
 | 190 | HRESULT SetTag([in, unique] IUnknown *object, [in] UINT32 id); | 
 
 
 
 
 | 191 |  | 
 
 
 
 
 | 192 | HRESULT GetOutputTransform([out] float *matrix, [in] DWORD count); | 
 
 
 
 
 | 193 |  | 
 
 
 
 
 | 194 | HRESULT GetContentTransform([out] float *matrix, [in] DWORD count); | 
 
 
 
 
 | 195 |  | 
 
 
 
 
 | 196 | HRESULT SyncContentTransform([in] const float *matrix, [in] DWORD count); | 
 
 
 
 
 | 197 | } | 
 
 
 
 
 | 198 |  | 
 
 
 
 
 | 199 | [ | 
 
 
 
 
 | 200 | local, | 
 
 
 
 
 | 201 | object, | 
 
 
 
 
 | 202 | uuid(790b6337-64f8-4ff5-a269-b32bc2af27a7), | 
 
 
 
 
 | 203 | pointer_default(unique) | 
 
 
 
 
 | 204 | ] | 
 
 
 
 
 | 205 | interface IDirectManipulationUpdateHandler : IUnknown | 
 
 
 
 
 | 206 | { | 
 
 
 
 
 | 207 | HRESULT Update(); | 
 
 
 
 
 | 208 | } | 
 
 
 
 
 | 209 |  | 
 
 
 
 
 | 210 | [ | 
 
 
 
 
 | 211 | local, | 
 
 
 
 
 | 212 | object, | 
 
 
 
 
 | 213 | uuid(b0ae62fd-be34-46e7-9caa-d361facbb9cc), | 
 
 
 
 
 | 214 | pointer_default(unique) | 
 
 
 
 
 | 215 | ] | 
 
 
 
 
 | 216 | interface IDirectManipulationUpdateManager : IUnknown | 
 
 
 
 
 | 217 | { | 
 
 
 
 
 | 218 | HRESULT RegisterWaitHandleCallback([in] HANDLE handle, [in] IDirectManipulationUpdateHandler *handler, | 
 
 
 
 
 | 219 | [out] DWORD *cookie); | 
 
 
 
 
 | 220 |  | 
 
 
 
 
 | 221 | HRESULT UnregisterWaitHandleCallback([in] DWORD cookie); | 
 
 
 
 
 | 222 |  | 
 
 
 
 
 | 223 | HRESULT Update([in] IDirectManipulationFrameInfoProvider *provider); | 
 
 
 
 
 | 224 | } | 
 
 
 
 
 | 225 |  | 
 
 
 
 
 | 226 | [ | 
 
 
 
 
 | 227 | local, | 
 
 
 
 
 | 228 | object, | 
 
 
 
 
 | 229 | uuid(537a0825-0387-4efa-b62f-71eb1f085a7e), | 
 
 
 
 
 | 230 | pointer_default(unique) | 
 
 
 
 
 | 231 | ] | 
 
 
 
 
 | 232 | interface IDirectManipulationCompositor : IUnknown | 
 
 
 
 
 | 233 | { | 
 
 
 
 
 | 234 | HRESULT AddContent([in] IDirectManipulationContent *content, [in] IUnknown *device, | 
 
 
 
 
 | 235 | [in] IUnknown *parent, [in] IUnknown *child); | 
 
 
 
 
 | 236 |  | 
 
 
 
 
 | 237 | HRESULT RemoveContent([in] IDirectManipulationContent *content); | 
 
 
 
 
 | 238 |  | 
 
 
 
 
 | 239 | HRESULT SetUpdateManager([in] IDirectManipulationUpdateManager *manager); | 
 
 
 
 
 | 240 |  | 
 
 
 
 
 | 241 | HRESULT Flush(); | 
 
 
 
 
 | 242 | } | 
 
 
 
 
 | 243 |  | 
 
 
 
 
 | 244 | [ | 
 
 
 
 
 | 245 | local, | 
 
 
 
 
 | 246 | object, | 
 
 
 
 
 | 247 | uuid(28b85a3d-60a0-48bd-9ba1-5ce8d9ea3a6d), | 
 
 
 
 
 | 248 | pointer_default(unique) | 
 
 
 
 
 | 249 | ] | 
 
 
 
 
 | 250 | interface IDirectManipulationViewport : IUnknown | 
 
 
 
 
 | 251 | { | 
 
 
 
 
 | 252 | HRESULT Enable(); | 
 
 
 
 
 | 253 |  | 
 
 
 
 
 | 254 | HRESULT Disable(); | 
 
 
 
 
 | 255 |  | 
 
 
 
 
 | 256 | HRESULT SetContact([in] UINT32 id); | 
 
 
 
 
 | 257 |  | 
 
 
 
 
 | 258 | HRESULT ReleaseContact([in] UINT32 id); | 
 
 
 
 
 | 259 |  | 
 
 
 
 
 | 260 | HRESULT ReleaseAllContacts(); | 
 
 
 
 
 | 261 |  | 
 
 
 
 
 | 262 | HRESULT GetStatus([out] DIRECTMANIPULATION_STATUS *status); | 
 
 
 
 
 | 263 |  | 
 
 
 
 
 | 264 | HRESULT GetTag([in] REFIID riid, [out, iid_is(riid)] void **object, [out] UINT32 *id); | 
 
 
 
 
 | 265 |  | 
 
 
 
 
 | 266 | HRESULT SetTag([in, unique] IUnknown *object, [in] UINT32 id); | 
 
 
 
 
 | 267 |  | 
 
 
 
 
 | 268 | HRESULT GetViewportRect([out, retval] RECT *viewport); | 
 
 
 
 
 | 269 |  | 
 
 
 
 
 | 270 | HRESULT SetViewportRect([in] const RECT *viewport); | 
 
 
 
 
 | 271 |  | 
 
 
 
 
 | 272 | HRESULT ZoomToRect([in] const float left, [in] const float top, [in] const float right, | 
 
 
 
 
 | 273 | [in] const float bottom, [in] BOOL animate); | 
 
 
 
 
 | 274 |  | 
 
 
 
 
 | 275 | HRESULT SetViewportTransform([in] const float *matrix, [in] DWORD count); | 
 
 
 
 
 | 276 |  | 
 
 
 
 
 | 277 | HRESULT SyncDisplayTransform([in] const float *matrix, [in] DWORD count); | 
 
 
 
 
 | 278 |  | 
 
 
 
 
 | 279 | HRESULT GetPrimaryContent([in] REFIID riid, [out, iid_is(riid)] void **object); | 
 
 
 
 
 | 280 |  | 
 
 
 
 
 | 281 | HRESULT AddContent([in, unique] IDirectManipulationContent *content); | 
 
 
 
 
 | 282 |  | 
 
 
 
 
 | 283 | HRESULT RemoveContent([in, unique] IDirectManipulationContent *content); | 
 
 
 
 
 | 284 |  | 
 
 
 
 
 | 285 | HRESULT SetViewportOptions([in] DIRECTMANIPULATION_VIEWPORT_OPTIONS options); | 
 
 
 
 
 | 286 |  | 
 
 
 
 
 | 287 | HRESULT AddConfiguration([in] DIRECTMANIPULATION_CONFIGURATION configuration); | 
 
 
 
 
 | 288 |  | 
 
 
 
 
 | 289 | HRESULT RemoveConfiguration([in] DIRECTMANIPULATION_CONFIGURATION configuration); | 
 
 
 
 
 | 290 |  | 
 
 
 
 
 | 291 | HRESULT ActivateConfiguration([in] DIRECTMANIPULATION_CONFIGURATION configuration); | 
 
 
 
 
 | 292 |  | 
 
 
 
 
 | 293 | HRESULT SetManualGesture([in] DIRECTMANIPULATION_GESTURE_CONFIGURATION configuration); | 
 
 
 
 
 | 294 |  | 
 
 
 
 
 | 295 | HRESULT SetChaining([in] DIRECTMANIPULATION_MOTION_TYPES enabledTypes); | 
 
 
 
 
 | 296 |  | 
 
 
 
 
 | 297 | HRESULT AddEventHandler([in] HWND window, [in] IDirectManipulationViewportEventHandler *eventHandler, | 
 
 
 
 
 | 298 | [out, retval] DWORD *cookie); | 
 
 
 
 
 | 299 |  | 
 
 
 
 
 | 300 | HRESULT RemoveEventHandler([in] DWORD cookie); | 
 
 
 
 
 | 301 |  | 
 
 
 
 
 | 302 | HRESULT SetInputMode([in] DIRECTMANIPULATION_INPUT_MODE mode); | 
 
 
 
 
 | 303 |  | 
 
 
 
 
 | 304 | HRESULT SetUpdateMode([in] DIRECTMANIPULATION_INPUT_MODE mode); | 
 
 
 
 
 | 305 |  | 
 
 
 
 
 | 306 | HRESULT Stop(); | 
 
 
 
 
 | 307 |  | 
 
 
 
 
 | 308 | HRESULT Abandon(); | 
 
 
 
 
 | 309 | } | 
 
 
 
 
 | 310 |  | 
 
 
 
 
 | 311 | [ | 
 
 
 
 
 | 312 | local, | 
 
 
 
 
 | 313 | object, | 
 
 
 
 
 | 314 | uuid(923ccaac-61e1-4385-b726-017af189882a), | 
 
 
 
 
 | 315 | pointer_default(unique) | 
 
 
 
 
 | 316 | ] | 
 
 
 
 
 | 317 | interface IDirectManipulationViewport2 : IDirectManipulationViewport | 
 
 
 
 
 | 318 | { | 
 
 
 
 
 | 319 | HRESULT AddBehavior([in] IUnknown *behavior, [out, retval] DWORD *cookie); | 
 
 
 
 
 | 320 |  | 
 
 
 
 
 | 321 | HRESULT RemoveBehavior([in] DWORD cookie); | 
 
 
 
 
 | 322 |  | 
 
 
 
 
 | 323 | HRESULT RemoveAllBehaviors(); | 
 
 
 
 
 | 324 | } | 
 
 
 
 
 | 325 |  | 
 
 
 
 
 | 326 | [ | 
 
 
 
 
 | 327 | local, | 
 
 
 
 
 | 328 | object, | 
 
 
 
 
 | 329 | uuid(952121DA-D69F-45F9-B0F9-F23944321A6D), | 
 
 
 
 
 | 330 | pointer_default(unique) | 
 
 
 
 
 | 331 | ] | 
 
 
 
 
 | 332 | interface IDirectManipulationViewportEventHandler : IUnknown | 
 
 
 
 
 | 333 | { | 
 
 
 
 
 | 334 | HRESULT OnViewportStatusChanged([in] IDirectManipulationViewport *viewport, [in] DIRECTMANIPULATION_STATUS current, | 
 
 
 
 
 | 335 | [in] DIRECTMANIPULATION_STATUS previous); | 
 
 
 
 
 | 336 |  | 
 
 
 
 
 | 337 | HRESULT OnViewportUpdated([in] IDirectManipulationViewport *viewport); | 
 
 
 
 
 | 338 |  | 
 
 
 
 
 | 339 | HRESULT OnContentUpdated([in] IDirectManipulationViewport *viewport, [in] IDirectManipulationContent *content); | 
 
 
 
 
 | 340 | } | 
 
 
 
 
 | 341 |  | 
 
 
 
 
 | 342 | [ | 
 
 
 
 
 | 343 | local, | 
 
 
 
 
 | 344 | object, | 
 
 
 
 
 | 345 | uuid(fa1005e9-3d16-484c-bfc9-62b61e56ec4e), | 
 
 
 
 
 | 346 | pointer_default(unique) | 
 
 
 
 
 | 347 | ] | 
 
 
 
 
 | 348 | interface IDirectManipulationManager2 : IDirectManipulationManager | 
 
 
 
 
 | 349 | { | 
 
 
 
 
 | 350 | HRESULT CreateBehavior([in] REFCLSID clsid, [in] REFIID riid, [out, iid_is(riid), retval] void **obj); | 
 
 
 
 
 | 351 | } | 
 
 
 
 
 | 352 |  | 
 
 
 
 
 | 353 | [ | 
 
 
 
 
 | 354 | local, | 
 
 
 
 
 | 355 | object, | 
 
 
 
 
 | 356 | uuid(c12851e4-1698-4625-b9b1-7ca3ec18630b), | 
 
 
 
 
 | 357 | pointer_default(unique) | 
 
 
 
 
 | 358 | ] | 
 
 
 
 
 | 359 | interface IDirectManipulationPrimaryContent : IUnknown | 
 
 
 
 
 | 360 | { | 
 
 
 
 
 | 361 | HRESULT SetSnapInterval([in] DIRECTMANIPULATION_MOTION_TYPES motion, [in] float interval, [in] float offset); | 
 
 
 
 
 | 362 |  | 
 
 
 
 
 | 363 | HRESULT SetSnapPoints([in] DIRECTMANIPULATION_MOTION_TYPES motion, [in] const float *points, [in] DWORD count); | 
 
 
 
 
 | 364 |  | 
 
 
 
 
 | 365 | HRESULT SetSnapType([in] DIRECTMANIPULATION_MOTION_TYPES motion, [in] DIRECTMANIPULATION_SNAPPOINT_TYPE type); | 
 
 
 
 
 | 366 |  | 
 
 
 
 
 | 367 | HRESULT SetSnapCoordinate([in] DIRECTMANIPULATION_MOTION_TYPES motion, [in] DIRECTMANIPULATION_SNAPPOINT_COORDINATE coordinate, | 
 
 
 
 
 | 368 | [in] float origin); | 
 
 
 
 
 | 369 |  | 
 
 
 
 
 | 370 | HRESULT SetZoomBoundaries([in] float minimum, [in] float maximum); | 
 
 
 
 
 | 371 |  | 
 
 
 
 
 | 372 | HRESULT SetHorizontalAlignment([in] DIRECTMANIPULATION_HORIZONTALALIGNMENT alignment); | 
 
 
 
 
 | 373 |  | 
 
 
 
 
 | 374 | HRESULT SetVerticalAlignment([in] DIRECTMANIPULATION_VERTICALALIGNMENT alignment); | 
 
 
 
 
 | 375 |  | 
 
 
 
 
 | 376 | HRESULT GetInertiaEndTransform([out] float *matrix, [in] DWORD count); | 
 
 
 
 
 | 377 |  | 
 
 
 
 
 | 378 | HRESULT GetCenterPoint([out] float *x, [out] float *y); | 
 
 
 
 
 | 379 | } | 
 
 
 
 
 | 380 |  | 
 
 
 
 
 | 381 | [ | 
 
 
 
 
 | 382 | local, | 
 
 
 
 
 | 383 | object, | 
 
 
 
 
 | 384 | uuid(d38c7822-f1cb-43cb-b4b9-ac0c767a412e), | 
 
 
 
 
 | 385 | pointer_default(unique) | 
 
 
 
 
 | 386 | ] | 
 
 
 
 
 | 387 | interface IDirectManipulationCompositor2 : IDirectManipulationCompositor | 
 
 
 
 
 | 388 | { | 
 
 
 
 
 | 389 | HRESULT AddContentWithCrossProcessChaining([in] IDirectManipulationPrimaryContent *content, [in] IUnknown *device, | 
 
 
 
 
 | 390 | [in] IUnknown *parentVisual, [in] IUnknown *childVisual); | 
 
 
 
 
 | 391 | } | 
 
 
 
 
 | 392 |  | 
 
 
 
 
 | 393 | [ | 
 
 
 
 
 | 394 | uuid(9fbedf98-f6d8-4e3b-b488-fa66dbf5e9f3), | 
 
 
 
 
 | 395 | version(1.0) | 
 
 
 
 
 | 396 | ] | 
 
 
 
 
 | 397 | library DirectManipulation | 
 
 
 
 
 | 398 | { | 
 
 
 
 
 | 399 | [ | 
 
 
 
 
 | 400 | uuid(54e211b6-3650-4f75-8334-fa359598e1c5) | 
 
 
 
 
 | 401 | ] | 
 
 
 
 
 | 402 | coclass DirectManipulationManager | 
 
 
 
 
 | 403 | { | 
 
 
 
 
 | 404 | interface IDirectManipulationManager2; | 
 
 
 
 
 | 405 | [default] interface IDirectManipulationManager; | 
 
 
 
 
 | 406 | } | 
 
 
 
 
 | 407 |  | 
 
 
 
 
 | 408 | [ | 
 
 
 
 
 | 409 | uuid(99793286-77cc-4b57-96db-3b354f6f9fb5) | 
 
 
 
 
 | 410 | ] | 
 
 
 
 
 | 411 | coclass DirectManipulationSharedManager | 
 
 
 
 
 | 412 | { | 
 
 
 
 
 | 413 | interface IDirectManipulationManager2; | 
 
 
 
 
 | 414 | [default] interface IDirectManipulationManager; | 
 
 
 
 
 | 415 | } | 
 
 
 
 
 | 416 |  | 
 
 
 
 
 | 417 | [ | 
 
 
 
 
 | 418 | uuid(79dea627-a08a-43ac-8ef5-6900b9299126) | 
 
 
 
 
 | 419 | ] | 
 
 
 
 
 | 420 | coclass DCompManipulationCompositor | 
 
 
 
 
 | 421 | { | 
 
 
 
 
 | 422 | [default] interface IDirectManipulationCompositor; | 
 
 
 
 
 | 423 | interface IDirectManipulationCompositor2; | 
 
 
 
 
 | 424 | interface IDirectManipulationFrameInfoProvider; | 
 
 
 
 
 | 425 | } | 
 
 
 
 
 | 426 |  | 
 
 
 
 
 | 427 | [ | 
 
 
 
 
 | 428 | noncreatable, | 
 
 
 
 
 | 429 | hidden, | 
 
 
 
 
 | 430 | uuid(34e211b6-3650-4f75-8334-fa359598e1c5) | 
 
 
 
 
 | 431 | ] | 
 
 
 
 
 | 432 | coclass DirectManipulationViewport | 
 
 
 
 
 | 433 | { | 
 
 
 
 
 | 434 | interface IDirectManipulationViewport2; | 
 
 
 
 
 | 435 | [default] interface IDirectManipulationViewport; | 
 
 
 
 
 | 436 | } | 
 
 
 
 
 | 437 | } |