home/src/color.hh
2014-11-12 21:27:07 +00:00

53 lines
1000 B
C++

#ifndef color_hh_INCLUDED
#define color_hh_INCLUDED
namespace Kakoune
{
class String;
class StringView;
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==(Color c) const
{ return color == c.color and r == c.r and g == c.g and b == c.b; }
bool operator!=(Color c) const
{ return color != c.color or r != c.r or g != c.g or b != c.b; }
};
Color str_to_color(StringView color);
String color_to_str(Color color);
String option_to_string(Color color);
void option_from_string(StringView str, Color& color);
bool is_color_name(StringView color);
}
#endif // color_hh_INCLUDED