5#ifndef NEO_GRADIENT_HPP
6#define NEO_GRADIENT_HPP
8#include <mlab/bin_data.hpp>
43 [[nodiscard]] inline
float time() const;
59 [[nodiscard]] std::
string to_string() const;
68 using fixed_gradient_entry::operator=;
73 inline void set_time(
float t);
94 explicit gradient(std::vector<gradient_entry> entries);
95 explicit gradient(std::vector<fixed_gradient_entry>
const &entries);
96 explicit gradient(std::vector<rgb>
const &colors);
97 explicit gradient(std::vector<hsv>
const &colors);
99 [[nodiscard]]
inline std::size_t size()
const;
101 [[nodiscard]]
inline bool empty()
const;
107 [[nodiscard]]
inline iterator begin();
109 [[nodiscard]]
inline iterator end();
134 void sample_uniform(
float period,
float offset, std::vector<rgb> &buffer,
137 std::vector<rgb> sample_uniform(
float period,
float offset, std::size_t num_samples,
140 [[nodiscard]] std::string
to_string()
const;
150 bool gradient::empty()
const {
151 return _entries.empty();
154 std::size_t gradient::size()
const {
155 return _entries.size();
160 return _entries.data();
164 return begin() + size();
168 return _entries.data();
172 return begin() + size();
176 return _entries.front();
180 return _entries.back();
184 return _entries.front();
188 return _entries.back();
191 void fixed_gradient_entry::set_color(
rgb color) {
195 fixed_gradient_entry::fixed_gradient_entry(
float t,
rgb c) : _time{t}, _color{c} {}
Definition: gradient.hpp:31
fixed_gradient_entry()=default
std::string to_string() const
Definition: gradient.cpp:112
fixed_gradient_entry & operator=(fixed_gradient_entry &&) noexcept=default
float _time
Definition: gradient.hpp:33
float time() const
Definition: gradient.hpp:197
rgb color() const
Definition: gradient.hpp:201
rgb _color
Definition: gradient.hpp:34
fixed_gradient_entry & operator=(fixed_gradient_entry const &)=default
void set_color(rgb color)
Definition: gradient.hpp:191
Definition: gradient.hpp:62
void set_time(float t)
Definition: gradient.hpp:210
gradient_entry(gradient_entry &&) noexcept=default
gradient_entry(gradient_entry const &)=default
Definition: gradient.hpp:86
std::pair< iterator, bool > emplace(fixed_gradient_entry entry)
Definition: gradient.hpp:214
fixed_gradient_entry const * const_iterator
Definition: gradient.hpp:91
std::vector< gradient_entry > _entries
Definition: gradient.hpp:87
fixed_gradient_entry const & operator[](std::size_t i) const
Definition: gradient.hpp:218
Definition: any_fx.cpp:81
mlab::bin_stream & operator>>(mlab::bin_stream &s, neo::any_fx_config &fx_cfg)
Definition: any_fx.cpp:83
bin_data & operator<<(bin_data &o, neo::rgb c)
Definition: color.cpp:157
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
rgb blend_nearest_neighbor(rgb l, rgb r, float t)
Definition: gradient.cpp:108
rgb blend_round_down(rgb l, rgb, float)
Definition: gradient.cpp:100
rgb blend_round_up(rgb, rgb r, float)
Definition: gradient.cpp:104