' ########################################################################################
' Microsoft Windows
' File: UIAnimation.inc
' Copyright (c) 2011 Jos? Roca
' Portions Copyright (c) Microsoft Corporation.
' All Rights Reserved.
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
' EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
' MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
' ########################################################################################
' ########################################################################################
' Library name: UIAnimation
' Version: 1.0, Locale ID = 0
' Documentation string: UIAnimation 1.0 Type Library
' Library GUID: {44CA24DB-1A92-4149-BAB5-FB14D64B401E}
' ########################################################################################
#IF NOT %DEF(PBX_UIAnimation_PBI)
#DEFINE PBX_UIAnimation_PBI
%EQUATE `UIANIMARION_INC = 1
' /* header files for imported files */
#INCLUDE ONCE "Legacy/System/WTypes.inc"
#INCLUDE ONCE "Legacy/COM/Unknwn.inc"
' /* Type library */
' uuid(44CA24DB-1A92-4149-BAB5-FB14D64B401E),
' version(1.0),
' helpstring("UIAnimation 1.0 Type Library")
$LIBID_UIAnimation = GUID$("{44CA24DB-1A92-4149-BAB5-FB14D64B401E}")
' ========================================================================================
' ClsIDs (Class identifiers)
' ========================================================================================
$CLSID_UIAnimationManager = GUID$("{4C1FC63A-695C-47E8-A339-1A194BE3D0B8}")
$CLSID_UIAnimationTimer = GUID$("{BFCD4A0C-06B6-4384-B768-0DAA792C380E}")
$CLSID_UIAnimationTransitionFactory = GUID$("{8A9B1CDD-FCD7-419C-8B44-42FD17DB1887}")
$CLSID_UIAnimationTransitionLibrary = GUID$("{1D6322AD-AA85-4EF5-A828-86D71067D145}")
' ========================================================================================
' IIDs (Interface identifiers)
' ========================================================================================
$IID_IUIAnimationInterpolator = GUID$("{7815CBBA-DDF7-478C-A46C-7B6C738B7978}")
$IID_IUIAnimationManager = GUID$("{9169896C-AC8D-4E7D-94E5-67FA4DC2F2E8}")
$IID_IUIAnimationManagerEventHandler = GUID$("{783321ED-78A3-4366-B574-6AF607A64788}")
$IID_IUIAnimationPriorityComparison = GUID$("{83FA9B74-5F86-4618-BC6A-A2FAC19B3F44}")
$IID_IUIAnimationStoryboard = GUID$("{A8FF128F-9BF9-4AF1-9E67-E5E410DEFB84}")
$IID_IUIAnimationStoryboardEventHandler = GUID$("{3D5C9008-EC7C-4364-9F8A-9AF3C58CBAE6}")
$IID_IUIAnimationTimer = GUID$("{6B0EFAD1-A053-41D6-9085-33A689144665}")
$IID_IUIAnimationTimerClientEventHandler = GUID$("{BEDB4DB6-94FA-4BFB-A47F-EF2D9E408C25}")
$IID_IUIAnimationTimerEventHandler = GUID$("{274A7DEA-D771-4095-ABBD-8DF7ABD23CE3}")
$IID_IUIAnimationTimerUpdateHandler = GUID$("{195509B7-5D5E-4E3E-B278-EE3759B367AD}")
$IID_IUIAnimationTransition = GUID$("{DC6CE252-F731-41CF-B610-614B6CA049AD}")
$IID_IUIAnimationTransitionFactory = GUID$("{FCD91E03-3E3B-45AD-BBB1-6DFC8153743D}")
$IID_IUIAnimationTransitionLibrary = GUID$("{CA5A14B1-D24F-48B8-8FE4-C78169BA954E}")
$IID_IUIAnimationVariable = GUID$("{8CEEB155-2849-4CE5-9448-91FF70E1E4D9}")
$IID_IUIAnimationVariableChangeHandler = GUID$("{6358B7BA-87D2-42D5-BF71-82E919DD5862}")
$IID_IUIAnimationVariableIntegerChangeHandler = GUID$("{BB3E1550-356E-44B0-99DA-85AC6017865E}")
'typedef DOUBLE UI_ANIMATION_SECONDS;
%EQUATE `UI_ANIMATION_SECONDS_EVENTUALLY = -1
' enum UI_ANIMATION_UPDATE_RESULT
%EQUATE `UI_ANIMATION_UPDATE_NO_CHANGE = 0
%EQUATE `UI_ANIMATION_UPDATE_VARIABLES_CHANGED = 1
' enum UI_ANIMATION_MANAGER_STATUS
%EQUATE `UI_ANIMATION_MANAGER_IDLE = 0
%EQUATE `UI_ANIMATION_MANAGER_BUSY = 1
' enum UI_ANIMATION_MODE
%EQUATE `UI_ANIMATION_MODE_DISABLED = 0
%EQUATE `UI_ANIMATION_MODE_SYSTEM_DEFAULT = 1
%EQUATE `UI_ANIMATION_MODE_ENABLED = 2
' ########################################################################################
' IUIAnimationManager interface
' IID = 9169896C-AC8D-4E7D-94E5-67FA4DC2F2E8
' Inherited interface = IUnknown
' Defines the animation manager, which provides a central interface for creating and
' managing UI animations.
' ########################################################################################
#IF NOT %DEF(%IUIAnimationManager_INTERFACE_DEFINED)
 %IUIAnimationManager_INTERFACE_DEFINED = 1
INTERFACE IUIAnimationManager $IID_IUIAnimationManager
 INHERIT IAutomation
 ' =====================================================================================
 METHOD CreateAnimationVariable ( ' VTable offset = 12
 BYVAL initialValue AS DOUBLE
 ) AS IUIAnimationVariable
 ' =====================================================================================
 METHOD ScheduleTransition ( ' VTable offset = 16
 BYVAL variable AS IUIAnimationVariable
 , BYVAL transition AS IUIAnimationTransition
 , BYVAL timeNow AS DOUBLE
 )
 ' =====================================================================================
 METHOD CreateStoryboard ( ' VTable offset = 20
 ) AS IUIAnimationStoryboard
 ' =====================================================================================
 METHOD FinishAllStoryboards ( ' VTable offset = 24
 BYVAL completionDeadline AS DOUBLE
 )
 ' =====================================================================================
 METHOD AbandonAllStoryboards ( ' VTable offset = 28
 )
 ' =====================================================================================
 METHOD Update ( ' VTable offset = 32
 BYVAL timeNow AS DOUBLE
 , OPTIONAL BYREF updateResult AS LONG
 )
 ' =====================================================================================
 METHOD GetVariableFromTag ( ' VTable offset = 36
 BYVAL object AS IUnknown
 , BYVAL id AS DWORD
 ) AS IUIAnimationVariable
 ' =====================================================================================
 METHOD GetStoryboardFromTag ( ' VTable offset = 40
 BYVAL object AS IUnknown
 , BYVAL id AS DWORD
 ) AS IUIAnimationStoryboard
 ' =====================================================================================
 METHOD GetStatus ( ' VTable offset = 44
 ) AS LONG
 ' =====================================================================================
 METHOD SetAnimationMode ( ' VTable offset = 48
 BYVAL mode AS LONG
 )
 ' =====================================================================================
 METHOD Pause ( ' VTable offset = 52
 )
 ' =====================================================================================
 METHOD Resume ( ' VTable offset = 56
 )
 ' =====================================================================================
 METHOD SetManagerEventHandler ( ' VTable offset = 60
 OPTIONAL BYVAL handler AS IUIAnimationManagerEventHandler
 )
 ' =====================================================================================
 METHOD SetCancelPriorityComparison ( ' VTable offset = 64
 OPTIONAL BYVAL comparison AS IUIAnimationPriorityComparison
 )
 ' =====================================================================================
 METHOD SetTrimPriorityComparison ( ' VTable offset = 68
 OPTIONAL BYVAL comparison AS IUIAnimationPriorityComparison
 )
 ' =====================================================================================
 METHOD SetCompressPriorityComparison ( ' VTable offset = 72
 OPTIONAL BYVAL comparison AS IUIAnimationPriorityComparison
 )
 ' =====================================================================================
 METHOD SetConcludePriorityComparison ( ' VTable offset = 76
 OPTIONAL BYVAL comparison AS IUIAnimationPriorityComparison
 )
 ' =====================================================================================
 METHOD SetDefaultLongestAcceptableDelay ( ' VTable offset = 80
 BYVAL delay AS DOUBLE
 )
 ' =====================================================================================
 METHOD Shutdown ( ' VTable offset = 84
 )
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IUIAnimationManager_INTERFACE_DEFINED__ */
' enum UI_ANIMATION_ROUNDING_MODE
%EQUATE `UI_ANIMATION_ROUNDING_NEAREST = 0
%EQUATE `UI_ANIMATION_ROUNDING_FLOOR = 1
%EQUATE `UI_ANIMATION_ROUNDING_CEILING = 2
' ########################################################################################
' IUIAnimationVariable interface
' IID = 8CEEB155-2849-4ce5-9448-91FF70E1E4D9
' Inherited interface = IUnknown
' Defines an animation variable, which represents a value that can be animated.
' ########################################################################################
#IF NOT %DEF(%IUIAnimationVariable_INTERFACE_DEFINED)
 %IUIAnimationVariable_INTERFACE_DEFINED = 1
