#ifndef DISPLAY_H
#define DISPLAY_H

#include <esp_timer.h>
#include <esp_log.h>
#include <esp_pm.h>
#include <string>

// 前向声明或空类型定义
struct lv_font_t {};

struct DisplayFonts {
    const lv_font_t* text_font = nullptr;
    const lv_font_t* icon_font = nullptr;
    const lv_font_t* emoji_font = nullptr;
};

class Display {
public:
    Display() : width_(0), height_(0) {}
    virtual ~Display() {}

    virtual void SetStatus(const char* status) {}
    virtual void ShowNotification(const char* notification, int duration_ms = 3000) {}
    virtual void ShowNotification(const std::string &notification, int duration_ms = 3000) {}
    virtual void SetEmotion(const char* emotion) {}
    virtual void SetChatMessage(const char* role, const char* content) {}
    virtual void SetIcon(const char* icon) {}
    virtual void SetTheme(const std::string& theme_name) {}
    virtual std::string GetTheme() { return current_theme_name_; }

    inline int width() const { return width_; }
    inline int height() const { return height_; }

    virtual bool Lock(int timeout_ms = 0) { return true; }
    virtual void Unlock() {}

    virtual void Update() {}

protected:
    int width_;
    int height_;
    std::string current_theme_name_;
};

#endif // DISPLAY_H
