FastLED 3.9.15
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:
19 Gradient() FL_NOEXCEPT = default;
20 Gradient(const GradientInlined &other);
21
22 template <typename T> Gradient(T *palette);
23 Gradient(const Gradient &other) FL_NOEXCEPT;
24 Gradient &operator=(const Gradient &other);
25
27
28 // non template allows carefull control of what can be set.
29 void set(const CRGBPalette16 *palette);
30 void set(const CRGBPalette32 *palette);
31 void set(const CRGBPalette256 *palette);
32 void set(const GradientFunction &func);
33
34 CRGB colorAt(u8 index) const;
35 void fill(span<const u8> input, span<CRGB> output) const;
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) { set(palette); }
52
55
56 void set(const CRGBPalette16 &palette) { mVariant = palette; }
57 void set(const CRGBPalette32 &palette) { mVariant = palette; }
58 void set(const CRGBPalette256 &palette) { mVariant = palette; }
59 void set(const GradientFunction &func) { mVariant = func; }
60
61 CRGB colorAt(u8 index) const;
62 void fill(span<const u8> input, span<CRGB> output) const;
63
65 const GradientVariant &getVariant() const { return mVariant; }
66
67 private:
69};
70
71} // namespace fl
UINumberField palette("Palette", 0, 0, 2)
void set(const CRGBPalette16 *palette)
GradientVariant mVariant
Definition gradient.h:41
fl::function< CRGB(u8 index)> GradientFunction
Definition gradient.h:18
void fill(span< const u8 > input, span< CRGB > output) const
CRGB colorAt(u8 index) const
variant< const CRGBPalette16 *, const CRGBPalette32 *, const CRGBPalette256 *, GradientFunction > GradientVariant
Definition gradient.h:38
Gradient() FL_NOEXCEPT=default
variant< CRGBPalette16, CRGBPalette32, CRGBPalette256, GradientFunction > GradientVariant
Definition gradient.h:47
GradientVariant & getVariant()
Definition gradient.h:64
void set(const GradientFunction &func)
Definition gradient.h:59
GradientInlined & operator=(const GradientInlined &other) FL_NOEXCEPT=default
void set(const CRGBPalette16 &palette)
Definition gradient.h:56
void set(const CRGBPalette256 &palette)
Definition gradient.h:58
GradientInlined() FL_NOEXCEPT=default
GradientInlined(const GradientInlined &other) FL_NOEXCEPT=default
const GradientVariant & getVariant() const
Definition gradient.h:65
fl::function< CRGB(u8 index)> GradientFunction
Definition gradient.h:46
GradientVariant mVariant
Definition gradient.h:68
void set(const CRGBPalette32 &palette)
Definition gradient.h:57
Utility functions for color fill, palettes, blending, and more.
unsigned char u8
Definition stdint.h:131
fl::CRGB CRGB
Definition video.h:15
Base definition for an LED controller.
Definition crgb.hpp:179
#define FL_NOEXCEPT
Representation of an 8-bit RGB pixel (Red, Green, Blue)
Definition crgb.h:38