Louis Lenders : uianimation: Implement IUIAnimationManager::CreateStoryboard.

Alexandre Julliard julliard at winehq.org
Thu Oct 31 17:39:30 CDT 2019


Module: wine
Branch: master
Commit: b31cd326388599508cd5cf9a87d04795d9450147
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=b31cd326388599508cd5cf9a87d04795d9450147

Author: Louis Lenders <xerox.xerox2000x at gmail.com>
Date:   Wed Oct 30 23:28:11 2019 +0000

uianimation: Implement IUIAnimationManager::CreateStoryboard.

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/uianimation/main.c | 223 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 221 insertions(+), 2 deletions(-)

diff --git a/dlls/uianimation/main.c b/dlls/uianimation/main.c
index b26042a5e2..da0cb48257 100644
--- a/dlls/uianimation/main.c
+++ b/dlls/uianimation/main.c
@@ -118,6 +118,225 @@ static const struct IClassFactoryVtbl class_factory_vtbl =
     class_factory_LockServer
 };
 
+/***********************************************************************
+ *          IUIAnimationStoryboard
+ */
+struct animation_storyboard
+{
+    IUIAnimationStoryboard IUIAnimationStoryboard_iface;
+    LONG ref;
+};
+
+struct animation_storyboard *impl_from_IUIAnimationStoryboard( IUIAnimationStoryboard *iface )
+{
+    return CONTAINING_RECORD( iface, struct animation_storyboard, IUIAnimationStoryboard_iface );
+}
+
+static HRESULT WINAPI WINAPI animation_storyboard_QueryInterface( IUIAnimationStoryboard *iface,
+                                                 REFIID iid, void **obj )
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+
+    TRACE( "(%p)->(%s %p)\n", This, debugstr_guid( iid ), obj );
+
+    if (IsEqualIID( iid, &IID_IUnknown ) ||
+        IsEqualIID( iid, &IID_IUIAnimationStoryboard ))
+    {
+        IUIAnimationStoryboard_AddRef( iface );
+        *obj = iface;
+        return S_OK;
+    }
+
+    FIXME( "interface %s not implemented\n", debugstr_guid( iid ) );
+    *obj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI animation_storyboard_AddRef( IUIAnimationStoryboard *iface )
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+    ULONG ref = InterlockedIncrement( &This->ref );
+
+    TRACE( "(%p) ref = %u\n", This, ref );
+    return ref;
+}
+
+static ULONG WINAPI animation_storyboard_Release( IUIAnimationStoryboard *iface )
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE( "(%p) ref = %u\n", This, ref );
+
+    if (!ref)
+        heap_free( This );
+
+    return ref;
+}
+
+static HRESULT WINAPI animation_storyboard_AddTransition (IUIAnimationStoryboard *iface, IUIAnimationVariable *variable,
+        IUIAnimationTransition *transition)
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+    FIXME( "stub (%p)->(  )\n", This );
+    return S_OK;
+}
+
+static HRESULT WINAPI animation_storyboard_AddKeyframeAtOffset (IUIAnimationStoryboard *iface, UI_ANIMATION_KEYFRAME existingframe,
+        UI_ANIMATION_SECONDS offset, UI_ANIMATION_KEYFRAME *keyframe)
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+    FIXME( "stub (%p)->(  )\n", This );
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI animation_storyboard_AddKeyframeAfterTransition (IUIAnimationStoryboard *iface,IUIAnimationTransition *transition,
+        UI_ANIMATION_KEYFRAME *keyframe)
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+    FIXME( "stub (%p)->(  )\n", This );
+    return S_OK;
+}
+
+static HRESULT WINAPI animation_storyboard_AddTransitionAtKeyframe (IUIAnimationStoryboard *iface, IUIAnimationVariable *variable,
+        IUIAnimationTransition *transition, UI_ANIMATION_KEYFRAME start_key)
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+    FIXME( "stub (%p)->(  )\n", This );
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI animation_storyboard_AddTransitionBetweenKeyframes (IUIAnimationStoryboard *iface, IUIAnimationVariable *variable,
+        IUIAnimationTransition *transition, UI_ANIMATION_KEYFRAME start_key, UI_ANIMATION_KEYFRAME end_key)
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+    FIXME( "stub (%p)->(  )\n", This );
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI animation_storyboard_RepeatBetweenKeyframes (IUIAnimationStoryboard *iface, UI_ANIMATION_KEYFRAME start_key,
+        UI_ANIMATION_KEYFRAME end_key, INT32 count)
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+    FIXME( "stub (%p)->(  )\n", This );
+    return S_OK;
+}
+
+static HRESULT WINAPI animation_storyboard_HoldVariable (IUIAnimationStoryboard *iface,  IUIAnimationVariable *variable)
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+    FIXME( "stub (%p)->(  )\n", This );
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI animation_storyboard_SetLongestAcceptableDelay (IUIAnimationStoryboard *iface,  UI_ANIMATION_SECONDS delay)
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+    FIXME( "stub (%p)->(  )\n", This );
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI animation_storyboard_Schedule (IUIAnimationStoryboard *iface, UI_ANIMATION_SECONDS now,
+        UI_ANIMATION_SCHEDULING_RESULT *result)
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+    FIXME( "stub (%p)->(  )\n", This );
+    return 0;
+}
+
+static HRESULT WINAPI animation_storyboard_Conclude (IUIAnimationStoryboard *iface)
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+    FIXME( "stub (%p)->(  )\n", This );
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI animation_storyboard_Finish (IUIAnimationStoryboard *iface,  UI_ANIMATION_SECONDS deadline)
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+    FIXME( "stub (%p)->(  )\n", This );
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI animation_storyboard_Abandon (IUIAnimationStoryboard *iface)
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+    FIXME( "stub (%p)->(  )\n", This );
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI animation_storyboard_SetTag(IUIAnimationStoryboard *iface, IUnknown *object, UINT32 id)
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+    FIXME( "stub (%p)->(  )\n", This );
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI animation_storyboard_GetTag (IUIAnimationStoryboard *iface, IUnknown **object, UINT32 *id)
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+    FIXME( "stub (%p)->(  )\n", This );
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI animation_storyboard_GetStatus (IUIAnimationStoryboard *iface, UI_ANIMATION_STORYBOARD_STATUS *status)
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+    FIXME( "stub (%p)->(  )\n", This );
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI animation_storyboard_GetElapsedTime (IUIAnimationStoryboard *iface,  UI_ANIMATION_SECONDS *elapsed)
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+    FIXME( "stub (%p)->(  )\n", This );
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI animation_storyboard_SetStoryboardEventHandler (IUIAnimationStoryboard *iface, IUIAnimationStoryboardEventHandler *handler)
+{
+    struct animation_storyboard *This = impl_from_IUIAnimationStoryboard( iface );
+    FIXME( "stub (%p)->(  )\n", This );
+    return S_OK;
+}
+
+const struct IUIAnimationStoryboardVtbl animation_storyboard_vtbl =
+{
+    animation_storyboard_QueryInterface,
+    animation_storyboard_AddRef,
+    animation_storyboard_Release,
+    animation_storyboard_AddTransition,
+    animation_storyboard_AddKeyframeAtOffset,
+    animation_storyboard_AddKeyframeAfterTransition,
+    animation_storyboard_AddTransitionAtKeyframe,
+    animation_storyboard_AddTransitionBetweenKeyframes,
+    animation_storyboard_RepeatBetweenKeyframes,
+    animation_storyboard_HoldVariable,
+    animation_storyboard_SetLongestAcceptableDelay,
+    animation_storyboard_Schedule ,
+    animation_storyboard_Conclude ,
+    animation_storyboard_Finish ,
+    animation_storyboard_Abandon,
+    animation_storyboard_SetTag,
+    animation_storyboard_GetTag ,
+    animation_storyboard_GetStatus ,
+    animation_storyboard_GetElapsedTime,
+    animation_storyboard_SetStoryboardEventHandler
+};
+
+static HRESULT animation_storyboard_create( IUIAnimationStoryboard **obj )
+{
+    struct animation_storyboard *This = heap_alloc( sizeof(*This) );
+
+    if (!This) return E_OUTOFMEMORY;
+    This->IUIAnimationStoryboard_iface.lpVtbl = &animation_storyboard_vtbl;
+    This->ref = 1;
+
+    *obj = &This->IUIAnimationStoryboard_iface;
+
+    return S_OK;
+}
+
 /***********************************************************************
  *          IUIAnimationManager
  */
@@ -192,8 +411,8 @@ static HRESULT WINAPI manager_ScheduleTransition( IUIAnimationManager *iface, IU
 static HRESULT WINAPI manager_CreateStoryboard( IUIAnimationManager *iface, IUIAnimationStoryboard **storyboard )
 {
     struct manager *This = impl_from_IUIAnimationManager( iface );
-    FIXME( "stub (%p)->(%p)\n", This, storyboard );
-    return E_NOTIMPL;
+    TRACE( "(%p)->(%p)\n", This, storyboard );
+    return animation_storyboard_create(storyboard);
 }
 
 static HRESULT WINAPI manager_FinishAllStoryboards( IUIAnimationManager *iface, UI_ANIMATION_SECONDS max_time )




More information about the wine-cvs mailing list