INTERFACE IUIAnimationVariable $IID_IUIAnimationVariable
 INHERIT IAutomation
 ' =====================================================================================
 METHOD GetValue ( ' VTable offset = 12
 ) AS DOUBLE
 ' =====================================================================================
 METHOD GetFinalValue ( ' VTable offset = 16
 ) AS DOUBLE
 ' =====================================================================================
 METHOD GetPreviousValue ( ' VTable offset = 20
 ) AS DOUBLE
 ' =====================================================================================
 METHOD GetIntegerValue ( ' VTable offset = 24
 ) AS LONG
 ' =====================================================================================
 METHOD GetFinalIntegerValue ( ' VTable offset = 28
 ) AS LONG
 ' =====================================================================================
 METHOD GetPreviousIntegerValue ( ' VTable offset = 32
 ) AS LONG
 ' =====================================================================================
 METHOD GetCurrentStoryboard ( ' VTable offset = 36
 ) AS IUIAnimationStoryboard
 ' =====================================================================================
 METHOD SetLowerBound ( ' VTable offset = 40
 BYREF bound AS DOUBLE
 )
 ' =====================================================================================
 METHOD SetUpperBound ( ' VTable offset = 44
 BYREF bound AS DOUBLE
 )
 ' =====================================================================================
 METHOD SetRoundingMode ( ' VTable offset = 48
 BYVAL mode AS LONG
 )
 ' =====================================================================================
 METHOD SetTag ( ' VTable offset = 52
 BYVAL object AS IUnknown
 , BYVAL id AS DWORD
 )
 ' =====================================================================================
 METHOD GetTag ( ' VTable offset = 56
 OPTIONAL BYREF object AS IUnknown
 , OPTIONAL BYREF id AS DWORD
 )
 ' =====================================================================================
 METHOD SetVariableChangeHandler ( ' VTable offset = 60
 OPTIONAL BYVAL handler AS IUIAnimationVariableChangeHandler
 )
 ' =====================================================================================
 METHOD SetVariableIntegerChangeHandler ( ' VTable offset = 64
 OPTIONAL BYVAL handler AS IUIAnimationVariableIntegerChangeHandler
 )
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IUIAnimationVariable_INTERFACE_DEFINED__ */
' enum UI_ANIMATION_STORYBOARD_STATUS
%EQUATE `UI_ANIMATION_STORYBOARD_BUILDING = 0
%EQUATE `UI_ANIMATION_STORYBOARD_SCHEDULED = 1
%EQUATE `UI_ANIMATION_STORYBOARD_CANCELLED = 2
%EQUATE `UI_ANIMATION_STORYBOARD_PLAYING = 3
%EQUATE `UI_ANIMATION_STORYBOARD_TRUNCATED = 4
%EQUATE `UI_ANIMATION_STORYBOARD_FINISHED = 5
%EQUATE `UI_ANIMATION_STORYBOARD_READY = 6
%EQUATE `UI_ANIMATION_STORYBOARD_INSUFFICIENT_PRIORITY = 7
' enum UI_ANIMATION_SCHEDULING_RESULT
%EQUATE `UI_ANIMATION_SCHEDULING_UNEXPECTED_FAILURE = 0
%EQUATE `UI_ANIMATION_SCHEDULING_INSUFFICIENT_PRIORITY = 1
%EQUATE `UI_ANIMATION_SCHEDULING_ALREADY_SCHEDULED = 2
%EQUATE `UI_ANIMATION_SCHEDULING_SUCCEEDED = 3
%EQUATE `UI_ANIMATION_SCHEDULING_DEFERRED = 4
'typedef struct __MIDL___MIDL_itf_UIAnimation_0000_0002_0003
' {
' int _;
' } *UI_ANIMATION_KEYFRAME;
' Defines a keyframe, which represents a time offset within a storyboard.
' This structure should be treated as a handle. It is returned as an output parameter by
' some methods and should be used only as a parameter passed back to other methods as an
' input parameter.
' UI_ANIMATION_KEYFRAME_STORYBOARD_START represents the implicit keyframe at the start of
' every storyboard.
TYPE UI_ANIMATION_KEYFRAME
 m_ AS LONG ' int
END TYPE
'#define UI_ANIMATION_KEYFRAME_STORYBOARD_START ( ( UI_ANIMATION_KEYFRAME )-1 )
%EQUATE `UI_ANIMATION_KEYFRAME_STORYBOARD_START = -1
%EQUATE `UI_ANIMATION_REPEAT_INDEFINITELY = -1
' ########################################################################################
' IUIAnimationStoryboard interface
' IID = A8FF128F-9BF9-4AF1-9E67-E5E410DEFB84
' Inherited interface = IUnknown
' Defines a storyboard, which combines animation variables and transitions to define an animation.
' ########################################################################################
#IF NOT %DEF(%IUIAnimationStoryboard_INTERFACE_DEFINED)
 %IUIAnimationStoryboard_INTERFACE_DEFINED = 1
INTERFACE IUIAnimationStoryboard $IID_IUIAnimationStoryboard
 INHERIT IAutomation
 ' =====================================================================================
 METHOD AddTransition ( ' VTable offset = 12
 BYVAL variable AS IUIAnimationVariable
 , BYVAL transition AS IUIAnimationTransition
 )
 ' =====================================================================================
 METHOD AddKeyframeAtOffset ( ' VTable offset = 16
 BYVAL existingKeyframe AS LONG
 , BYVAL offset AS DOUBLE
 ) AS LONG
 ' =====================================================================================
 METHOD AddKeyframeAfterTransition ( ' VTable offset = 20
 BYVAL transition AS IUIAnimationTransition
 ) AS LONG
 ' =====================================================================================
 METHOD AddTransitionAtKeyframe ( ' VTable offset = 24
 BYVAL variable AS IUIAnimationVariable
 , BYVAL transition AS IUIAnimationTransition
 , BYVAL startKeyframe AS LONG
 )
 ' =====================================================================================
 METHOD AddTransitionBetweenKeyframes ( ' VTable offset = 28
 BYVAL variable AS IUIAnimationVariable
 , BYVAL transition AS IUIAnimationTransition
 , BYVAL startKeyframe AS LONG
 , BYVAL endKeyframe AS LONG
 )
 ' =====================================================================================
 METHOD RepeatBetweenKeyframes ( ' VTable offset = 32
 BYVAL startKeyframe AS LONG
 , BYVAL endKeyframe AS LONG
 , BYVAL repetitionCount AS LONG
 )
 ' =====================================================================================
 METHOD HoldVariable ( ' VTable offset = 36
 BYVAL variable AS IUIAnimationVariable
 )
 ' =====================================================================================
 METHOD SetLongestAcceptableDelay ( ' VTable offset = 40
 BYVAL delay AS DOUBLE
 )
 ' =====================================================================================
 METHOD Schedule ( ' VTable offset = 44
 BYVAL timeNow AS DOUBLE
 , OPTIONAL BYREF schedulingResult AS LONG
 )
 ' =====================================================================================
 METHOD Conclude ( ' VTable offset = 48
 )
 ' =====================================================================================
 METHOD Finish ( ' VTable offset = 52
 BYVAL completionDeadline AS DOUBLE
 )
 ' =====================================================================================
 METHOD Abandon ( ' VTable offset = 56
 )
 ' =====================================================================================
 METHOD SetTag ( ' VTable offset = 60
 BYVAL object AS IUnknown
 , BYVAL id AS DWORD
 )
 ' =====================================================================================
 METHOD GetTag ( ' VTable offset = 64
 OPTIONAL BYREF object AS IUnknown
 , OPTIONAL BYREF id AS DWORD
 )
 ' =====================================================================================
 METHOD GetStatus ( ' VTable offset = 68
 ) AS LONG
 ' =====================================================================================
 METHOD GetElapsedTime ( ' VTable offset = 72
 BYREF elapsedTime AS DOUBLE
 )
 ' =====================================================================================
 METHOD SetStoryboardEventHandler ( ' VTable offset = 76
 OPTIONAL BYVAL handler AS IUIAnimationStoryboardEventHandler
 )
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IUIAnimationStoryboard_INTERFACE_DEFINED__ */
' ########################################################################################
' IUIAnimationTransition interface
' IID = DC6CE252-F731-41CF-B610-614B6CA049AD
' Inherited interface = IUnknown
' Defines a transition, which determines how an animation variable changes over time.
' ########################################################################################
#IF NOT %DEF(%IUIAnimationTransition_INTERFACE_DEFINED)
 %IUIAnimationTransition_INTERFACE_DEFINED = 1
INTERFACE IUIAnimationTransition $IID_IUIAnimationTransition
 INHERIT IAutomation
 ' =====================================================================================
 METHOD SetInitialValue ( ' VTable offset = 12
 BYVAL value AS DOUBLE
 )
 ' =====================================================================================
 METHOD SetInitialVelocity ( ' VTable offset = 16
 BYVAL velocity AS DOUBLE
 )
 ' =====================================================================================
 METHOD IsDurationKnown ( ' VTable offset = 20
 )
 ' =====================================================================================
 METHOD GetDuration ( ' VTable offset = 24
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IUIAnimationTransition_INTERFACE_DEFINED__ */
' ########################################################################################
' IUIAnimationManagerEventHandler interface
' IID = 783321ED-78A3-4366-B574-6AF607A64788
' Inherited interface = IUnknown
' Client applications implement an IUIAnimationManagerEventHandler handler to receive
' status updates from an animation manager. Use IUIAnimationManager.SetManagerEventHandler
' to set this handler.
' ########################################################################################
#IF NOT %DEF(%IUIAnimationManagerEventHandler_INTERFACE_DEFINED)
 %IUIAnimationManagerEventHandler_INTERFACE_DEFINED = 1
INTERFACE IUIAnimationManagerEventHandler $IID_IUIAnimationManagerEventHandler
 INHERIT IUnknown
 ' =====================================================================================
 METHOD OnManagerStatusChanged ( ' VTable offset = 12
 BYVAL newStatus AS LONG
 , BYVAL previousStatus AS LONG
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IUIAnimationManagerEventHandler_INTERFACE_DEFINED__ */
' ########################################################################################
' IUIAnimationVariableChangeHandler interface
' IID = 6358B7BA-87D2-42D5-BF71-82E919DD5862
' Inherited interface = IUnknown
' Client applications implement an IUIAnimationVariableChangeHandler handler to receive
' notifications when the value of an animation variable changes. To set this handler for
' an animation variable, use IUIAnimationVariable.SetVariableChangeHandler.
' ########################################################################################
#IF NOT %DEF(%IUIAnimationVariableChangeHandler_INTERFACE_DEFINED)
 %IUIAnimationVariableChangeHandler_INTERFACE_DEFINED = 1
INTERFACE IUIAnimationVariableChangeHandler $IID_IUIAnimationVariableChangeHandler
 INHERIT IUnknown
 ' =====================================================================================
 METHOD OnValueChanged ( ' VTable offset = 12
 BYVAL storyboard AS IUIAnimationStoryboard
 , BYVAL variable AS IUIAnimationVariable
 , BYVAL newValue AS DOUBLE
 , BYVAL previousValue AS DOUBLE
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IUIAnimationVariableChangeHandler_INTERFACE_DEFINED__ */
' ########################################################################################
' IUIAnimationVariableIntegerChangeHandler interface
' IID = BB3E1550-356E-44B0-99DA-85AC6017865E
' Inherited interface = IUnknown
' Client applications implement an IUIAnimationVariableIntegerChangeHandler handler to
' receive notifications when the value of an animation variable changes. To set this
' handler for an animation variable, use IUIAnimationVariable.SetVariableIntegerChangeHandler.
' ########################################################################################
#IF NOT %DEF(%IUIAnimationVariableIntegerChangeHandler_INTERFACE_DEFINED)
 %IUIAnimationVariableIntegerChangeHandler_INTERFACE_DEFINED = 1
INTERFACE IUIAnimationVariableIntegerChangeHandler $IID_IUIAnimationVariableIntegerChangeHandler
 INHERIT IUnknown
 ' =====================================================================================
 METHOD OnIntegerValueChanged ( ' VTable offset = 12
 BYVAL storyboard AS IUIAnimationStoryboard
 , BYVAL variable AS IUIAnimationVariable
 , BYVAL newValue AS LONG
 , BYVAL previousValue AS LONG
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IUIAnimationVariableIntegerChangeHandler_INTERFACE_DEFINED__ */
' ########################################################################################
' IUIAnimationStoryboardEventHandler interface
' IID = 3D5C9008-EC7C-4364-9F8A-9AF3C58CBAE6
' Inherited interface = IUnknown
' Client applications implement an IUIAnimationStoryboardEventHandler handler to receive
' status and update events for a storyboard. Use IUIAnimationStoryboard.SetStoryboardEventHandler
' to set this handler for a storyboard.
' ########################################################################################
#IF NOT %DEF(%IUIAnimationStoryboardEventHandler_INTERFACE_DEFINED)
 %IUIAnimationStoryboardEventHandler_INTERFACE_DEFINED = 1
INTERFACE IUIAnimationStoryboardEventHandler $IID_IUIAnimationStoryboardEventHandler
 INHERIT IUnknown
 ' =====================================================================================
 METHOD OnStoryboardStatusChanged ( ' VTable offset = 12
 BYVAL storyboard AS IUIAnimationStoryboard
 , BYVAL newStatus AS LONG
 , BYVAL previousStatus AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD OnStoryboardUpdated ( ' VTable offset = 16
 BYVAL storyboard AS IUIAnimationStoryboard
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IUIAnimationStoryboardEventHandler_INTERFACE_DEFINED__ */
' enum UI_ANIMATION_PRIORITY_EFFECT
%EQUATE `UI_ANIMATION_PRIORITY_EFFECT_FAILURE = 0
%EQUATE `UI_ANIMATION_PRIORITY_EFFECT_DELAY = 1
' ########################################################################################
' IUIAnimationPriorityComparison interface
' IID = 83FA9B74-5F86-4618-BC6A-A2FAC19B3F44
' Inherited interface = IUnknown
' Client applications implement one or more IUIAnimationPriorityComparison handlers to
' define how scheduling conflicts are resolved. To register these handlers, use
' IUIAnimationManager.SetCancelPriorityComparison, IUIAnimationManager.SetCompressPriorityComparison,
' IUIAnimationManager.SetConcludePriorityComparison, and/or IUIAnimationManager.SetTrimPriorityComparison.
' ########################################################################################
#IF NOT %DEF(%IUIAnimationPriorityComparison_INTERFACE_DEFINED)
 %IUIAnimationPriorityComparison_INTERFACE_DEFINED = 1
INTERFACE IUIAnimationPriorityComparison $IID_IUIAnimationPriorityComparison
 INHERIT IUnknown
 ' =====================================================================================
 METHOD HasPriority ( ' VTable offset = 12
 BYVAL scheduledStoryboard AS IUIAnimationStoryboard
 , BYVAL newStoryboard AS IUIAnimationStoryboard
 , BYVAL priorityEffect AS LONG
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IUIAnimationPriorityComparison_INTERFACE_DEFINED__ */
' enum UI_ANIMATION_SLOPE
%EQUATE `UI_ANIMATION_SLOPE_INCREASING = 0
%EQUATE `UI_ANIMATION_SLOPE_DECREASING = 1
' ########################################################################################
' IUIAnimationTransitionLibrary interface
' IID = CA5A14B1-D24F-48B8-8FE4-C78169BA954E
' Inherited interface = IUnknown
' Defines a library of standard transitions.
' ########################################################################################
#IF NOT %DEF(%IUIAnimationTransitionLibrary_INTERFACE_DEFINED)
 %IUIAnimationTransitionLibrary_INTERFACE_DEFINED = 1
INTERFACE IUIAnimationTransitionLibrary $IID_IUIAnimationTransitionLibrary
 INHERIT IAutomation
 ' =====================================================================================
 METHOD CreateInstantaneousTransition ( ' VTable offset = 12
 BYVAL finalValue AS DOUBLE
 ) AS IUIAnimationTransition
 ' =====================================================================================
 METHOD CreateConstantTransition ( ' VTable offset = 16
 BYVAL duration AS DOUBLE
 ) AS IUIAnimationTransition
 ' =====================================================================================
 METHOD CreateDiscreteTransition ( ' VTable offset = 20
 BYVAL delay AS DOUBLE
 , BYVAL finalValue AS DOUBLE
 , BYVAL hold AS DOUBLE
 ) AS IUIAnimationTransition
 ' =====================================================================================
 METHOD CreateLinearTransition ( ' VTable offset = 24
 BYVAL duration AS DOUBLE
 , BYVAL finalValue AS DOUBLE
 ) AS IUIAnimationTransition
 ' =====================================================================================
 METHOD CreateLinearTransitionFromSpeed ( ' VTable offset = 28
 BYVAL speed AS DOUBLE
 , BYVAL finalValue AS DOUBLE
 ) AS IUIAnimationTransition
 ' =====================================================================================
 METHOD CreateSinusoidalTransitionFromVelocity ( ' VTable offset = 32
 BYVAL duration AS DOUBLE
 , BYVAL period AS DOUBLE
 ) AS IUIAnimationTransition
 ' =====================================================================================
 METHOD CreateSinusoidalTransitionFromRange ( ' VTable offset = 36
 BYVAL duration AS DOUBLE
 , BYVAL minimumValue AS DOUBLE
 , BYVAL maximumValue AS DOUBLE
 , BYVAL period AS DOUBLE
 , BYVAL slope AS LONG
 ) AS IUIAnimationTransition
 ' =====================================================================================
 METHOD CreateAccelerateDecelerateTransition ( ' VTable offset = 40
 BYVAL duration AS DOUBLE
 , BYVAL finalValue AS DOUBLE
 , BYVAL accelerationRatio AS DOUBLE
 , BYVAL decelerationRatio AS DOUBLE
 ) AS IUIAnimationTransition
 ' =====================================================================================
 METHOD CreateReversalTransition ( ' VTable offset = 44
 BYVAL duration AS DOUBLE
 ) AS IUIAnimationTransition
 ' =====================================================================================
 METHOD CreateCubicTransition ( ' VTable offset = 48
 BYVAL duration AS DOUBLE
 , BYVAL finalValue AS DOUBLE
 , BYVAL finalVelocity AS DOUBLE
 ) AS IUIAnimationTransition
 ' =====================================================================================
 METHOD CreateSmoothStopTransition ( ' VTable offset = 52
 BYVAL maximumDuration AS DOUBLE
 , BYVAL finalValue AS DOUBLE
 ) AS IUIAnimationTransition
 ' =====================================================================================
 METHOD CreateParabolicTransitionFromAcceleration ( ' VTable offset = 56
 BYVAL finalValue AS DOUBLE
 , BYVAL finalVelocity AS DOUBLE
 , BYVAL acceleration AS DOUBLE
 ) AS IUIAnimationTransition
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IUIAnimationTransitionLibrary_INTERFACE_DEFINED__ */
' enum UI_ANIMATION_DEPENDENCIES
%EQUATE `UI_ANIMATION_DEPENDENCY_NONE = 0
%EQUATE `UI_ANIMATION_DEPENDENCY_INTERMEDIATE_VALUES = &H1
%EQUATE `UI_ANIMATION_DEPENDENCY_FINAL_VALUE = &H2
%EQUATE `UI_ANIMATION_DEPENDENCY_FINAL_VELOCITY = &H4
%EQUATE `UI_ANIMATION_DEPENDENCY_DURATION = &H8
'DEFINE_ENUM_FLAG_OPERATORS(UI_ANIMATION_DEPENDENCIES);
' ########################################################################################
' IUIAnimationInterpolator interface
' IID = 7815CBBA-DDF7-478C-A46C-7B6C738B7978
' Inherited interface = IUnknown
' Defines methods for creating a custom interpolator.
' ########################################################################################
#IF NOT %DEF(%IUIAnimationInterpolator_INTERFACE_DEFINED)
 %IUIAnimationInterpolator_INTERFACE_DEFINED = 1
