#pragma once #include #include #include #include #include #include #include class EmojiResource { public: EmojiResource(std::string filepath); ~EmojiResource(); bool Load(); Glib::RefPtr GetPixBuf(const Glib::ustring &pattern); const std::map &GetShortCodes() const; void ReplaceEmojis(Glib::RefPtr buf, int size = 24); std::string GetShortCodeForPattern(const Glib::ustring &pattern); private: std::unordered_map> m_pattern_shortcode_index; std::map m_shortcode_index; // shortcode -> pattern std::string m_filepath; std::vector m_patterns; sqlite3 *m_db = nullptr; sqlite3_stmt *m_get_emoji_stmt = nullptr; };