//////////////////////////////////////////////////////////////////////////////////////////////////// // NoesisGUI - http://www.noesisengine.com // Copyright (c) 2013 Noesis Technologies S.L. All Rights Reserved. //////////////////////////////////////////////////////////////////////////////////////////////////// #ifndef __GUI_THICKNESSANIMATION_H__ #define __GUI_THICKNESSANIMATION_H__ #include #include #include #include namespace Noesis { template class Nullable; //////////////////////////////////////////////////////////////////////////////////////////////////// /// Animates the value of a *Thickness* property between two target values using linear /// interpolationover a specified *Duration*. /// /// It is common to specify a starting value (set it by using the *From* property) and an ending /// value (set it by using the *To* property). However, you can also specify only a starting value, /// a destination value, or an offset value. In these cases, the animation obtains the missing /// target value from the property that is being animated. /// /// http://msdn.microsoft.com/en-us/library/system.windows.media.animation.thicknessanimation.aspx //////////////////////////////////////////////////////////////////////////////////////////////////// class NS_GUI_ANIMATION_API ThicknessAnimation: public ThicknessAnimationBase { public: /// Gets or sets the total amount by which the animation changes its starting value //@{ const Nullable& GetBy() const; void SetBy(const Nullable& by); //@} /// Gets or sets the animation's starting value //@{ const Nullable& GetFrom() const; void SetFrom(const Nullable& from); //@} /// Gets or sets the animation's ending value //@{ const Nullable& GetTo() const; void SetTo(const Nullable& to); //@} /// Gets or sets the easing function applied to this animation //@{ EasingFunctionBase* GetEasingFunction() const; void SetEasingFunction(EasingFunctionBase* function); //@} /// From Freezable //@{ Ptr Clone() const; Ptr CloneCurrentValue() const; //@} public: /// Dependency properties //@{ static const DependencyProperty* ByProperty; static const DependencyProperty* FromProperty; static const DependencyProperty* ToProperty; static const DependencyProperty* EasingFunctionProperty; //@} protected: /// From Freezable //@{ Ptr CreateInstanceCore() const override; //@} /// From AnimationTimeline //@{ Ptr CreateTransitionFrom(EasingFunctionBase* easing) const override; Ptr CreateTransitionTo(EasingFunctionBase* easing) const override; //@} /// From ThicknessAnimationBase //@{ Thickness GetCurrentValueCore(const Thickness& defaultOrigin, const Thickness& defaultDestination, AnimationClock* clock) override; //@} private: NS_DECLARE_REFLECTION(ThicknessAnimation, ThicknessAnimationBase) }; } #endif