INTERFACE IUIAnimationInterpolator $IID_IUIAnimationInterpolator
 INHERIT IAutomation
 ' =====================================================================================
 METHOD SetInitialValueAndVelocity ( ' VTable offset = 12
 BYVAL initialValue AS DOUBLE
 , BYVAL initialVelocity AS DOUBLE
 )
 ' =====================================================================================
 METHOD SetDuration ( ' VTable offset = 16
 BYVAL duration AS DOUBLE
 )
 ' =====================================================================================
 METHOD GetDuration ( ' VTable offset = 20
 ) AS DOUBLE
 ' =====================================================================================
 METHOD GetFinalValue ( ' VTable offset = 24
 ) AS DOUBLE
 ' =====================================================================================
 METHOD InterpolateValue ( ' VTable offset = 28
 BYVAL offset AS DOUBLE
 ) AS DOUBLE
 ' =====================================================================================
 METHOD InterpolateVelocity ( ' VTable offset = 32
 BYVAL offset AS DOUBLE
 ) AS DOUBLE
 ' =====================================================================================
 METHOD GetDependencies ( ' VTable offset = 36
 BYREF initialValueDependencies AS LONG
 , BYREF initialVelocityDependencies AS LONG
 , BYREF durationDependencies AS LONG
 )
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IUIAnimationInterpolator_INTERFACE_DEFINED__ */
' ########################################################################################
' IUIAnimationTransitionFactory interface
' IID = FCD91E03-3E3B-45AD-BBB1-6DFC8153743D
' Inherited interface = IUnknown
' Defines methods for creating transitions from custom interpolators.
' ########################################################################################
#IF NOT %DEF(%IUIAnimationTransitionFactory_INTERFACE_DEFINED)
 %IUIAnimationTransitionFactory_INTERFACE_DEFINED = 1
