Release 3.0.2.
[wine.git] / include / uianimation.idl
blob6c026a6ced91ead26bc06ef2c72b0688b3cf2c66
1 /*
2 * Copyright 2017 Alistair Leslie-Hughes
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.
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.
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
18 import "wtypes.idl";
19 import "unknwn.idl";
21 interface IUIAnimationStoryboard;
22 interface IUIAnimationVariable;
24 typedef DOUBLE UI_ANIMATION_SECONDS;
25 typedef struct { int _; } *UI_ANIMATION_KEYFRAME;
27 typedef enum
29 UI_ANIMATION_MANAGER_IDLE,
30 UI_ANIMATION_MANAGER_BUSY
31 } UI_ANIMATION_MANAGER_STATUS;
33 typedef enum
35 UI_ANIMATION_ROUNDING_NEAREST,
36 UI_ANIMATION_ROUNDING_FLOOR,
37 UI_ANIMATION_ROUNDING_CEILING
38 } UI_ANIMATION_ROUNDING_MODE;
40 typedef enum
42 UI_ANIMATION_SCHEDULING_UNEXPECTED_FAILURE,
43 UI_ANIMATION_SCHEDULING_INSUFFICIENT_PRIORITY,
44 UI_ANIMATION_SCHEDULING_ALREADY_SCHEDULED,
45 UI_ANIMATION_SCHEDULING_SUCCEEDED,
46 UI_ANIMATION_SCHEDULING_DEFERRED
47 } UI_ANIMATION_SCHEDULING_RESULT;
49 typedef enum
51 UI_ANIMATION_STORYBOARD_BUILDING,
52 UI_ANIMATION_STORYBOARD_SCHEDULED,
53 UI_ANIMATION_STORYBOARD_CANCELLED,
54 UI_ANIMATION_STORYBOARD_PLAYING,
55 UI_ANIMATION_STORYBOARD_TRUNCATED,
56 UI_ANIMATION_STORYBOARD_FINISHED,
57 UI_ANIMATION_STORYBOARD_READY,
58 UI_ANIMATION_STORYBOARD_INSUFFICIENT_PRIORITY
59 } UI_ANIMATION_STORYBOARD_STATUS;
61 typedef enum
63 UI_ANIMATION_UPDATE_NO_CHANGE,
64 UI_ANIMATION_UPDATE_VARIABLES_CHANGED,
65 } UI_ANIMATION_UPDATE_RESULT;
67 typedef enum
69 UI_ANIMATION_TIMER_CLIENT_IDLE,
70 UI_ANIMATION_TIMER_CLIENT_BUSY,
71 } UI_ANIMATION_TIMER_CLIENT_STATUS;
73 typedef enum
75 UI_ANIMATION_IDLE_BEHAVIOR_CONTINUE,
76 UI_ANIMATION_IDLE_BEHAVIOR_DISABLE,
77 } UI_ANIMATION_IDLE_BEHAVIOR;
80 local,
81 object,
82 uuid(783321ed-78a3-4366-b574-6af607a64788),
83 pointer_default(unique)
85 interface IUIAnimationManagerEventHandler : IUnknown
87 HRESULT OnManagerStatusChanged (
88 [in] UI_ANIMATION_MANAGER_STATUS status,
89 [in] UI_ANIMATION_MANAGER_STATUS prev_status);
93 local,
94 object,
95 uuid(6358b7ba-87d2-42d5-bf71-82e919dd5862),
96 pointer_default(unique)
98 interface IUIAnimationVariableChangeHandler : IUnknown
100 HRESULT OnValueChanged (
101 [in] IUIAnimationStoryboard *storyboard,
102 [in] IUIAnimationVariable *variable,
103 [in] DOUBLE value,
104 [in] DOUBLE prev_value);
108 local,
109 object,
110 uuid(bb3e1550-356e-44b0-99da-85ac6017865e),
111 pointer_default(unique)
113 interface IUIAnimationVariableIntegerChangeHandler : IUnknown
115 HRESULT OnIntegerValueChanged (
116 [in] IUIAnimationStoryboard *storyboard,
117 [in] IUIAnimationVariable *variable,
118 [in] INT32 value,
119 [in] INT32 prev_value);
123 local,
124 object,
125 uuid(3d5c9008-ec7c-4364-9f8a-9af3c58cbae6),
126 pointer_default(unique)
128 interface IUIAnimationStoryboardEventHandler : IUnknown
130 HRESULT OnStoryboardStatusChanged (
131 [in] IUIAnimationStoryboard *storyboard,
132 [in] UI_ANIMATION_STORYBOARD_STATUS status,
133 [in] UI_ANIMATION_STORYBOARD_STATUS prev_status);
135 HRESULT OnStoryboardUpdated ([in] IUIAnimationStoryboard *storyboard);
139 local,
140 object,
141 uuid(dc6ce252-f731-41cf-b610-614b6ca049ad),
142 pointer_default(unique)
144 interface IUIAnimationTransition : IUnknown
146 HRESULT SetInitialValue ([in] DOUBLE value);
148 HRESULT SetInitialVelocity ([in] DOUBLE velocity);
150 HRESULT IsDurationKnown ();
152 HRESULT GetDuration ([out, retval] UI_ANIMATION_SECONDS *duration);
156 local,
157 object,
158 uuid(8ceeb155-2849-4ce5-9448-91ff70e1e4d9),
159 pointer_default(unique)
161 interface IUIAnimationVariable : IUnknown
163 HRESULT GetValue ([out, retval] DOUBLE *value);
165 HRESULT GetFinalValue ([out, retval] DOUBLE *value);
167 HRESULT GetPreviousValue ([out, retval] DOUBLE *value);
169 HRESULT GetIntegerValue ([out, retval] INT32 *value);
171 HRESULT GetFinalIntegerValue ([out, retval] INT32 *value);
173 HRESULT GetPreviousIntegerValue ([out, retval] INT32 *value);
175 HRESULT GetCurrentStoryboard ([out, retval] IUIAnimationStoryboard **storyboard);
177 HRESULT SetLowerBound ([in] DOUBLE bound);
179 HRESULT SetUpperBound ([in] DOUBLE bound);
181 HRESULT SetRoundingMode ([in] UI_ANIMATION_ROUNDING_MODE mode);
183 HRESULT SetTag (
184 [in] IUnknown *object,
185 [in] UINT32 id);
187 HRESULT GetTag (
188 [out] IUnknown **object,
189 [out] UINT32 *id);
191 HRESULT SetVariableChangeHandler ([in, unique] IUIAnimationVariableChangeHandler *handler);
193 HRESULT SetVariableIntegerChangeHandler ([in, unique] IUIAnimationVariableIntegerChangeHandler *handler);
197 local,
198 object,
199 uuid(a8ff128f-9bf9-4af1-9e67-e5e410defb84),
200 pointer_default(unique)
202 interface IUIAnimationStoryboard : IUnknown
204 HRESULT AddTransition (
205 [in] IUIAnimationVariable *variable,
206 [in] IUIAnimationTransition *transition);
208 HRESULT AddKeyframeAtOffset (
209 [in] UI_ANIMATION_KEYFRAME existingframe,
210 [in] UI_ANIMATION_SECONDS offset,
211 [out, retval] UI_ANIMATION_KEYFRAME *keyframe);
213 HRESULT AddKeyframeAfterTransition (
214 [in] IUIAnimationTransition *transition,
215 [out, retval] UI_ANIMATION_KEYFRAME *keyframe);
217 HRESULT AddTransitionAtKeyframe (
218 [in] IUIAnimationVariable *variable,
219 [in] IUIAnimationTransition *transition,
220 [in] UI_ANIMATION_KEYFRAME start_key);
222 HRESULT AddTransitionBetweenKeyframes (
223 [in] IUIAnimationVariable *variable,
224 [in] IUIAnimationTransition *transition,
225 [in] UI_ANIMATION_KEYFRAME start_key,
226 [in] UI_ANIMATION_KEYFRAME end_key);
228 HRESULT RepeatBetweenKeyframes (
229 [in] UI_ANIMATION_KEYFRAME start_key,
230 [in] UI_ANIMATION_KEYFRAME end_key,
231 [in] INT32 count);
233 HRESULT HoldVariable ([in] IUIAnimationVariable *variable);
235 HRESULT SetLongestAcceptableDelay ([in] UI_ANIMATION_SECONDS delay);
237 HRESULT Schedule (
238 [in] UI_ANIMATION_SECONDS now,
239 [out, defaultvalue(0)] UI_ANIMATION_SCHEDULING_RESULT *result);
241 HRESULT Conclude ();
243 HRESULT Finish ([in] UI_ANIMATION_SECONDS deadline);
245 HRESULT Abandon ();
247 HRESULT SetTag(
248 [in, unique] IUnknown *object,
249 [in] UINT32 id);
251 HRESULT GetTag (
252 [out] IUnknown **object,
253 [out] UINT32 *id);
255 HRESULT GetStatus ([out, retval] UI_ANIMATION_STORYBOARD_STATUS *status);
257 HRESULT GetElapsedTime ([out] UI_ANIMATION_SECONDS *elapsed);
259 HRESULT SetStoryboardEventHandler ([in, unique] IUIAnimationStoryboardEventHandler *handler);
263 local,
264 object,
265 uuid(bedb4db6-94fa-4bfb-a47f-ef2d9e408c25),
266 pointer_default(unique)
268 interface IUIAnimationTimerClientEventHandler : IUnknown
270 HRESULT OnTimerClientStatusChanged (
271 [in] UI_ANIMATION_TIMER_CLIENT_STATUS new_status,
272 [in] UI_ANIMATION_TIMER_CLIENT_STATUS previous_status);
276 local,
277 object,
278 uuid(195509b7-5d5e-4e3e-b278-ee3759b367ad),
279 pointer_default(unique)
281 interface IUIAnimationTimerUpdateHandler : IUnknown
283 HRESULT OnUpdate (
284 [in] UI_ANIMATION_SECONDS now,
285 [out, retval] UI_ANIMATION_UPDATE_RESULT *result);
287 HRESULT SetTimerClientEventHandler (
288 [in] IUIAnimationTimerClientEventHandler *handler);
290 HRESULT ClearTimerClientEventHandler ();
294 local,
295 object,
296 uuid(274a7dea-d771-4095-abbd-8df7abd23ce3),
297 pointer_default(unique)
299 interface IUIAnimationTimerEventHandler : IUnknown
301 HRESULT OnPreUpdate ();
303 HRESULT OnPostUpdate ();
305 HRESULT OnRenderingTooSlow (
306 [in] UINT32 fps);
310 local,
311 object,
312 uuid(6b0efad1-a053-41d6-9085-33a689144665),
313 pointer_default(unique)
315 interface IUIAnimationTimer : IUnknown
317 HRESULT SetTimerUpdateHandler (
318 [in, unique] IUIAnimationTimerUpdateHandler *handler,
319 [in] UI_ANIMATION_IDLE_BEHAVIOR idlebehavior);
321 HRESULT SetTimerEventHandler (
322 [in, unique] IUIAnimationTimerEventHandler *handler);
324 HRESULT Enable ();
326 HRESULT Disable ();
328 HRESULT IsEnabled ();
330 HRESULT GetTime (
331 [out] UI_ANIMATION_SECONDS *time);
333 HRESULT SetFrameRateThreshold (
334 [in] UINT32 fps);
338 uuid(44ca24db-1a92-4149-bab5-fb14d64b401e),
339 version(1.0)
341 library UIAnimation
344 uuid(bfcd4a0c-06b6-4384-b768-0daa792c380e)
346 coclass UIAnimationTimer
348 [default] interface IUIAnimationTimer;