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
;
64 uuid(783321ed
-78a3
-4366-b574
-6af607a64788
),
65 pointer_default(unique)
67 interface IUIAnimationManagerEventHandler
: IUnknown
69 HRESULT OnManagerStatusChanged
(
70 [in] UI_ANIMATION_MANAGER_STATUS status
,
71 [in] UI_ANIMATION_MANAGER_STATUS prev_status
);
77 uuid(6358b7ba
-87d2
-42d5
-bf71
-82e919dd5862
),
78 pointer_default(unique)
80 interface IUIAnimationVariableChangeHandler
: IUnknown
82 HRESULT OnValueChanged
(
83 [in] IUIAnimationStoryboard
*storyboard
,
84 [in] IUIAnimationVariable
*variable
,
86 [in] DOUBLE prev_value
);
92 uuid(bb3e1550
-356e-44b0
-99da
-85ac6017865e
),
93 pointer_default(unique)
95 interface IUIAnimationVariableIntegerChangeHandler
: IUnknown
97 HRESULT OnIntegerValueChanged
(
98 [in] IUIAnimationStoryboard
*storyboard
,
99 [in] IUIAnimationVariable
*variable
,
101 [in] INT32 prev_value
);
107 uuid(3d5c9008
-ec7c
-4364-9f8a
-9af3c58cbae6
),
108 pointer_default(unique)
110 interface IUIAnimationStoryboardEventHandler
: IUnknown
112 HRESULT OnStoryboardStatusChanged
(
113 [in] IUIAnimationStoryboard
*storyboard
,
114 [in] UI_ANIMATION_STORYBOARD_STATUS status
,
115 [in] UI_ANIMATION_STORYBOARD_STATUS prev_status
);
117 HRESULT OnStoryboardUpdated
([in] IUIAnimationStoryboard
*storyboard
);
123 uuid(dc6ce252
-f731
-41cf
-b610
-614b6ca049ad
),
124 pointer_default(unique)
126 interface IUIAnimationTransition
: IUnknown
128 HRESULT SetInitialValue
([in] DOUBLE value
);
130 HRESULT SetInitialVelocity
([in] DOUBLE velocity
);
132 HRESULT IsDurationKnown
();
134 HRESULT GetDuration
([out, retval] UI_ANIMATION_SECONDS
*duration
);
140 uuid(8ceeb155
-2849-4ce5
-9448-91ff70e1e4d9
),
141 pointer_default(unique)
143 interface IUIAnimationVariable
: IUnknown
145 HRESULT GetValue
([out, retval] DOUBLE *value
);
147 HRESULT GetFinalValue
([out, retval] DOUBLE *value
);
149 HRESULT GetPreviousValue
([out, retval] DOUBLE *value
);
151 HRESULT GetIntegerValue
([out, retval] INT32
*value
);
153 HRESULT GetFinalIntegerValue
([out, retval] INT32
*value
);
155 HRESULT GetPreviousIntegerValue
([out, retval] INT32
*value
);
157 HRESULT GetCurrentStoryboard
([out, retval] IUIAnimationStoryboard
**storyboard
);
159 HRESULT SetLowerBound
([in] DOUBLE bound
);
161 HRESULT SetUpperBound
([in] DOUBLE bound
);
163 HRESULT SetRoundingMode
([in] UI_ANIMATION_ROUNDING_MODE mode
);
166 [in] IUnknown
*object,
170 [out] IUnknown
**object,
173 HRESULT SetVariableChangeHandler
([in, unique] IUIAnimationVariableChangeHandler
*handler
);
175 HRESULT SetVariableIntegerChangeHandler
([in, unique] IUIAnimationVariableIntegerChangeHandler
*handler
);
181 uuid(a8ff128f
-9bf9
-4af1
-9e67
-e5e410defb84
),
182 pointer_default(unique)
184 interface IUIAnimationStoryboard
: IUnknown
186 HRESULT AddTransition
(
187 [in] IUIAnimationVariable
*variable
,
188 [in] IUIAnimationTransition
*transition
);
190 HRESULT AddKeyframeAtOffset
(
191 [in] UI_ANIMATION_KEYFRAME existingframe
,
192 [in] UI_ANIMATION_SECONDS offset
,
193 [out, retval] UI_ANIMATION_KEYFRAME
*keyframe
);
195 HRESULT AddKeyframeAfterTransition
(
196 [in] IUIAnimationTransition
*transition
,
197 [out, retval] UI_ANIMATION_KEYFRAME
*keyframe
);
199 HRESULT AddTransitionAtKeyframe
(
200 [in] IUIAnimationVariable
*variable
,
201 [in] IUIAnimationTransition
*transition
,
202 [in] UI_ANIMATION_KEYFRAME start_key
);
204 HRESULT AddTransitionBetweenKeyframes
(
205 [in] IUIAnimationVariable
*variable
,
206 [in] IUIAnimationTransition
*transition
,
207 [in] UI_ANIMATION_KEYFRAME start_key
,
208 [in] UI_ANIMATION_KEYFRAME end_key
);
210 HRESULT RepeatBetweenKeyframes
(
211 [in] UI_ANIMATION_KEYFRAME start_key
,
212 [in] UI_ANIMATION_KEYFRAME end_key
,
215 HRESULT HoldVariable
([in] IUIAnimationVariable
*variable
);
217 HRESULT SetLongestAcceptableDelay
([in] UI_ANIMATION_SECONDS delay
);
220 [in] UI_ANIMATION_SECONDS now
,
221 [out, defaultvalue(0)] UI_ANIMATION_SCHEDULING_RESULT
*result
);
225 HRESULT Finish
([in] UI_ANIMATION_SECONDS deadline
);
230 [in, unique] IUnknown
*object,
234 [out] IUnknown
**object,
237 HRESULT GetStatus
([out, retval] UI_ANIMATION_STORYBOARD_STATUS
*status
);
239 HRESULT GetElapsedTime
([out] UI_ANIMATION_SECONDS
*elapsed
);
241 HRESULT SetStoryboardEventHandler
([in, unique] IUIAnimationStoryboardEventHandler
*handler
);