rpi-fb-matrix/GridTransformer.h
2015-12-15 12:03:46 +00:00

65 lines
1.4 KiB
C++

// LED matrix library transformer to map a rectangular canvas onto a complex
// chain of matrices.
// Author: Tony DiCola
#ifndef GRIDTRANSFORMER_H
#define GRIDTRANSFORMER_H
#include <cassert>
#include <vector>
#include "led-matrix.h"
class GridTransformer: public rgb_matrix::Canvas, public rgb_matrix::CanvasTransformer {
public:
struct Panel {
int order;
int rotate;
int parallel;
};
GridTransformer(int width, int height, int panel_width, int panel_height,
int chain_length, const std::vector<Panel>& panels);
virtual ~GridTransformer() {}
// Canvas interface implementation:
virtual int width() const {
return _width;
}
virtual int height() const {
return _height;
}
virtual void Clear() {
assert(_source != NULL);
_source->Clear();
}
virtual void Fill(uint8_t red, uint8_t green, uint8_t blue) {
assert(_source != NULL);
_source->Fill(red, green, blue);
}
virtual void SetPixel(int x, int y, uint8_t red, uint8_t green, uint8_t blue);
// Transformer interface implementation:
virtual rgb_matrix::Canvas* Transform(rgb_matrix::Canvas* source);
// Other attribute accessors.
int getRows() const {
return _rows;
}
int getColumns() const {
return _cols;
}
private:
int _width,
_height,
_panel_width,
_panel_height,
_chain_length,
_rows,
_cols;
rgb_matrix::Canvas* _source;
std::vector<Panel> _panels;
};
#endif