#pragma once #include #include #include "board_config.h" class DisplayDriverTFT : public IDisplayDriver { public: void begin() override; void setBacklight(bool on) override; void render(const ScreenState& state) override; TouchEvent readTouch() override; int dashboardTouch(int x, int y) override; HoldState updateHold(unsigned long holdMs) override; void updateHint(int x, int y) override; int width() override { return DISPLAY_WIDTH; } int height() override { return DISPLAY_HEIGHT; } private: void drawBoot(); void drawAlert(const ScreenState& st); void drawDashboard(const ScreenState& st); TFT_eSPI _tft; bool _holdActive = false; uint32_t _holdStartMs = 0; ScreenID _lastScreen = ScreenID::BOOT; bool _needsRedraw = true; };