dinput: Avoid deadlock when CS are acquired in different order.
[wine.git] / include / uianimation.idl
blobe8b366e8fb98b213674bd735516febe748eab429
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;
23 interface IUIAnimationManager;
24 interface IUIAnimationPriorityComparison;
25 interface IUIAnimationTransitionFactory;
26 interface IUIAnimationInterpolator;
27 interface IUIAnimationManagerEventHandler;
28 interface IUIAnimationTransition;
29 interface IUIAnimationTransitionLibrary;
31 typedef DOUBLE UI_ANIMATION_SECONDS;
32 typedef struct { int _; } *UI_ANIMATION_KEYFRAME;
34 const UI_ANIMATION_SECONDS UI_ANIMATION_SECONDS_EVENTUALLY = -1.0;
36 typedef enum
38 UI_ANIMATION_MANAGER_IDLE,
39 UI_ANIMATION_MANAGER_BUSY
40 } UI_ANIMATION_MANAGER_STATUS;
42 typedef enum
44 UI_ANIMATION_ROUNDING_NEAREST,
45 UI_ANIMATION_ROUNDING_FLOOR,
46 UI_ANIMATION_ROUNDING_CEILING
47 } UI_ANIMATION_ROUNDING_MODE;
49 typedef enum
51 UI_ANIMATION_SCHEDULING_UNEXPECTED_FAILURE,
52 UI_ANIMATION_SCHEDULING_INSUFFICIENT_PRIORITY,
53 UI_ANIMATION_SCHEDULING_ALREADY_SCHEDULED,
54 UI_ANIMATION_SCHEDULING_SUCCEEDED,
55 UI_ANIMATION_SCHEDULING_DEFERRED
56 } UI_ANIMATION_SCHEDULING_RESULT;
58 typedef enum
60 UI_ANIMATION_STORYBOARD_BUILDING,
61 UI_ANIMATION_STORYBOARD_SCHEDULED,
62 UI_ANIMATION_STORYBOARD_CANCELLED,
63 UI_ANIMATION_STORYBOARD_PLAYING,
64 UI_ANIMATION_STORYBOARD_TRUNCATED,
65 UI_ANIMATION_STORYBOARD_FINISHED,
66 UI_ANIMATION_STORYBOARD_READY,
67 UI_ANIMATION_STORYBOARD_INSUFFICIENT_PRIORITY
68 } UI_ANIMATION_STORYBOARD_STATUS;
70 typedef enum
72 UI_ANIMATION_UPDATE_NO_CHANGE,
73 UI_ANIMATION_UPDATE_VARIABLES_CHANGED,
74 } UI_ANIMATION_UPDATE_RESULT;
76 typedef enum
78 UI_ANIMATION_TIMER_CLIENT_IDLE,
79 UI_ANIMATION_TIMER_CLIENT_BUSY,
80 } UI_ANIMATION_TIMER_CLIENT_STATUS;
82 typedef enum
84 UI_ANIMATION_IDLE_BEHAVIOR_CONTINUE,
85 UI_ANIMATION_IDLE_BEHAVIOR_DISABLE,
86 } UI_ANIMATION_IDLE_BEHAVIOR;
88 typedef [v1_enum] enum
90 UI_ANIMATION_MODE_DISABLED,
91 UI_ANIMATION_MODE_SYSTEM_DEFAULT,
92 UI_ANIMATION_MODE_ENABLED
93 } UI_ANIMATION_MODE;
95 typedef [v1_enum] enum
97 UI_ANIMATION_PRIORITY_EFFECT_FAILURE,
98 UI_ANIMATION_PRIORITY_EFFECT_DELAY
99 } UI_ANIMATION_PRIORITY_EFFECT;
101 typedef [v1_enum] enum
103 UI_ANIMATION_DEPENDENCY_NONE = 0,
104 UI_ANIMATION_DEPENDENCY_INTERMEDIATE_VALUES = 0x1,
105 UI_ANIMATION_DEPENDENCY_FINAL_VALUE = 0x2,
106 UI_ANIMATION_DEPENDENCY_FINAL_VELOCITY = 0x4,
107 UI_ANIMATION_DEPENDENCY_DURATION = 0x8
108 } UI_ANIMATION_DEPENDENCIES;
110 typedef [v1_enum] enum
112 UI_ANIMATION_SLOPE_INCREASING,
113 UI_ANIMATION_SLOPE_DECREASING
114 } UI_ANIMATION_SLOPE;
117 local,
118 object,
119 uuid(783321ed-78a3-4366-b574-6af607a64788),
120 pointer_default(unique)
122 interface IUIAnimationManagerEventHandler : IUnknown
124 HRESULT OnManagerStatusChanged (
125 [in] UI_ANIMATION_MANAGER_STATUS status,
126 [in] UI_ANIMATION_MANAGER_STATUS prev_status);
130 local,
131 object,
132 uuid(6358b7ba-87d2-42d5-bf71-82e919dd5862),
133 pointer_default(unique)
135 interface IUIAnimationVariableChangeHandler : IUnknown
137 HRESULT OnValueChanged (
138 [in] IUIAnimationStoryboard *storyboard,
139 [in] IUIAnimationVariable *variable,
140 [in] DOUBLE value,
141 [in] DOUBLE prev_value);
145 local,
146 object,
147 uuid(bb3e1550-356e-44b0-99da-85ac6017865e),
148 pointer_default(unique)
150 interface IUIAnimationVariableIntegerChangeHandler : IUnknown
152 HRESULT OnIntegerValueChanged (
153 [in] IUIAnimationStoryboard *storyboard,
154 [in] IUIAnimationVariable *variable,
155 [in] INT32 value,
156 [in] INT32 prev_value);
160 local,
161 object,
162 uuid(3d5c9008-ec7c-4364-9f8a-9af3c58cbae6),
163 pointer_default(unique)
165 interface IUIAnimationStoryboardEventHandler : IUnknown
167 HRESULT OnStoryboardStatusChanged (
168 [in] IUIAnimationStoryboard *storyboard,
169 [in] UI_ANIMATION_STORYBOARD_STATUS status,
170 [in] UI_ANIMATION_STORYBOARD_STATUS prev_status);
172 HRESULT OnStoryboardUpdated ([in] IUIAnimationStoryboard *storyboard);
176 local,
177 object,
178 uuid(dc6ce252-f731-41cf-b610-614b6ca049ad),
179 pointer_default(unique)
181 interface IUIAnimationTransition : IUnknown
183 HRESULT SetInitialValue ([in] DOUBLE value);
185 HRESULT SetInitialVelocity ([in] DOUBLE velocity);
187 HRESULT IsDurationKnown ();
189 HRESULT GetDuration ([out, retval] UI_ANIMATION_SECONDS *duration);
193 local,
194 object,
195 uuid(8ceeb155-2849-4ce5-9448-91ff70e1e4d9),
196 pointer_default(unique)
198 interface IUIAnimationVariable : IUnknown
200 HRESULT GetValue ([out, retval] DOUBLE *value);
202 HRESULT GetFinalValue ([out, retval] DOUBLE *value);
204 HRESULT GetPreviousValue ([out, retval] DOUBLE *value);
206 HRESULT GetIntegerValue ([out, retval] INT32 *value);
208 HRESULT GetFinalIntegerValue ([out, retval] INT32 *value);
210 HRESULT GetPreviousIntegerValue ([out, retval] INT32 *value);
212 HRESULT GetCurrentStoryboard ([out, retval] IUIAnimationStoryboard **storyboard);
214 HRESULT SetLowerBound ([in] DOUBLE bound);
216 HRESULT SetUpperBound ([in] DOUBLE bound);
218 HRESULT SetRoundingMode ([in] UI_ANIMATION_ROUNDING_MODE mode);
220 HRESULT SetTag (
221 [in] IUnknown *object,
222 [in] UINT32 id);
224 HRESULT GetTag (
225 [out] IUnknown **object,
226 [out] UINT32 *id);
228 HRESULT SetVariableChangeHandler ([in, unique] IUIAnimationVariableChangeHandler *handler);
230 HRESULT SetVariableIntegerChangeHandler ([in, unique] IUIAnimationVariableIntegerChangeHandler *handler);
234 local,
235 object,
236 uuid(a8ff128f-9bf9-4af1-9e67-e5e410defb84),
237 pointer_default(unique)
239 interface IUIAnimationStoryboard : IUnknown
241 HRESULT AddTransition (
242 [in] IUIAnimationVariable *variable,
243 [in] IUIAnimationTransition *transition);
245 HRESULT AddKeyframeAtOffset (
246 [in] UI_ANIMATION_KEYFRAME existingframe,
247 [in] UI_ANIMATION_SECONDS offset,
248 [out, retval] UI_ANIMATION_KEYFRAME *keyframe);
250 HRESULT AddKeyframeAfterTransition (
251 [in] IUIAnimationTransition *transition,
252 [out, retval] UI_ANIMATION_KEYFRAME *keyframe);
254 HRESULT AddTransitionAtKeyframe (
255 [in] IUIAnimationVariable *variable,
256 [in] IUIAnimationTransition *transition,
257 [in] UI_ANIMATION_KEYFRAME start_key);
259 HRESULT AddTransitionBetweenKeyframes (
260 [in] IUIAnimationVariable *variable,
261 [in] IUIAnimationTransition *transition,
262 [in] UI_ANIMATION_KEYFRAME start_key,
263 [in] UI_ANIMATION_KEYFRAME end_key);
265 HRESULT RepeatBetweenKeyframes (
266 [in] UI_ANIMATION_KEYFRAME start_key,
267 [in] UI_ANIMATION_KEYFRAME end_key,
268 [in] INT32 count);
270 HRESULT HoldVariable ([in] IUIAnimationVariable *variable);
272 HRESULT SetLongestAcceptableDelay ([in] UI_ANIMATION_SECONDS delay);
274 HRESULT Schedule (
275 [in] UI_ANIMATION_SECONDS now,
276 [out, defaultvalue(0)] UI_ANIMATION_SCHEDULING_RESULT *result);
278 HRESULT Conclude ();
280 HRESULT Finish ([in] UI_ANIMATION_SECONDS deadline);
282 HRESULT Abandon ();
284 HRESULT SetTag(
285 [in, unique] IUnknown *object,
286 [in] UINT32 id);
288 HRESULT GetTag (
289 [out] IUnknown **object,
290 [out] UINT32 *id);
292 HRESULT GetStatus ([out, retval] UI_ANIMATION_STORYBOARD_STATUS *status);
294 HRESULT GetElapsedTime ([out] UI_ANIMATION_SECONDS *elapsed);
296 HRESULT SetStoryboardEventHandler ([in, unique] IUIAnimationStoryboardEventHandler *handler);
300 local,
301 object,
302 uuid(bedb4db6-94fa-4bfb-a47f-ef2d9e408c25),
303 pointer_default(unique)
305 interface IUIAnimationTimerClientEventHandler : IUnknown
307 HRESULT OnTimerClientStatusChanged (
308 [in] UI_ANIMATION_TIMER_CLIENT_STATUS new_status,
309 [in] UI_ANIMATION_TIMER_CLIENT_STATUS previous_status);
313 local,
314 object,
315 uuid(195509b7-5d5e-4e3e-b278-ee3759b367ad),
316 pointer_default(unique)
318 interface IUIAnimationTimerUpdateHandler : IUnknown
320 HRESULT OnUpdate (
321 [in] UI_ANIMATION_SECONDS now,
322 [out, retval] UI_ANIMATION_UPDATE_RESULT *result);
324 HRESULT SetTimerClientEventHandler (
325 [in] IUIAnimationTimerClientEventHandler *handler);
327 HRESULT ClearTimerClientEventHandler ();
331 local,
332 object,
333 uuid(274a7dea-d771-4095-abbd-8df7abd23ce3),
334 pointer_default(unique)
336 interface IUIAnimationTimerEventHandler : IUnknown
338 HRESULT OnPreUpdate ();
340 HRESULT OnPostUpdate ();
342 HRESULT OnRenderingTooSlow (
343 [in] UINT32 fps);
347 local,
348 object,
349 uuid(6b0efad1-a053-41d6-9085-33a689144665),
350 pointer_default(unique)
352 interface IUIAnimationTimer : IUnknown
354 HRESULT SetTimerUpdateHandler (
355 [in, unique] IUIAnimationTimerUpdateHandler *handler,
356 [in] UI_ANIMATION_IDLE_BEHAVIOR idlebehavior);
358 HRESULT SetTimerEventHandler (
359 [in, unique] IUIAnimationTimerEventHandler *handler);
361 HRESULT Enable ();
363 HRESULT Disable ();
365 HRESULT IsEnabled ();
367 HRESULT GetTime (
368 [out] UI_ANIMATION_SECONDS *time);
370 HRESULT SetFrameRateThreshold (
371 [in] UINT32 fps);
375 local,
376 object,
377 uuid(9169896c-ac8d-4e7d-94e5-67fa4dc2f2e8),
378 pointer_default(unique)
380 interface IUIAnimationManager : IUnknown
382 HRESULT CreateAnimationVariable(
383 [in] UI_ANIMATION_SECONDS initialvalue,
384 [out, retval] IUIAnimationVariable **variable);
386 HRESULT ScheduleTransition(
387 [in] IUIAnimationVariable *variable,
388 [in] IUIAnimationTransition *transition,
389 [in] UI_ANIMATION_SECONDS timenow);
391 HRESULT CreateStoryboard(
392 [out, retval] IUIAnimationStoryboard **storyboard);
394 HRESULT FinishAllStoryboards(
395 [in] UI_ANIMATION_SECONDS deadline);
397 HRESULT AbandonAllStoryboards();
399 HRESULT Update(
400 [in] UI_ANIMATION_SECONDS timenow,
401 [out, defaultvalue(0)] UI_ANIMATION_UPDATE_RESULT *updateresult);
403 HRESULT GetVariableFromTag(
404 [in] IUnknown * object,
405 [in] UINT32 id,
406 [out, retval] IUIAnimationVariable **variable);
408 HRESULT GetStoryboardFromTag(
409 [in] IUnknown * object,
410 [in] UINT32 id,
411 [out, retval] IUIAnimationStoryboard **storyboard);
413 HRESULT GetStatus(
414 [out, retval] UI_ANIMATION_MANAGER_STATUS *status);
416 HRESULT SetAnimationMode(
417 [in] UI_ANIMATION_MODE mode);
419 HRESULT Pause();
421 HRESULT Resume();
423 HRESULT SetManagerEventHandler(
424 [in] IUIAnimationManagerEventHandler *handler);
426 HRESULT SetCancelPriorityComparison(
427 [in] IUIAnimationPriorityComparison *comparison);
429 HRESULT SetTrimPriorityComparison(
430 [in] IUIAnimationPriorityComparison *comparison);
432 HRESULT SetCompressPriorityComparison(
433 [in] IUIAnimationPriorityComparison *comparison);
435 HRESULT SetConcludePriorityComparison(
436 [in] IUIAnimationPriorityComparison *comparison);
438 HRESULT SetDefaultLongestAcceptableDelay(
439 [in] UI_ANIMATION_SECONDS delay);
441 HRESULT Shutdown();
445 local,
446 object,
447 uuid(83fa9b74-5f86-4618-bc6a-a2fac19b3f44),
448 pointer_default(unique)
450 interface IUIAnimationPriorityComparison : IUnknown
452 HRESULT HasPriority(
453 [in] IUIAnimationStoryboard *scheduledboard,
454 [in] IUIAnimationStoryboard *newboard,
455 [in] UI_ANIMATION_PRIORITY_EFFECT effect);
459 local,
460 object,
461 uuid(fcd91e03-3e3b-45ad-bbb1-6dfc8153743d),
462 pointer_default(unique)
464 interface IUIAnimationTransitionFactory : IUnknown
466 HRESULT CreateTransition(
467 [in] IUIAnimationInterpolator *interpolator,
468 [out, retval] IUIAnimationTransition **transition);
472 local,
473 object,
474 uuid(7815cbba-ddf7-478c-a46c-7b6c738b7978),
475 pointer_default(unique)
477 interface IUIAnimationInterpolator : IUnknown
479 HRESULT SetInitialValueAndVelocity(
480 [in] double initialvalue,
481 [in] double initialvelocity);
483 HRESULT SetDuration(
484 [in] UI_ANIMATION_SECONDS duration);
486 HRESULT GetDuration(
487 [out, retval] UI_ANIMATION_SECONDS *duration);
489 HRESULT GetFinalValue(
490 [out, retval] double *value);
492 HRESULT InterpolateValue(
493 [in] UI_ANIMATION_SECONDS offset,
494 [out, retval] double *value);
496 HRESULT InterpolateVelocity(
497 [in] UI_ANIMATION_SECONDS offset,
498 [out, retval] double *velocity);
500 HRESULT GetDependencies(
501 [out] UI_ANIMATION_DEPENDENCIES *initialvaluedependencies,
502 [out] UI_ANIMATION_DEPENDENCIES *initialvelocitydependencies,
503 [out] UI_ANIMATION_DEPENDENCIES *durationdependencies);
507 local,
508 object,
509 uuid(ca5a14b1-d24f-48b8-8fe4-c78169ba954e),
510 pointer_default(unique)
512 interface IUIAnimationTransitionLibrary : IUnknown
514 HRESULT CreateInstantaneousTransition(
515 [in] double finalvalue,
516 [out, retval] IUIAnimationTransition **transition);
518 HRESULT CreateConstantTransition(
519 [in] UI_ANIMATION_SECONDS duration,
520 [out, retval] IUIAnimationTransition **transition);
522 HRESULT CreateDiscreteTransition(
523 [in] UI_ANIMATION_SECONDS delay,
524 [in] double finalvalue,
525 [in] UI_ANIMATION_SECONDS hold,
526 [out, retval] IUIAnimationTransition **transition);
528 HRESULT CreateLinearTransition(
529 [in] UI_ANIMATION_SECONDS duration,
530 [in] double finalvalue,
531 [out, retval] IUIAnimationTransition **transition);
533 HRESULT CreateLinearTransitionFromSpeed(
534 [in] double speed,
535 [in] double finalvalue,
536 [out, retval] IUIAnimationTransition **transition);
538 HRESULT CreateSinusoidalTransitionFromVelocity(
539 [in] UI_ANIMATION_SECONDS duration,
540 [in] UI_ANIMATION_SECONDS period,
541 [out, retval] IUIAnimationTransition **transition);
543 HRESULT CreateSinusoidalTransitionFromRange(
544 [in] UI_ANIMATION_SECONDS duration,
545 [in] double minimumvalue,
546 [in] double maximumvalue,
547 [in] UI_ANIMATION_SECONDS period,
548 [in] UI_ANIMATION_SLOPE slope,
549 [out, retval] IUIAnimationTransition **transition);
551 HRESULT CreateAccelerateDecelerateTransition(
552 [in] UI_ANIMATION_SECONDS duration,
553 [in] double finalvalue,
554 [in] double accelerationratio,
555 [in] double decelerationratio,
556 [out, retval] IUIAnimationTransition **transition);
558 HRESULT CreateReversalTransition(
559 [in] UI_ANIMATION_SECONDS duration,
560 [out, retval] IUIAnimationTransition **transition);
562 HRESULT CreateCubicTransition(
563 [in] UI_ANIMATION_SECONDS duration,
564 [in] double finalvalue,
565 [in] double finalvelocity,
566 [out, retval] IUIAnimationTransition **transition);
568 HRESULT CreateSmoothStopTransition(
569 [in] UI_ANIMATION_SECONDS maximumduration,
570 [in] double finalvalue,
571 [out, retval] IUIAnimationTransition **transition);
573 HRESULT CreateParabolicTransitionFromAcceleration(
574 [in] UI_ANIMATION_SECONDS finalvalue,
575 [in] double finalvelocity,
576 [in] double acceleration,
577 [out, retval] IUIAnimationTransition **transition);
581 uuid(44ca24db-1a92-4149-bab5-fb14d64b401e),
582 version(1.0)
584 library UIAnimation
587 uuid(bfcd4a0c-06b6-4384-b768-0daa792c380e)
589 coclass UIAnimationTimer
591 [default] interface IUIAnimationTimer;
595 uuid(4c1fc63a-695c-47e8-a339-1a194be3d0b8)
597 coclass UIAnimationManager
599 [default] interface IUIAnimationManager;
603 uuid(8a9b1cdd-fcd7-419c-8b44-42fd17db1887)
605 coclass UIAnimationTransitionFactory
607 [default] interface IUIAnimationTransitionFactory;
611 uuid(1d6322ad-aa85-4ef5-a828-86d71067d145)
613 coclass UIAnimationTransitionLibrary
615 [default] interface IUIAnimationTransitionLibrary;