#pragma once
#include "font_atlas.h"
#include "interface/font_interface.h"

/**
 * @class color_emoji_atlas
 * @brief 彩色表情符号图集管理器
 *
 * 管理彩色表情符号的纹理图集，支持从字体中提取彩色表情符号的位图，
 * 并将其存储在RGBA格式的纹理图集中。
 */
class color_emoji_atlas : public atlas_base {
public:
    /**
     * @brief 初始化表情符号图集
     *
     * @param in_atlas_size 图集的像素尺寸
     * @return 初始化是否成功
     */
    bool initialize(const Eigen::Vector2i& in_atlas_size) override {
        return initialize_atlas(in_atlas_size, SG_PIXELFORMAT_RGBA8);
    }

    /**
     * @brief 获取或创建表情符号的纹理区域
     *
     * 尝试从缓存中获取表情符号的纹理区域，如果不存在则从字体中提取位图并添加到图集中。
     *
     * @param in_glyph_index 表情符号的码点或字体特定索引
     * @param in_font 用于渲染表情符号的字体
     * @param in_font_size 字体大小
     * @return 操作结果，包含成功/失败状态和区域信息
     */
    glyph_atlas_result_t get_or_create_emoji(
        int32_t in_glyph_index,
        const std::shared_ptr<font_face_interface>& in_font,
        float in_font_size);
};