INTERFACE IUIAnimationTransitionFactory $IID_IUIAnimationTransitionFactory
 INHERIT IAutomation
 ' =====================================================================================
 METHOD CreateTransition ( ' VTable offset = 12
 BYVAL interpolator AS IUIAnimationInterpolator
 ) AS IUIAnimationTransition
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IUIAnimationTransitionFactory_INTERFACE_DEFINED__ */
' enum UI_ANIMATION_IDLE_BEHAVIOR
%EQUATE `UI_ANIMATION_IDLE_BEHAVIOR_CONTINUE = 0
%EQUATE `UI_ANIMATION_IDLE_BEHAVIOR_DISABLE = 1
' ########################################################################################
' IUIAnimationTimer interface
' IID = 6B0EFAD1-A053-41D6-9085-33A689144665
' Inherited interface = IUnknown
' Defines an animation timer, which provides services for managing animation timing.
' ########################################################################################
#IF NOT %DEF(%IUIAnimationTimer_INTERFACE_DEFINED)
 %IUIAnimationTimer_INTERFACE_DEFINED = 1
INTERFACE IUIAnimationTimer $IID_IUIAnimationTimer
 INHERIT IAutomation
 ' =====================================================================================
 METHOD SetTimerUpdateHandler ( ' VTable offset = 12
 BYVAL updateHandler AS IUIAnimationTimerUpdateHandler
 , BYVAL idleBehavior AS LONG
 )
 ' =====================================================================================
 METHOD SetTimerEventHandler ( ' VTable offset = 16
 OPTIONAL BYVAL handler AS IUIAnimationTimerEventHandler
 )
 ' =====================================================================================
 METHOD Enable ( ' VTable offset = 20
 )
 ' =====================================================================================
 METHOD Disable ( ' VTable offset = 24
 )
 ' =====================================================================================
 METHOD IsEnabled ( ' VTable offset = 28
 )
 ' =====================================================================================
 METHOD GetTime ( ' VTable offset = 32
 BYREF seconds AS DOUBLE
 )
 ' =====================================================================================
 METHOD SetFrameRateThreshold ( ' VTable offset = 36
 BYVAL framesPerSecond AS DWORD
 )
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IUIAnimationTimer_INTERFACE_DEFINED__ */
' ########################################################################################
' IUIAnimationTimerUpdateHandler interface
' IID = 195509B7-5D5E-4E3E-B278-EE3759B367AD
' Inherited interface = IUnknown
' Defines methods for handling timing update events.
' ########################################################################################
#IF NOT %DEF(%IUIAnimationTimerUpdateHandler_INTERFACE_DEFINED)
 %IUIAnimationTimerUpdateHandler_INTERFACE_DEFINED = 1
