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

main
Zed A. Shaw 3 weeks 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" #line 84 "ansi_parser.rl"
#include <ftxui/screen/terminal.hpp>
ANSIParser::ANSIParser(sf::Color default_fg, sf::Color default_bg) : ANSIParser::ANSIParser(sf::Color default_fg, sf::Color default_bg) :
$default_fg(default_fg), $default_fg(default_fg),
$default_bg(default_bg) $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) { 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; sf::Color &target = color;
#line 107 "ansi_parser.cpp" #line 111 "ansi_parser.cpp"
{ {
cs = foo_start; 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; int _klen;
unsigned int _trans; unsigned int _trans;
@ -272,7 +276,7 @@ _match:
#line 59 "ansi_parser.rl" #line 59 "ansi_parser.rl"
{ } { }
break; break;
#line 249 "ansi_parser.cpp" #line 253 "ansi_parser.cpp"
} }
} }
@ -292,7 +296,7 @@ _again:
#line 59 "ansi_parser.rl" #line 59 "ansi_parser.rl"
{ } { }
break; break;
#line 267 "ansi_parser.cpp" #line 271 "ansi_parser.cpp"
} }
} }
} }
@ -300,7 +304,7 @@ _again:
_out: {} _out: {}
} }
#line 111 "ansi_parser.rl" #line 115 "ansi_parser.rl"
return p - pe == 0; return p - pe == 0;
} }

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

Loading…
Cancel
Save