FastLED 3.10.8
Loading...
Searching...
No Matches
gradient.h
Go to the documentation of this file.
1#pragma once
2
3#include "fl/gfx/colorutils.h"
4#include "fl/stl/function.h"
5#include "fl/stl/span.h"
6#include "fl/stl/variant.h"
7#include "fl/stl/noexcept.h"
8
9namespace fl {
10
11class CRGBPalette16; // IWYU pragma: keep
12class CRGBPalette32; // IWYU pragma: keep
13class CRGBPalette256; // IWYU pragma: keep
14class GradientInlined;
15
16class Gradient {
17 public:
21
22 template <typename T> Gradient(T *palette) FL_NO_EXCEPT;
23 Gradient(const Gradient &other) FL_NO_EXCEPT;
24 Gradient &operator=(const Gradient &other) FL_NO_EXCEPT;
25
27
28 // non template allows carefull control of what can be set.
29 void set(const CRGBPalette16 *palette) FL_NO_EXCEPT;
30 void set(const CRGBPalette32 *palette) FL_NO_EXCEPT;
31 void set(const CRGBPalette256 *palette) FL_NO_EXCEPT;
32 void set(const GradientFunction &func) FL_NO_EXCEPT;
33
34 CRGB colorAt(u8 index) const FL_NO_EXCEPT;
35 void fill(span<const u8> input, span<CRGB> output) const FL_NO_EXCEPT;
36
37 private:
39 variant<const CRGBPalette16 *, const CRGBPalette32 *,
40 const CRGBPalette256 *, GradientFunction>;
42};
43
45 public:
48 variant<CRGBPalette16, CRGBPalette32, CRGBPalette256, GradientFunction>;
50
51 template <typename T> GradientInlined(const T &palette) FL_NO_EXCEPT { set(palette); }
52
55
56 void set(const CRGBPalette16 &palette) FL_NO_EXCEPT { mVariant = palette; }
57 void set(const CRGBPalette32 &palette) FL_NO_EXCEPT { mVariant = palette; }
58 void set(const CRGBPalette256 &palette) FL_NO_EXCEPT { mVariant = palette; }
59 void set(const GradientFunction &func) FL_NO_EXCEPT { mVariant = func; }
60
61 CRGB colorAt(u8 index) const FL_NO_EXCEPT;
62 void fill(span<const u8> input, span<CRGB> output) const FL_NO_EXCEPT;
63
66
67 private:
69};
70
71} // namespace fl
UINumberField palette("Palette", 0, 0, 2)
GradientVariant mVariant
Definition gradient.h:41
fl::function< CRGB(u8 index)> GradientFunction
Definition gradient.h:18
Gradient() FL_NO_EXCEPT=default
void fill(span< const u8 > input, span< CRGB > output) const FL_NO_EXCEPT
CRGB colorAt(u8 index) const FL_NO_EXCEPT
variant< const CRGBPalette16 *, const CRGBPalette32 *, const CRGBPalette256 *, GradientFunction > GradientVariant
Definition gradient.h:38
void set(const CRGBPalette16 *palette) FL_NO_EXCEPT
variant< CRGBPalette16, CRGBPalette32, CRGBPalette256, GradientFunction > GradientVariant
Definition gradient.h:47
void set(const CRGBPalette32 &palette) FL_NO_EXCEPT
Definition gradient.h:57
GradientInlined & operator=(const GradientInlined &other) FL_NO_EXCEPT=default
GradientVariant & getVariant() FL_NO_EXCEPT
Definition gradient.h:64
GradientInlined() FL_NO_EXCEPT=default
void set(const CRGBPalette256 &palette) FL_NO_EXCEPT
Definition gradient.h:58
void set(const GradientFunction &func) FL_NO_EXCEPT
Definition gradient.h:59
fl::function< CRGB(u8 index)> GradientFunction
Definition gradient.h:46
GradientInlined(const GradientInlined &other) FL_NO_EXCEPT=default
GradientVariant mVariant
Definition gradient.h:68
const GradientVariant & getVariant() const FL_NO_EXCEPT
Definition gradient.h:65
void set(const CRGBPalette16 &palette) FL_NO_EXCEPT
Definition gradient.h:56
Utility functions for color fill, palettes, blending, and more.
unsigned char u8
Definition stdint.h:131
fl::CRGB CRGB
Definition video.h:18
u8 u8 fract8 blur_amount FL_NO_EXCEPT
Definition blur.h:186
Base definition for an LED controller.
Representation of an 8-bit RGB pixel (Red, Green, Blue)
Definition crgb.h:38