diff --git a/boards/esp32-32e/DisplayDriverTFT.h b/boards/esp32-32e/DisplayDriverTFT.h index 268501e..c8e1c18 100644 --- a/boards/esp32-32e/DisplayDriverTFT.h +++ b/boards/esp32-32e/DisplayDriverTFT.h @@ -13,7 +13,7 @@ public: TouchEvent readTouch() override; int dashboardTouch(int x, int y) override; HoldState updateHold(unsigned long holdMs) override; - void updateHint(int x, int y) override; + void updateHint(int x, int y, bool active) override; int width() override { return DISPLAY_WIDTH; } int height() override { return DISPLAY_HEIGHT; } diff --git a/boards/esp32-s3-lcd-43/DisplayDriverGFX.h b/boards/esp32-s3-lcd-43/DisplayDriverGFX.h index 61d4d3c..bd88992 100644 --- a/boards/esp32-s3-lcd-43/DisplayDriverGFX.h +++ b/boards/esp32-s3-lcd-43/DisplayDriverGFX.h @@ -14,7 +14,7 @@ public: TouchEvent readTouch() override; int dashboardTouch(int x, int y) override; HoldState updateHold(unsigned long holdMs) override; - void updateHint(int x, int y) override; + void updateHint(int x, int y, bool active) override; int width() override; int height() override; diff --git a/libraries/KlubhausCore/src/DisplayManager.h b/libraries/KlubhausCore/src/DisplayManager.h index b6f2f00..5295199 100644 --- a/libraries/KlubhausCore/src/DisplayManager.h +++ b/libraries/KlubhausCore/src/DisplayManager.h @@ -1,36 +1,40 @@ #pragma once + #include "IDisplayDriver.h" -/// Owns a pointer to the concrete driver; all calls delegate. -/// Board sketch creates the concrete driver and passes it in. class DisplayManager { public: - DisplayManager() - : _drv(nullptr) { } - explicit DisplayManager(IDisplayDriver* drv) + DisplayManager(IDisplayDriver* drv) : _drv(drv) { } - void setDriver(IDisplayDriver* drv) { _drv = drv; } void begin() { if(_drv) _drv->begin(); } + void setBacklight(bool on) { if(_drv) _drv->setBacklight(on); } + void render(const ScreenState& st) { if(_drv) _drv->render(st); } + TouchEvent readTouch() { return _drv ? _drv->readTouch() : TouchEvent {}; } + int dashboardTouch(int x, int y) { return _drv ? _drv->dashboardTouch(x, y) : -1; } + HoldState updateHold(unsigned long ms) { return _drv ? _drv->updateHold(ms) : HoldState {}; } - void updateHint(int x, int y) { + + void updateHint(int x, int y, bool active) { if(_drv) - _drv->updateHint(x, y); + _drv->updateHint(x, y, active); } + int width() { return _drv ? _drv->width() : 0; } + int height() { return _drv ? _drv->height() : 0; } private: