mirror of
https://github.com/portapack-mayhem/mayhem-firmware.git
synced 2025-04-02 22:55:58 +00:00
Declare escape strings for colored text (#1409)
* Color strings * Color strings * Color strings * Color strings * Color strings * Color strings & fix first group scrolling off screen * Color strings * Color strings * Clang * Clang * Clang attempt #3 * Update ui_painter.cpp * Update ui_widget.cpp * Clang test * Clang * Clang test * Update ui_about_simple.cpp * Update lge_app.cpp
This commit is contained in:
parent
9af1308e29
commit
cf25d85d51
@ -69,7 +69,7 @@ void LGEView::generate_frame_touche() {
|
|||||||
// 0D 96 02 12 0E 00 46 28 01 45 27 01 44 23 66 30
|
// 0D 96 02 12 0E 00 46 28 01 45 27 01 44 23 66 30
|
||||||
std::vector<uint8_t> data{0x46, 0x28, 0x01, 0x45, 0x27, 0x01, 0x44, 0x23};
|
std::vector<uint8_t> data{0x46, 0x28, 0x01, 0x45, 0x27, 0x01, 0x44, 0x23};
|
||||||
|
|
||||||
console.write("\n\x1B\x07Touche:\x1B\x10");
|
console.write("\n" STR_COLOR_LIGHT_GREY "Touche:");
|
||||||
generate_lge_frame(0x96, (field_player.value() << 8) | field_room.value(), 0x0001, data);
|
generate_lge_frame(0x96, (field_player.value() << 8) | field_room.value(), 0x0001, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,7 +111,7 @@ void LGEView::generate_frame_nickname() {
|
|||||||
|
|
||||||
data.insert(data.end(), data_footer.begin(), data_footer.end());
|
data.insert(data.end(), data_footer.begin(), data_footer.end());
|
||||||
|
|
||||||
console.write("\n\x1B\x0ESet nickname:\x1B\x10");
|
console.write("\n" STR_COLOR_YELLOW "Set nickname:");
|
||||||
|
|
||||||
generate_lge_frame(0x02, 0x001A, field_player.value(), data);
|
generate_lge_frame(0x02, 0x001A, field_player.value(), data);
|
||||||
}
|
}
|
||||||
@ -141,7 +141,7 @@ void LGEView::generate_frame_team() {
|
|||||||
|
|
||||||
data.push_back(field_team.value() - 1); // Color ?
|
data.push_back(field_team.value() - 1); // Color ?
|
||||||
|
|
||||||
console.write("\n\x1B\x0ASet team:\x1B\x10");
|
console.write("\n" STR_COLOR_GREEN "Set team:");
|
||||||
|
|
||||||
generate_lge_frame(0x03, data);
|
generate_lge_frame(0x03, data);
|
||||||
}
|
}
|
||||||
@ -173,9 +173,7 @@ void LGEView::generate_frame_broadcast_nickname() {
|
|||||||
|
|
||||||
data.push_back(field_team.value());
|
data.push_back(field_team.value());
|
||||||
|
|
||||||
console.write(
|
console.write("\n" STR_COLOR_BLUE "Broadcast nickname:");
|
||||||
"\n\x1B\x09"
|
|
||||||
"Broadcast nickname:\x1B\x10");
|
|
||||||
|
|
||||||
generate_lge_frame(0x04, data);
|
generate_lge_frame(0x04, data);
|
||||||
}
|
}
|
||||||
@ -187,14 +185,14 @@ void LGEView::generate_frame_start() {
|
|||||||
|
|
||||||
// data[0] = field_room.value(); // ?
|
// data[0] = field_room.value(); // ?
|
||||||
|
|
||||||
console.write("\n\x1B\x0DStart:\x1B\x10");
|
console.write("\n" STR_COLOR_MAGENTA "Start:");
|
||||||
generate_lge_frame(0x05, data);
|
generate_lge_frame(0x05, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LGEView::generate_frame_gameover() {
|
void LGEView::generate_frame_gameover() {
|
||||||
std::vector<uint8_t> data{(uint8_t)field_room.value()};
|
std::vector<uint8_t> data{(uint8_t)field_room.value()};
|
||||||
|
|
||||||
console.write("\n\x1B\x0CGameover:\x1B\x10");
|
console.write("\n" STR_COLOR_RED "Gameover:");
|
||||||
generate_lge_frame(0x0D, data);
|
generate_lge_frame(0x0D, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -229,9 +227,7 @@ void LGEView::generate_frame_collier() {
|
|||||||
|
|
||||||
data.push_back(checksum - id);
|
data.push_back(checksum - id);
|
||||||
|
|
||||||
console.write(
|
console.write("\n" STR_COLOR_DARK_YELLOW "Config:");
|
||||||
"\n\x1B\x06"
|
|
||||||
"Config:\x1B\x10");
|
|
||||||
generate_lge_frame(0x00, 0x3713, 0x3713, data);
|
generate_lge_frame(0x00, 0x3713, 0x3713, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,7 +159,7 @@ void POCSAGAppView::on_packet(const POCSAGPacketMessage* message) {
|
|||||||
logger.log_raw_data(message->packet, receiver_model.target_frequency());
|
logger.log_raw_data(message->packet, receiver_model.target_frequency());
|
||||||
|
|
||||||
if (message->packet.flag() != NORMAL) {
|
if (message->packet.flag() != NORMAL) {
|
||||||
console.writeln("\n\x1B\x04" + prefix + " CRC ERROR: " + pocsag::flag_str(message->packet.flag()));
|
console.writeln("\n" STR_COLOR_DARK_RED + prefix + " CRC ERROR: " + pocsag::flag_str(message->packet.flag()));
|
||||||
last_address = 0;
|
last_address = 0;
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
@ -168,7 +168,7 @@ void POCSAGAppView::on_packet(const POCSAGPacketMessage* message) {
|
|||||||
/*
|
/*
|
||||||
// Too many errors for reliable decode.
|
// Too many errors for reliable decode.
|
||||||
if (pocsag_state.errors >= 3) {
|
if (pocsag_state.errors >= 3) {
|
||||||
console.write("\n\x1B\x0D" + prefix + " Too many decode errors.");
|
console.write("\n" STR_COLOR_MAGENTA + prefix + " Too many decode errors.");
|
||||||
last_address = 0;
|
last_address = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -176,13 +176,13 @@ void POCSAGAppView::on_packet(const POCSAGPacketMessage* message) {
|
|||||||
|
|
||||||
// Ignored address.
|
// Ignored address.
|
||||||
if (ignore() && pocsag_state.address == settings_.address_to_ignore) {
|
if (ignore() && pocsag_state.address == settings_.address_to_ignore) {
|
||||||
console.write("\n\x1B\x03" + prefix + " Ignored: " + to_string_dec_uint(pocsag_state.address));
|
console.write("\n" STR_COLOR_DARK_CYAN + prefix + " Ignored: " + to_string_dec_uint(pocsag_state.address));
|
||||||
last_address = pocsag_state.address;
|
last_address = pocsag_state.address;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Color indicates the message has lots of decoding errors.
|
// Color indicates the message has lots of decoding errors.
|
||||||
std::string color = pocsag_state.errors >= 3 ? "\x1B\x07" : "";
|
std::string color = pocsag_state.errors >= 3 ? STR_COLOR_MAGENTA : "";
|
||||||
|
|
||||||
std::string console_info = "\n" + color + prefix;
|
std::string console_info = "\n" + color + prefix;
|
||||||
console_info += " #" + to_string_dec_uint(pocsag_state.address);
|
console_info += " #" + to_string_dec_uint(pocsag_state.address);
|
||||||
|
@ -8,7 +8,7 @@ AboutView::AboutView(NavigationView& nav) {
|
|||||||
nav.pop();
|
nav.pop();
|
||||||
};
|
};
|
||||||
|
|
||||||
console.writeln("\x1B\x07List of contributors:\x1B\x10");
|
console.writeln(STR_COLOR_LIGHT_GREY "List of contributors:");
|
||||||
console.writeln("");
|
console.writeln("");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ void AboutView::update() {
|
|||||||
case 1:
|
case 1:
|
||||||
// TODO: Generate this automatically from github
|
// TODO: Generate this automatically from github
|
||||||
// https://github.com/eried/portapack-mayhem/graphs/contributors?to=2022-01-01&from=2020-04-12&type=c
|
// https://github.com/eried/portapack-mayhem/graphs/contributors?to=2022-01-01&from=2020-04-12&type=c
|
||||||
console.writeln("\x1B\x06Mayhem:\x1B\x10");
|
console.writeln(STR_COLOR_DARK_YELLOW "Mayhem:");
|
||||||
console.writeln("eried,euquiq,gregoryfenton");
|
console.writeln("eried,euquiq,gregoryfenton");
|
||||||
console.writeln("johnelder,jwetzell,nnemanjan00");
|
console.writeln("johnelder,jwetzell,nnemanjan00");
|
||||||
console.writeln("N0vaPixel,klockee,GullCode");
|
console.writeln("N0vaPixel,klockee,GullCode");
|
||||||
@ -34,13 +34,15 @@ void AboutView::update() {
|
|||||||
console.writeln("notpike,jLynx,zigad");
|
console.writeln("notpike,jLynx,zigad");
|
||||||
console.writeln("MichalLeonBorsuk,jimilinuxguy");
|
console.writeln("MichalLeonBorsuk,jimilinuxguy");
|
||||||
console.writeln("kallanreed,bernd-herzog");
|
console.writeln("kallanreed,bernd-herzog");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
console.writeln("NotherNgineer,zxkmm,u-foka");
|
console.writeln("NotherNgineer,zxkmm,u-foka");
|
||||||
console.writeln("");
|
console.writeln("");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 3:
|
||||||
// https://github.com/eried/portapack-mayhem/graphs/contributors?to=2020-04-12&from=2015-07-31&type=c
|
// https://github.com/eried/portapack-mayhem/graphs/contributors?to=2020-04-12&from=2015-07-31&type=c
|
||||||
console.writeln("\x1B\x06Havoc:\x1B\x10");
|
console.writeln(STR_COLOR_DARK_YELLOW "Havoc:");
|
||||||
console.writeln("furrtek,mrmookie,NotPike");
|
console.writeln("furrtek,mrmookie,NotPike");
|
||||||
console.writeln("mjwaxios,ImDroided,Giorgiofox");
|
console.writeln("mjwaxios,ImDroided,Giorgiofox");
|
||||||
console.writeln("F4GEV,z4ziggy,xmycroftx");
|
console.writeln("F4GEV,z4ziggy,xmycroftx");
|
||||||
@ -51,16 +53,16 @@ void AboutView::update() {
|
|||||||
console.writeln("");
|
console.writeln("");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 4:
|
||||||
// https://github.com/eried/portapack-mayhem/graphs/contributors?from=2014-07-05&to=2015-07-31&type=c
|
// https://github.com/eried/portapack-mayhem/graphs/contributors?from=2014-07-05&to=2015-07-31&type=c
|
||||||
console.writeln("\x1B\x06PortaPack:\x1B\x10");
|
console.writeln(STR_COLOR_DARK_YELLOW "PortaPack:");
|
||||||
console.writeln("jboone,argilo");
|
console.writeln("jboone,argilo");
|
||||||
console.writeln("");
|
console.writeln("");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 5:
|
||||||
// https://github.com/mossmann/hackrf/graphs/contributors
|
// https://github.com/mossmann/hackrf/graphs/contributors
|
||||||
console.writeln("\x1B\x06HackRF:\x1B\x10");
|
console.writeln(STR_COLOR_DARK_YELLOW "HackRF:");
|
||||||
console.writeln("mossmann,dominicgs,bvernoux");
|
console.writeln("mossmann,dominicgs,bvernoux");
|
||||||
console.writeln("bgamari,schneider42,miek");
|
console.writeln("bgamari,schneider42,miek");
|
||||||
console.writeln("willcode,hessu,Sec42");
|
console.writeln("willcode,hessu,Sec42");
|
||||||
|
@ -40,24 +40,22 @@ void RecentEntriesTable<AircraftRecentEntries>::draw(
|
|||||||
const Rect& target_rect,
|
const Rect& target_rect,
|
||||||
Painter& painter,
|
Painter& painter,
|
||||||
const Style& style) {
|
const Style& style) {
|
||||||
char aged_color;
|
|
||||||
Color target_color;
|
Color target_color;
|
||||||
auto entry_age = entry.age;
|
auto entry_age = entry.age;
|
||||||
|
std::string entry_string;
|
||||||
|
|
||||||
// Color decay for flights not being updated anymore
|
// Color decay for flights not being updated anymore
|
||||||
if (entry_age < ADSB_CURRENT) {
|
if (entry_age < ADSB_CURRENT) {
|
||||||
aged_color = 0x10;
|
entry_string = "";
|
||||||
target_color = Color::green();
|
target_color = Color::green();
|
||||||
} else if (entry_age < ADSB_RECENT) {
|
} else if (entry_age < ADSB_RECENT) {
|
||||||
aged_color = 0x07;
|
entry_string = STR_COLOR_LIGHT_GREY;
|
||||||
target_color = Color::light_grey();
|
target_color = Color::light_grey();
|
||||||
} else {
|
} else {
|
||||||
aged_color = 0x08;
|
entry_string = STR_COLOR_DARK_GREY;
|
||||||
target_color = Color::grey();
|
target_color = Color::grey();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string entry_string = "\x1B";
|
|
||||||
entry_string += aged_color;
|
|
||||||
entry_string +=
|
entry_string +=
|
||||||
(entry.callsign[0] != ' ' ? entry.callsign + " " : entry.icaoStr + " ") +
|
(entry.callsign[0] != ' ' ? entry.callsign + " " : entry.icaoStr + " ") +
|
||||||
to_string_dec_uint((unsigned int)(entry.pos.altitude / 100), 4) +
|
to_string_dec_uint((unsigned int)(entry.pos.altitude / 100), 4) +
|
||||||
|
@ -42,15 +42,12 @@ void RecentEntriesTable<APRSRecentEntries>::draw(
|
|||||||
const Rect& target_rect,
|
const Rect& target_rect,
|
||||||
Painter& painter,
|
Painter& painter,
|
||||||
const Style& style) {
|
const Style& style) {
|
||||||
char aged_color;
|
|
||||||
Color target_color;
|
Color target_color;
|
||||||
// auto entry_age = entry.age;
|
// auto entry_age = entry.age;
|
||||||
|
|
||||||
target_color = Color::green();
|
target_color = Color::green();
|
||||||
|
|
||||||
aged_color = 0x10;
|
std::string entry_string = "";
|
||||||
std::string entry_string = "\x1B";
|
|
||||||
entry_string += aged_color;
|
|
||||||
|
|
||||||
entry_string += entry.source_formatted;
|
entry_string += entry.source_formatted;
|
||||||
entry_string.append(10 - entry.source_formatted.size(), ' ');
|
entry_string.append(10 - entry.source_formatted.size(), ' ');
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
namespace ui {
|
namespace ui {
|
||||||
|
|
||||||
// CGA palette
|
// CGA palette
|
||||||
|
// Index into this table should match STR_COLOR_ escape string in ui.hpp
|
||||||
Color term_colors[16] = {
|
Color term_colors[16] = {
|
||||||
Color::black(),
|
Color::black(),
|
||||||
Color::dark_blue(),
|
Color::dark_blue(),
|
||||||
|
@ -26,6 +26,25 @@
|
|||||||
|
|
||||||
namespace ui {
|
namespace ui {
|
||||||
|
|
||||||
|
// Escape sequences for colored text; second character is index into term_colors[]
|
||||||
|
#define STR_COLOR_BLACK "\x1B\x00"
|
||||||
|
#define STR_COLOR_DARK_BLUE "\x1B\x01"
|
||||||
|
#define STR_COLOR_DARK_GREEN "\x1B\x02"
|
||||||
|
#define STR_COLOR_DARK_CYAN "\x1B\x03"
|
||||||
|
#define STR_COLOR_DARK_RED "\x1B\x04"
|
||||||
|
#define STR_COLOR_DARK_MAGENTA "\x1B\x05"
|
||||||
|
#define STR_COLOR_DARK_YELLOW "\x1B\x06"
|
||||||
|
#define STR_COLOR_LIGHT_GREY "\x1B\x07"
|
||||||
|
#define STR_COLOR_DARK_GREY "\x1B\x08"
|
||||||
|
#define STR_COLOR_BLUE "\x1B\x09"
|
||||||
|
#define STR_COLOR_GREEN "\x1B\x0A"
|
||||||
|
#define STR_COLOR_CYAN "\x1B\x0B"
|
||||||
|
#define STR_COLOR_RED "\x1B\x0C"
|
||||||
|
#define STR_COLOR_MAGENTA "\x1B\x0D"
|
||||||
|
#define STR_COLOR_YELLOW "\x1B\x0E"
|
||||||
|
#define STR_COLOR_WHITE "\x1B\x0F"
|
||||||
|
#define STR_COLOR_FOREGROUND "\x1B\x10"
|
||||||
|
|
||||||
#define DEG_TO_RAD(d) (d * (2 * pi) / 360.0)
|
#define DEG_TO_RAD(d) (d * (2 * pi) / 360.0)
|
||||||
|
|
||||||
using Coord = int16_t;
|
using Coord = int16_t;
|
||||||
|
@ -57,8 +57,8 @@ int Painter::draw_string(
|
|||||||
|
|
||||||
for (auto c : text) {
|
for (auto c : text) {
|
||||||
if (escape) {
|
if (escape) {
|
||||||
if (c <= 15)
|
if (c < std::size(term_colors))
|
||||||
pen = term_colors[c & 15];
|
pen = term_colors[(uint8_t)c];
|
||||||
else
|
else
|
||||||
pen = foreground;
|
pen = foreground;
|
||||||
escape = false;
|
escape = false;
|
||||||
|
@ -617,7 +617,7 @@ void Console::write(std::string message) {
|
|||||||
|
|
||||||
for (const auto c : message) {
|
for (const auto c : message) {
|
||||||
if (escape) {
|
if (escape) {
|
||||||
if (c <= 15)
|
if (c < std::size(term_colors))
|
||||||
pen_color = term_colors[(uint8_t)c];
|
pen_color = term_colors[(uint8_t)c];
|
||||||
else
|
else
|
||||||
pen_color = s.foreground;
|
pen_color = s.foreground;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user