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
21 interface IUIAnimationStoryboard
;
22 interface IUIAnimationVariable
;
24 typedef DOUBLE UI_ANIMATION_SECONDS
;
25 typedef struct { int _
; } *UI_ANIMATION_KEYFRAME
;
29 UI_ANIMATION_MANAGER_IDLE
,
30 UI_ANIMATION_MANAGER_BUSY
31 } UI_ANIMATION_MANAGER_STATUS
;
35 UI_ANIMATION_ROUNDING_NEAREST
,
36 UI_ANIMATION_ROUNDING_FLOOR
,
37 UI_ANIMATION_ROUNDING_CEILING
38 } UI_ANIMATION_ROUNDING_MODE
;
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
;
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
;
63 UI_ANIMATION_UPDATE_NO_CHANGE
,
64 UI_ANIMATION_UPDATE_VARIABLES_CHANGED
,
65 } UI_ANIMATION_UPDATE_RESULT
;
69 UI_ANIMATION_TIMER_CLIENT_IDLE
,
70 UI_ANIMATION_TIMER_CLIENT_BUSY
,
71 } UI_ANIMATION_TIMER_CLIENT_STATUS
;
75 UI_ANIMATION_IDLE_BEHAVIOR_CONTINUE
,
76 UI_ANIMATION_IDLE_BEHAVIOR_DISABLE
,
77 } UI_ANIMATION_IDLE_BEHAVIOR
;
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
);
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
,
104 [in] DOUBLE prev_value
);
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
,
119 [in] INT32 prev_value
);
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
);
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
);
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
);
184 [in] IUnknown
*object,
188 [out] IUnknown
**object,
191 HRESULT SetVariableChangeHandler
([in, unique] IUIAnimationVariableChangeHandler
*handler
);
193 HRESULT SetVariableIntegerChangeHandler
([in, unique] IUIAnimationVariableIntegerChangeHandler
*handler
);
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
,
233 HRESULT HoldVariable
([in] IUIAnimationVariable
*variable
);
235 HRESULT SetLongestAcceptableDelay
([in] UI_ANIMATION_SECONDS delay
);
238 [in] UI_ANIMATION_SECONDS now
,
239 [out, defaultvalue(0)] UI_ANIMATION_SCHEDULING_RESULT
*result
);
243 HRESULT Finish
([in] UI_ANIMATION_SECONDS deadline
);
248 [in, unique] IUnknown
*object,
252 [out] IUnknown
**object,
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
);
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
);
278 uuid(195509b7
-5d5e
-4e3e
-b278
-ee3759b367ad
),
279 pointer_default(unique)
281 interface IUIAnimationTimerUpdateHandler
: IUnknown
284 [in] UI_ANIMATION_SECONDS now
,
285 [out, retval] UI_ANIMATION_UPDATE_RESULT
*result
);
287 HRESULT SetTimerClientEventHandler
(
288 [in] IUIAnimationTimerClientEventHandler
*handler
);
290 HRESULT ClearTimerClientEventHandler
();
296 uuid(274a7dea
-d771
-4095-abbd
-8df7abd23ce3
),
297 pointer_default(unique)
299 interface IUIAnimationTimerEventHandler
: IUnknown
301 HRESULT OnPreUpdate
();
303 HRESULT OnPostUpdate
();
305 HRESULT OnRenderingTooSlow
(
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
);
328 HRESULT IsEnabled
();
331 [out] UI_ANIMATION_SECONDS
*time
);
333 HRESULT SetFrameRateThreshold
(
338 uuid(44ca24db
-1a92
-4149-bab5
-fb14d64b401e
),
344 uuid(bfcd4a0c
-06b6
-4384-b768
-0daa792c380e
)
346 coclass UIAnimationTimer
348 [default] interface IUIAnimationTimer
;