FastLED 3.9.15
Loading...
Searching...
No Matches

◆ draw()

void fl::Blend2d::draw ( DrawContext context)
overridevirtual
Parameters
nowThe current time in milliseconds. Fx writers are encouraged to use this instead of millis() directly as this will more deterministic behavior.

Implements fl::Fx.

Definition at line 56 of file blend.cpp.hpp.

56 {
57 mFrame->clear();
58 mFrameTransform->clear();
59
60 // Draw each layer in reverse order and applying the blending.
61 bool first = true;
62 for (auto it = mLayers.begin(); it != mLayers.end(); ++it) {
63 DrawContext tmp_ctx = context;
64 tmp_ctx.leds = mFrame->rgb();
65 auto &fx = it->fx;
66 fx->draw(tmp_ctx);
69 first = false;
70 // Apply the blur effect per effect.
71 u8 blur_amount = it->blur_amount;
72 if (blur_amount > 0) {
73 const XYMap &xyMap = fx->getXYMap();
74 u8 blur_passes = fl::max(1, it->blur_passes);
75 for (u8 i = 0; i < blur_passes; ++i) {
76 // Apply the blur effect
77 blur2d(mFrame->rgb().data(), mXyMap.getWidth(), mXyMap.getHeight(),
79 }
80 }
81 mFrame->draw(mFrameTransform->rgb(), mode);
82 }
83
84 if (mGlobalBlurAmount > 0) {
85 // Apply the blur effect
86 u16 width = mXyMap.getWidth();
87 u16 height = mXyMap.getHeight();
89 fl::span<CRGB> rgb = mFrameTransform->rgb();
90 u8 blur_passes = fl::max(1, mGlobalBlurPasses);
91 for (u8 i = 0; i < blur_passes; ++i) {
92 // Apply the blur effect
94 }
95 }
96
97 // Copy the final result to the output
98 // memcpy(mFrameTransform->rgb(), context.leds, sizeof(CRGB) *
99 // mXyMap.getTotal());
100 mFrameTransform->drawXY(context.leds, mXyMap,
102}
fl::shared_ptr< Frame > mFrameTransform
Definition blend.h:59
u8 mGlobalBlurAmount
Definition blend.h:60
fl::shared_ptr< Frame > mFrame
Definition blend.h:58
u8 mGlobalBlurPasses
Definition blend.h:61
vector< Entry > mLayers
Definition blend.h:57
XYMap mXyMap
Definition fx2d.h:30
u16 xyMap(u16 x, u16 y) const
Definition fx2d.h:20
::fl::DrawContext DrawContext
Definition fx.h:21
static XYMap constructRectangularGrid(u16 width, u16 height, u16 offset=0) FL_NOEXCEPT
Definition xymap.cpp.hpp:35
unsigned char u8
Definition stdint.h:131
constexpr common_type_t< T, U > max(T a, U b) FL_NOEXCEPT
Definition math.h:75
u8 u8 height
Definition blur.h:186
u8 u8 fract8 blur_amount
Definition blur.h:186
u8 width
Definition blur.h:186
DrawMode
Definition draw_mode.h:5
@ DRAW_MODE_OVERWRITE
Definition draw_mode.h:5
@ DRAW_MODE_BLEND_BY_MAX_BRIGHTNESS
Definition draw_mode.h:5
void blur2d(fl::span< CRGB > leds, u8 width, u8 height, fract8 blur_amount, const XYMap &xymap) FL_NOEXCEPT
Definition blur.h:153

References fl::blur2d(), fl::blur_amount, fl::XYMap::constructRectangularGrid(), fl::DRAW_MODE_BLEND_BY_MAX_BRIGHTNESS, fl::DRAW_MODE_OVERWRITE, fl::height, fl::DrawContext::leds, fl::max(), mFrame, mFrameTransform, mGlobalBlurAmount, mGlobalBlurPasses, mLayers, fl::Fx2d::mXyMap, fl::width, and fl::Fx2d::xyMap().

+ Here is the call graph for this function: