Have to tweak when to test that true color is set, and also when to do it for the test.

main
Zed A. Shaw 10 months ago
parent 707e9e3d6e
commit f223257aad
  1. 18
      ansi_parser.cpp
  2. 11
      tests/ansi_parser.cpp

@ -87,12 +87,16 @@ static const int foo_en_main = 19;
#line 84 "ansi_parser.rl"
#include <ftxui/screen/terminal.hpp>
ANSIParser::ANSIParser(sf::Color default_fg, sf::Color default_bg) :
$default_fg(default_fg),
$default_bg(default_bg)
{
// the parser only handles full color so force it
if(ftxui::Terminal::ColorSupport() != ftxui::Terminal::Color::TrueColor) {
ftxui::Terminal::SetColorSupport(ftxui::Terminal::Color::TrueColor);
}
}
bool ANSIParser::parse(const std::string &screen, WriteCB write) {
@ -112,14 +116,14 @@ bool ANSIParser::parse(std::wstring_view codes, WriteCB write) {
sf::Color &target = color;
#line 107 "ansi_parser.cpp"
#line 111 "ansi_parser.cpp"
{
cs = foo_start;
}
#line 110 "ansi_parser.rl"
#line 114 "ansi_parser.rl"
#line 110 "ansi_parser.cpp"
#line 114 "ansi_parser.cpp"
{
int _klen;
unsigned int _trans;
@ -272,7 +276,7 @@ _match:
#line 59 "ansi_parser.rl"
{ }
break;
#line 249 "ansi_parser.cpp"
#line 253 "ansi_parser.cpp"
}
}
@ -292,7 +296,7 @@ _again:
#line 59 "ansi_parser.rl"
{ }
break;
#line 267 "ansi_parser.cpp"
#line 271 "ansi_parser.cpp"
}
}
}
@ -300,7 +304,7 @@ _again:
_out: {}
}
#line 111 "ansi_parser.rl"
#line 115 "ansi_parser.rl"
return p - pe == 0;
}

@ -17,6 +17,8 @@ using namespace fmt;
using namespace ftxui;
std::string generate_colors() {
REQUIRE(ftxui::Terminal::ColorSupport() == Terminal::Color::TrueColor);
const int max_value = 255;
const int value_increment = 8;
const int hue_increment = 6;
@ -36,8 +38,6 @@ std::string generate_colors() {
array.push_back(hbox(std::move(line)));
}
println("MADE {} CHARS", count);
auto true_color_display = vbox({
vbox(std::move(array)),
});
@ -52,13 +52,14 @@ std::string generate_colors() {
}
TEST_CASE("test out ragel parser", "[gui]") {
std::string colors = generate_colors();
std::cout << colors;
sf::Color default_fg(0,0,0);
sf::Color default_bg(100,100,100);
// this sets the Truecolor so need to do it first
ANSIParser parser(default_fg, default_bg);
std::string colors = generate_colors();
std::cout << colors;
REQUIRE(ftxui::Terminal::ColorSupport() == Terminal::Color::TrueColor);
bool good = parser.parse(colors, [&](sf::Color bgcolor, sf::Color color, wchar_t ch) {
bool correct_char = ch == '#' || ch == ' ' || ch == '\n' || ch == '\r';