class microLed_IFace {
public:
virtual void set(int n, mData color) = 0; // ставим цвет светодиода mData (равносильно leds[n] = color)
virtual mData get(int num) = 0; // получить цвет диода в mData (равносильно leds[n])
virtual void fill(mData color) = 0; // заливка цветом mData
virtual void fill(int from, int to, mData color) = 0; // заливка цветом mData
virtual void fillGradient(int from, int to, mData color1, mData color2) = 0; // залить градиентом двух цветов
virtual void fade(int num, byte val) = 0; // уменьшить яркость
// матрица
virtual uint16_t getPixNumber(int x, int y) = 0; // получить номер пикселя в ленте по координатам
virtual void set(int x, int y, mData color) = 0; // ставим цвет пикселя x y в mData
virtual mData get(int x, int y) = 0; // получить цвет пикселя в mData
virtual void fade(int x, int y, byte val) = 0; // уменьшить яркость
virtual void drawBitmap8(int X, int Y, const uint8_t *frame, int width, int height) = 0; // вывод битмапа (битмап 1мерный PROGMEM)
virtual void drawBitmap16(int X, int Y, const uint16_t *frame, int width, int height) = 0; // вывод битмапа (битмап 1мерный PROGMEM)
virtual void drawBitmap32(int X, int Y, const uint32_t *frame, int width, int height) = 0; // вывод битмапа (битмап 1мерный PROGMEM)
// общее
virtual void setMaxCurrent(int ma) = 0; // установить максимальный ток (автокоррекция яркости). 0 - выключено
virtual void setBrightness(uint8_t newBright) = 0; // яркость 0-255
virtual void clear() = 0; // очистка
// вывод буфера
virtual void show() = 0; // вывести весь буфер
// вывод потока
virtual void begin() = 0; // начать вывод потоком
virtual void send(mData data) = 0; // отправить один светодиод
virtual void end() = 0;
virtual ~microLed_IFace() {}
};
template<int amount, int8_t pin, int8_t pinCLK, M_chip chip, M_order order, M_ISR isr = CLI_OFF, uint8_t uptime = 0>
class wrapperMicroLed : public microLed_IFace {
public:
void set(int n, mData color) { leds.set(n, color); }
mData get(int num) { return leds.get(num); }
void fill(mData color) { leds.fill(color); }
void fill(int from, int to, mData color) { leds.fill(from, to, color); }
void fillGradient(int from, int to, mData color1, mData color2) { leds.fillGradient(from, to, color1, color2); }
void fade(int num, byte val) { leds.fade(num, val); }
// матрица
uint16_t getPixNumber(int x, int y) { return leds.getPixNumber(x, y); }
void set(int x, int y, mData color) { leds.set(x, y, color); }
mData get(int x, int y) { return leds.get(x, y); }
void fade(int x, int y, byte val) { leds.fade(x, y, val); }
void drawBitmap8(int X, int Y, const uint8_t *frame, int width, int height) { leds.drawBitmap8 (X, Y, frame, width, height); }
void drawBitmap16(int X, int Y, const uint16_t *frame, int width, int height) { leds.drawBitmap16(X, Y, frame, width, height); }
void drawBitmap32(int X, int Y, const uint32_t *frame, int width, int height) { leds.drawBitmap32(X, Y, frame, width, height); }
// общее
void setMaxCurrent(int ma) { leds.setMaxCurrent(ma); }
void setBrightness(uint8_t newBright) { leds.setBrightness(newBright); }
void clear() { leds.clear(); }
// вывод буфера
void show() { leds.show(); }
// вывод потока
void begin() { leds.begin(); }
void send(mData data) { leds.send(data); }
void end() { leds.end(); }
virtual ~wrapperMicroLed() {}
wrapperMicroLed() : leds(microLED<amount, pin, pinCLK, chip, order, isr, uptime>()) { }
private:
microLED<amount, pin, pinCLK, chip, order, isr, uptime> leds;
};