mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-07-07 20:06:36 +02:00
- New color management integrated.
This commit is contained in:
parent
53747cc984
commit
494ed3b964
5 changed files with 319 additions and 167 deletions
230
src/color.cpp
230
src/color.cpp
|
@ -7,58 +7,234 @@
|
|||
#include "color.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::string Text::colorName (Text::color c)
|
||||
namespace Text
|
||||
{
|
||||
|
||||
std::string colorName (color c)
|
||||
{
|
||||
switch (c)
|
||||
{
|
||||
case black: return "black";
|
||||
case red: return "red";
|
||||
case green: return "green";
|
||||
case yellow: return "yellow";
|
||||
case blue: return "blue";
|
||||
case magenta: return "magenta";
|
||||
case cyan: return "cyan";
|
||||
case white: return "white";
|
||||
case nocolor: return "";
|
||||
case nocolor: return "";
|
||||
case off: return "off";
|
||||
|
||||
case bold: return "bold";
|
||||
case underline: return "underline";
|
||||
case bold_underline: return "bold_underline";
|
||||
|
||||
case black: return "black";
|
||||
case red: return "red";
|
||||
case green: return "green";
|
||||
case yellow: return "yellow";
|
||||
case blue: return "blue";
|
||||
case magenta: return "magenta";
|
||||
case cyan: return "cyan";
|
||||
case white: return "white";
|
||||
|
||||
case bold_black: return "bold_black";
|
||||
case bold_red: return "bold_red";
|
||||
case bold_green: return "bold_green";
|
||||
case bold_yellow: return "bold_yellow";
|
||||
case bold_blue: return "bold_blue";
|
||||
case bold_magenta: return "bold_magenta";
|
||||
case bold_cyan: return "bold_cyan";
|
||||
case bold_white: return "bold_white";
|
||||
|
||||
case underline_black: return "underline_black";
|
||||
case underline_red: return "underline_red";
|
||||
case underline_green: return "underline_green";
|
||||
case underline_yellow: return "underline_yellow";
|
||||
case underline_blue: return "underline_blue";
|
||||
case underline_magenta: return "underline_magenta";
|
||||
case underline_cyan: return "underline_cyan";
|
||||
case underline_white: return "underline_white";
|
||||
|
||||
case bold_underline_black: return "bold_underline_black";
|
||||
case bold_underline_red: return "bold_underline_red";
|
||||
case bold_underline_green: return "bold_underline_green";
|
||||
case bold_underline_yellow: return "bold_underline_yellow";
|
||||
case bold_underline_blue: return "bold_underline_blue";
|
||||
case bold_underline_magenta: return "bold_underline_magenta";
|
||||
case bold_underline_cyan: return "bold_underline_cyan";
|
||||
case bold_underline_white: return "bold_underline_white";
|
||||
|
||||
case on_black: return "on_black";
|
||||
case on_red: return "on_red";
|
||||
case on_green: return "on_green";
|
||||
case on_yellow: return "on_yellow";
|
||||
case on_blue: return "on_blue";
|
||||
case on_magenta: return "on_magenta";
|
||||
case on_cyan: return "on_cyan";
|
||||
case on_white: return "on_white";
|
||||
|
||||
case on_bright_black: return "on_bright_black";
|
||||
case on_bright_red: return "on_bright_red";
|
||||
case on_bright_green: return "on_bright_green";
|
||||
case on_bright_yellow: return "on_bright_yellow";
|
||||
case on_bright_blue: return "on_bright_blue";
|
||||
case on_bright_magenta: return "on_bright_magenta";
|
||||
case on_bright_cyan: return "on_bright_cyan";
|
||||
case on_bright_white: return "on_bright_white";
|
||||
|
||||
default: throw "Unknown Text::color value";
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Text::color Text::colorCode (const std::string& c)
|
||||
color colorCode (const std::string& c)
|
||||
{
|
||||
if (c == "black") return black;
|
||||
if (c == "red") return red;
|
||||
if (c == "green") return green;
|
||||
if (c == "yellow") return yellow;
|
||||
if (c == "blue") return blue;
|
||||
if (c == "magenta") return magenta;
|
||||
if (c == "cyan") return cyan;
|
||||
if (c == "white") return white;
|
||||
if (c == "off") return off;
|
||||
else if (c == "bold") return bold;
|
||||
else if (c == "underline") return underline;
|
||||
else if (c == "bold_underline") return bold_underline;
|
||||
|
||||
else if (c == "black") return black;
|
||||
else if (c == "red") return red;
|
||||
else if (c == "green") return green;
|
||||
else if (c == "yellow") return yellow;
|
||||
else if (c == "blue") return blue;
|
||||
else if (c == "magenta") return magenta;
|
||||
else if (c == "cyan") return cyan;
|
||||
else if (c == "white") return white;
|
||||
|
||||
else if (c == "bold_black") return bold_black;
|
||||
else if (c == "bold_red") return bold_red;
|
||||
else if (c == "bold_green") return bold_green;
|
||||
else if (c == "bold_yellow") return bold_yellow;
|
||||
else if (c == "bold_blue") return bold_blue;
|
||||
else if (c == "bold_magenta") return bold_magenta;
|
||||
else if (c == "bold_cyan") return bold_cyan;
|
||||
else if (c == "bold_white") return bold_white;
|
||||
|
||||
else if (c == "underline_black") return underline_black;
|
||||
else if (c == "underline_red") return underline_red;
|
||||
else if (c == "underline_green") return underline_green;
|
||||
else if (c == "underline_yellow") return underline_yellow;
|
||||
else if (c == "underline_blue") return underline_blue;
|
||||
else if (c == "underline_magenta") return underline_magenta;
|
||||
else if (c == "underline_cyan") return underline_cyan;
|
||||
else if (c == "underline_white") return underline_white;
|
||||
|
||||
else if (c == "bold_underline_black") return bold_underline_black;
|
||||
else if (c == "bold_underline_red") return bold_underline_red;
|
||||
else if (c == "bold_underline_green") return bold_underline_green;
|
||||
else if (c == "bold_underline_yellow") return bold_underline_yellow;
|
||||
else if (c == "bold_underline_blue") return bold_underline_blue;
|
||||
else if (c == "bold_underline_magenta") return bold_underline_magenta;
|
||||
else if (c == "bold_underline_cyan") return bold_underline_cyan;
|
||||
else if (c == "bold_underline_white") return bold_underline_white;
|
||||
|
||||
else if (c == "on_black") return on_black;
|
||||
else if (c == "on_red") return on_red;
|
||||
else if (c == "on_green") return on_green;
|
||||
else if (c == "on_yellow") return on_yellow;
|
||||
else if (c == "on_blue") return on_blue;
|
||||
else if (c == "on_magenta") return on_magenta;
|
||||
else if (c == "on_cyan") return on_cyan;
|
||||
else if (c == "on_white") return on_white;
|
||||
|
||||
else if (c == "on_bright_black") return on_bright_black;
|
||||
else if (c == "on_bright_red") return on_bright_red;
|
||||
else if (c == "on_bright_green") return on_bright_green;
|
||||
else if (c == "on_bright_yellow") return on_bright_yellow;
|
||||
else if (c == "on_bright_blue") return on_bright_blue;
|
||||
else if (c == "on_bright_magenta") return on_bright_magenta;
|
||||
else if (c == "on_bright_cyan") return on_bright_cyan;
|
||||
else if (c == "on_bright_white") return on_bright_white;
|
||||
|
||||
return nocolor;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::string Text::attrName (Text::attr a)
|
||||
std::string decode (color c)
|
||||
{
|
||||
switch (a)
|
||||
switch (c)
|
||||
{
|
||||
case underline: return "underline";
|
||||
case normal: return "";
|
||||
case nocolor: return "";
|
||||
case off: return "\033[0m";
|
||||
|
||||
case bold: return "\033[1m";
|
||||
case underline: return "\033[4m";
|
||||
case bold_underline: return "\033[1;4m";
|
||||
|
||||
case black: return "\033[30m";
|
||||
case red: return "\033[31m";
|
||||
case green: return "\033[32m";
|
||||
case yellow: return "\033[33m";
|
||||
case blue: return "\033[34m";
|
||||
case magenta: return "\033[35m";
|
||||
case cyan: return "\033[36m";
|
||||
case white: return "\033[37m";
|
||||
|
||||
case bold_black: return "\033[90m";
|
||||
case bold_red: return "\033[91m";
|
||||
case bold_green: return "\033[92m";
|
||||
case bold_yellow: return "\033[93m";
|
||||
case bold_blue: return "\033[94m";
|
||||
case bold_magenta: return "\033[95m";
|
||||
case bold_cyan: return "\033[96m";
|
||||
case bold_white: return "\033[97m";
|
||||
|
||||
case underline_black: return "\033[4;30m";
|
||||
case underline_red: return "\033[4;31m";
|
||||
case underline_green: return "\033[4;32m";
|
||||
case underline_yellow: return "\033[4;33m";
|
||||
case underline_blue: return "\033[4;34m";
|
||||
case underline_magenta: return "\033[4;35m";
|
||||
case underline_cyan: return "\033[4;36m";
|
||||
case underline_white: return "\033[4;37m";
|
||||
|
||||
case bold_underline_black: return "\033[1;4;30m";
|
||||
case bold_underline_red: return "\033[1;4;31m";
|
||||
case bold_underline_green: return "\033[1;4;32m";
|
||||
case bold_underline_yellow: return "\033[1;4;33m";
|
||||
case bold_underline_blue: return "\033[1;4;34m";
|
||||
case bold_underline_magenta: return "\033[1;4;35m";
|
||||
case bold_underline_cyan: return "\033[1;4;36m";
|
||||
case bold_underline_white: return "\033[1;4;37m";
|
||||
|
||||
case on_black: return "\033[40m";
|
||||
case on_red: return "\033[41m";
|
||||
case on_green: return "\033[42m";
|
||||
case on_yellow: return "\033[43m";
|
||||
case on_blue: return "\033[44m";
|
||||
case on_magenta: return "\033[45m";
|
||||
case on_cyan: return "\033[46m";
|
||||
case on_white: return "\033[47m";
|
||||
|
||||
case on_bright_black: return "\033[100m";
|
||||
case on_bright_red: return "\033[101m";
|
||||
case on_bright_green: return "\033[102m";
|
||||
case on_bright_yellow: return "\033[103m";
|
||||
case on_bright_blue: return "\033[104m";
|
||||
case on_bright_magenta: return "\033[105m";
|
||||
case on_bright_cyan: return "\033[106m";
|
||||
case on_bright_white: return "\033[107m";
|
||||
|
||||
default: throw "Unknown Text::color value";
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Text::attr Text::attrCode (const std::string& a)
|
||||
std::string colorize (color fg, color bg, const std::string& input)
|
||||
{
|
||||
if (a == "underline") return underline;
|
||||
|
||||
return normal;
|
||||
return decode (fg) + decode (bg) + input + decode (off);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::string colorize (color fg, color bg)
|
||||
{
|
||||
return decode (fg) + decode (bg);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::string colorize ()
|
||||
{
|
||||
return decode (off);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue