2019-09-25 04:26:27 +00:00
|
|
|
#include "effect_blur2d.h"
|
2019-10-23 03:40:44 +00:00
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
2019-09-25 04:26:27 +00:00
|
|
|
|
|
|
|
boolean Blur2DEffect::can_be_shown_with_clock() {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2019-10-01 04:29:32 +00:00
|
|
|
void Blur2DEffect::loop(uint16_t ms) {
|
2019-10-23 03:40:44 +00:00
|
|
|
if (_count != settings.effects.blur2d.count) {
|
|
|
|
_delete();
|
|
|
|
_init();
|
|
|
|
}
|
2019-09-25 18:05:18 +00:00
|
|
|
uint8_t blur_amount = dim8_raw(beatsin8(3, 128, 224));
|
2019-09-25 04:26:27 +00:00
|
|
|
window->blur(blur_amount);
|
2019-10-23 03:40:44 +00:00
|
|
|
for (int i=0; i<_count; i++) {
|
|
|
|
_blobs[i].render(window);
|
|
|
|
}
|
|
|
|
}
|
2019-09-25 18:05:18 +00:00
|
|
|
|
2019-10-23 03:40:44 +00:00
|
|
|
Blur2DEffect::Blur2DEffect() {
|
|
|
|
_init();
|
|
|
|
}
|
2019-09-25 18:05:18 +00:00
|
|
|
|
2019-10-23 03:40:44 +00:00
|
|
|
void Blur2DEffect::_init() {
|
|
|
|
_count = settings.effects.blur2d.count;
|
|
|
|
_blobs = new Blur2DBlob[_count];
|
|
|
|
}
|
2019-09-25 18:05:18 +00:00
|
|
|
|
2019-10-23 03:40:44 +00:00
|
|
|
void Blur2DEffect::_delete() {
|
|
|
|
delete[] _blobs;
|
2019-09-25 04:26:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
Blur2DEffect::~Blur2DEffect() {
|
2019-10-23 03:40:44 +00:00
|
|
|
_delete();
|
2019-09-25 04:26:27 +00:00
|
|
|
}
|