home/src/color.hh

55 lines
1.0 KiB
C++
Raw Normal View History

#ifndef color_hh_INCLUDED
#define color_hh_INCLUDED
#include <utility>
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, Color>;
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