#ifndef RGBMATRIX_PIXEL_MAPPER
#define RGBMATRIX_PIXEL_MAPPER
#include <string>
#include <vector>
namespace rgb_matrix {
class PixelMapper {
public:
virtual ~PixelMapper() {}
virtual const char *GetName() const = 0;
virtual bool SetParameters(int chain, int parallel,
const char *parameter_string) {
return true;
}
virtual bool GetSizeMapping(int matrix_width, int matrix_height,
int *visible_width, int *visible_height)
const = 0;
virtual void MapVisibleToMatrix(int matrix_width, int matrix_height,
int visible_x, int visible_y,
int *matrix_x, int *matrix_y) const = 0;
virtual bool MapMatrixToVisible(int matrix_width, int matrix_height,
int matrix_x, int matrix_y,
int *visible_x, int *visible_y) const { return false; };
enum MappingType {
VisibleToMatrix, MatrixToVisible
};
virtual MappingType GetMappingType() const { return VisibleToMatrix; }
};
void RegisterPixelMapper(PixelMapper *mapper);
std::vector<std::string> GetAvailablePixelMappers();
const PixelMapper *FindPixelMapper(const char *name,
int chain, int parallel,
const char *parameter = NULL);
}
#endif