#if !defined(CTRL__OldAnimation_h__INCLUDED) #define CTRL__OldAnimation_h__INCLUDED #pragma once #include "SmObject.h" #include "OldExtension.h" /***************************************************************************\ ***************************************************************************** * * class OldAnimationT * * OldAnimationT defines a common implementation class for building * Animations in DirectUser. * ***************************************************************************** \***************************************************************************/ template class OldAnimationT : public SmObjectT { // Operations public: static HRESULT Build(GANI_DESC * pDesc, REFIID riid, void ** ppv) { AssertWritePtr(ppv); if (pDesc->cbSize != sizeof(desc)) { return E_INVALIDARG; } OldAnimationT * pObj = new OldAnimationT; if (pObj != NULL) { pObj->m_cRef = 1; HRESULT hr = pObj->Create(pDesc); if (SUCCEEDED(hr)) { // // Animations need to be AddRef()'d again (have a reference // count of 2) because they need to outlife the initial call // to Release() after the called has setup the animation // returned from BuildAnimation(). // // This is because the Animation continues to life until it // has fully executed (or has been aborted). // hr = pObj->QueryInterface(riid, ppv); } else { pObj->Release(); } return hr; } else { return E_OUTOFMEMORY; } } }; //------------------------------------------------------------------------------ class OldAnimation : public OldExtension, public IAnimation { // Construction protected: inline OldAnimation(); virtual ~OldAnimation() PURE; HRESULT Create(const GUID * pguidID, PRID * pprid, GANI_DESC * pDesc); void Destroy(BOOL fFinal); // Operations public: STDMETHOD_(void, SetFunction)(IInterpolation * pipol); STDMETHOD_(void, SetTime)(IAnimation::ETime time); STDMETHOD_(void, SetCallback)(IAnimationCallback * pcb); // Implementation protected: static void CALLBACK RawActionProc(GMA_ACTIONINFO * pmai); virtual void Action(GMA_ACTIONINFO * pmai) PURE; static HRESULT GetInterface(HGADGET hgad, PRID prid, REFIID riid, void ** ppvUnk); virtual void OnRemoveExisting(); virtual void OnDestroySubject(); virtual void OnDestroyListener(); virtual void OnComplete() { } virtual void OnAsyncDestroy(); void CleanupChangeGadget(); // Data protected: HACTION m_hact; IInterpolation * m_pipol; IAnimationCallback * m_pcb; IAnimation::ETime m_time; // Time when completed BOOL m_fStartDestroy:1; BOOL m_fProcessing:1; UINT m_DEBUG_cUpdates; }; //------------------------------------------------------------------------------ class OldAlphaAnimation : public OldAnimation { // Construction public: inline OldAlphaAnimation(); virtual ~OldAlphaAnimation(); HRESULT Create(GANI_DESC * pDesc); // Operations public: STDMETHOD_(UINT, GetID)() const; static HRESULT GetInterface(HGADGET hgad, REFIID riid, void ** ppvUnk); // Implementaton protected: virtual void Action(GMA_ACTIONINFO * pmai); virtual void OnComplete(); // Data protected: static PRID s_pridAlpha; static const IID * s_rgpIID[]; float m_flStart; float m_flEnd; BOOL m_fPushToChildren; UINT m_nOnComplete; }; //------------------------------------------------------------------------------ class OldScaleAnimation : public OldAnimation { // Construction public: inline OldScaleAnimation(); virtual ~OldScaleAnimation(); HRESULT Create(GANI_DESC * pDesc); // Operations public: STDMETHOD_(UINT, GetID)() const; static HRESULT GetInterface(HGADGET hgad, REFIID riid, void ** ppvUnk); // Implementaton protected: virtual void Action(GMA_ACTIONINFO * pmai); // Data protected: static PRID s_pridScale; static const IID * s_rgpIID[]; GANI_SCALEDESC::EAlignment m_al; float m_flStart; float m_flEnd; POINT m_ptStart; SIZE m_sizeCtrl; }; //------------------------------------------------------------------------------ class OldRectAnimation : public OldAnimation { // Construction public: inline OldRectAnimation(); virtual ~OldRectAnimation(); HRESULT Create(GANI_DESC * pDesc); // Operations public: STDMETHOD_(UINT, GetID)() const; static HRESULT GetInterface(HGADGET hgad, REFIID riid, void ** ppvUnk); // Implementaton protected: virtual void Action(GMA_ACTIONINFO * pmai); // Data protected: static PRID s_pridRect; static const IID * s_rgpIID[]; POINT m_ptStart; POINT m_ptEnd; SIZE m_sizeStart; SIZE m_sizeEnd; UINT m_nChangeFlags; }; //------------------------------------------------------------------------------ class OldRotateAnimation : public OldAnimation { // Construction public: inline OldRotateAnimation(); virtual ~OldRotateAnimation(); HRESULT Create(GANI_DESC * pDesc); // Operations public: STDMETHOD_(UINT, GetID)() const; static HRESULT GetInterface(HGADGET hgad, REFIID riid, void ** ppvUnk); // Implementaton protected: virtual void Action(GMA_ACTIONINFO * pmai); // Data protected: static PRID s_pridRotate; static const IID * s_rgpIID[]; float m_flStart; float m_flEnd; UINT m_nDir; }; #include "OldAnimation.inl" #endif // CTRL__OldAnimation_h__INCLUDED