//////////////////////////////////////////////////////////////////////////////////////////////////// // NoesisGUI - http://www.noesisengine.com // Copyright (c) 2013 Noesis Technologies S.L. All Rights Reserved. //////////////////////////////////////////////////////////////////////////////////////////////////// #ifndef __GUI_RECTANIMATIONBASE_H__ #define __GUI_RECTANIMATIONBASE_H__ #include #include #include #include namespace Noesis { struct Rect; //////////////////////////////////////////////////////////////////////////////////////////////////// /// Abstract class that, when implemented, animates a *Rect* value. /// /// Derive from a RectAnimationBase class and implement the *GetCurrentValueCore* method. The /// *GetCurrentValueCore* method returns the current value of the animation. It takes three /// parameters: a suggested starting value, a suggested ending value, and an AnimationClock, which /// you use to determine the progress of the animation. /// /// Because RectAnimationBase class inherit from the Freezable class, you must also override /// *CreateInstanceCore* core to return a new instance of your class. /// /// http://msdn.microsoft.com/en-us/library/system.windows.media.animation.rectanimationbase.aspx //////////////////////////////////////////////////////////////////////////////////////////////////// class NS_GUI_ANIMATION_API RectAnimationBase: public AnimationTimeline { public: /// Gets the current value of the animation Rect GetCurrentValue(const Rect& defaultOrigin, const Rect& defaultDestination, AnimationClock* clock); protected: /// Calculates a value that represents the current value of the property being animated, /// as determined by the host animation virtual Rect GetCurrentValueCore(const Rect& defaultOrigin, const Rect& defaultDestination, AnimationClock* clock) = 0; private: /// From AnimationTimeline //@{ const Type* GetTargetPropertyType() const final override; Ptr GetCurrentValue(BaseComponent* defaultOrigin, BaseComponent* defaultDestination, AnimationClock* clock) final override; //@} NS_DECLARE_REFLECTION(RectAnimationBase, AnimationTimeline) }; } #endif