INTERFACE IUIAnimationTimerUpdateHandler $IID_IUIAnimationTimerUpdateHandler
 INHERIT IAutomation
 ' =====================================================================================
 METHOD OnUpdate ( ' VTable offset = 12
 BYVAL timeNow AS DOUBLE
 ) AS LONG
 ' =====================================================================================
 METHOD SetTimerClientEventHandler ( ' VTable offset = 16
 BYVAL handler AS IUIAnimationTimerClientEventHandler
 )
 ' =====================================================================================
 METHOD ClearTimerClientEventHandler ( ' VTable offset = 20
 )
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IUIAnimationTimerUpdateHandler_INTERFACE_DEFINED__ */
' enum UI_ANIMATION_TIMER_CLIENT_STATUS
%EQUATE `UI_ANIMATION_TIMER_CLIENT_IDLE = 0
%EQUATE `UI_ANIMATION_TIMER_CLIENT_BUSY = 1
' ########################################################################################
' IUIAnimationTimerClientEventHandler interface
' IID = BEDB4DB6-94FA-4BFB-A47F-EF2D9E408C25
' Inherited interface = IUnknown
' Client applications generally do not need to implement this interface unless they are
' creating a timer component similar to IUIAnimationTimer.
' ########################################################################################
#IF NOT %DEF(%IUIAnimationTimerClientEventHandler_INTERFACE_DEFINED)
 %IUIAnimationTimerClientEventHandler_INTERFACE_DEFINED = 1
