FastLED 3.9.15
Loading...
Searching...
No Matches
blend.h
Go to the documentation of this file.
1/*
2Fx2d class that allows to blend multiple Fx2d layers together.
3The bottom layer is always drawn at full capacity. Upper layers
4are blended by the the max luminance of the components.
5*/
6
7#pragma once
8
9#include <stdint.h>
10
11#include "fl/namespace.h"
12#include "fl/ptr.h"
13#include "fl/vector.h"
14#include "fl/warn.h"
15#include "fl/xymap.h"
16#include "fx/frame.h"
17#include "fx/fx.h"
18#include "fx/fx2d.h"
19
20namespace fl {
21
23 uint8_t blur_amount = 0;
24 uint8_t blur_passes = 1;
25};
26
27
28class Blend2d : public Fx2d {
29 public:
31 // Note that if this xymap is non rectangular then it's recommended that the
32 // Fx2d layers that are added should be rectangular.
33 Blend2d(const XYMap &xymap);
34 fl::Str fxName() const override;
35 void add(Fx2dPtr layer, const Params& p = Params());
36 void add(Fx2d &layer, const Params& p = Params());
37 void draw(DrawContext context) override;
38 void clear();
39 void setGlobalBlurAmount(uint8_t blur_amount) {
40 mGlobalBlurAmount = blur_amount;
41 }
42 void setGlobalBlurPasses(uint8_t blur_passes) {
43 mGlobalBlurPasses = blur_passes;
44 }
45 bool setParams(Fx2dPtr fx, const Params& p);
46 bool setParams(Fx2d &fx, const Params& p);
47 protected:
48 struct Entry {
49 Fx2dPtr fx;
50 uint8_t blur_amount = 0;
51 uint8_t blur_passes = 1;
52 Entry() = default;
53 Entry(Fx2dPtr fx, uint8_t blur_amount,
54 uint8_t blur_passes)
56 };
58 FramePtr mFrame;
60 uint8_t mGlobalBlurAmount = 0;
61 uint8_t mGlobalBlurPasses = 1;
62};
63
64} // namespace fl
XYMap xymap(WIDTH, HEIGHT, SERPENTINE)
void setGlobalBlurAmount(uint8_t blur_amount)
Definition blend.h:39
uint8_t mGlobalBlurPasses
Definition blend.h:61
fl::Str fxName() const override
Definition blend.cpp:23
Blend2d(const XYMap &xymap)
Definition blend.cpp:15
Blend2dParams Params
Definition blend.h:30
void add(Fx2dPtr layer, const Params &p=Params())
Definition blend.cpp:35
void setGlobalBlurPasses(uint8_t blur_passes)
Definition blend.h:42
FramePtr mFrame
Definition blend.h:58
uint8_t mGlobalBlurAmount
Definition blend.h:60
bool setParams(Fx2dPtr fx, const Params &p)
Definition blend.cpp:97
FramePtr mFrameTransform
Definition blend.h:59
HeapVector< Entry > mLayers
Definition blend.h:57
void draw(DrawContext context) override
Definition blend.cpp:47
void clear()
Definition blend.cpp:95
Fx2d(const XYMap &xyMap)
Definition fx2d.h:19
_DrawContext DrawContext
Definition fx.h:21
Definition str.h:368
Implements the FastLED namespace macros.
Implements a simple red square effect for 2D LED grids.
Definition crgb.h:16
uint8_t blur_passes
Definition blend.h:24
uint8_t blur_amount
Definition blend.h:23
static FASTLED_NAMESPACE_BEGIN uint8_t const p[]
Definition noise.cpp:56
uint8_t blur_amount
Definition blend.h:50
uint8_t blur_passes
Definition blend.h:51
Fx2dPtr fx
Definition blend.h:49
Entry(Fx2dPtr fx, uint8_t blur_amount, uint8_t blur_passes)
Definition blend.h:53
Entry()=default