FastLED 3.9.15
Loading...
Searching...
No Matches
gradient.h
Go to the documentation of this file.
1#pragma once
2
3#include "fl/colorutils.h"
4#include "fl/function.h"
5#include "fl/span.h"
6#include "fl/type_traits.h"
7#include "fl/variant.h"
8
9namespace fl {
10
11class CRGBPalette16;
12class CRGBPalette32;
13class CRGBPalette256;
14class GradientInlined;
15
16class Gradient {
17 public:
19 Gradient() = default;
20 Gradient(const GradientInlined &other);
21
22 template <typename T> Gradient(T *palette);
23 Gradient(const Gradient &other);
24 Gradient &operator=(const Gradient &other);
25
26 Gradient(Gradient &&other) noexcept;
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:
49 GradientInlined() = default;
50
51 template <typename T> GradientInlined(const T &palette) { set(palette); }
52
53 GradientInlined(const GradientInlined &other) = default;
54 GradientInlined &operator=(const GradientInlined &other) = default;
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 &variant() const { return mVariant; }
66
67 private:
69};
70
71} // namespace fl
UINumberField palette("Palette", 0, 0, 2)
void set(const CRGBPalette16 *palette)
Definition gradient.cpp:106
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
Definition gradient.cpp:117
CRGB colorAt(u8 index) const
Definition gradient.cpp:89
Gradient()=default
Gradient & operator=(const Gradient &other)
Definition gradient.cpp:110
Variant< const CRGBPalette16 *, const CRGBPalette32 *, const CRGBPalette256 *, GradientFunction > GradientVariant
Definition gradient.h:38
void fill(span< const u8 > input, span< CRGB > output) const
Definition gradient.cpp:127
GradientInlined & operator=(const GradientInlined &other)=default
CRGB colorAt(u8 index) const
Definition gradient.cpp:122
GradientInlined()=default
void set(const GradientFunction &func)
Definition gradient.h:59
void set(const CRGBPalette16 &palette)
Definition gradient.h:56
void set(const CRGBPalette256 &palette)
Definition gradient.h:58
const GradientVariant & variant() const
Definition gradient.h:65
GradientVariant & variant()
Definition gradient.h:64
Variant< CRGBPalette16, CRGBPalette32, CRGBPalette256, GradientFunction > GradientVariant
Definition gradient.h:47
fl::function< CRGB(u8 index)> GradientFunction
Definition gradient.h:46
GradientInlined(const GradientInlined &other)=default
GradientVariant mVariant
Definition gradient.h:68
GradientInlined(const T &palette)
Definition gradient.h:51
void set(const CRGBPalette32 &palette)
Definition gradient.h:57
Utility functions for color fill, palettes, blending, and more.
unsigned char u8
Definition int.h:17
Slice< T > span
Definition span.h:8
IMPORTANT!
Definition crgb.h:20
Representation of an RGB pixel (Red, Green, Blue)
Definition crgb.h:86