FastLED 3.9.15
Loading...
Searching...
No Matches
transition.h
Go to the documentation of this file.
1#pragma once
2
3#include "fl/stl/int.h"
4#include "fl/stl/noexcept.h"
5
6namespace fl {
7
8// Logic to control the progression of a transition over time.
9class Transition {
10 public:
13
14 u8 getProgress(fl::u32 now) {
15 if (mNotStarted) {
16 return 0;
17 }
18 if (now < mStart) {
19 return 0;
20 } else if (now >= mStart + mDuration) {
21 return 255;
22 } else {
23 return ((now - mStart) * 255) / mDuration;
24 }
25 }
26
27 void start(fl::u32 now, fl::u32 duration) {
28 mNotStarted = false;
29 mStart = now;
30 mDuration = duration;
31 }
32
33 void end() { mNotStarted = true; }
34
35 bool isTransitioning(fl::u32 now) {
36 if (mNotStarted) {
37 return false;
38 }
39 return now >= mStart && now < mStart + mDuration;
40 }
41
42 private:
43 fl::u32 mStart;
44 fl::u32 mDuration;
46};
47
48} // namespace fl
u8 getProgress(fl::u32 now)
Definition transition.h:14
void start(fl::u32 now, fl::u32 duration)
Definition transition.h:27
bool isTransitioning(fl::u32 now)
Definition transition.h:35
fl::u32 mStart
Definition transition.h:43
fl::u32 mDuration
Definition transition.h:44
Transition() FL_NOEXCEPT
Definition transition.h:11
~Transition() FL_NOEXCEPT
Definition transition.h:12
unsigned char u8
Definition stdint.h:131
Base definition for an LED controller.
Definition crgb.hpp:179
#define FL_NOEXCEPT