/* * Copyright 2017 Alistair Leslie-Hughes * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ import "wtypes.idl"; import "unknwn.idl"; interface IUIAnimationStoryboard; interface IUIAnimationVariable; typedef DOUBLE UI_ANIMATION_SECONDS; typedef struct { int _; } *UI_ANIMATION_KEYFRAME; typedef enum { UI_ANIMATION_MANAGER_IDLE, UI_ANIMATION_MANAGER_BUSY } UI_ANIMATION_MANAGER_STATUS; typedef enum { UI_ANIMATION_ROUNDING_NEAREST, UI_ANIMATION_ROUNDING_FLOOR, UI_ANIMATION_ROUNDING_CEILING } UI_ANIMATION_ROUNDING_MODE; typedef enum { UI_ANIMATION_SCHEDULING_UNEXPECTED_FAILURE, UI_ANIMATION_SCHEDULING_INSUFFICIENT_PRIORITY, UI_ANIMATION_SCHEDULING_ALREADY_SCHEDULED, UI_ANIMATION_SCHEDULING_SUCCEEDED, UI_ANIMATION_SCHEDULING_DEFERRED } UI_ANIMATION_SCHEDULING_RESULT; typedef enum { UI_ANIMATION_STORYBOARD_BUILDING, UI_ANIMATION_STORYBOARD_SCHEDULED, UI_ANIMATION_STORYBOARD_CANCELLED, UI_ANIMATION_STORYBOARD_PLAYING, UI_ANIMATION_STORYBOARD_TRUNCATED, UI_ANIMATION_STORYBOARD_FINISHED, UI_ANIMATION_STORYBOARD_READY, UI_ANIMATION_STORYBOARD_INSUFFICIENT_PRIORITY } UI_ANIMATION_STORYBOARD_STATUS; typedef enum { UI_ANIMATION_UPDATE_NO_CHANGE, UI_ANIMATION_UPDATE_VARIABLES_CHANGED, } UI_ANIMATION_UPDATE_RESULT; typedef enum { UI_ANIMATION_TIMER_CLIENT_IDLE, UI_ANIMATION_TIMER_CLIENT_BUSY, } UI_ANIMATION_TIMER_CLIENT_STATUS; typedef enum { UI_ANIMATION_IDLE_BEHAVIOR_CONTINUE, UI_ANIMATION_IDLE_BEHAVIOR_DISABLE, } UI_ANIMATION_IDLE_BEHAVIOR; [ local, object, uuid(783321ed-78a3-4366-b574-6af607a64788), pointer_default(unique) ] interface IUIAnimationManagerEventHandler : IUnknown { HRESULT OnManagerStatusChanged ( [in] UI_ANIMATION_MANAGER_STATUS status, [in] UI_ANIMATION_MANAGER_STATUS prev_status); } [ local, object, uuid(6358b7ba-87d2-42d5-bf71-82e919dd5862), pointer_default(unique) ] interface IUIAnimationVariableChangeHandler : IUnknown { HRESULT OnValueChanged ( [in] IUIAnimationStoryboard *storyboard, [in] IUIAnimationVariable *variable, [in] DOUBLE value, [in] DOUBLE prev_value); } [ local, object, uuid(bb3e1550-356e-44b0-99da-85ac6017865e), pointer_default(unique) ] interface IUIAnimationVariableIntegerChangeHandler : IUnknown { HRESULT OnIntegerValueChanged ( [in] IUIAnimationStoryboard *storyboard, [in] IUIAnimationVariable *variable, [in] INT32 value, [in] INT32 prev_value); } [ local, object, uuid(3d5c9008-ec7c-4364-9f8a-9af3c58cbae6), pointer_default(unique) ] interface IUIAnimationStoryboardEventHandler : IUnknown { HRESULT OnStoryboardStatusChanged ( [in] IUIAnimationStoryboard *storyboard, [in] UI_ANIMATION_STORYBOARD_STATUS status, [in] UI_ANIMATION_STORYBOARD_STATUS prev_status); HRESULT OnStoryboardUpdated ([in] IUIAnimationStoryboard *storyboard); } [ local, object, uuid(dc6ce252-f731-41cf-b610-614b6ca049ad), pointer_default(unique) ] interface IUIAnimationTransition : IUnknown { HRESULT SetInitialValue ([in] DOUBLE value); HRESULT SetInitialVelocity ([in] DOUBLE velocity); HRESULT IsDurationKnown (); HRESULT GetDuration ([out, retval] UI_ANIMATION_SECONDS *duration); } [ local, object, uuid(8ceeb155-2849-4ce5-9448-91ff70e1e4d9), pointer_default(unique) ] interface IUIAnimationVariable : IUnknown { HRESULT GetValue ([out, retval] DOUBLE *value); HRESULT GetFinalValue ([out, retval] DOUBLE *value); HRESULT GetPreviousValue ([out, retval] DOUBLE *value); HRESULT GetIntegerValue ([out, retval] INT32 *value); HRESULT GetFinalIntegerValue ([out, retval] INT32 *value); HRESULT GetPreviousIntegerValue ([out, retval] INT32 *value); HRESULT GetCurrentStoryboard ([out, retval] IUIAnimationStoryboard **storyboard); HRESULT SetLowerBound ([in] DOUBLE bound); HRESULT SetUpperBound ([in] DOUBLE bound); HRESULT SetRoundingMode ([in] UI_ANIMATION_ROUNDING_MODE mode); HRESULT SetTag ( [in] IUnknown *object, [in] UINT32 id); HRESULT GetTag ( [out] IUnknown **object, [out] UINT32 *id); HRESULT SetVariableChangeHandler ([in, unique] IUIAnimationVariableChangeHandler *handler); HRESULT SetVariableIntegerChangeHandler ([in, unique] IUIAnimationVariableIntegerChangeHandler *handler); } [ local, object, uuid(a8ff128f-9bf9-4af1-9e67-e5e410defb84), pointer_default(unique) ] interface IUIAnimationStoryboard : IUnknown { HRESULT AddTransition ( [in] IUIAnimationVariable *variable, [in] IUIAnimationTransition *transition); HRESULT AddKeyframeAtOffset ( [in] UI_ANIMATION_KEYFRAME existingframe, [in] UI_ANIMATION_SECONDS offset, [out, retval] UI_ANIMATION_KEYFRAME *keyframe); HRESULT AddKeyframeAfterTransition ( [in] IUIAnimationTransition *transition, [out, retval] UI_ANIMATION_KEYFRAME *keyframe); HRESULT AddTransitionAtKeyframe ( [in] IUIAnimationVariable *variable, [in] IUIAnimationTransition *transition, [in] UI_ANIMATION_KEYFRAME start_key); HRESULT AddTransitionBetweenKeyframes ( [in] IUIAnimationVariable *variable, [in] IUIAnimationTransition *transition, [in] UI_ANIMATION_KEYFRAME start_key, [in] UI_ANIMATION_KEYFRAME end_key); HRESULT RepeatBetweenKeyframes ( [in] UI_ANIMATION_KEYFRAME start_key, [in] UI_ANIMATION_KEYFRAME end_key, [in] INT32 count); HRESULT HoldVariable ([in] IUIAnimationVariable *variable); HRESULT SetLongestAcceptableDelay ([in] UI_ANIMATION_SECONDS delay); HRESULT Schedule ( [in] UI_ANIMATION_SECONDS now, [out, defaultvalue(0)] UI_ANIMATION_SCHEDULING_RESULT *result); HRESULT Conclude (); HRESULT Finish ([in] UI_ANIMATION_SECONDS deadline); HRESULT Abandon (); HRESULT SetTag( [in, unique] IUnknown *object, [in] UINT32 id); HRESULT GetTag ( [out] IUnknown **object, [out] UINT32 *id); HRESULT GetStatus ([out, retval] UI_ANIMATION_STORYBOARD_STATUS *status); HRESULT GetElapsedTime ([out] UI_ANIMATION_SECONDS *elapsed); HRESULT SetStoryboardEventHandler ([in, unique] IUIAnimationStoryboardEventHandler *handler); } [ local, object, uuid(bedb4db6-94fa-4bfb-a47f-ef2d9e408c25), pointer_default(unique) ] interface IUIAnimationTimerClientEventHandler : IUnknown { HRESULT OnTimerClientStatusChanged ( [in] UI_ANIMATION_TIMER_CLIENT_STATUS new_status, [in] UI_ANIMATION_TIMER_CLIENT_STATUS previous_status); } [ local, object, uuid(195509b7-5d5e-4e3e-b278-ee3759b367ad), pointer_default(unique) ] interface IUIAnimationTimerUpdateHandler : IUnknown { HRESULT OnUpdate ( [in] UI_ANIMATION_SECONDS now, [out, retval] UI_ANIMATION_UPDATE_RESULT *result); HRESULT SetTimerClientEventHandler ( [in] IUIAnimationTimerClientEventHandler *handler); HRESULT ClearTimerClientEventHandler (); } [ local, object, uuid(274a7dea-d771-4095-abbd-8df7abd23ce3), pointer_default(unique) ] interface IUIAnimationTimerEventHandler : IUnknown { HRESULT OnPreUpdate (); HRESULT OnPostUpdate (); HRESULT OnRenderingTooSlow ( [in] UINT32 fps); } [ local, object, uuid(6b0efad1-a053-41d6-9085-33a689144665), pointer_default(unique) ] interface IUIAnimationTimer : IUnknown { HRESULT SetTimerUpdateHandler ( [in, unique] IUIAnimationTimerUpdateHandler *handler, [in] UI_ANIMATION_IDLE_BEHAVIOR idlebehavior); HRESULT SetTimerEventHandler ( [in, unique] IUIAnimationTimerEventHandler *handler); HRESULT Enable (); HRESULT Disable (); HRESULT IsEnabled (); HRESULT GetTime ( [out] UI_ANIMATION_SECONDS *time); HRESULT SetFrameRateThreshold ( [in] UINT32 fps); } [ uuid(44ca24db-1a92-4149-bab5-fb14d64b401e), version(1.0) ] library UIAnimation { [ uuid(bfcd4a0c-06b6-4384-b768-0daa792c380e) ] coclass UIAnimationTimer { [default] interface IUIAnimationTimer; } }