49 lines
976 B
C++
49 lines
976 B
C++
#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();
|
|
}
|