G.U.L.L.S/include/PlasmaMatrix.h

53 lines
1.2 KiB
C++

#ifndef PLASMAMATRIX_H
#define PLASMAMATRIX_H
#include "MatrixAnimation.h"
#include "LEDHAL2D.h"
class PlasmaMatrix : public MatrixAnimation {
public:
PlasmaMatrix(LEDHAL2D* _matrix, char* _refName, long _updateTime) :
MatrixAnimation(_matrix, _refName, _updateTime), paletteShift(0), palette(new CRGB[256]) {
plasma = new uint8_t*[matrix->getWidth()];
for(uint16_t i = 0; i < matrix->getWidth(); i++) {
plasma[i] = new uint8_t[matrix->getHeight()];
}
for(uint16_t x = 0; x < matrix->getWidth(); x++) {
for(uint16_t y = 0; y < matrix->getHeight(); y++) {
plasma[x][y] = (uint8_t) ((128.0 + (128 * sinf(x / 8.0)) + 128 + (128.0 * sinf(y / 8.0))) / 2);
}
}
for(uint16_t i = 0; i < 256; i++) {
palette[i] = CRGB(CHSV(i, 255, 255));
}
}
virtual ~PlasmaMatrix() {
delete[] palette;
for(uint16_t i = 0; i < matrix->getWidth(); i++) {
delete[] plasma[i];
}
delete[] plasma;
}
void initialize() {
paletteShift = 0;
}
void execute();
private:
uint16_t
paletteShift;
CRGB*
palette;
uint8_t**
plasma;
};
#endif