#ifndef color_hh_INCLUDED #define color_hh_INCLUDED #include namespace Kakoune { class String; enum class Colors : char { Default, Black, Red, Green, Yellow, Blue, Magenta, Cyan, White, RGB, }; struct Color { Colors color; unsigned char r; unsigned char g; unsigned char b; Color() : Color{Colors::Default} {} Color(Colors c) : color{c}, r{0}, g{0}, b{0} {} Color(unsigned char r, unsigned char g, unsigned char b) : color{Colors::RGB}, r{r}, g{g}, b{b} {} bool operator==(const Color& c) const { return color == c.color and r == c.r and g == c.g and b == c.b; } bool operator!=(const Color& c) const { return color != c.color or r != c.r or g != c.g or b != c.b; } }; using ColorPair = std::pair; Color str_to_color(const String& color); String color_to_str(const Color& color); String option_to_string(const Color& color); void option_from_string(const String& str, Color& color); } #endif // color_hh_INCLUDED