5#ifndef NEO_GRADIENT_FX_HPP
6#define NEO_GRADIENT_FX_HPP
10#include <mlab/bin_data.hpp>
11#include <mlab/unique_tracker.hpp>
17 using namespace std::chrono_literals;
36 [[nodiscard]]
inline float repeats()
const;
37 [[nodiscard]]
inline std::chrono::milliseconds
duration()
const;
42 [[nodiscard]] std::vector<rgb>
sample(std::size_t n_leds, std::chrono::milliseconds time_since_start,
49 std::chrono::milliseconds elapsed, std::vector<rgb> recycle_buffer = {},
62 [[nodiscard]] std::string
to_string()
const;
71 : _gradient{std::move(g)},
Definition: gradient_fx.hpp:20
void set_repeats(float n)
Definition: gradient_fx.hpp:97
neo::gradient get_gradient() const
Definition: gradient_fx.hpp:88
std::recursive_mutex _gradient_mutex
Definition: gradient_fx.hpp:24
void set_gradient(neo::gradient g)
Definition: gradient_fx.hpp:83
void set_duration(std::chrono::milliseconds d)
Definition: gradient_fx.hpp:93
std::vector< rgb > render_frame(transmittable_rgb_strip &strip, rmt_channel_t channel, std::chrono::milliseconds elapsed, std::vector< rgb > recycle_buffer={}, blending_method method=blend_linear) const
Definition: gradient_fx.cpp:39
float _repeats
Definition: gradient_fx.hpp:23
std::chrono::milliseconds _duration
Definition: gradient_fx.hpp:22
std::chrono::milliseconds duration() const
Definition: gradient_fx.hpp:75
float repeats() const
Definition: gradient_fx.hpp:79
std::function< void(std::chrono::milliseconds)> make_steady_timer_callback(transmittable_rgb_strip &strip, rmt_channel_t channel, blending_method method=blend_linear) const
Definition: gradient_fx.cpp:53
gradient_fx & operator=(gradient_fx &&g_fx) noexcept
Definition: gradient_fx.cpp:27
std::vector< rgb > sample(std::size_t n_leds, std::chrono::milliseconds time_since_start, std::vector< rgb > recycle_buffer={}, blending_method method=blend_linear) const
Definition: gradient_fx.cpp:11
neo::gradient _gradient
Definition: gradient_fx.hpp:21
Definition: gradient.hpp:86
Definition: any_fx.cpp:81
mlab::bin_stream & operator>>(mlab::bin_stream &s, neo::any_fx_config &fx_cfg)
Definition: any_fx.cpp:83
rgb(&)(rgb l, rgb r, float t) blending_method
Definition: gradient.hpp:13
rgb blend_linear(rgb l, rgb r, float t)
Definition: gradient.cpp:96
Definition: gradient_fx.hpp:53
gradient_fx_config()=default
std::string to_string() const
Definition: gradient_fx.cpp:71
void apply(gradient_fx &g_fx) const
Definition: gradient_fx.cpp:65
std::uint32_t duration_ms
Definition: gradient_fx.hpp:56
float repeats
Definition: gradient_fx.hpp:55