pitrix/src/effect_blur2d.cpp

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();
}