#pragma once #include #include #include #include /** @deprecated use EspLcdDisplayV2 */ class EspLcdDisplay : public tt::hal::display::DisplayDevice { esp_lcd_panel_io_handle_t ioHandle = nullptr; esp_lcd_panel_handle_t panelHandle = nullptr; lv_display_t* lvglDisplay = nullptr; std::shared_ptr displayDriver; /** @warning This is never changed, so a driver that needs BGR is not supported */ lcd_rgb_element_order_t rgbElementOrder = LCD_RGB_ELEMENT_ORDER_RGB; protected: // Used for sending commands such as setting curves esp_lcd_panel_io_handle_t getIoHandle() const { return ioHandle; } virtual bool createIoHandle(esp_lcd_panel_io_handle_t& outHandle) = 0; virtual bool createPanelHandle(esp_lcd_panel_io_handle_t ioHandle, esp_lcd_panel_handle_t& panelHandle) = 0; virtual lvgl_port_display_cfg_t getLvglPortDisplayConfig(esp_lcd_panel_io_handle_t ioHandle, esp_lcd_panel_handle_t panelHandle) = 0; virtual bool isRgbPanel() const { return false; } virtual lvgl_port_display_rgb_cfg_t getLvglPortDisplayRgbConfig(esp_lcd_panel_io_handle_t ioHandle, esp_lcd_panel_handle_t panelHandle) { check(false, "Not supported"); } public: EspLcdDisplay() = default; ~EspLcdDisplay() override; bool start() final; bool stop() final; // region LVGL bool supportsLvgl() const final { return true; } bool startLvgl() final; bool stopLvgl() final; lv_display_t* getLvglDisplay() const final { return lvglDisplay; } // endregion // region DisplayDriver bool supportsDisplayDriver() const override { return true; } /** @return a NativeDisplay instance if this device supports it */ std::shared_ptr getDisplayDriver() final; // endregion };