MeshCore/src/helpers/ui/LGFXDisplay.h

45 lines
1.1 KiB
C
Raw Normal View History

/*
* Base class for LovyanGFX supported display (works on ESP32 mainly)
* You can extend this class to support your display, providing your own LGFX
*/
#pragma once
#include <helpers/ui/DisplayDriver.h>
#define LGFX_USE_V1
#include <LovyanGFX.hpp>
#ifndef UI_ZOOM
#define UI_ZOOM 1
#endif
class LGFXDisplay : public DisplayDriver {
protected:
LGFX_Device* display;
LGFX_Sprite buffer;
bool _isOn;
int _color = TFT_WHITE;
public:
LGFXDisplay(int w, int h):DisplayDriver(w/UI_ZOOM, h/UI_ZOOM) {_isOn = false;}
bool begin();
bool isOn() override { return _isOn; }
void turnOn() override;
void turnOff() override;
void clear() override;
void startFrame(Color bkg = DARK) override;
void setTextSize(int sz) override;
void setColor(Color c) override;
void setCursor(int x, int y) override;
void print(const char* str) override;
void fillRect(int x, int y, int w, int h) override;
void drawRect(int x, int y, int w, int h) override;
void drawXbm(int x, int y, const uint8_t* bits, int w, int h) override;
uint16_t getTextWidth(const char* str) override;
void endFrame() override;
virtual bool getTouch(int *x, int *y);
};