/*** Autogenerated by WIDL 5.0.5 from uianimation.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __uianimation_h__
#define __uianimation_h__

/* Forward declarations */

#ifndef __IUIAnimationManagerEventHandler_FWD_DEFINED__
#define __IUIAnimationManagerEventHandler_FWD_DEFINED__
typedef interface IUIAnimationManagerEventHandler IUIAnimationManagerEventHandler;
#ifdef __cplusplus
interface IUIAnimationManagerEventHandler;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationVariableChangeHandler_FWD_DEFINED__
#define __IUIAnimationVariableChangeHandler_FWD_DEFINED__
typedef interface IUIAnimationVariableChangeHandler IUIAnimationVariableChangeHandler;
#ifdef __cplusplus
interface IUIAnimationVariableChangeHandler;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationVariableIntegerChangeHandler_FWD_DEFINED__
#define __IUIAnimationVariableIntegerChangeHandler_FWD_DEFINED__
typedef interface IUIAnimationVariableIntegerChangeHandler IUIAnimationVariableIntegerChangeHandler;
#ifdef __cplusplus
interface IUIAnimationVariableIntegerChangeHandler;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationStoryboardEventHandler_FWD_DEFINED__
#define __IUIAnimationStoryboardEventHandler_FWD_DEFINED__
typedef interface IUIAnimationStoryboardEventHandler IUIAnimationStoryboardEventHandler;
#ifdef __cplusplus
interface IUIAnimationStoryboardEventHandler;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationTransition_FWD_DEFINED__
#define __IUIAnimationTransition_FWD_DEFINED__
typedef interface IUIAnimationTransition IUIAnimationTransition;
#ifdef __cplusplus
interface IUIAnimationTransition;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationVariable_FWD_DEFINED__
#define __IUIAnimationVariable_FWD_DEFINED__
typedef interface IUIAnimationVariable IUIAnimationVariable;
#ifdef __cplusplus
interface IUIAnimationVariable;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationStoryboard_FWD_DEFINED__
#define __IUIAnimationStoryboard_FWD_DEFINED__
typedef interface IUIAnimationStoryboard IUIAnimationStoryboard;
#ifdef __cplusplus
interface IUIAnimationStoryboard;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationTimerClientEventHandler_FWD_DEFINED__
#define __IUIAnimationTimerClientEventHandler_FWD_DEFINED__
typedef interface IUIAnimationTimerClientEventHandler IUIAnimationTimerClientEventHandler;
#ifdef __cplusplus
interface IUIAnimationTimerClientEventHandler;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationTimerUpdateHandler_FWD_DEFINED__
#define __IUIAnimationTimerUpdateHandler_FWD_DEFINED__
typedef interface IUIAnimationTimerUpdateHandler IUIAnimationTimerUpdateHandler;
#ifdef __cplusplus
interface IUIAnimationTimerUpdateHandler;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationTimerEventHandler_FWD_DEFINED__
#define __IUIAnimationTimerEventHandler_FWD_DEFINED__
typedef interface IUIAnimationTimerEventHandler IUIAnimationTimerEventHandler;
#ifdef __cplusplus
interface IUIAnimationTimerEventHandler;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationTimer_FWD_DEFINED__
#define __IUIAnimationTimer_FWD_DEFINED__
typedef interface IUIAnimationTimer IUIAnimationTimer;
#ifdef __cplusplus
interface IUIAnimationTimer;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationManager_FWD_DEFINED__
#define __IUIAnimationManager_FWD_DEFINED__
typedef interface IUIAnimationManager IUIAnimationManager;
#ifdef __cplusplus
interface IUIAnimationManager;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationPriorityComparison_FWD_DEFINED__
#define __IUIAnimationPriorityComparison_FWD_DEFINED__
typedef interface IUIAnimationPriorityComparison IUIAnimationPriorityComparison;
#ifdef __cplusplus
interface IUIAnimationPriorityComparison;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationTransitionFactory_FWD_DEFINED__
#define __IUIAnimationTransitionFactory_FWD_DEFINED__
typedef interface IUIAnimationTransitionFactory IUIAnimationTransitionFactory;
#ifdef __cplusplus
interface IUIAnimationTransitionFactory;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationInterpolator_FWD_DEFINED__
#define __IUIAnimationInterpolator_FWD_DEFINED__
typedef interface IUIAnimationInterpolator IUIAnimationInterpolator;
#ifdef __cplusplus
interface IUIAnimationInterpolator;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationTransitionLibrary_FWD_DEFINED__
#define __IUIAnimationTransitionLibrary_FWD_DEFINED__
typedef interface IUIAnimationTransitionLibrary IUIAnimationTransitionLibrary;
#ifdef __cplusplus
interface IUIAnimationTransitionLibrary;
#endif /* __cplusplus */
#endif

#ifndef __UIAnimationTimer_FWD_DEFINED__
#define __UIAnimationTimer_FWD_DEFINED__
#ifdef __cplusplus
typedef class UIAnimationTimer UIAnimationTimer;
#else
typedef struct UIAnimationTimer UIAnimationTimer;
#endif /* defined __cplusplus */
#endif /* defined __UIAnimationTimer_FWD_DEFINED__ */

#ifndef __UIAnimationManager_FWD_DEFINED__
#define __UIAnimationManager_FWD_DEFINED__
#ifdef __cplusplus
typedef class UIAnimationManager UIAnimationManager;
#else
typedef struct UIAnimationManager UIAnimationManager;
#endif /* defined __cplusplus */
#endif /* defined __UIAnimationManager_FWD_DEFINED__ */

#ifndef __UIAnimationTransitionFactory_FWD_DEFINED__
#define __UIAnimationTransitionFactory_FWD_DEFINED__
#ifdef __cplusplus
typedef class UIAnimationTransitionFactory UIAnimationTransitionFactory;
#else
typedef struct UIAnimationTransitionFactory UIAnimationTransitionFactory;
#endif /* defined __cplusplus */
#endif /* defined __UIAnimationTransitionFactory_FWD_DEFINED__ */

#ifndef __UIAnimationTransitionLibrary_FWD_DEFINED__
#define __UIAnimationTransitionLibrary_FWD_DEFINED__
#ifdef __cplusplus
typedef class UIAnimationTransitionLibrary UIAnimationTransitionLibrary;
#else
typedef struct UIAnimationTransitionLibrary UIAnimationTransitionLibrary;
#endif /* defined __cplusplus */
#endif /* defined __UIAnimationTransitionLibrary_FWD_DEFINED__ */

/* Headers for imported files */

#include <wtypes.h>
#include <unknwn.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifndef __IUIAnimationStoryboard_FWD_DEFINED__
#define __IUIAnimationStoryboard_FWD_DEFINED__
typedef interface IUIAnimationStoryboard IUIAnimationStoryboard;
#ifdef __cplusplus
interface IUIAnimationStoryboard;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationVariable_FWD_DEFINED__
#define __IUIAnimationVariable_FWD_DEFINED__
typedef interface IUIAnimationVariable IUIAnimationVariable;
#ifdef __cplusplus
interface IUIAnimationVariable;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationManager_FWD_DEFINED__
#define __IUIAnimationManager_FWD_DEFINED__
typedef interface IUIAnimationManager IUIAnimationManager;
#ifdef __cplusplus
interface IUIAnimationManager;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationPriorityComparison_FWD_DEFINED__
#define __IUIAnimationPriorityComparison_FWD_DEFINED__
typedef interface IUIAnimationPriorityComparison IUIAnimationPriorityComparison;
#ifdef __cplusplus
interface IUIAnimationPriorityComparison;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationTransitionFactory_FWD_DEFINED__
#define __IUIAnimationTransitionFactory_FWD_DEFINED__
typedef interface IUIAnimationTransitionFactory IUIAnimationTransitionFactory;
#ifdef __cplusplus
interface IUIAnimationTransitionFactory;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationInterpolator_FWD_DEFINED__
#define __IUIAnimationInterpolator_FWD_DEFINED__
typedef interface IUIAnimationInterpolator IUIAnimationInterpolator;
#ifdef __cplusplus
interface IUIAnimationInterpolator;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationManagerEventHandler_FWD_DEFINED__
#define __IUIAnimationManagerEventHandler_FWD_DEFINED__
typedef interface IUIAnimationManagerEventHandler IUIAnimationManagerEventHandler;
#ifdef __cplusplus
interface IUIAnimationManagerEventHandler;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationTransition_FWD_DEFINED__
#define __IUIAnimationTransition_FWD_DEFINED__
typedef interface IUIAnimationTransition IUIAnimationTransition;
#ifdef __cplusplus
interface IUIAnimationTransition;
#endif /* __cplusplus */
#endif

#ifndef __IUIAnimationTransitionLibrary_FWD_DEFINED__
#define __IUIAnimationTransitionLibrary_FWD_DEFINED__
typedef interface IUIAnimationTransitionLibrary IUIAnimationTransitionLibrary;
#ifdef __cplusplus
interface IUIAnimationTransitionLibrary;
#endif /* __cplusplus */
#endif

typedef DOUBLE UI_ANIMATION_SECONDS;
typedef struct __WIDL_uianimation_generated_name_0000000B {
    int _;
} *UI_ANIMATION_KEYFRAME;
#define UI_ANIMATION_KEYFRAME_STORYBOARD_START ((UI_ANIMATION_KEYFRAME)-1)

#define UI_ANIMATION_SECONDS_EVENTUALLY (-1.00000000000000)

typedef enum __WIDL_uianimation_generated_name_0000000C {
    UI_ANIMATION_MANAGER_IDLE = 0,
    UI_ANIMATION_MANAGER_BUSY = 1
} UI_ANIMATION_MANAGER_STATUS;
typedef enum __WIDL_uianimation_generated_name_0000000D {
    UI_ANIMATION_ROUNDING_NEAREST = 0,
    UI_ANIMATION_ROUNDING_FLOOR = 1,
    UI_ANIMATION_ROUNDING_CEILING = 2
} UI_ANIMATION_ROUNDING_MODE;
typedef enum __WIDL_uianimation_generated_name_0000000E {
    UI_ANIMATION_SCHEDULING_UNEXPECTED_FAILURE = 0,
    UI_ANIMATION_SCHEDULING_INSUFFICIENT_PRIORITY = 1,
    UI_ANIMATION_SCHEDULING_ALREADY_SCHEDULED = 2,
    UI_ANIMATION_SCHEDULING_SUCCEEDED = 3,
    UI_ANIMATION_SCHEDULING_DEFERRED = 4
} UI_ANIMATION_SCHEDULING_RESULT;
typedef enum __WIDL_uianimation_generated_name_0000000F {
    UI_ANIMATION_STORYBOARD_BUILDING = 0,
    UI_ANIMATION_STORYBOARD_SCHEDULED = 1,
    UI_ANIMATION_STORYBOARD_CANCELLED = 2,
    UI_ANIMATION_STORYBOARD_PLAYING = 3,
    UI_ANIMATION_STORYBOARD_TRUNCATED = 4,
    UI_ANIMATION_STORYBOARD_FINISHED = 5,
    UI_ANIMATION_STORYBOARD_READY = 6,
    UI_ANIMATION_STORYBOARD_INSUFFICIENT_PRIORITY = 7
} UI_ANIMATION_STORYBOARD_STATUS;
typedef enum __WIDL_uianimation_generated_name_00000010 {
    UI_ANIMATION_UPDATE_NO_CHANGE = 0,
    UI_ANIMATION_UPDATE_VARIABLES_CHANGED = 1
} UI_ANIMATION_UPDATE_RESULT;
typedef enum __WIDL_uianimation_generated_name_00000011 {
    UI_ANIMATION_TIMER_CLIENT_IDLE = 0,
    UI_ANIMATION_TIMER_CLIENT_BUSY = 1
} UI_ANIMATION_TIMER_CLIENT_STATUS;
typedef enum __WIDL_uianimation_generated_name_00000012 {
    UI_ANIMATION_IDLE_BEHAVIOR_CONTINUE = 0,
    UI_ANIMATION_IDLE_BEHAVIOR_DISABLE = 1
} UI_ANIMATION_IDLE_BEHAVIOR;
typedef enum __WIDL_uianimation_generated_name_00000013 {
    UI_ANIMATION_MODE_DISABLED = 0,
    UI_ANIMATION_MODE_SYSTEM_DEFAULT = 1,
    UI_ANIMATION_MODE_ENABLED = 2
} UI_ANIMATION_MODE;
typedef enum __WIDL_uianimation_generated_name_00000014 {
    UI_ANIMATION_PRIORITY_EFFECT_FAILURE = 0,
    UI_ANIMATION_PRIORITY_EFFECT_DELAY = 1
} UI_ANIMATION_PRIORITY_EFFECT;
typedef enum __WIDL_uianimation_generated_name_00000015 {
    UI_ANIMATION_DEPENDENCY_NONE = 0,
    UI_ANIMATION_DEPENDENCY_INTERMEDIATE_VALUES = 0x1,
    UI_ANIMATION_DEPENDENCY_FINAL_VALUE = 0x2,
    UI_ANIMATION_DEPENDENCY_FINAL_VELOCITY = 0x4,
    UI_ANIMATION_DEPENDENCY_DURATION = 0x8
} UI_ANIMATION_DEPENDENCIES;
typedef enum __WIDL_uianimation_generated_name_00000016 {
    UI_ANIMATION_SLOPE_INCREASING = 0,
    UI_ANIMATION_SLOPE_DECREASING = 1
} UI_ANIMATION_SLOPE;
/*****************************************************************************
 * IUIAnimationManagerEventHandler interface
 */