INTERFACE IUIAnimationTimerClientEventHandler $IID_IUIAnimationTimerClientEventHandler
 INHERIT IUnknown
 ' =====================================================================================
 METHOD OnTimerClientStatusChanged ( ' VTable offset = 12
 BYVAL newStatus AS LONG
 , BYVAL previousStatus AS LONG
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IUIAnimationTimerClientEventHandler_INTERFACE_DEFINED__ */
' ########################################################################################
' IUIAnimationTimerEventHandler interface
' IID = 274A7DEA-D771-4095-ABBD-8DF7ABD23CE3
' Inherited interface = IUnknown
' Client applications implement an IUIAnimationTimerEventHandler handler to receive timer
' events. Use IUIAnimationTimer.SetTimerEventHandler to set this handler.
' ########################################################################################
#IF NOT %DEF(%IUIAnimationTimerEventHandler_INTERFACE_DEFINED)
 %IUIAnimationTimerEventHandler_INTERFACE_DEFINED = 1
INTERFACE IUIAnimationTimerEventHandler $IID_IUIAnimationTimerEventHandler
 INHERIT IUnknown
 ' =====================================================================================
 METHOD OnPreUpdate ( ' VTable offset = 12
 ) AS LONG
 ' =====================================================================================
 METHOD OnPostUpdate ( ' VTable offset = 16
 ) AS LONG
 ' =====================================================================================
 METHOD OnRenderingTooSlow ( ' VTable offset = 20
 BYVAL framesPerSecond AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IUIAnimationTimerEventHandler_INTERFACE_DEFINED__ */
#ENDIF
