#ifndef LCD_DISPLAY_H #define LCD_DISPLAY_H #include "lvgl_display.h" #include "gif/lvgl_gif.h" #include #include #include #include #include #define PREVIEW_IMAGE_DURATION_MS 5000 class LcdDisplay : public LvglDisplay { protected: esp_lcd_panel_io_handle_t panel_io_ = nullptr; esp_lcd_panel_handle_t panel_ = nullptr; lv_draw_buf_t draw_buf_; lv_obj_t* status_bar_ = nullptr; lv_obj_t* content_ = nullptr; lv_obj_t* container_ = nullptr; lv_obj_t* side_bar_ = nullptr; lv_obj_t* preview_image_ = nullptr; lv_obj_t* emoji_label_ = nullptr; lv_obj_t* emoji_image_ = nullptr; std::unique_ptr gif_controller_ = nullptr; lv_obj_t* emoji_box_ = nullptr; lv_obj_t* chat_message_label_ = nullptr; esp_timer_handle_t preview_timer_ = nullptr; void InitializeLcdThemes(); void SetupUI(); virtual bool Lock(int timeout_ms = 0) override; virtual void Unlock() override; protected: // 添加protected构造函数 LcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height); public: ~LcdDisplay(); virtual void SetEmotion(const char* emotion) override; virtual void SetPreviewImage(const lv_img_dsc_t* img_dsc) override; virtual void SetChatMessage(const char* role, const char* content) override; // Add theme switching function virtual void SetTheme(Theme* theme) override; }; // SPI LCD显示器 class SpiLcdDisplay : public LcdDisplay { public: SpiLcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, int offset_x, int offset_y, bool mirror_x, bool mirror_y, bool swap_xy); }; // RGB LCD显示器 class RgbLcdDisplay : public LcdDisplay { public: RgbLcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, int offset_x, int offset_y, bool mirror_x, bool mirror_y, bool swap_xy); }; // MIPI LCD显示器 class MipiLcdDisplay : public LcdDisplay { public: MipiLcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, int offset_x, int offset_y, bool mirror_x, bool mirror_y, bool swap_xy); }; #endif // LCD_DISPLAY_H