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/slice.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:
18 using GradientFunction = fl::function<CRGB(uint8_t index)>;
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(uint8_t index) const;
35 void fill(Slice<const uint8_t> input, Slice<CRGB> output) const;
36
37 private:
39 Variant<const CRGBPalette16 *, const CRGBPalette32 *,
40 const CRGBPalette256 *, GradientFunction>;
42};
43
45 public:
46 using GradientFunction = fl::function<CRGB(uint8_t index)>;
49 GradientInlined() = default;
50
51 template <typename T> GradientInlined(const T &palette) { set(palette); }
52
54
55 void set(const CRGBPalette16 &palette) { mVariant = palette; }
56 void set(const CRGBPalette32 &palette) { mVariant = palette; }
57 void set(const CRGBPalette256 &palette) { mVariant = palette; }
58 void set(const GradientFunction &func) { mVariant = func; }
59
60 CRGB colorAt(uint8_t index) const;
61 void fill(Slice<const uint8_t> input, Slice<CRGB> output) const;
62
64 const GradientVariant &variant() const { return mVariant; }
65
66 private:
68};
69
70} // namespace fl
UINumberField palette("Palette", 0, 0, 2)
void set(const CRGBPalette16 *palette)
Definition gradient.cpp:103
GradientVariant mVariant
Definition gradient.h:41
CRGB colorAt(uint8_t index) const
Definition gradient.cpp:86
fl::function< CRGB(uint8_t index)> GradientFunction
Definition gradient.h:18
Gradient()=default
void fill(Slice< const uint8_t > input, Slice< CRGB > output) const
Definition gradient.cpp:114
Gradient & operator=(const Gradient &other)
Definition gradient.cpp:107
Variant< const CRGBPalette16 *, const CRGBPalette32 *, const CRGBPalette256 *, GradientFunction > GradientVariant
Definition gradient.h:38
fl::function< CRGB(uint8_t index)> GradientFunction
Definition gradient.h:46
CRGB colorAt(uint8_t index) const
Definition gradient.cpp:119
void fill(Slice< const uint8_t > input, Slice< CRGB > output) const
Definition gradient.cpp:124
GradientInlined()=default
GradientInlined(const GradientInlined &other)
Definition gradient.h:53
void set(const GradientFunction &func)
Definition gradient.h:58
void set(const CRGBPalette16 &palette)
Definition gradient.h:55
void set(const CRGBPalette256 &palette)
Definition gradient.h:57
const GradientVariant & variant() const
Definition gradient.h:64
GradientVariant & variant()
Definition gradient.h:63
Variant< CRGBPalette16, CRGBPalette32, CRGBPalette256, GradientFunction > GradientVariant
Definition gradient.h:47
GradientVariant mVariant
Definition gradient.h:67
GradientInlined(const T &palette)
Definition gradient.h:51
void set(const CRGBPalette32 &palette)
Definition gradient.h:56
Utility functions for color fill, palettes, blending, and more.
Implements a simple red square effect for 2D LED grids.
Definition crgb.h:16
Representation of an RGB pixel (Red, Green, Blue)
Definition crgb.h:55