13uint8_t
time_alpha8(uint32_t now, uint32_t start, uint32_t end);
15uint16_t
time_alpha16(uint32_t now, uint32_t start, uint32_t end);
17inline float time_alphaf(uint32_t now, uint32_t start, uint32_t end) {
21 uint32_t elapsed = now - start;
22 uint32_t total = end - start;
23 float out =
static_cast<float>(elapsed) /
static_cast<float>(total);
31 virtual uint8_t
update8(uint32_t now) = 0;
33 return static_cast<uint16_t
>(
update8(now) << 8) + 0xFF;
36 return static_cast<float>(
update16(now)) / 65535.0f;
60 TimeRamp(uint32_t risingTime, uint32_t latchMs, uint32_t fallingTime);
63 void trigger(uint32_t now)
override;
65 void trigger(uint32_t now, uint32_t risingTime, uint32_t latchMs,
66 uint32_t fallingTime);
69 bool isActive(uint32_t now)
const override;
73 uint8_t
update8(uint32_t now)
override;
112 bool not_started = (
mEnd == 0) && (
mStart == 0);
129 bool not_started = (
mEnd == 0) && (
mStart == 0);
139 bool not_started = (
mEnd == 0) && (
mStart == 0);
UIButton trigger("Trigger")
virtual float updatef(uint32_t now)
virtual uint16_t update16(uint32_t now)
virtual uint8_t update8(uint32_t now)=0
virtual bool isActive(uint32_t now) const =0
virtual void trigger(uint32_t now)=0
virtual ~TimeAlpha()=default
TimeClampedTransition(uint32_t duration)
uint8_t update8(uint32_t now) override
float updatef(uint32_t now) override
bool isActive(uint32_t now) const override
void set_max_clamp(float max)
void trigger(uint32_t now) override
uint8_t update8(uint32_t now) override
Compute current 0–255 output based on how much time has elapsed since trigger().
bool isActive(uint32_t now) const override
uint32_t mFinishedFallingTime
TimeRamp(uint32_t risingTime, uint32_t latchMs, uint32_t fallingTime)
uint32_t mFinishedPlateauTime
uint32_t mFinishedRisingTime
float time_alphaf(uint32_t now, uint32_t start, uint32_t end)
uint8_t time_alpha8(uint32_t now, uint32_t start, uint32_t end)
uint16_t time_alpha16(uint32_t now, uint32_t start, uint32_t end)
Implements a simple red square effect for 2D LED grids.