21 u32 elapsed = now - start;
22 u32 total =
end - start;
23 float out =
static_cast<float>(elapsed) /
static_cast<float>(total);
33 return static_cast<u16
>(
update8(now) << 8) + 0xFF;
36 return static_cast<float>(
update16(now)) / 65535.0f;
60 TimeRamp(u32 risingTime, u32 latchMs, u32 fallingTime);
65 void trigger(u32 now, u32 risingTime, u32 latchMs,
69 bool isActive(u32 now)
const 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);
virtual u8 update8(u32 now)=0
virtual float updatef(u32 now)
virtual bool isActive(u32 now) const =0
virtual u16 update16(u32 now)
virtual ~TimeAlpha()=default
virtual void trigger(u32 now)=0
u8 update8(u32 now) override
bool isActive(u32 now) const override
TimeClampedTransition(u32 duration)
void trigger(u32 now) override
float updatef(u32 now) override
void set_max_clamp(float max)
TimeRamp(u32 risingTime, u32 latchMs, u32 fallingTime)
void trigger(u32 now) override
Call this when you want to (re)start the ramp cycle.
u8 update8(u32 now) override
Compute current 0–255 output based on how much time has elapsed since trigger().
bool isActive(u32 now) const override
u16 time_alpha16(u32 now, u32 start, u32 end)
constexpr T * end(T(&array)[N]) noexcept
float time_alphaf(u32 now, u32 start, u32 end)
u8 time_alpha8(u32 now, u32 start, u32 end)