You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.0 KiB
70 lines
2.0 KiB
#if !defined(CTRL__Animation_h__INCLUDED)
|
|
#define CTRL__Animation_h__INCLUDED
|
|
#pragma once
|
|
|
|
#include "Extension.h"
|
|
|
|
#if ENABLE_MSGTABLE_API
|
|
|
|
//------------------------------------------------------------------------------
|
|
class DuAnimation :
|
|
public AnimationImpl<DuAnimation, DuExtension>
|
|
{
|
|
// Construction
|
|
public:
|
|
inline DuAnimation();
|
|
~DuAnimation();
|
|
static HRESULT InitClass();
|
|
static HRESULT PreBuild(DUser::Gadget::ConstructInfo * pci);
|
|
HRESULT PostBuild(DUser::Gadget::ConstructInfo * pci);
|
|
void Destroy(BOOL fFinal);
|
|
|
|
// Public API
|
|
public:
|
|
dapi HRESULT ApiOnRemoveExisting(Animation::OnRemoveExistingMsg * pmsg);
|
|
dapi HRESULT ApiOnDestroySubject(Animation::OnDestroySubjectMsg * pmsg);
|
|
dapi HRESULT ApiOnAsyncDestroy(Animation::OnAsyncDestroyMsg * pmsg);
|
|
|
|
dapi HRESULT ApiAddRef(Animation::AddRefMsg *) { AddRef(); return S_OK; }
|
|
dapi HRESULT ApiRelease(Animation::ReleaseMsg *) { Release(); return S_OK; }
|
|
|
|
dapi HRESULT ApiSetTime(Animation::SetTimeMsg * pmsg);
|
|
|
|
// Implementation
|
|
protected:
|
|
static void CALLBACK
|
|
RawActionProc(GMA_ACTIONINFO * pmai);
|
|
void ActionProc(GMA_ACTIONINFO * pmai);
|
|
|
|
void CleanupChangeGadget();
|
|
|
|
inline void AddRef();
|
|
inline void Release();
|
|
|
|
// Data
|
|
protected:
|
|
static MSGID s_msgidComplete;
|
|
|
|
HACTION m_hact;
|
|
Animation::ETime
|
|
m_time; // Time when completed
|
|
UINT m_cRef;
|
|
|
|
Interpolation *
|
|
m_pipol;
|
|
Flow * m_pgflow;
|
|
|
|
BOOL m_fStartDestroy:1;
|
|
BOOL m_fProcessing:1;
|
|
|
|
#if DBG
|
|
UINT m_DEBUG_cUpdates;
|
|
#endif
|
|
};
|
|
|
|
|
|
#endif // ENABLE_MSGTABLE_API
|
|
|
|
#include "Animation.inl"
|
|
|
|
#endif // CTRL__Animation_h__INCLUDED
|