91 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
// NoesisGUI - http://www.noesisengine.com
 | 
						|
// Copyright (c) 2013 Noesis Technologies S.L. All Rights Reserved.
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
 | 
						|
#ifndef __GUI_REPEATBEHAVIOR_H__
 | 
						|
#define __GUI_REPEATBEHAVIOR_H__
 | 
						|
 | 
						|
 | 
						|
#include <NsCore/Noesis.h>
 | 
						|
#include <NsCore/ReflectionDeclare.h>
 | 
						|
#include <NsGui/AnimationApi.h>
 | 
						|
#include <NsGui/TimeSpan.h>
 | 
						|
 | 
						|
 | 
						|
namespace Noesis
 | 
						|
{
 | 
						|
 | 
						|
class TimeSpan;
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
/// Describes how the RepeatBehavior calculates its repetitions
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
enum RepeatMode
 | 
						|
{
 | 
						|
    /// Specifies that a Timeline repeats n times
 | 
						|
    RepeatMode_Count,
 | 
						|
    /// Indicates that a Timeline repeats for a specific duration
 | 
						|
    RepeatMode_Duration,
 | 
						|
    /// Specifies an infinite number of repetitions
 | 
						|
    RepeatMode_Forever
 | 
						|
};
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
/// Describes how a Timeline repeats its simple duration.
 | 
						|
/// Examples:
 | 
						|
///     RepeatBehavior="2x"             --->  Repeats 2 times
 | 
						|
///     RepeatBehavior="1.2:30:15.500"  --->  [days.]hours:minutes:seconds[.fractionalSeconds]
 | 
						|
///     RepeatBehavior="2.1:20"         --->  [days.]hours:minutes
 | 
						|
///     RepeatBehavior="5"              --->  days
 | 
						|
///     RepeatBehavior="Forever"        --->  Repeats forever
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
class NS_GUI_ANIMATION_API RepeatBehavior
 | 
						|
{
 | 
						|
public:
 | 
						|
    /// Constructors
 | 
						|
    //@{
 | 
						|
    RepeatBehavior();
 | 
						|
    RepeatBehavior(float count);
 | 
						|
    RepeatBehavior(const TimeSpan& duration);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Creates a RepeatBehavior object that specifies an infinite number of repetitions
 | 
						|
    static RepeatBehavior Forever();
 | 
						|
 | 
						|
    /// Generates a string representation of the point
 | 
						|
    /// The string has the following form: "Forever", "2x", or a TimeSpan: "0:0:1"
 | 
						|
    String ToString() const;
 | 
						|
 | 
						|
    /// Tries to parse a RepeatBehavior from a string
 | 
						|
    static bool TryParse(const char* txt, RepeatBehavior& result);
 | 
						|
 | 
						|
    /// Gets repeat mode
 | 
						|
    RepeatMode GetRepeatMode() const;
 | 
						|
 | 
						|
    /// Gets repeat count. Only valid for repeat mode *Count*
 | 
						|
    float GetCount() const;
 | 
						|
 | 
						|
    /// Gets repeat time duration. Only valid for repeat mode *Duration*
 | 
						|
    const TimeSpan& GetDuration() const;
 | 
						|
 | 
						|
    // Comparison operators
 | 
						|
    //@{
 | 
						|
    bool operator==(const RepeatBehavior& other) const;
 | 
						|
    bool operator!=(const RepeatBehavior& other) const;
 | 
						|
    //@}
 | 
						|
 | 
						|
private:
 | 
						|
    RepeatMode mRepeatMode;
 | 
						|
    float mCount;
 | 
						|
    TimeSpan mDuration;
 | 
						|
 | 
						|
    NS_DECLARE_REFLECTION(RepeatBehavior, NoParent)
 | 
						|
};
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#endif
 |