24 #include "MACoreTypes.hpp" 25 #include "MASignal.hpp" 29 #include <boost/scoped_ptr.hpp> 30 #include <boost/shared_ptr.hpp> 47 typedef std::vector<MAGeneratorBase*> GeneratorList;
60 Linear = FunctionTypeMin,
63 FunctionTypeMax = DeceleratingSines
90 static FunctionType GetRandomFunction();
99 bool IsAbsolute()
const;
108 int GetStartTime()
const;
117 int GetElapsedTime()
const;
126 virtual int GetDuration()
const;
137 virtual void ScaleDuration(
float scale);
146 float GetMinValue()
const;
155 virtual void SetMinValue(
float min_value);
164 float GetMaxValue()
const;
173 virtual void SetMaxValue(
float max_value);
182 void SetTransferFunction(FunctionType
function);
191 bool IsStarted()
const;
200 virtual void Start();
212 virtual void Start(
float value);
224 virtual void StartFromTime(
int start_time);
233 bool IsExpired()
const;
242 virtual float GetCurrentValue() = 0;
251 virtual int GetOverTime()
const = 0;
264 float GetTransformedValue(
float value)
const;
276 bool CheckValueRange(
float value,
bool verbose =
true);
312 virtual void SetMinValue(
float min_value)
override;
313 virtual void SetMaxValue(
float max_value)
override;
314 virtual void Start()
override;
315 virtual void Start(
float value)
override;
316 virtual void StartFromTime(
int start_time)
override;
317 virtual float GetCurrentValue()
override;
318 virtual int GetOverTime()
const override;
354 virtual float GetCurrentValue()
override;
355 virtual int GetOverTime()
const override;
385 int dur5,
bool loop =
false);
405 virtual void Start(
float value)
override;
406 virtual void ScaleDuration(
float scale)
override;
407 virtual float GetCurrentValue()
override;
408 virtual int GetOverTime()
const override;
459 static void DumpAllContainers();
468 static void SetVerbose(
bool new_state);
477 void SetOwnerDevice(
MADevice& owner);
487 void BlockExpiredSignal();
497 void UnblockExpiredSignal();
506 bool IsExpiredSignalBlocked()
const;
515 void SetTransitionName(
const std::string& name);
524 std::string GetTransitionName()
const;
537 bool IsAbsolute()
const;
547 int GetDuration()
const;
556 void ScaleDuration(
float scale);
565 bool IsFinite()
const;
574 bool IsPermanent()
const;
583 bool IsStarted()
const;
601 bool HasOneGenerator()
const;
610 bool HasRealGenerator()
const;
635 void ScaleGenerators(
float min,
float max,
float new_max);
646 void Start(
float device_value);
655 void CalculateCurrentValue(
float device_value);
666 float GetCurrentValue();
676 float GetStartingValue()
const;
687 float GetDesiredStartingValue()
const;
697 float GetTargetValue()
const;
704 void MakePermanent();
int Duration1
First segment duration (when it keeps the minimum value)
boost::shared_ptr< ExpiredSignalType > ExpiredSignal
Just expired signal.
int Duration3
Third segment duration (when it keeps the maximum value)
MADevice * Device
Owner device.
bool AlreadyExpired
Whenever it is expired already.
float MaxValue
Maximum value.
std::string TransitionName
Transition name.
float StartingValue
Starting value.
int Duration5
Fifth segment duration (when it keeps the minimum value)
int Duration4
Fourth segment duration (when it interpolates back to the minimum value)
bool Loop
Whether the generator is looped.
boost::scoped_ptr< MCTimer > Timer
Timer.
FunctionType Function
Transfer function.
float MinValue
Minimum value.
MASignal< MAGeneratorContainer & > ExpiredSignalType
Generator just expired signal type.
Generator container class.
float CurrentValue
Current value.
Base class for generators.
virtual void Start()
Start the generator.
Simple timer class with microsecond precision.
float MCFloatInfinity()
Get float infinity.
Periodic generator class (waveform _/‾\_)
int ExpiredSignalBlockRefCount
Whenever the signal of the "just expiration" is blocked.
int Duration2
Second segment duration (when it interpolates to the maximum value)
MA::GeneratorList Generators
Value generators.