46 #if defined(NEOPIXEBUS_NO_STL)
60 #define NEO_MILLISECONDS 1
61 #define NEO_CENTISECONDS 10
62 #define NEO_DECISECONDS 100
63 #define NEO_SECONDS 1000
64 #define NEO_DECASECONDS 10000
74 return _activeAnimations > 0;
86 if (indexAnimation >= _countAnimations || _animations[indexAnimation]._duration == 0)
91 StartAnimation(indexAnimation, _animations[indexAnimation]._duration, (_animations[indexAnimation]._fnCallback));
96 if (indexAnimation >= _countAnimations)
100 return (
IsAnimating() && _animations[indexAnimation]._remaining != 0);
105 if (indexAnimation >= _countAnimations)
109 return _animations[indexAnimation]._duration;
118 return (!_isRunning);
129 _animationLastTick = millis();
139 _timeScale = (timeScale < 1) ? (1) : (timeScale > 32768) ? 32768 : timeScale;
143 struct AnimationContext
153 _duration = duration;
154 _remaining = duration;
155 _fnCallback = animUpdate;
163 float CurrentProgress()
165 return (
float)(_duration - _remaining) / (
float)_duration;
174 uint16_t _countAnimations;
175 AnimationContext* _animations;
176 uint32_t _animationLastTick;
177 uint16_t _activeAnimations;
std::function< void(const AnimationParam ¶m)> AnimUpdateCallback
Definition: LumitronixIFlexAnimator.h:55
AnimationState
Definition: LumitronixIFlexAnimator.h:33
@ AnimationState_Progress
Definition: LumitronixIFlexAnimator.h:35
@ AnimationState_Completed
Definition: LumitronixIFlexAnimator.h:36
@ AnimationState_Started
Definition: LumitronixIFlexAnimator.h:34
#define NEO_MILLISECONDS
Definition: LumitronixIFlexAnimator.h:60
Definition: LumitronixIFlexAnimator.h:67
void Resume()
Definition: LumitronixIFlexAnimator.h:126
uint16_t getTimeScale()
Definition: LumitronixIFlexAnimator.h:132
void StartAnimation(uint16_t indexAnimation, uint16_t duration, AnimUpdateCallback animUpdate)
Definition: LumitronixIFlexAnimator.cpp:71
void ChangeAnimationDuration(uint16_t indexAnimation, uint16_t newDuration)
Definition: LumitronixIFlexAnimator.cpp:170
void Pause()
Definition: LumitronixIFlexAnimator.h:121
~LumitronixIFlexAnimator()
Definition: LumitronixIFlexAnimator.cpp:41
bool IsAnimationActive(uint16_t indexAnimation) const
Definition: LumitronixIFlexAnimator.h:94
void UpdateAnimations()
Definition: LumitronixIFlexAnimator.cpp:123
void RestartAnimation(uint16_t indexAnimation)
Definition: LumitronixIFlexAnimator.h:84
bool IsPaused()
Definition: LumitronixIFlexAnimator.h:116
void StopAll()
Definition: LumitronixIFlexAnimator.cpp:113
bool IsAnimating() const
Definition: LumitronixIFlexAnimator.h:72
void StopAnimation(uint16_t indexAnimation)
Definition: LumitronixIFlexAnimator.cpp:99
bool NextAvailableAnimation(uint16_t *indexAvailable, uint16_t indexStart=0)
Definition: LumitronixIFlexAnimator.cpp:46
uint16_t AnimationDuration(uint16_t indexAnimation)
Definition: LumitronixIFlexAnimator.h:103
void setTimeScale(uint16_t timeScale)
Definition: LumitronixIFlexAnimator.h:137
LumitronixIFlexAnimator(uint16_t countAnimations, uint16_t timeScale=NEO_MILLISECONDS)
Definition: LumitronixIFlexAnimator.cpp:31
Definition: LumitronixIFlexAnimator.h:40
AnimationState state
Definition: LumitronixIFlexAnimator.h:43
float progress
Definition: LumitronixIFlexAnimator.h:41
uint16_t index
Definition: LumitronixIFlexAnimator.h:42