Improve color handling. (#49)

This commit is contained in:
Arthur Sonzogni
2020-10-16 22:31:24 +02:00
committed by GitHub
parent 6a35efa3b7
commit d969c74341
12 changed files with 531 additions and 388 deletions

View File

@@ -35,13 +35,34 @@ Terminal::Dimensions Terminal::Size() {
#endif
}
bool Terminal::CanSupportTrueColors() {
char *COLORTERM_RAW = std::getenv("COLORTERM");
if (nullptr == COLORTERM_RAW) {
return false;
namespace {
const char* Safe(const char* c) {
return c ? c : "";
}
static bool cached = false;
Terminal::Color cached_supported_color;
Terminal::Color ComputeColorSupport() {
std::string COLORTERM = Safe(std::getenv("COLORTERM"));
if (COLORTERM.compare("24bit") || COLORTERM.compare("trueColor"))
return Terminal::Color::TrueColor;
std::string TERM = Safe(std::getenv("TERM"));
if (COLORTERM.compare("256") || COLORTERM.compare("256"))
return Terminal::Color::Palette256;
return Terminal::Color::Palette16;
}
} // namespace
Terminal::Color Terminal::ColorSupport() {
if (!cached) {
cached = true;
cached_supported_color = ComputeColorSupport();
}
std::string COLORTERM = COLORTERM_RAW;
return COLORTERM.compare("24bit") || COLORTERM.compare("trueColor");
return cached_supported_color;
}
} // namespace ftxui