#ifndef __IUIAnimationManagerEventHandler_INTERFACE_DEFINED__
#define __IUIAnimationManagerEventHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAnimationManagerEventHandler, 0x783321ed, 0x78a3, 0x4366, 0xb5,0x74, 0x6a,0xf6,0x07,0xa6,0x47,0x88);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("783321ed-78a3-4366-b574-6af607a64788")
IUIAnimationManagerEventHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnManagerStatusChanged(
        UI_ANIMATION_MANAGER_STATUS status,
        UI_ANIMATION_MANAGER_STATUS prev_status) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAnimationManagerEventHandler, 0x783321ed, 0x78a3, 0x4366, 0xb5,0x74, 0x6a,0xf6,0x07,0xa6,0x47,0x88)
#endif
#else
typedef struct IUIAnimationManagerEventHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAnimationManagerEventHandler *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAnimationManagerEventHandler *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAnimationManagerEventHandler *This);

    /*** IUIAnimationManagerEventHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *OnManagerStatusChanged)(
        IUIAnimationManagerEventHandler *This,
        UI_ANIMATION_MANAGER_STATUS status,
        UI_ANIMATION_MANAGER_STATUS prev_status);

    END_INTERFACE
} IUIAnimationManagerEventHandlerVtbl;

interface IUIAnimationManagerEventHandler {
    CONST_VTBL IUIAnimationManagerEventHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAnimationManagerEventHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAnimationManagerEventHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAnimationManagerEventHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAnimationManagerEventHandler methods ***/
#define IUIAnimationManagerEventHandler_OnManagerStatusChanged(This,status,prev_status) (This)->lpVtbl->OnManagerStatusChanged(This,status,prev_status)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IUIAnimationManagerEventHandler_QueryInterface(IUIAnimationManagerEventHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IUIAnimationManagerEventHandler_AddRef(IUIAnimationManagerEventHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IUIAnimationManagerEventHandler_Release(IUIAnimationManagerEventHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAnimationManagerEventHandler methods ***/
static FORCEINLINE HRESULT IUIAnimationManagerEventHandler_OnManagerStatusChanged(IUIAnimationManagerEventHandler* This,UI_ANIMATION_MANAGER_STATUS status,UI_ANIMATION_MANAGER_STATUS prev_status) {
    return This->lpVtbl->OnManagerStatusChanged(This,status,prev_status);
}
#endif
#endif

#endif


#endif  /* __IUIAnimationManagerEventHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAnimationVariableChangeHandler interface
 */
#ifndef __IUIAnimationVariableChangeHandler_INTERFACE_DEFINED__
#define __IUIAnimationVariableChangeHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAnimationVariableChangeHandler, 0x6358b7ba, 0x87d2, 0x42d5, 0xbf,0x71, 0x82,0xe9,0x19,0xdd,0x58,0x62);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6358b7ba-87d2-42d5-bf71-82e919dd5862")
IUIAnimationVariableChangeHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnValueChanged(
        IUIAnimationStoryboard *storyboard,
        IUIAnimationVariable *variable,
        DOUBLE value,
        DOUBLE prev_value) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAnimationVariableChangeHandler, 0x6358b7ba, 0x87d2, 0x42d5, 0xbf,0x71, 0x82,0xe9,0x19,0xdd,0x58,0x62)
#endif
#else
typedef struct IUIAnimationVariableChangeHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAnimationVariableChangeHandler *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAnimationVariableChangeHandler *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAnimationVariableChangeHandler *This);

    /*** IUIAnimationVariableChangeHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *OnValueChanged)(
        IUIAnimationVariableChangeHandler *This,
        IUIAnimationStoryboard *storyboard,
        IUIAnimationVariable *variable,
        DOUBLE value,
        DOUBLE prev_value);

    END_INTERFACE
} IUIAnimationVariableChangeHandlerVtbl;

interface IUIAnimationVariableChangeHandler {
    CONST_VTBL IUIAnimationVariableChangeHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAnimationVariableChangeHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAnimationVariableChangeHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAnimationVariableChangeHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAnimationVariableChangeHandler methods ***/
#define IUIAnimationVariableChangeHandler_OnValueChanged(This,storyboard,variable,value,prev_value) (This)->lpVtbl->OnValueChanged(This,storyboard,variable,value,prev_value)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IUIAnimationVariableChangeHandler_QueryInterface(IUIAnimationVariableChangeHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IUIAnimationVariableChangeHandler_AddRef(IUIAnimationVariableChangeHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IUIAnimationVariableChangeHandler_Release(IUIAnimationVariableChangeHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAnimationVariableChangeHandler methods ***/
static FORCEINLINE HRESULT IUIAnimationVariableChangeHandler_OnValueChanged(IUIAnimationVariableChangeHandler* This,IUIAnimationStoryboard *storyboard,IUIAnimationVariable *variable,DOUBLE value,DOUBLE prev_value) {
    return This->lpVtbl->OnValueChanged(This,storyboard,variable,value,prev_value);
}
#endif
#endif

#endif


#endif  /* __IUIAnimationVariableChangeHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAnimationVariableIntegerChangeHandler interface
 */
#ifndef __IUIAnimationVariableIntegerChangeHandler_INTERFACE_DEFINED__
#define __IUIAnimationVariableIntegerChangeHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAnimationVariableIntegerChangeHandler, 0xbb3e1550, 0x356e, 0x44b0, 0x99,0xda, 0x85,0xac,0x60,0x17,0x86,0x5e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("bb3e1550-356e-44b0-99da-85ac6017865e")
IUIAnimationVariableIntegerChangeHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnIntegerValueChanged(
        IUIAnimationStoryboard *storyboard,
        IUIAnimationVariable *variable,
        INT32 value,
        INT32 prev_value) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAnimationVariableIntegerChangeHandler, 0xbb3e1550, 0x356e, 0x44b0, 0x99,0xda, 0x85,0xac,0x60,0x17,0x86,0x5e)
#endif
#else
typedef struct IUIAnimationVariableIntegerChangeHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAnimationVariableIntegerChangeHandler *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAnimationVariableIntegerChangeHandler *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAnimationVariableIntegerChangeHandler *This);

    /*** IUIAnimationVariableIntegerChangeHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *OnIntegerValueChanged)(
        IUIAnimationVariableIntegerChangeHandler *This,
        IUIAnimationStoryboard *storyboard,
        IUIAnimationVariable *variable,
        INT32 value,
        INT32 prev_value);

    END_INTERFACE
} IUIAnimationVariableIntegerChangeHandlerVtbl;

interface IUIAnimationVariableIntegerChangeHandler {
    CONST_VTBL IUIAnimationVariableIntegerChangeHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAnimationVariableIntegerChangeHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAnimationVariableIntegerChangeHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAnimationVariableIntegerChangeHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAnimationVariableIntegerChangeHandler methods ***/
#define IUIAnimationVariableIntegerChangeHandler_OnIntegerValueChanged(This,storyboard,variable,value,prev_value) (This)->lpVtbl->OnIntegerValueChanged(This,storyboard,variable,value,prev_value)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IUIAnimationVariableIntegerChangeHandler_QueryInterface(IUIAnimationVariableIntegerChangeHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IUIAnimationVariableIntegerChangeHandler_AddRef(IUIAnimationVariableIntegerChangeHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IUIAnimationVariableIntegerChangeHandler_Release(IUIAnimationVariableIntegerChangeHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAnimationVariableIntegerChangeHandler methods ***/
static FORCEINLINE HRESULT IUIAnimationVariableIntegerChangeHandler_OnIntegerValueChanged(IUIAnimationVariableIntegerChangeHandler* This,IUIAnimationStoryboard *storyboard,IUIAnimationVariable *variable,INT32 value,INT32 prev_value) {
    return This->lpVtbl->OnIntegerValueChanged(This,storyboard,variable,value,prev_value);
}
#endif
#endif

#endif


#endif  /* __IUIAnimationVariableIntegerChangeHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAnimationStoryboardEventHandler interface
 */
#ifndef __IUIAnimationStoryboardEventHandler_INTERFACE_DEFINED__
#define __IUIAnimationStoryboardEventHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAnimationStoryboardEventHandler, 0x3d5c9008, 0xec7c, 0x4364, 0x9f,0x8a, 0x9a,0xf3,0xc5,0x8c,0xba,0xe6);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3d5c9008-ec7c-4364-9f8a-9af3c58cbae6")
IUIAnimationStoryboardEventHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnStoryboardStatusChanged(
        IUIAnimationStoryboard *storyboard,
        UI_ANIMATION_STORYBOARD_STATUS status,
        UI_ANIMATION_STORYBOARD_STATUS prev_status) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnStoryboardUpdated(
        IUIAnimationStoryboard *storyboard) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAnimationStoryboardEventHandler, 0x3d5c9008, 0xec7c, 0x4364, 0x9f,0x8a, 0x9a,0xf3,0xc5,0x8c,0xba,0xe6)
#endif
#else
typedef struct IUIAnimationStoryboardEventHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAnimationStoryboardEventHandler *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAnimationStoryboardEventHandler *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAnimationStoryboardEventHandler *This);

    /*** IUIAnimationStoryboardEventHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *OnStoryboardStatusChanged)(
        IUIAnimationStoryboardEventHandler *This,
        IUIAnimationStoryboard *storyboard,
        UI_ANIMATION_STORYBOARD_STATUS status,
        UI_ANIMATION_STORYBOARD_STATUS prev_status);

    HRESULT (STDMETHODCALLTYPE *OnStoryboardUpdated)(
        IUIAnimationStoryboardEventHandler *This,
        IUIAnimationStoryboard *storyboard);

    END_INTERFACE
} IUIAnimationStoryboardEventHandlerVtbl;

interface IUIAnimationStoryboardEventHandler {
    CONST_VTBL IUIAnimationStoryboardEventHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAnimationStoryboardEventHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAnimationStoryboardEventHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAnimationStoryboardEventHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAnimationStoryboardEventHandler methods ***/
#define IUIAnimationStoryboardEventHandler_OnStoryboardStatusChanged(This,storyboard,status,prev_status) (This)->lpVtbl->OnStoryboardStatusChanged(This,storyboard,status,prev_status)
#define IUIAnimationStoryboardEventHandler_OnStoryboardUpdated(This,storyboard) (This)->lpVtbl->OnStoryboardUpdated(This,storyboard)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IUIAnimationStoryboardEventHandler_QueryInterface(IUIAnimationStoryboardEventHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IUIAnimationStoryboardEventHandler_AddRef(IUIAnimationStoryboardEventHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IUIAnimationStoryboardEventHandler_Release(IUIAnimationStoryboardEventHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAnimationStoryboardEventHandler methods ***/
static FORCEINLINE HRESULT IUIAnimationStoryboardEventHandler_OnStoryboardStatusChanged(IUIAnimationStoryboardEventHandler* This,IUIAnimationStoryboard *storyboard,UI_ANIMATION_STORYBOARD_STATUS status,UI_ANIMATION_STORYBOARD_STATUS prev_status) {
    return This->lpVtbl->OnStoryboardStatusChanged(This,storyboard,status,prev_status);
}
static FORCEINLINE HRESULT IUIAnimationStoryboardEventHandler_OnStoryboardUpdated(IUIAnimationStoryboardEventHandler* This,IUIAnimationStoryboard *storyboard) {
    return This->lpVtbl->OnStoryboardUpdated(This,storyboard);
}
#endif
#endif

#endif


#endif  /* __IUIAnimationStoryboardEventHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAnimationTransition interface
 */
#ifndef __IUIAnimationTransition_INTERFACE_DEFINED__
#define __IUIAnimationTransition_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAnimationTransition, 0xdc6ce252, 0xf731, 0x41cf, 0xb6,0x10, 0x61,0x4b,0x6c,0xa0,0x49,0xad);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("dc6ce252-f731-41cf-b610-614b6ca049ad")
IUIAnimationTransition : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetInitialValue(
        DOUBLE value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetInitialVelocity(
        DOUBLE velocity) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsDurationKnown(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDuration(
        UI_ANIMATION_SECONDS *duration) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAnimationTransition, 0xdc6ce252, 0xf731, 0x41cf, 0xb6,0x10, 0x61,0x4b,0x6c,0xa0,0x49,0xad)
#endif
#else
typedef struct IUIAnimationTransitionVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAnimationTransition *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAnimationTransition *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAnimationTransition *This);

    /*** IUIAnimationTransition methods ***/
    HRESULT (STDMETHODCALLTYPE *SetInitialValue)(
        IUIAnimationTransition *This,
        DOUBLE value);

    HRESULT (STDMETHODCALLTYPE *SetInitialVelocity)(
        IUIAnimationTransition *This,
        DOUBLE velocity);

    HRESULT (STDMETHODCALLTYPE *IsDurationKnown)(
        IUIAnimationTransition *This);

    HRESULT (STDMETHODCALLTYPE *GetDuration)(
        IUIAnimationTransition *This,
        UI_ANIMATION_SECONDS *duration);

    END_INTERFACE
} IUIAnimationTransitionVtbl;

