#pragma once #include #include #include #include #include "drawtypes/label.hpp" namespace drawtypes { struct Icon : public Label { Icon(std::string icon, int font = 0) : Label(icon, font){} Icon(std::string icon, std::string fg, std::string bg = "", std::string ul = "", std::string ol = "", int font = 0, int padding = 0, int margin = 0) : Label(icon, fg, bg, ul, ol, font, padding, margin){} std::unique_ptr clone(); }; class IconMap { std::map> icons; public: void add(std::string id, std::unique_ptr &&icon); std::unique_ptr &get(std::string id, std::string fallback_id = ""); bool has(std::string id); operator bool() { return this->icons.size() > 0; } }; std::unique_ptr get_config_icon(std::string module_name, std::string icon_name = "icon", bool required = true, std::string def = ""); std::unique_ptr get_optional_config_icon(std::string module_name, std::string icon_name = "icon", std::string def = ""); }