#include "effect_blur2d.h" Blur2DBlob::Blur2DBlob() { _x_freq = random16(6<<8, 15<<8); _y_freq = random16(6<<8, 15<<8); _color_freq = random8(25, 80); } void Blur2DBlob::render(Window* window) { uint8_t x = beatsin16(_x_freq, 0, window->width-1); uint8_t y = beatsin16(_y_freq, 0, window->height-1); CRGB c = CHSV(millis() / _color_freq, 200, 255); window->addPixelColor(x, y, &c); } boolean Blur2DEffect::can_be_shown_with_clock() { return true; } void Blur2DEffect::loop(uint16_t ms) { if (_count != settings.effects.blur2d.count) { _delete(); _init(); } uint8_t blur_amount = dim8_raw(beatsin8(3, 128, 224)); window->blur(blur_amount); for (int i=0; i<_count; i++) { _blobs[i].render(window); } } Blur2DEffect::Blur2DEffect() { _init(); } void Blur2DEffect::_init() { _count = settings.effects.blur2d.count; _blobs = new Blur2DBlob[_count]; } void Blur2DEffect::_delete() { delete[] _blobs; } Blur2DEffect::~Blur2DEffect() { _delete(); }