//////////////////////////////////////////////////////////////////////////////////////////////////// // NoesisGUI - http://www.noesisengine.com // Copyright (c) 2013 Noesis Technologies S.L. All Rights Reserved. //////////////////////////////////////////////////////////////////////////////////////////////////// #ifndef __GUI_BOOLEANANIMATIONBASE_H__ #define __GUI_BOOLEANANIMATIONBASE_H__ #include #include #include #include namespace Noesis { //////////////////////////////////////////////////////////////////////////////////////////////////// /// Abstract class that, when implemented, animates a *Boolean* value. /// /// Derive from a BooleanAnimationBase 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 BooleanAnimationBase 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.booleananimationbase.aspx //////////////////////////////////////////////////////////////////////////////////////////////////// class NS_GUI_ANIMATION_API BooleanAnimationBase: public AnimationTimeline { public: /// Gets the current value of the animation bool GetCurrentValue(bool defaultOrigin, bool defaultDestination, AnimationClock* clock); protected: /// Calculates a value that represents the current value of the property being animated, /// as determined by the host animation virtual bool GetCurrentValueCore(bool defaultOrigin, bool 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(BooleanAnimationBase, AnimationTimeline) }; } #endif