interface IUIAnimationTransition {
    CONST_VTBL IUIAnimationTransitionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAnimationTransition_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAnimationTransition_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAnimationTransition_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAnimationTransition methods ***/
#define IUIAnimationTransition_SetInitialValue(This,value) (This)->lpVtbl->SetInitialValue(This,value)
#define IUIAnimationTransition_SetInitialVelocity(This,velocity) (This)->lpVtbl->SetInitialVelocity(This,velocity)
#define IUIAnimationTransition_IsDurationKnown(This) (This)->lpVtbl->IsDurationKnown(This)
#define IUIAnimationTransition_GetDuration(This,duration) (This)->lpVtbl->GetDuration(This,duration)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IUIAnimationTransition_QueryInterface(IUIAnimationTransition* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IUIAnimationTransition_AddRef(IUIAnimationTransition* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IUIAnimationTransition_Release(IUIAnimationTransition* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAnimationTransition methods ***/
static FORCEINLINE HRESULT IUIAnimationTransition_SetInitialValue(IUIAnimationTransition* This,DOUBLE value) {
    return This->lpVtbl->SetInitialValue(This,value);
}
static FORCEINLINE HRESULT IUIAnimationTransition_SetInitialVelocity(IUIAnimationTransition* This,DOUBLE velocity) {
    return This->lpVtbl->SetInitialVelocity(This,velocity);
}
static FORCEINLINE HRESULT IUIAnimationTransition_IsDurationKnown(IUIAnimationTransition* This) {
    return This->lpVtbl->IsDurationKnown(This);
}
static FORCEINLINE HRESULT IUIAnimationTransition_GetDuration(IUIAnimationTransition* This,UI_ANIMATION_SECONDS *duration) {
    return This->lpVtbl->GetDuration(This,duration);
}
#endif
#endif

#endif


#endif  /* __IUIAnimationTransition_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAnimationVariable interface
 */
#ifndef __IUIAnimationVariable_INTERFACE_DEFINED__
#define __IUIAnimationVariable_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAnimationVariable, 0x8ceeb155, 0x2849, 0x4ce5, 0x94,0x48, 0x91,0xff,0x70,0xe1,0xe4,0xd9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8ceeb155-2849-4ce5-9448-91ff70e1e4d9")
IUIAnimationVariable : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetValue(
        DOUBLE *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFinalValue(
        DOUBLE *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPreviousValue(
        DOUBLE *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIntegerValue(
        INT32 *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFinalIntegerValue(
        INT32 *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPreviousIntegerValue(
        INT32 *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentStoryboard(
        IUIAnimationStoryboard **storyboard) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetLowerBound(
        DOUBLE bound) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetUpperBound(
        DOUBLE bound) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRoundingMode(
        UI_ANIMATION_ROUNDING_MODE mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTag(
        IUnknown *object,
        UINT32 id) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTag(
        IUnknown **object,
        UINT32 *id) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVariableChangeHandler(
        IUIAnimationVariableChangeHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVariableIntegerChangeHandler(
        IUIAnimationVariableIntegerChangeHandler *handler) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAnimationVariable, 0x8ceeb155, 0x2849, 0x4ce5, 0x94,0x48, 0x91,0xff,0x70,0xe1,0xe4,0xd9)
#endif
#else
typedef struct IUIAnimationVariableVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAnimationVariable *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAnimationVariable *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAnimationVariable *This);

    /*** IUIAnimationVariable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetValue)(
        IUIAnimationVariable *This,
        DOUBLE *value);

    HRESULT (STDMETHODCALLTYPE *GetFinalValue)(
        IUIAnimationVariable *This,
        DOUBLE *value);

    HRESULT (STDMETHODCALLTYPE *GetPreviousValue)(
        IUIAnimationVariable *This,
        DOUBLE *value);

    HRESULT (STDMETHODCALLTYPE *GetIntegerValue)(
        IUIAnimationVariable *This,
        INT32 *value);

    HRESULT (STDMETHODCALLTYPE *GetFinalIntegerValue)(
        IUIAnimationVariable *This,
        INT32 *value);

    HRESULT (STDMETHODCALLTYPE *GetPreviousIntegerValue)(
        IUIAnimationVariable *This,
        INT32 *value);

    HRESULT (STDMETHODCALLTYPE *GetCurrentStoryboard)(
        IUIAnimationVariable *This,
        IUIAnimationStoryboard **storyboard);

    HRESULT (STDMETHODCALLTYPE *SetLowerBound)(
        IUIAnimationVariable *This,
        DOUBLE bound);

    HRESULT (STDMETHODCALLTYPE *SetUpperBound)(
        IUIAnimationVariable *This,
        DOUBLE bound);

    HRESULT (STDMETHODCALLTYPE *SetRoundingMode)(
        IUIAnimationVariable *This,
        UI_ANIMATION_ROUNDING_MODE mode);

    HRESULT (STDMETHODCALLTYPE *SetTag)(
        IUIAnimationVariable *This,
        IUnknown *object,
        UINT32 id);

    HRESULT (STDMETHODCALLTYPE *GetTag)(
        IUIAnimationVariable *This,
        IUnknown **object,
        UINT32 *id);

    HRESULT (STDMETHODCALLTYPE *SetVariableChangeHandler)(
        IUIAnimationVariable *This,
        IUIAnimationVariableChangeHandler *handler);

    HRESULT (STDMETHODCALLTYPE *SetVariableIntegerChangeHandler)(
        IUIAnimationVariable *This,
        IUIAnimationVariableIntegerChangeHandler *handler);

    END_INTERFACE
} IUIAnimationVariableVtbl;

interface IUIAnimationVariable {
    CONST_VTBL IUIAnimationVariableVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAnimationVariable_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAnimationVariable_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAnimationVariable_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAnimationVariable methods ***/
#define IUIAnimationVariable_GetValue(This,value) (This)->lpVtbl->GetValue(This,value)
#define IUIAnimationVariable_GetFinalValue(This,value) (This)->lpVtbl->GetFinalValue(This,value)
#define IUIAnimationVariable_GetPreviousValue(This,value) (This)->lpVtbl->GetPreviousValue(This,value)
#define IUIAnimationVariable_GetIntegerValue(This,value) (This)->lpVtbl->GetIntegerValue(This,value)
#define IUIAnimationVariable_GetFinalIntegerValue(This,value) (This)->lpVtbl->GetFinalIntegerValue(This,value)
#define IUIAnimationVariable_GetPreviousIntegerValue(This,value) (This)->lpVtbl->GetPreviousIntegerValue(This,value)
#define IUIAnimationVariable_GetCurrentStoryboard(This,storyboard) (This)->lpVtbl->GetCurrentStoryboard(This,storyboard)
#define IUIAnimationVariable_SetLowerBound(This,bound) (This)->lpVtbl->SetLowerBound(This,bound)
#define IUIAnimationVariable_SetUpperBound(This,bound) (This)->lpVtbl->SetUpperBound(This,bound)
#define IUIAnimationVariable_SetRoundingMode(This,mode) (This)->lpVtbl->SetRoundingMode(This,mode)
#define IUIAnimationVariable_SetTag(This,object,id) (This)->lpVtbl->SetTag(This,object,id)
#define IUIAnimationVariable_GetTag(This,object,id) (This)->lpVtbl->GetTag(This,object,id)
#define IUIAnimationVariable_SetVariableChangeHandler(This,handler) (This)->lpVtbl->SetVariableChangeHandler(This,handler)
#define IUIAnimationVariable_SetVariableIntegerChangeHandler(This,handler) (This)->lpVtbl->SetVariableIntegerChangeHandler(This,handler)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IUIAnimationVariable_QueryInterface(IUIAnimationVariable* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IUIAnimationVariable_AddRef(IUIAnimationVariable* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IUIAnimationVariable_Release(IUIAnimationVariable* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAnimationVariable methods ***/
static FORCEINLINE HRESULT IUIAnimationVariable_GetValue(IUIAnimationVariable* This,DOUBLE *value) {
    return This->lpVtbl->GetValue(This,value);
}
static FORCEINLINE HRESULT IUIAnimationVariable_GetFinalValue(IUIAnimationVariable* This,DOUBLE *value) {
    return This->lpVtbl->GetFinalValue(This,value);
}
static FORCEINLINE HRESULT IUIAnimationVariable_GetPreviousValue(IUIAnimationVariable* This,DOUBLE *value) {
    return This->lpVtbl->GetPreviousValue(This,value);
}
static FORCEINLINE HRESULT IUIAnimationVariable_GetIntegerValue(IUIAnimationVariable* This,INT32 *value) {
    return This->lpVtbl->GetIntegerValue(This,value);
}
static FORCEINLINE HRESULT IUIAnimationVariable_GetFinalIntegerValue(IUIAnimationVariable* This,INT32 *value) {
    return This->lpVtbl->GetFinalIntegerValue(This,value);
}
static FORCEINLINE HRESULT IUIAnimationVariable_GetPreviousIntegerValue(IUIAnimationVariable* This,INT32 *value) {
    return This->lpVtbl->GetPreviousIntegerValue(This,value);
}
static FORCEINLINE HRESULT IUIAnimationVariable_GetCurrentStoryboard(IUIAnimationVariable* This,IUIAnimationStoryboard **storyboard) {
    return This->lpVtbl->GetCurrentStoryboard(This,storyboard);
}
static FORCEINLINE HRESULT IUIAnimationVariable_SetLowerBound(IUIAnimationVariable* This,DOUBLE bound) {
    return This->lpVtbl->SetLowerBound(This,bound);
}
static FORCEINLINE HRESULT IUIAnimationVariable_SetUpperBound(IUIAnimationVariable* This,DOUBLE bound) {
    return This->lpVtbl->SetUpperBound(This,bound);
}
static FORCEINLINE HRESULT IUIAnimationVariable_SetRoundingMode(IUIAnimationVariable* This,UI_ANIMATION_ROUNDING_MODE mode) {
    return This->lpVtbl->SetRoundingMode(This,mode);
}
static FORCEINLINE HRESULT IUIAnimationVariable_SetTag(IUIAnimationVariable* This,IUnknown *object,UINT32 id) {
    return This->lpVtbl->SetTag(This,object,id);
}
static FORCEINLINE HRESULT IUIAnimationVariable_GetTag(IUIAnimationVariable* This,IUnknown **object,UINT32 *id) {
    return This->lpVtbl->GetTag(This,object,id);
}
static FORCEINLINE HRESULT IUIAnimationVariable_SetVariableChangeHandler(IUIAnimationVariable* This,IUIAnimationVariableChangeHandler *handler) {
    return This->lpVtbl->SetVariableChangeHandler(This,handler);
}
static FORCEINLINE HRESULT IUIAnimationVariable_SetVariableIntegerChangeHandler(IUIAnimationVariable* This,IUIAnimationVariableIntegerChangeHandler *handler) {
    return This->lpVtbl->SetVariableIntegerChangeHandler(This,handler);
}
#endif
#endif

#endif


#endif  /* __IUIAnimationVariable_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAnimationStoryboard interface
 */
#ifndef __IUIAnimationStoryboard_INTERFACE_DEFINED__
#define __IUIAnimationStoryboard_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAnimationStoryboard, 0xa8ff128f, 0x9bf9, 0x4af1, 0x9e,0x67, 0xe5,0xe4,0x10,0xde,0xfb,0x84);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a8ff128f-9bf9-4af1-9e67-e5e410defb84")
IUIAnimationStoryboard : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AddTransition(
        IUIAnimationVariable *variable,
        IUIAnimationTransition *transition) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddKeyframeAtOffset(
        UI_ANIMATION_KEYFRAME existingframe,
        UI_ANIMATION_SECONDS offset,
        UI_ANIMATION_KEYFRAME *keyframe) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddKeyframeAfterTransition(
        IUIAnimationTransition *transition,
        UI_ANIMATION_KEYFRAME *keyframe) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddTransitionAtKeyframe(
        IUIAnimationVariable *variable,
        IUIAnimationTransition *transition,
        UI_ANIMATION_KEYFRAME start_key) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddTransitionBetweenKeyframes(
        IUIAnimationVariable *variable,
        IUIAnimationTransition *transition,
        UI_ANIMATION_KEYFRAME start_key,
        UI_ANIMATION_KEYFRAME end_key) = 0;

    virtual HRESULT STDMETHODCALLTYPE RepeatBetweenKeyframes(
        UI_ANIMATION_KEYFRAME start_key,
        UI_ANIMATION_KEYFRAME end_key,
        INT32 count) = 0;

    virtual HRESULT STDMETHODCALLTYPE HoldVariable(
        IUIAnimationVariable *variable) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetLongestAcceptableDelay(
        UI_ANIMATION_SECONDS delay) = 0;

    virtual HRESULT STDMETHODCALLTYPE Schedule(
        UI_ANIMATION_SECONDS now,
        UI_ANIMATION_SCHEDULING_RESULT *result = 0) = 0;

    virtual HRESULT STDMETHODCALLTYPE Conclude(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Finish(
        UI_ANIMATION_SECONDS deadline) = 0;

    virtual HRESULT STDMETHODCALLTYPE Abandon(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTag(
        IUnknown *object,
        UINT32 id) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTag(
        IUnknown **object,
        UINT32 *id) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStatus(
        UI_ANIMATION_STORYBOARD_STATUS *status) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetElapsedTime(
        UI_ANIMATION_SECONDS *elapsed) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetStoryboardEventHandler(
        IUIAnimationStoryboardEventHandler *handler) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAnimationStoryboard, 0xa8ff128f, 0x9bf9, 0x4af1, 0x9e,0x67, 0xe5,0xe4,0x10,0xde,0xfb,0x84)
#endif
#else
typedef struct IUIAnimationStoryboardVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAnimationStoryboard *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAnimationStoryboard *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAnimationStoryboard *This);

    /*** IUIAnimationStoryboard methods ***/
    HRESULT (STDMETHODCALLTYPE *AddTransition)(
        IUIAnimationStoryboard *This,
        IUIAnimationVariable *variable,
        IUIAnimationTransition *transition);

    HRESULT (STDMETHODCALLTYPE *AddKeyframeAtOffset)(
        IUIAnimationStoryboard *This,
        UI_ANIMATION_KEYFRAME existingframe,
        UI_ANIMATION_SECONDS offset,
        UI_ANIMATION_KEYFRAME *keyframe);

    HRESULT (STDMETHODCALLTYPE *AddKeyframeAfterTransition)(
        IUIAnimationStoryboard *This,
        IUIAnimationTransition *transition,
        UI_ANIMATION_KEYFRAME *keyframe);

    HRESULT (STDMETHODCALLTYPE *AddTransitionAtKeyframe)(
        IUIAnimationStoryboard *This,
        IUIAnimationVariable *variable,
        IUIAnimationTransition *transition,
        UI_ANIMATION_KEYFRAME start_key);

    HRESULT (STDMETHODCALLTYPE *AddTransitionBetweenKeyframes)(
        IUIAnimationStoryboard *This,
        IUIAnimationVariable *variable,
        IUIAnimationTransition *transition,
        UI_ANIMATION_KEYFRAME start_key,
        UI_ANIMATION_KEYFRAME end_key);

    HRESULT (STDMETHODCALLTYPE *RepeatBetweenKeyframes)(
        IUIAnimationStoryboard *This,
        UI_ANIMATION_KEYFRAME start_key,
        UI_ANIMATION_KEYFRAME end_key,
        INT32 count);

    HRESULT (STDMETHODCALLTYPE *HoldVariable)(
        IUIAnimationStoryboard *This,
        IUIAnimationVariable *variable);

    HRESULT (STDMETHODCALLTYPE *SetLongestAcceptableDelay)(
        IUIAnimationStoryboard *This,
        UI_ANIMATION_SECONDS delay);

    HRESULT (STDMETHODCALLTYPE *Schedule)(
        IUIAnimationStoryboard *This,
        UI_ANIMATION_SECONDS now,
        UI_ANIMATION_SCHEDULING_RESULT *result);

    HRESULT (STDMETHODCALLTYPE *Conclude)(
        IUIAnimationStoryboard *This);

    HRESULT (STDMETHODCALLTYPE *Finish)(
        IUIAnimationStoryboard *This,
        UI_ANIMATION_SECONDS deadline);

    HRESULT (STDMETHODCALLTYPE *Abandon)(
        IUIAnimationStoryboard *This);

    HRESULT (STDMETHODCALLTYPE *SetTag)(
        IUIAnimationStoryboard *This,
        IUnknown *object,
        UINT32 id);

    HRESULT (STDMETHODCALLTYPE *GetTag)(
        IUIAnimationStoryboard *This,
        IUnknown **object,
        UINT32 *id);

    HRESULT (STDMETHODCALLTYPE *GetStatus)(
        IUIAnimationStoryboard *This,
        UI_ANIMATION_STORYBOARD_STATUS *status);

    HRESULT (STDMETHODCALLTYPE *GetElapsedTime)(
        IUIAnimationStoryboard *This,
        UI_ANIMATION_SECONDS *elapsed);

    HRESULT (STDMETHODCALLTYPE *SetStoryboardEventHandler)(
        IUIAnimationStoryboard *This,
        IUIAnimationStoryboardEventHandler *handler);

    END_INTERFACE
} IUIAnimationStoryboardVtbl;

interface IUIAnimationStoryboard {
    CONST_VTBL IUIAnimationStoryboardVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAnimationStoryboard_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAnimationStoryboard_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAnimationStoryboard_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAnimationStoryboard methods ***/
#define IUIAnimationStoryboard_AddTransition(This,variable,transition) (This)->lpVtbl->AddTransition(This,variable,transition)
#define IUIAnimationStoryboard_AddKeyframeAtOffset(This,existingframe,offset,keyframe) (This)->lpVtbl->AddKeyframeAtOffset(This,existingframe,offset,keyframe)
#define IUIAnimationStoryboard_AddKeyframeAfterTransition(This,transition,keyframe) (This)->lpVtbl->AddKeyframeAfterTransition(This,transition,keyframe)
#define IUIAnimationStoryboard_AddTransitionAtKeyframe(This,variable,transition,start_key) (This)->lpVtbl->AddTransitionAtKeyframe(This,variable,transition,start_key)
#define IUIAnimationStoryboard_AddTransitionBetweenKeyframes(This,variable,transition,start_key,end_key) (This)->lpVtbl->AddTransitionBetweenKeyframes(This,variable,transition,start_key,end_key)
#define IUIAnimationStoryboard_RepeatBetweenKeyframes(This,start_key,end_key,count) (This)->lpVtbl->RepeatBetweenKeyframes(This,start_key,end_key,count)
#define IUIAnimationStoryboard_HoldVariable(This,variable) (This)->lpVtbl->HoldVariable(This,variable)
#define IUIAnimationStoryboard_SetLongestAcceptableDelay(This,delay) (This)->lpVtbl->SetLongestAcceptableDelay(This,delay)
#define IUIAnimationStoryboard_Schedule(This,now,result) (This)->lpVtbl->Schedule(This,now,result)
#define IUIAnimationStoryboard_Conclude(This) (This)->lpVtbl->Conclude(This)
#define IUIAnimationStoryboard_Finish(This,deadline) (This)->lpVtbl->Finish(This,deadline)
#define IUIAnimationStoryboard_Abandon(This) (This)->lpVtbl->Abandon(This)
#define IUIAnimationStoryboard_SetTag(This,object,id) (This)->lpVtbl->SetTag(This,object,id)
#define IUIAnimationStoryboard_GetTag(This,object,id) (This)->lpVtbl->GetTag(This,object,id)
#define IUIAnimationStoryboard_GetStatus(This,status) (This)->lpVtbl->GetStatus(This,status)
#define IUIAnimationStoryboard_GetElapsedTime(This,elapsed) (This)->lpVtbl->GetElapsedTime(This,elapsed)
#define IUIAnimationStoryboard_SetStoryboardEventHandler(This,handler) (This)->lpVtbl->SetStoryboardEventHandler(This,handler)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IUIAnimationStoryboard_QueryInterface(IUIAnimationStoryboard* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IUIAnimationStoryboard_AddRef(IUIAnimationStoryboard* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IUIAnimationStoryboard_Release(IUIAnimationStoryboard* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAnimationStoryboard methods ***/
static FORCEINLINE HRESULT IUIAnimationStoryboard_AddTransition(IUIAnimationStoryboard* This,IUIAnimationVariable *variable,IUIAnimationTransition *transition) {
    return This->lpVtbl->AddTransition(This,variable,transition);
}
static FORCEINLINE HRESULT IUIAnimationStoryboard_AddKeyframeAtOffset(IUIAnimationStoryboard* This,UI_ANIMATION_KEYFRAME existingframe,UI_ANIMATION_SECONDS offset,UI_ANIMATION_KEYFRAME *keyframe) {
    return This->lpVtbl->AddKeyframeAtOffset(This,existingframe,offset,keyframe);
}
static FORCEINLINE HRESULT IUIAnimationStoryboard_AddKeyframeAfterTransition(IUIAnimationStoryboard* This,IUIAnimationTransition *transition,UI_ANIMATION_KEYFRAME *keyframe) {
    return This->lpVtbl->AddKeyframeAfterTransition(This,transition,keyframe);
}
static FORCEINLINE HRESULT IUIAnimationStoryboard_AddTransitionAtKeyframe(IUIAnimationStoryboard* This,IUIAnimationVariable *variable,IUIAnimationTransition *transition,UI_ANIMATION_KEYFRAME start_key) {
    return This->lpVtbl->AddTransitionAtKeyframe(This,variable,transition,start_key);
}
static FORCEINLINE HRESULT IUIAnimationStoryboard_AddTransitionBetweenKeyframes(IUIAnimationStoryboard* This,IUIAnimationVariable *variable,IUIAnimationTransition *transition,UI_ANIMATION_KEYFRAME start_key,UI_ANIMATION_KEYFRAME end_key) {
    return This->lpVtbl->AddTransitionBetweenKeyframes(This,variable,transition,start_key,end_key);
}
static FORCEINLINE HRESULT IUIAnimationStoryboard_RepeatBetweenKeyframes(IUIAnimationStoryboard* This,UI_ANIMATION_KEYFRAME start_key,UI_ANIMATION_KEYFRAME end_key,INT32 count) {
    return This->lpVtbl->RepeatBetweenKeyframes(This,start_key,end_key,count);
}
static FORCEINLINE HRESULT IUIAnimationStoryboard_HoldVariable(IUIAnimationStoryboard* This,IUIAnimationVariable *variable) {
    return This->lpVtbl->HoldVariable(This,variable);
}
static FORCEINLINE HRESULT IUIAnimationStoryboard_SetLongestAcceptableDelay(IUIAnimationStoryboard* This,UI_ANIMATION_SECONDS delay) {
    return This->lpVtbl->SetLongestAcceptableDelay(This,delay);
}
static FORCEINLINE HRESULT IUIAnimationStoryboard_Schedule(IUIAnimationStoryboard* This,UI_ANIMATION_SECONDS now,UI_ANIMATION_SCHEDULING_RESULT *result) {
    return This->lpVtbl->Schedule(This,now,result);
}
static FORCEINLINE HRESULT IUIAnimationStoryboard_Conclude(IUIAnimationStoryboard* This) {
    return This->lpVtbl->Conclude(This);
}
static FORCEINLINE HRESULT IUIAnimationStoryboard_Finish(IUIAnimationStoryboard* This,UI_ANIMATION_SECONDS deadline) {
    return This->lpVtbl->Finish(This,deadline);
}
static FORCEINLINE HRESULT IUIAnimationStoryboard_Abandon(IUIAnimationStoryboard* This) {
    return This->lpVtbl->Abandon(This);
}
static FORCEINLINE HRESULT IUIAnimationStoryboard_SetTag(IUIAnimationStoryboard* This,IUnknown *object,UINT32 id) {
    return This->lpVtbl->SetTag(This,object,id);
}
static FORCEINLINE HRESULT IUIAnimationStoryboard_GetTag(IUIAnimationStoryboard* This,IUnknown **object,UINT32 *id) {
    return This->lpVtbl->GetTag(This,object,id);
}
static FORCEINLINE HRESULT IUIAnimationStoryboard_GetStatus(IUIAnimationStoryboard* This,UI_ANIMATION_STORYBOARD_STATUS *status) {
    return This->lpVtbl->GetStatus(This,status);
}
static FORCEINLINE HRESULT IUIAnimationStoryboard_GetElapsedTime(IUIAnimationStoryboard* This,UI_ANIMATION_SECONDS *elapsed) {
    return This->lpVtbl->GetElapsedTime(This,elapsed);
}
static FORCEINLINE HRESULT IUIAnimationStoryboard_SetStoryboardEventHandler(IUIAnimationStoryboard* This,IUIAnimationStoryboardEventHandler *handler) {
    return This->lpVtbl->SetStoryboardEventHandler(This,handler);
}
#endif
#endif

#endif


#endif  /* __IUIAnimationStoryboard_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAnimationTimerClientEventHandler interface
 */
#ifndef __IUIAnimationTimerClientEventHandler_INTERFACE_DEFINED__
#define __IUIAnimationTimerClientEventHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAnimationTimerClientEventHandler, 0xbedb4db6, 0x94fa, 0x4bfb, 0xa4,0x7f, 0xef,0x2d,0x9e,0x40,0x8c,0x25);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("bedb4db6-94fa-4bfb-a47f-ef2d9e408c25")
IUIAnimationTimerClientEventHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnTimerClientStatusChanged(
        UI_ANIMATION_TIMER_CLIENT_STATUS new_status,
        UI_ANIMATION_TIMER_CLIENT_STATUS previous_status) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAnimationTimerClientEventHandler, 0xbedb4db6, 0x94fa, 0x4bfb, 0xa4,0x7f, 0xef,0x2d,0x9e,0x40,0x8c,0x25)
#endif
#else
typedef struct IUIAnimationTimerClientEventHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAnimationTimerClientEventHandler *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAnimationTimerClientEventHandler *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAnimationTimerClientEventHandler *This);

    /*** IUIAnimationTimerClientEventHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *OnTimerClientStatusChanged)(
        IUIAnimationTimerClientEventHandler *This,
        UI_ANIMATION_TIMER_CLIENT_STATUS new_status,
        UI_ANIMATION_TIMER_CLIENT_STATUS previous_status);

    END_INTERFACE
} IUIAnimationTimerClientEventHandlerVtbl;

interface IUIAnimationTimerClientEventHandler {
    CONST_VTBL IUIAnimationTimerClientEventHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAnimationTimerClientEventHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAnimationTimerClientEventHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAnimationTimerClientEventHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAnimationTimerClientEventHandler methods ***/
#define IUIAnimationTimerClientEventHandler_OnTimerClientStatusChanged(This,new_status,previous_status) (This)->lpVtbl->OnTimerClientStatusChanged(This,new_status,previous_status)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IUIAnimationTimerClientEventHandler_QueryInterface(IUIAnimationTimerClientEventHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IUIAnimationTimerClientEventHandler_AddRef(IUIAnimationTimerClientEventHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IUIAnimationTimerClientEventHandler_Release(IUIAnimationTimerClientEventHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAnimationTimerClientEventHandler methods ***/
static FORCEINLINE HRESULT IUIAnimationTimerClientEventHandler_OnTimerClientStatusChanged(IUIAnimationTimerClientEventHandler* This,UI_ANIMATION_TIMER_CLIENT_STATUS new_status,UI_ANIMATION_TIMER_CLIENT_STATUS previous_status) {
    return This->lpVtbl->OnTimerClientStatusChanged(This,new_status,previous_status);
}
#endif
#endif

#endif


#endif  /* __IUIAnimationTimerClientEventHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAnimationTimerUpdateHandler interface
 */
#ifndef __IUIAnimationTimerUpdateHandler_INTERFACE_DEFINED__
#define __IUIAnimationTimerUpdateHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAnimationTimerUpdateHandler, 0x195509b7, 0x5d5e, 0x4e3e, 0xb2,0x78, 0xee,0x37,0x59,0xb3,0x67,0xad);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("195509b7-5d5e-4e3e-b278-ee3759b367ad")
IUIAnimationTimerUpdateHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnUpdate(
        UI_ANIMATION_SECONDS now,
        UI_ANIMATION_UPDATE_RESULT *result) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTimerClientEventHandler(
        IUIAnimationTimerClientEventHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE ClearTimerClientEventHandler(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAnimationTimerUpdateHandler, 0x195509b7, 0x5d5e, 0x4e3e, 0xb2,0x78, 0xee,0x37,0x59,0xb3,0x67,0xad)
#endif
#else
typedef struct IUIAnimationTimerUpdateHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAnimationTimerUpdateHandler *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAnimationTimerUpdateHandler *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAnimationTimerUpdateHandler *This);

    /*** IUIAnimationTimerUpdateHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *OnUpdate)(
        IUIAnimationTimerUpdateHandler *This,
        UI_ANIMATION_SECONDS now,
        UI_ANIMATION_UPDATE_RESULT *result);

    HRESULT (STDMETHODCALLTYPE *SetTimerClientEventHandler)(
        IUIAnimationTimerUpdateHandler *This,
        IUIAnimationTimerClientEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *ClearTimerClientEventHandler)(
        IUIAnimationTimerUpdateHandler *This);

    END_INTERFACE
} IUIAnimationTimerUpdateHandlerVtbl;

interface IUIAnimationTimerUpdateHandler {
    CONST_VTBL IUIAnimationTimerUpdateHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAnimationTimerUpdateHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAnimationTimerUpdateHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAnimationTimerUpdateHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAnimationTimerUpdateHandler methods ***/
#define IUIAnimationTimerUpdateHandler_OnUpdate(This,now,result) (This)->lpVtbl->OnUpdate(This,now,result)
#define IUIAnimationTimerUpdateHandler_SetTimerClientEventHandler(This,handler) (This)->lpVtbl->SetTimerClientEventHandler(This,handler)
#define IUIAnimationTimerUpdateHandler_ClearTimerClientEventHandler(This) (This)->lpVtbl->ClearTimerClientEventHandler(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IUIAnimationTimerUpdateHandler_QueryInterface(IUIAnimationTimerUpdateHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IUIAnimationTimerUpdateHandler_AddRef(IUIAnimationTimerUpdateHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IUIAnimationTimerUpdateHandler_Release(IUIAnimationTimerUpdateHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAnimationTimerUpdateHandler methods ***/
static FORCEINLINE HRESULT IUIAnimationTimerUpdateHandler_OnUpdate(IUIAnimationTimerUpdateHandler* This,UI_ANIMATION_SECONDS now,UI_ANIMATION_UPDATE_RESULT *result) {
    return This->lpVtbl->OnUpdate(This,now,result);
}
static FORCEINLINE HRESULT IUIAnimationTimerUpdateHandler_SetTimerClientEventHandler(IUIAnimationTimerUpdateHandler* This,IUIAnimationTimerClientEventHandler *handler) {
    return This->lpVtbl->SetTimerClientEventHandler(This,handler);
}
static FORCEINLINE HRESULT IUIAnimationTimerUpdateHandler_ClearTimerClientEventHandler(IUIAnimationTimerUpdateHandler* This) {
    return This->lpVtbl->ClearTimerClientEventHandler(This);
}
#endif
#endif

#endif


#endif  /* __IUIAnimationTimerUpdateHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAnimationTimerEventHandler interface
 */
#ifndef __IUIAnimationTimerEventHandler_INTERFACE_DEFINED__
#define __IUIAnimationTimerEventHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAnimationTimerEventHandler, 0x274a7dea, 0xd771, 0x4095, 0xab,0xbd, 0x8d,0xf7,0xab,0xd2,0x3c,0xe3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("274a7dea-d771-4095-abbd-8df7abd23ce3")
IUIAnimationTimerEventHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnPreUpdate(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnPostUpdate(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnRenderingTooSlow(
        UINT32 fps) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAnimationTimerEventHandler, 0x274a7dea, 0xd771, 0x4095, 0xab,0xbd, 0x8d,0xf7,0xab,0xd2,0x3c,0xe3)
#endif
#else
typedef struct IUIAnimationTimerEventHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAnimationTimerEventHandler *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAnimationTimerEventHandler *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAnimationTimerEventHandler *This);

    /*** IUIAnimationTimerEventHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *OnPreUpdate)(
        IUIAnimationTimerEventHandler *This);

    HRESULT (STDMETHODCALLTYPE *OnPostUpdate)(
        IUIAnimationTimerEventHandler *This);

    HRESULT (STDMETHODCALLTYPE *OnRenderingTooSlow)(
        IUIAnimationTimerEventHandler *This,
        UINT32 fps);

    END_INTERFACE
} IUIAnimationTimerEventHandlerVtbl;

interface IUIAnimationTimerEventHandler {
    CONST_VTBL IUIAnimationTimerEventHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAnimationTimerEventHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAnimationTimerEventHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAnimationTimerEventHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAnimationTimerEventHandler methods ***/
#define IUIAnimationTimerEventHandler_OnPreUpdate(This) (This)->lpVtbl->OnPreUpdate(This)
#define IUIAnimationTimerEventHandler_OnPostUpdate(This) (This)->lpVtbl->OnPostUpdate(This)
#define IUIAnimationTimerEventHandler_OnRenderingTooSlow(This,fps) (This)->lpVtbl->OnRenderingTooSlow(This,fps)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IUIAnimationTimerEventHandler_QueryInterface(IUIAnimationTimerEventHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IUIAnimationTimerEventHandler_AddRef(IUIAnimationTimerEventHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IUIAnimationTimerEventHandler_Release(IUIAnimationTimerEventHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAnimationTimerEventHandler methods ***/
static FORCEINLINE HRESULT IUIAnimationTimerEventHandler_OnPreUpdate(IUIAnimationTimerEventHandler* This) {
    return This->lpVtbl->OnPreUpdate(This);
}
static FORCEINLINE HRESULT IUIAnimationTimerEventHandler_OnPostUpdate(IUIAnimationTimerEventHandler* This) {
    return This->lpVtbl->OnPostUpdate(This);
}
static FORCEINLINE HRESULT IUIAnimationTimerEventHandler_OnRenderingTooSlow(IUIAnimationTimerEventHandler* This,UINT32 fps) {
    return This->lpVtbl->OnRenderingTooSlow(This,fps);
}
#endif
#endif

#endif


#endif  /* __IUIAnimationTimerEventHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAnimationTimer interface
 */
#ifndef __IUIAnimationTimer_INTERFACE_DEFINED__
#define __IUIAnimationTimer_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAnimationTimer, 0x6b0efad1, 0xa053, 0x41d6, 0x90,0x85, 0x33,0xa6,0x89,0x14,0x46,0x65);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6b0efad1-a053-41d6-9085-33a689144665")
IUIAnimationTimer : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetTimerUpdateHandler(
        IUIAnimationTimerUpdateHandler *handler,
        UI_ANIMATION_IDLE_BEHAVIOR idlebehavior) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTimerEventHandler(
        IUIAnimationTimerEventHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE Enable(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Disable(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsEnabled(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTime(
        UI_ANIMATION_SECONDS *time) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFrameRateThreshold(
        UINT32 fps) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAnimationTimer, 0x6b0efad1, 0xa053, 0x41d6, 0x90,0x85, 0x33,0xa6,0x89,0x14,0x46,0x65)
#endif
#else
typedef struct IUIAnimationTimerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAnimationTimer *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAnimationTimer *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAnimationTimer *This);

    /*** IUIAnimationTimer methods ***/
    HRESULT (STDMETHODCALLTYPE *SetTimerUpdateHandler)(
        IUIAnimationTimer *This,
        IUIAnimationTimerUpdateHandler *handler,
        UI_ANIMATION_IDLE_BEHAVIOR idlebehavior);

    HRESULT (STDMETHODCALLTYPE *SetTimerEventHandler)(
        IUIAnimationTimer *This,
        IUIAnimationTimerEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *Enable)(
        IUIAnimationTimer *This);

    HRESULT (STDMETHODCALLTYPE *Disable)(
        IUIAnimationTimer *This);

    HRESULT (STDMETHODCALLTYPE *IsEnabled)(
        IUIAnimationTimer *This);

    HRESULT (STDMETHODCALLTYPE *GetTime)(
        IUIAnimationTimer *This,
        UI_ANIMATION_SECONDS *time);

    HRESULT (STDMETHODCALLTYPE *SetFrameRateThreshold)(
        IUIAnimationTimer *This,
        UINT32 fps);

    END_INTERFACE
} IUIAnimationTimerVtbl;

interface IUIAnimationTimer {
    CONST_VTBL IUIAnimationTimerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAnimationTimer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAnimationTimer_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAnimationTimer_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAnimationTimer methods ***/
#define IUIAnimationTimer_SetTimerUpdateHandler(This,handler,idlebehavior) (This)->lpVtbl->SetTimerUpdateHandler(This,handler,idlebehavior)
#define IUIAnimationTimer_SetTimerEventHandler(This,handler) (This)->lpVtbl->SetTimerEventHandler(This,handler)
#define IUIAnimationTimer_Enable(This) (This)->lpVtbl->Enable(This)
#define IUIAnimationTimer_Disable(This) (This)->lpVtbl->Disable(This)
#define IUIAnimationTimer_IsEnabled(This) (This)->lpVtbl->IsEnabled(This)
#define IUIAnimationTimer_GetTime(This,time) (This)->lpVtbl->GetTime(This,time)
#define IUIAnimationTimer_SetFrameRateThreshold(This,fps) (This)->lpVtbl->SetFrameRateThreshold(This,fps)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IUIAnimationTimer_QueryInterface(IUIAnimationTimer* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IUIAnimationTimer_AddRef(IUIAnimationTimer* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IUIAnimationTimer_Release(IUIAnimationTimer* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAnimationTimer methods ***/
static FORCEINLINE HRESULT IUIAnimationTimer_SetTimerUpdateHandler(IUIAnimationTimer* This,IUIAnimationTimerUpdateHandler *handler,UI_ANIMATION_IDLE_BEHAVIOR idlebehavior) {
    return This->lpVtbl->SetTimerUpdateHandler(This,handler,idlebehavior);
}
static FORCEINLINE HRESULT IUIAnimationTimer_SetTimerEventHandler(IUIAnimationTimer* This,IUIAnimationTimerEventHandler *handler) {
    return This->lpVtbl->SetTimerEventHandler(This,handler);
}
static FORCEINLINE HRESULT IUIAnimationTimer_Enable(IUIAnimationTimer* This) {
    return This->lpVtbl->Enable(This);
}
static FORCEINLINE HRESULT IUIAnimationTimer_Disable(IUIAnimationTimer* This) {
    return This->lpVtbl->Disable(This);
}
static FORCEINLINE HRESULT IUIAnimationTimer_IsEnabled(IUIAnimationTimer* This) {
    return This->lpVtbl->IsEnabled(This);
}
static FORCEINLINE HRESULT IUIAnimationTimer_GetTime(IUIAnimationTimer* This,UI_ANIMATION_SECONDS *time) {
    return This->lpVtbl->GetTime(This,time);
}
static FORCEINLINE HRESULT IUIAnimationTimer_SetFrameRateThreshold(IUIAnimationTimer* This,UINT32 fps) {
    return This->lpVtbl->SetFrameRateThreshold(This,fps);
}
#endif
#endif

#endif


#endif  /* __IUIAnimationTimer_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAnimationManager interface
 */
#ifndef __IUIAnimationManager_INTERFACE_DEFINED__
#define __IUIAnimationManager_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAnimationManager, 0x9169896c, 0xac8d, 0x4e7d, 0x94,0xe5, 0x67,0xfa,0x4d,0xc2,0xf2,0xe8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9169896c-ac8d-4e7d-94e5-67fa4dc2f2e8")
IUIAnimationManager : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateAnimationVariable(
        UI_ANIMATION_SECONDS initialvalue,
        IUIAnimationVariable **variable) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScheduleTransition(
        IUIAnimationVariable *variable,
        IUIAnimationTransition *transition,
        UI_ANIMATION_SECONDS timenow) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateStoryboard(
        IUIAnimationStoryboard **storyboard) = 0;

    virtual HRESULT STDMETHODCALLTYPE FinishAllStoryboards(
        UI_ANIMATION_SECONDS deadline) = 0;

    virtual HRESULT STDMETHODCALLTYPE AbandonAllStoryboards(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Update(
        UI_ANIMATION_SECONDS timenow,
        UI_ANIMATION_UPDATE_RESULT *updateresult = 0) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVariableFromTag(
        IUnknown *object,
        UINT32 id,
        IUIAnimationVariable **variable) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStoryboardFromTag(
        IUnknown *object,
        UINT32 id,
        IUIAnimationStoryboard **storyboard) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStatus(
        UI_ANIMATION_MANAGER_STATUS *status) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAnimationMode(
        UI_ANIMATION_MODE mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE Pause(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Resume(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetManagerEventHandler(
        IUIAnimationManagerEventHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCancelPriorityComparison(
        IUIAnimationPriorityComparison *comparison) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTrimPriorityComparison(
        IUIAnimationPriorityComparison *comparison) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCompressPriorityComparison(
        IUIAnimationPriorityComparison *comparison) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetConcludePriorityComparison(
        IUIAnimationPriorityComparison *comparison) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDefaultLongestAcceptableDelay(
        UI_ANIMATION_SECONDS delay) = 0;

    virtual HRESULT STDMETHODCALLTYPE Shutdown(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAnimationManager, 0x9169896c, 0xac8d, 0x4e7d, 0x94,0xe5, 0x67,0xfa,0x4d,0xc2,0xf2,0xe8)
#endif
#else
typedef struct IUIAnimationManagerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAnimationManager *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAnimationManager *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAnimationManager *This);

    /*** IUIAnimationManager methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateAnimationVariable)(
        IUIAnimationManager *This,
        UI_ANIMATION_SECONDS initialvalue,
        IUIAnimationVariable **variable);

    HRESULT (STDMETHODCALLTYPE *ScheduleTransition)(
        IUIAnimationManager *This,
        IUIAnimationVariable *variable,
        IUIAnimationTransition *transition,
        UI_ANIMATION_SECONDS timenow);

    HRESULT (STDMETHODCALLTYPE *CreateStoryboard)(
        IUIAnimationManager *This,
        IUIAnimationStoryboard **storyboard);

    HRESULT (STDMETHODCALLTYPE *FinishAllStoryboards)(
        IUIAnimationManager *This,
        UI_ANIMATION_SECONDS deadline);

    HRESULT (STDMETHODCALLTYPE *AbandonAllStoryboards)(
        IUIAnimationManager *This);

    HRESULT (STDMETHODCALLTYPE *Update)(
        IUIAnimationManager *This,
        UI_ANIMATION_SECONDS timenow,
        UI_ANIMATION_UPDATE_RESULT *updateresult);

    HRESULT (STDMETHODCALLTYPE *GetVariableFromTag)(
        IUIAnimationManager *This,
        IUnknown *object,
        UINT32 id,
        IUIAnimationVariable **variable);

    HRESULT (STDMETHODCALLTYPE *GetStoryboardFromTag)(
        IUIAnimationManager *This,
        IUnknown *object,
        UINT32 id,
        IUIAnimationStoryboard **storyboard);

    HRESULT (STDMETHODCALLTYPE *GetStatus)(
        IUIAnimationManager *This,
        UI_ANIMATION_MANAGER_STATUS *status);

    HRESULT (STDMETHODCALLTYPE *SetAnimationMode)(
        IUIAnimationManager *This,
        UI_ANIMATION_MODE mode);

    HRESULT (STDMETHODCALLTYPE *Pause)(
        IUIAnimationManager *This);

    HRESULT (STDMETHODCALLTYPE *Resume)(
        IUIAnimationManager *This);

    HRESULT (STDMETHODCALLTYPE *SetManagerEventHandler)(
        IUIAnimationManager *This,
        IUIAnimationManagerEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *SetCancelPriorityComparison)(
        IUIAnimationManager *This,
        IUIAnimationPriorityComparison *comparison);

    HRESULT (STDMETHODCALLTYPE *SetTrimPriorityComparison)(
        IUIAnimationManager *This,
        IUIAnimationPriorityComparison *comparison);

    HRESULT (STDMETHODCALLTYPE *SetCompressPriorityComparison)(
        IUIAnimationManager *This,
        IUIAnimationPriorityComparison *comparison);

    HRESULT (STDMETHODCALLTYPE *SetConcludePriorityComparison)(
        IUIAnimationManager *This,
        IUIAnimationPriorityComparison *comparison);

    HRESULT (STDMETHODCALLTYPE *SetDefaultLongestAcceptableDelay)(
        IUIAnimationManager *This,
        UI_ANIMATION_SECONDS delay);

    HRESULT (STDMETHODCALLTYPE *Shutdown)(
        IUIAnimationManager *This);

    END_INTERFACE
} IUIAnimationManagerVtbl;

interface IUIAnimationManager {
    CONST_VTBL IUIAnimationManagerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAnimationManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAnimationManager_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAnimationManager_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAnimationManager methods ***/
#define IUIAnimationManager_CreateAnimationVariable(This,initialvalue,variable) (This)->lpVtbl->CreateAnimationVariable(This,initialvalue,variable)
#define IUIAnimationManager_ScheduleTransition(This,variable,transition,timenow) (This)->lpVtbl->ScheduleTransition(This,variable,transition,timenow)
#define IUIAnimationManager_CreateStoryboard(This,storyboard) (This)->lpVtbl->CreateStoryboard(This,storyboard)
#define IUIAnimationManager_FinishAllStoryboards(This,deadline) (This)->lpVtbl->FinishAllStoryboards(This,deadline)
#define IUIAnimationManager_AbandonAllStoryboards(This) (This)->lpVtbl->AbandonAllStoryboards(This)
#define IUIAnimationManager_Update(This,timenow,updateresult) (This)->lpVtbl->Update(This,timenow,updateresult)
#define IUIAnimationManager_GetVariableFromTag(This,object,id,variable) (This)->lpVtbl->GetVariableFromTag(This,object,id,variable)
#define IUIAnimationManager_GetStoryboardFromTag(This,object,id,storyboard) (This)->lpVtbl->GetStoryboardFromTag(This,object,id,storyboard)
#define IUIAnimationManager_GetStatus(This,status) (This)->lpVtbl->GetStatus(This,status)
#define IUIAnimationManager_SetAnimationMode(This,mode) (This)->lpVtbl->SetAnimationMode(This,mode)
#define IUIAnimationManager_Pause(This) (This)->lpVtbl->Pause(This)
#define IUIAnimationManager_Resume(This) (This)->lpVtbl->Resume(This)
#define IUIAnimationManager_SetManagerEventHandler(This,handler) (This)->lpVtbl->SetManagerEventHandler(This,handler)
#define IUIAnimationManager_SetCancelPriorityComparison(This,comparison) (This)->lpVtbl->SetCancelPriorityComparison(This,comparison)
#define IUIAnimationManager_SetTrimPriorityComparison(This,comparison) (This)->lpVtbl->SetTrimPriorityComparison(This,comparison)
#define IUIAnimationManager_SetCompressPriorityComparison(This,comparison) (This)->lpVtbl->SetCompressPriorityComparison(This,comparison)
#define IUIAnimationManager_SetConcludePriorityComparison(This,comparison) (This)->lpVtbl->SetConcludePriorityComparison(This,comparison)
#define IUIAnimationManager_SetDefaultLongestAcceptableDelay(This,delay) (This)->lpVtbl->SetDefaultLongestAcceptableDelay(This,delay)
#define IUIAnimationManager_Shutdown(This) (This)->lpVtbl->Shutdown(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IUIAnimationManager_QueryInterface(IUIAnimationManager* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IUIAnimationManager_AddRef(IUIAnimationManager* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IUIAnimationManager_Release(IUIAnimationManager* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAnimationManager methods ***/
static FORCEINLINE HRESULT IUIAnimationManager_CreateAnimationVariable(IUIAnimationManager* This,UI_ANIMATION_SECONDS initialvalue,IUIAnimationVariable **variable) {
    return This->lpVtbl->CreateAnimationVariable(This,initialvalue,variable);
}
static FORCEINLINE HRESULT IUIAnimationManager_ScheduleTransition(IUIAnimationManager* This,IUIAnimationVariable *variable,IUIAnimationTransition *transition,UI_ANIMATION_SECONDS timenow) {
    return This->lpVtbl->ScheduleTransition(This,variable,transition,timenow);
}
static FORCEINLINE HRESULT IUIAnimationManager_CreateStoryboard(IUIAnimationManager* This,IUIAnimationStoryboard **storyboard) {
    return This->lpVtbl->CreateStoryboard(This,storyboard);
}
static FORCEINLINE HRESULT IUIAnimationManager_FinishAllStoryboards(IUIAnimationManager* This,UI_ANIMATION_SECONDS deadline) {
    return This->lpVtbl->FinishAllStoryboards(This,deadline);
}
static FORCEINLINE HRESULT IUIAnimationManager_AbandonAllStoryboards(IUIAnimationManager* This) {
    return This->lpVtbl->AbandonAllStoryboards(This);
}
static FORCEINLINE HRESULT IUIAnimationManager_Update(IUIAnimationManager* This,UI_ANIMATION_SECONDS timenow,UI_ANIMATION_UPDATE_RESULT *updateresult) {
    return This->lpVtbl->Update(This,timenow,updateresult);
}
static FORCEINLINE HRESULT IUIAnimationManager_GetVariableFromTag(IUIAnimationManager* This,IUnknown *object,UINT32 id,IUIAnimationVariable **variable) {
    return This->lpVtbl->GetVariableFromTag(This,object,id,variable);
}
static FORCEINLINE HRESULT IUIAnimationManager_GetStoryboardFromTag(IUIAnimationManager* This,IUnknown *object,UINT32 id,IUIAnimationStoryboard **storyboard) {
    return This->lpVtbl->GetStoryboardFromTag(This,object,id,storyboard);
}
static FORCEINLINE HRESULT IUIAnimationManager_GetStatus(IUIAnimationManager* This,UI_ANIMATION_MANAGER_STATUS *status) {
    return This->lpVtbl->GetStatus(This,status);
}
static FORCEINLINE HRESULT IUIAnimationManager_SetAnimationMode(IUIAnimationManager* This,UI_ANIMATION_MODE mode) {
    return This->lpVtbl->SetAnimationMode(This,mode);
}
static FORCEINLINE HRESULT IUIAnimationManager_Pause(IUIAnimationManager* This) {
    return This->lpVtbl->Pause(This);
}
static FORCEINLINE HRESULT IUIAnimationManager_Resume(IUIAnimationManager* This) {
    return This->lpVtbl->Resume(This);
}
static FORCEINLINE HRESULT IUIAnimationManager_SetManagerEventHandler(IUIAnimationManager* This,IUIAnimationManagerEventHandler *handler) {
    return This->lpVtbl->SetManagerEventHandler(This,handler);
}
static FORCEINLINE HRESULT IUIAnimationManager_SetCancelPriorityComparison(IUIAnimationManager* This,IUIAnimationPriorityComparison *comparison) {
    return This->lpVtbl->SetCancelPriorityComparison(This,comparison);
}
static FORCEINLINE HRESULT IUIAnimationManager_SetTrimPriorityComparison(IUIAnimationManager* This,IUIAnimationPriorityComparison *comparison) {
    return This->lpVtbl->SetTrimPriorityComparison(This,comparison);
}
static FORCEINLINE HRESULT IUIAnimationManager_SetCompressPriorityComparison(IUIAnimationManager* This,IUIAnimationPriorityComparison *comparison) {
    return This->lpVtbl->SetCompressPriorityComparison(This,comparison);
}
static FORCEINLINE HRESULT IUIAnimationManager_SetConcludePriorityComparison(IUIAnimationManager* This,IUIAnimationPriorityComparison *comparison) {
    return This->lpVtbl->SetConcludePriorityComparison(This,comparison);
}
static FORCEINLINE HRESULT IUIAnimationManager_SetDefaultLongestAcceptableDelay(IUIAnimationManager* This,UI_ANIMATION_SECONDS delay) {
    return This->lpVtbl->SetDefaultLongestAcceptableDelay(This,delay);
}
static FORCEINLINE HRESULT IUIAnimationManager_Shutdown(IUIAnimationManager* This) {
    return This->lpVtbl->Shutdown(This);
}
#endif
#endif

#endif


#endif  /* __IUIAnimationManager_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAnimationPriorityComparison interface
 */
#ifndef __IUIAnimationPriorityComparison_INTERFACE_DEFINED__
#define __IUIAnimationPriorityComparison_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAnimationPriorityComparison, 0x83fa9b74, 0x5f86, 0x4618, 0xbc,0x6a, 0xa2,0xfa,0xc1,0x9b,0x3f,0x44);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("83fa9b74-5f86-4618-bc6a-a2fac19b3f44")
IUIAnimationPriorityComparison : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE HasPriority(
        IUIAnimationStoryboard *scheduledboard,
        IUIAnimationStoryboard *newboard,
        UI_ANIMATION_PRIORITY_EFFECT effect) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAnimationPriorityComparison, 0x83fa9b74, 0x5f86, 0x4618, 0xbc,0x6a, 0xa2,0xfa,0xc1,0x9b,0x3f,0x44)
#endif
#else
typedef struct IUIAnimationPriorityComparisonVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAnimationPriorityComparison *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAnimationPriorityComparison *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAnimationPriorityComparison *This);

    /*** IUIAnimationPriorityComparison methods ***/
    HRESULT (STDMETHODCALLTYPE *HasPriority)(
        IUIAnimationPriorityComparison *This,
        IUIAnimationStoryboard *scheduledboard,
        IUIAnimationStoryboard *newboard,
        UI_ANIMATION_PRIORITY_EFFECT effect);

    END_INTERFACE
} IUIAnimationPriorityComparisonVtbl;

interface IUIAnimationPriorityComparison {
    CONST_VTBL IUIAnimationPriorityComparisonVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAnimationPriorityComparison_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAnimationPriorityComparison_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAnimationPriorityComparison_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAnimationPriorityComparison methods ***/
#define IUIAnimationPriorityComparison_HasPriority(This,scheduledboard,newboard,effect) (This)->lpVtbl->HasPriority(This,scheduledboard,newboard,effect)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IUIAnimationPriorityComparison_QueryInterface(IUIAnimationPriorityComparison* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IUIAnimationPriorityComparison_AddRef(IUIAnimationPriorityComparison* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IUIAnimationPriorityComparison_Release(IUIAnimationPriorityComparison* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAnimationPriorityComparison methods ***/
static FORCEINLINE HRESULT IUIAnimationPriorityComparison_HasPriority(IUIAnimationPriorityComparison* This,IUIAnimationStoryboard *scheduledboard,IUIAnimationStoryboard *newboard,UI_ANIMATION_PRIORITY_EFFECT effect) {
    return This->lpVtbl->HasPriority(This,scheduledboard,newboard,effect);
}
#endif
#endif

#endif


#endif  /* __IUIAnimationPriorityComparison_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAnimationTransitionFactory interface
 */
#ifndef __IUIAnimationTransitionFactory_INTERFACE_DEFINED__
#define __IUIAnimationTransitionFactory_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAnimationTransitionFactory, 0xfcd91e03, 0x3e3b, 0x45ad, 0xbb,0xb1, 0x6d,0xfc,0x81,0x53,0x74,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fcd91e03-3e3b-45ad-bbb1-6dfc8153743d")
IUIAnimationTransitionFactory : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateTransition(
        IUIAnimationInterpolator *interpolator,
        IUIAnimationTransition **transition) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAnimationTransitionFactory, 0xfcd91e03, 0x3e3b, 0x45ad, 0xbb,0xb1, 0x6d,0xfc,0x81,0x53,0x74,0x3d)
#endif
#else
typedef struct IUIAnimationTransitionFactoryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAnimationTransitionFactory *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAnimationTransitionFactory *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAnimationTransitionFactory *This);

    /*** IUIAnimationTransitionFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateTransition)(
        IUIAnimationTransitionFactory *This,
        IUIAnimationInterpolator *interpolator,
        IUIAnimationTransition **transition);

    END_INTERFACE
} IUIAnimationTransitionFactoryVtbl;

interface IUIAnimationTransitionFactory {
    CONST_VTBL IUIAnimationTransitionFactoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAnimationTransitionFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAnimationTransitionFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAnimationTransitionFactory_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAnimationTransitionFactory methods ***/
#define IUIAnimationTransitionFactory_CreateTransition(This,interpolator,transition) (This)->lpVtbl->CreateTransition(This,interpolator,transition)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IUIAnimationTransitionFactory_QueryInterface(IUIAnimationTransitionFactory* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IUIAnimationTransitionFactory_AddRef(IUIAnimationTransitionFactory* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IUIAnimationTransitionFactory_Release(IUIAnimationTransitionFactory* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAnimationTransitionFactory methods ***/
static FORCEINLINE HRESULT IUIAnimationTransitionFactory_CreateTransition(IUIAnimationTransitionFactory* This,IUIAnimationInterpolator *interpolator,IUIAnimationTransition **transition) {
    return This->lpVtbl->CreateTransition(This,interpolator,transition);
}
#endif
#endif

#endif


#endif  /* __IUIAnimationTransitionFactory_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAnimationInterpolator interface
 */
#ifndef __IUIAnimationInterpolator_INTERFACE_DEFINED__
#define __IUIAnimationInterpolator_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAnimationInterpolator, 0x7815cbba, 0xddf7, 0x478c, 0xa4,0x6c, 0x7b,0x6c,0x73,0x8b,0x79,0x78);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7815cbba-ddf7-478c-a46c-7b6c738b7978")
IUIAnimationInterpolator : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetInitialValueAndVelocity(
        double initialvalue,
        double initialvelocity) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDuration(
        UI_ANIMATION_SECONDS duration) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDuration(
        UI_ANIMATION_SECONDS *duration) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFinalValue(
        double *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE InterpolateValue(
        UI_ANIMATION_SECONDS offset,
        double *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE InterpolateVelocity(
        UI_ANIMATION_SECONDS offset,
        double *velocity) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDependencies(
        UI_ANIMATION_DEPENDENCIES *initialvaluedependencies,
        UI_ANIMATION_DEPENDENCIES *initialvelocitydependencies,
        UI_ANIMATION_DEPENDENCIES *durationdependencies) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAnimationInterpolator, 0x7815cbba, 0xddf7, 0x478c, 0xa4,0x6c, 0x7b,0x6c,0x73,0x8b,0x79,0x78)
#endif
#else
typedef struct IUIAnimationInterpolatorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAnimationInterpolator *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAnimationInterpolator *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAnimationInterpolator *This);

    /*** IUIAnimationInterpolator methods ***/
    HRESULT (STDMETHODCALLTYPE *SetInitialValueAndVelocity)(
        IUIAnimationInterpolator *This,
        double initialvalue,
        double initialvelocity);

    HRESULT (STDMETHODCALLTYPE *SetDuration)(
        IUIAnimationInterpolator *This,
        UI_ANIMATION_SECONDS duration);

    HRESULT (STDMETHODCALLTYPE *GetDuration)(
        IUIAnimationInterpolator *This,
        UI_ANIMATION_SECONDS *duration);

    HRESULT (STDMETHODCALLTYPE *GetFinalValue)(
        IUIAnimationInterpolator *This,
        double *value);

    HRESULT (STDMETHODCALLTYPE *InterpolateValue)(
        IUIAnimationInterpolator *This,
        UI_ANIMATION_SECONDS offset,
        double *value);

    HRESULT (STDMETHODCALLTYPE *InterpolateVelocity)(
        IUIAnimationInterpolator *This,
        UI_ANIMATION_SECONDS offset,
        double *velocity);

    HRESULT (STDMETHODCALLTYPE *GetDependencies)(
        IUIAnimationInterpolator *This,
        UI_ANIMATION_DEPENDENCIES *initialvaluedependencies,
        UI_ANIMATION_DEPENDENCIES *initialvelocitydependencies,
        UI_ANIMATION_DEPENDENCIES *durationdependencies);

    END_INTERFACE
} IUIAnimationInterpolatorVtbl;

interface IUIAnimationInterpolator {
    CONST_VTBL IUIAnimationInterpolatorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAnimationInterpolator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAnimationInterpolator_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAnimationInterpolator_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAnimationInterpolator methods ***/
#define IUIAnimationInterpolator_SetInitialValueAndVelocity(This,initialvalue,initialvelocity) (This)->lpVtbl->SetInitialValueAndVelocity(This,initialvalue,initialvelocity)
#define IUIAnimationInterpolator_SetDuration(This,duration) (This)->lpVtbl->SetDuration(This,duration)
#define IUIAnimationInterpolator_GetDuration(This,duration) (This)->lpVtbl->GetDuration(This,duration)
#define IUIAnimationInterpolator_GetFinalValue(This,value) (This)->lpVtbl->GetFinalValue(This,value)
#define IUIAnimationInterpolator_InterpolateValue(This,offset,value) (This)->lpVtbl->InterpolateValue(This,offset,value)
#define IUIAnimationInterpolator_InterpolateVelocity(This,offset,velocity) (This)->lpVtbl->InterpolateVelocity(This,offset,velocity)
#define IUIAnimationInterpolator_GetDependencies(This,initialvaluedependencies,initialvelocitydependencies,durationdependencies) (This)->lpVtbl->GetDependencies(This,initialvaluedependencies,initialvelocitydependencies,durationdependencies)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IUIAnimationInterpolator_QueryInterface(IUIAnimationInterpolator* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IUIAnimationInterpolator_AddRef(IUIAnimationInterpolator* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IUIAnimationInterpolator_Release(IUIAnimationInterpolator* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAnimationInterpolator methods ***/
static FORCEINLINE HRESULT IUIAnimationInterpolator_SetInitialValueAndVelocity(IUIAnimationInterpolator* This,double initialvalue,double initialvelocity) {
    return This->lpVtbl->SetInitialValueAndVelocity(This,initialvalue,initialvelocity);
}
static FORCEINLINE HRESULT IUIAnimationInterpolator_SetDuration(IUIAnimationInterpolator* This,UI_ANIMATION_SECONDS duration) {
    return This->lpVtbl->SetDuration(This,duration);
}
static FORCEINLINE HRESULT IUIAnimationInterpolator_GetDuration(IUIAnimationInterpolator* This,UI_ANIMATION_SECONDS *duration) {
    return This->lpVtbl->GetDuration(This,duration);
}
static FORCEINLINE HRESULT IUIAnimationInterpolator_GetFinalValue(IUIAnimationInterpolator* This,double *value) {
    return This->lpVtbl->GetFinalValue(This,value);
}
static FORCEINLINE HRESULT IUIAnimationInterpolator_InterpolateValue(IUIAnimationInterpolator* This,UI_ANIMATION_SECONDS offset,double *value) {
    return This->lpVtbl->InterpolateValue(This,offset,value);
}
static FORCEINLINE HRESULT IUIAnimationInterpolator_InterpolateVelocity(IUIAnimationInterpolator* This,UI_ANIMATION_SECONDS offset,double *velocity) {
    return This->lpVtbl->InterpolateVelocity(This,offset,velocity);
}
static FORCEINLINE HRESULT IUIAnimationInterpolator_GetDependencies(IUIAnimationInterpolator* This,UI_ANIMATION_DEPENDENCIES *initialvaluedependencies,UI_ANIMATION_DEPENDENCIES *initialvelocitydependencies,UI_ANIMATION_DEPENDENCIES *durationdependencies) {
    return This->lpVtbl->GetDependencies(This,initialvaluedependencies,initialvelocitydependencies,durationdependencies);
}
#endif
#endif

#endif


#endif  /* __IUIAnimationInterpolator_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAnimationTransitionLibrary interface
 */
#ifndef __IUIAnimationTransitionLibrary_INTERFACE_DEFINED__
#define __IUIAnimationTransitionLibrary_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAnimationTransitionLibrary, 0xca5a14b1, 0xd24f, 0x48b8, 0x8f,0xe4, 0xc7,0x81,0x69,0xba,0x95,0x4e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ca5a14b1-d24f-48b8-8fe4-c78169ba954e")
IUIAnimationTransitionLibrary : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateInstantaneousTransition(
        double finalvalue,
        IUIAnimationTransition **transition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateConstantTransition(
        UI_ANIMATION_SECONDS duration,
        IUIAnimationTransition **transition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateDiscreteTransition(
        UI_ANIMATION_SECONDS delay,
        double finalvalue,
        UI_ANIMATION_SECONDS hold,
        IUIAnimationTransition **transition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateLinearTransition(
        UI_ANIMATION_SECONDS duration,
        double finalvalue,
        IUIAnimationTransition **transition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateLinearTransitionFromSpeed(
        double speed,
        double finalvalue,
        IUIAnimationTransition **transition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateSinusoidalTransitionFromVelocity(
        UI_ANIMATION_SECONDS duration,
        UI_ANIMATION_SECONDS period,
        IUIAnimationTransition **transition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateSinusoidalTransitionFromRange(
        UI_ANIMATION_SECONDS duration,
        double minimumvalue,
        double maximumvalue,
        UI_ANIMATION_SECONDS period,
        UI_ANIMATION_SLOPE slope,
        IUIAnimationTransition **transition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateAccelerateDecelerateTransition(
        UI_ANIMATION_SECONDS duration,
        double finalvalue,
        double accelerationratio,
        double decelerationratio,
        IUIAnimationTransition **transition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateReversalTransition(
        UI_ANIMATION_SECONDS duration,
        IUIAnimationTransition **transition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateCubicTransition(
        UI_ANIMATION_SECONDS duration,
        double finalvalue,
        double finalvelocity,
        IUIAnimationTransition **transition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateSmoothStopTransition(
        UI_ANIMATION_SECONDS maximumduration,
        double finalvalue,
        IUIAnimationTransition **transition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateParabolicTransitionFromAcceleration(
        UI_ANIMATION_SECONDS finalvalue,
        double finalvelocity,
        double acceleration,
        IUIAnimationTransition **transition) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAnimationTransitionLibrary, 0xca5a14b1, 0xd24f, 0x48b8, 0x8f,0xe4, 0xc7,0x81,0x69,0xba,0x95,0x4e)
#endif
#else
typedef struct IUIAnimationTransitionLibraryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAnimationTransitionLibrary *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAnimationTransitionLibrary *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAnimationTransitionLibrary *This);

    /*** IUIAnimationTransitionLibrary methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateInstantaneousTransition)(
        IUIAnimationTransitionLibrary *This,
        double finalvalue,
        IUIAnimationTransition **transition);

    HRESULT (STDMETHODCALLTYPE *CreateConstantTransition)(
        IUIAnimationTransitionLibrary *This,
        UI_ANIMATION_SECONDS duration,
        IUIAnimationTransition **transition);

    HRESULT (STDMETHODCALLTYPE *CreateDiscreteTransition)(
        IUIAnimationTransitionLibrary *This,
        UI_ANIMATION_SECONDS delay,
        double finalvalue,
        UI_ANIMATION_SECONDS hold,
        IUIAnimationTransition **transition);

    HRESULT (STDMETHODCALLTYPE *CreateLinearTransition)(
        IUIAnimationTransitionLibrary *This,
        UI_ANIMATION_SECONDS duration,
        double finalvalue,
        IUIAnimationTransition **transition);

    HRESULT (STDMETHODCALLTYPE *CreateLinearTransitionFromSpeed)(
        IUIAnimationTransitionLibrary *This,
        double speed,
        double finalvalue,
        IUIAnimationTransition **transition);

    HRESULT (STDMETHODCALLTYPE *CreateSinusoidalTransitionFromVelocity)(
        IUIAnimationTransitionLibrary *This,
        UI_ANIMATION_SECONDS duration,
        UI_ANIMATION_SECONDS period,
        IUIAnimationTransition **transition);

    HRESULT (STDMETHODCALLTYPE *CreateSinusoidalTransitionFromRange)(
        IUIAnimationTransitionLibrary *This,
        UI_ANIMATION_SECONDS duration,
        double minimumvalue,
        double maximumvalue,
        UI_ANIMATION_SECONDS period,
        UI_ANIMATION_SLOPE slope,
        IUIAnimationTransition **transition);

    HRESULT (STDMETHODCALLTYPE *CreateAccelerateDecelerateTransition)(
        IUIAnimationTransitionLibrary *This,
        UI_ANIMATION_SECONDS duration,
        double finalvalue,
        double accelerationratio,
        double decelerationratio,
        IUIAnimationTransition **transition);

    HRESULT (STDMETHODCALLTYPE *CreateReversalTransition)(
        IUIAnimationTransitionLibrary *This,
        UI_ANIMATION_SECONDS duration,
        IUIAnimationTransition **transition);

    HRESULT (STDMETHODCALLTYPE *CreateCubicTransition)(
        IUIAnimationTransitionLibrary *This,
        UI_ANIMATION_SECONDS duration,
        double finalvalue,
        double finalvelocity,
        IUIAnimationTransition **transition);

    HRESULT (STDMETHODCALLTYPE *CreateSmoothStopTransition)(
        IUIAnimationTransitionLibrary *This,
        UI_ANIMATION_SECONDS maximumduration,
        double finalvalue,
        IUIAnimationTransition **transition);

    HRESULT (STDMETHODCALLTYPE *CreateParabolicTransitionFromAcceleration)(
        IUIAnimationTransitionLibrary *This,
        UI_ANIMATION_SECONDS finalvalue,
        double finalvelocity,
        double acceleration,
        IUIAnimationTransition **transition);

    END_INTERFACE
} IUIAnimationTransitionLibraryVtbl;

interface IUIAnimationTransitionLibrary {
    CONST_VTBL IUIAnimationTransitionLibraryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAnimationTransitionLibrary_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAnimationTransitionLibrary_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAnimationTransitionLibrary_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAnimationTransitionLibrary methods ***/
#define IUIAnimationTransitionLibrary_CreateInstantaneousTransition(This,finalvalue,transition) (This)->lpVtbl->CreateInstantaneousTransition(This,finalvalue,transition)
#define IUIAnimationTransitionLibrary_CreateConstantTransition(This,duration,transition) (This)->lpVtbl->CreateConstantTransition(This,duration,transition)
#define IUIAnimationTransitionLibrary_CreateDiscreteTransition(This,delay,finalvalue,hold,transition) (This)->lpVtbl->CreateDiscreteTransition(This,delay,finalvalue,hold,transition)
#define IUIAnimationTransitionLibrary_CreateLinearTransition(This,duration,finalvalue,transition) (This)->lpVtbl->CreateLinearTransition(This,duration,finalvalue,transition)
#define IUIAnimationTransitionLibrary_CreateLinearTransitionFromSpeed(This,speed,finalvalue,transition) (This)->lpVtbl->CreateLinearTransitionFromSpeed(This,speed,finalvalue,transition)
#define IUIAnimationTransitionLibrary_CreateSinusoidalTransitionFromVelocity(This,duration,period,transition) (This)->lpVtbl->CreateSinusoidalTransitionFromVelocity(This,duration,period,transition)
#define IUIAnimationTransitionLibrary_CreateSinusoidalTransitionFromRange(This,duration,minimumvalue,maximumvalue,period,slope,transition) (This)->lpVtbl->CreateSinusoidalTransitionFromRange(This,duration,minimumvalue,maximumvalue,period,slope,transition)
#define IUIAnimationTransitionLibrary_CreateAccelerateDecelerateTransition(This,duration,finalvalue,accelerationratio,decelerationratio,transition) (This)->lpVtbl->CreateAccelerateDecelerateTransition(This,duration,finalvalue,accelerationratio,decelerationratio,transition)
#define IUIAnimationTransitionLibrary_CreateReversalTransition(This,duration,transition) (This)->lpVtbl->CreateReversalTransition(This,duration,transition)
#define IUIAnimationTransitionLibrary_CreateCubicTransition(This,duration,finalvalue,finalvelocity,transition) (This)->lpVtbl->CreateCubicTransition(This,duration,finalvalue,finalvelocity,transition)
#define IUIAnimationTransitionLibrary_CreateSmoothStopTransition(This,maximumduration,finalvalue,transition) (This)->lpVtbl->CreateSmoothStopTransition(This,maximumduration,finalvalue,transition)
#define IUIAnimationTransitionLibrary_CreateParabolicTransitionFromAcceleration(This,finalvalue,finalvelocity,acceleration,transition) (This)->lpVtbl->CreateParabolicTransitionFromAcceleration(This,finalvalue,finalvelocity,acceleration,transition)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IUIAnimationTransitionLibrary_QueryInterface(IUIAnimationTransitionLibrary* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IUIAnimationTransitionLibrary_AddRef(IUIAnimationTransitionLibrary* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IUIAnimationTransitionLibrary_Release(IUIAnimationTransitionLibrary* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAnimationTransitionLibrary methods ***/
static FORCEINLINE HRESULT IUIAnimationTransitionLibrary_CreateInstantaneousTransition(IUIAnimationTransitionLibrary* This,double finalvalue,IUIAnimationTransition **transition) {
    return This->lpVtbl->CreateInstantaneousTransition(This,finalvalue,transition);
}
static FORCEINLINE HRESULT IUIAnimationTransitionLibrary_CreateConstantTransition(IUIAnimationTransitionLibrary* This,UI_ANIMATION_SECONDS duration,IUIAnimationTransition **transition) {
    return This->lpVtbl->CreateConstantTransition(This,duration,transition);
}
static FORCEINLINE HRESULT IUIAnimationTransitionLibrary_CreateDiscreteTransition(IUIAnimationTransitionLibrary* This,UI_ANIMATION_SECONDS delay,double finalvalue,UI_ANIMATION_SECONDS hold,IUIAnimationTransition **transition) {
    return This->lpVtbl->CreateDiscreteTransition(This,delay,finalvalue,hold,transition);
}
static FORCEINLINE HRESULT IUIAnimationTransitionLibrary_CreateLinearTransition(IUIAnimationTransitionLibrary* This,UI_ANIMATION_SECONDS duration,double finalvalue,IUIAnimationTransition **transition) {
    return This->lpVtbl->CreateLinearTransition(This,duration,finalvalue,transition);
}
static FORCEINLINE HRESULT IUIAnimationTransitionLibrary_CreateLinearTransitionFromSpeed(IUIAnimationTransitionLibrary* This,double speed,double finalvalue,IUIAnimationTransition **transition) {
    return This->lpVtbl->CreateLinearTransitionFromSpeed(This,speed,finalvalue,transition);
}
static FORCEINLINE HRESULT IUIAnimationTransitionLibrary_CreateSinusoidalTransitionFromVelocity(IUIAnimationTransitionLibrary* This,UI_ANIMATION_SECONDS duration,UI_ANIMATION_SECONDS period,IUIAnimationTransition **transition) {
    return This->lpVtbl->CreateSinusoidalTransitionFromVelocity(This,duration,period,transition);
}
static FORCEINLINE HRESULT IUIAnimationTransitionLibrary_CreateSinusoidalTransitionFromRange(IUIAnimationTransitionLibrary* This,UI_ANIMATION_SECONDS duration,double minimumvalue,double maximumvalue,UI_ANIMATION_SECONDS period,UI_ANIMATION_SLOPE slope,IUIAnimationTransition **transition) {
    return This->lpVtbl->CreateSinusoidalTransitionFromRange(This,duration,minimumvalue,maximumvalue,period,slope,transition);
}
static FORCEINLINE HRESULT IUIAnimationTransitionLibrary_CreateAccelerateDecelerateTransition(IUIAnimationTransitionLibrary* This,UI_ANIMATION_SECONDS duration,double finalvalue,double accelerationratio,double decelerationratio,IUIAnimationTransition **transition) {
    return This->lpVtbl->CreateAccelerateDecelerateTransition(This,duration,finalvalue,accelerationratio,decelerationratio,transition);
}
static FORCEINLINE HRESULT IUIAnimationTransitionLibrary_CreateReversalTransition(IUIAnimationTransitionLibrary* This,UI_ANIMATION_SECONDS duration,IUIAnimationTransition **transition) {
    return This->lpVtbl->CreateReversalTransition(This,duration,transition);
}
static FORCEINLINE HRESULT IUIAnimationTransitionLibrary_CreateCubicTransition(IUIAnimationTransitionLibrary* This,UI_ANIMATION_SECONDS duration,double finalvalue,double finalvelocity,IUIAnimationTransition **transition) {
    return This->lpVtbl->CreateCubicTransition(This,duration,finalvalue,finalvelocity,transition);
}
static FORCEINLINE HRESULT IUIAnimationTransitionLibrary_CreateSmoothStopTransition(IUIAnimationTransitionLibrary* This,UI_ANIMATION_SECONDS maximumduration,double finalvalue,IUIAnimationTransition **transition) {
    return This->lpVtbl->CreateSmoothStopTransition(This,maximumduration,finalvalue,transition);
}
static FORCEINLINE HRESULT IUIAnimationTransitionLibrary_CreateParabolicTransitionFromAcceleration(IUIAnimationTransitionLibrary* This,UI_ANIMATION_SECONDS finalvalue,double finalvelocity,double acceleration,IUIAnimationTransition **transition) {
    return This->lpVtbl->CreateParabolicTransitionFromAcceleration(This,finalvalue,finalvelocity,acceleration,transition);
}
#endif
#endif

#endif


#endif  /* __IUIAnimationTransitionLibrary_INTERFACE_DEFINED__ */


DEFINE_GUID(LIBID_UIAnimation, 0x44ca24db, 0x1a92, 0x4149, 0xba,0xb5, 0xfb,0x14,0xd6,0x4b,0x40,0x1e);

/*****************************************************************************
 * UIAnimationTimer coclass
 */

DEFINE_GUID(CLSID_UIAnimationTimer, 0xbfcd4a0c, 0x06b6, 0x4384, 0xb7,0x68, 0x0d,0xaa,0x79,0x2c,0x38,0x0e);

#ifdef __cplusplus
class DECLSPEC_UUID("bfcd4a0c-06b6-4384-b768-0daa792c380e") UIAnimationTimer;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(UIAnimationTimer, 0xbfcd4a0c, 0x06b6, 0x4384, 0xb7,0x68, 0x0d,0xaa,0x79,0x2c,0x38,0x0e)
#endif
#endif

/*****************************************************************************
 * UIAnimationManager coclass
 */

DEFINE_GUID(CLSID_UIAnimationManager, 0x4c1fc63a, 0x695c, 0x47e8, 0xa3,0x39, 0x1a,0x19,0x4b,0xe3,0xd0,0xb8);

#ifdef __cplusplus
class DECLSPEC_UUID("4c1fc63a-695c-47e8-a339-1a194be3d0b8") UIAnimationManager;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(UIAnimationManager, 0x4c1fc63a, 0x695c, 0x47e8, 0xa3,0x39, 0x1a,0x19,0x4b,0xe3,0xd0,0xb8)
#endif
#endif

/*****************************************************************************
 * UIAnimationTransitionFactory coclass
 */

DEFINE_GUID(CLSID_UIAnimationTransitionFactory, 0x8a9b1cdd, 0xfcd7, 0x419c, 0x8b,0x44, 0x42,0xfd,0x17,0xdb,0x18,0x87);

#ifdef __cplusplus
class DECLSPEC_UUID("8a9b1cdd-fcd7-419c-8b44-42fd17db1887") UIAnimationTransitionFactory;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(UIAnimationTransitionFactory, 0x8a9b1cdd, 0xfcd7, 0x419c, 0x8b,0x44, 0x42,0xfd,0x17,0xdb,0x18,0x87)
#endif
#endif

/*****************************************************************************
 * UIAnimationTransitionLibrary coclass
 */

DEFINE_GUID(CLSID_UIAnimationTransitionLibrary, 0x1d6322ad, 0xaa85, 0x4ef5, 0xa8,0x28, 0x86,0xd7,0x10,0x67,0xd1,0x45);

#ifdef __cplusplus
class DECLSPEC_UUID("1d6322ad-aa85-4ef5-a828-86d71067d145") UIAnimationTransitionLibrary;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(UIAnimationTransitionLibrary, 0x1d6322ad, 0xaa85, 0x4ef5, 0xa8,0x28, 0x86,0xd7,0x10,0x67,0xd1,0x45)
#endif
#endif

/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __uianimation_h__ */
