From 37123a43e8ebab16b82de27fe755a31772272201 Mon Sep 17 00:00:00 2001 From: Jasper Date: Mon, 14 Mar 2022 14:30:33 +0100 Subject: [PATCH] Alternate color of testing view rows --- lib/FT18_STW_DISPLAY/FT18_STW_DISPLAY.cpp | 57 ++++++++++++++++------- lib/FT18_STW_DISPLAY/FT18_STW_DISPLAY.h | 4 ++ 2 files changed, 45 insertions(+), 16 deletions(-) diff --git a/lib/FT18_STW_DISPLAY/FT18_STW_DISPLAY.cpp b/lib/FT18_STW_DISPLAY/FT18_STW_DISPLAY.cpp index f862cf8..9d6f723 100644 --- a/lib/FT18_STW_DISPLAY/FT18_STW_DISPLAY.cpp +++ b/lib/FT18_STW_DISPLAY/FT18_STW_DISPLAY.cpp @@ -4,6 +4,15 @@ #include "FT18_STW_INIT.h" #include "FT_2018_STW_CAN.h" +String pad_left(String orig, int len, char pad_char) { + String result = {orig}; + for (int i = orig.length(); i < len; i++) { + result = pad_char + result; + } + + return result; +} + EDIPTFT tft(true, false); String bezeichnungen[] = {"T_mot", "T_oil", "P_oil", "% fa", "U_batt", "P_wat", "T_air", "P_b_front", @@ -289,6 +298,8 @@ void alarm(String textstr) { } void redraw_view_driver() { + tft.setTextColor(EA_WHITE, EA_TRANSPARENT); + // Boxes tft.drawLine(0, 110, 320, 110); tft.drawLine(120, 0, 120, 110); @@ -343,11 +354,14 @@ void redraw_view_testing() { tft.setTextFont(EA_FONT7X12); tft.setTextSize(2, 2); int start = 10 * testing_page; - for (int i = start; i <= min(VAL_LAST, start + 9); i++) { - String text = get_label((Value)i) + ":"; - int y = (i % 10) * 24; - tft.clearRect(220, y, 320, y + 23); - tft.drawText(10, y, 'L', text.c_str()); + + tft.setTextColor(EA_WHITE, EA_BLACK); + for (int i = start; i <= min(VAL_LAST, start + 9); i += 2) { + redraw_label_testing(i, EA_BLACK); + } + tft.setTextColor(EA_WHITE, EA_DARKGREY); + for (int i = start + 1; i <= min(VAL_LAST, start + 9); i += 2) { + redraw_label_testing(i, EA_DARKGREY); } update_view_testing(); @@ -375,12 +389,28 @@ void update_view_testing() { tft.setTextSize(2, 2); int start = 10 * testing_page; - for (int i = start; i <= min(VAL_LAST, start + 9); i++) { - String text = get_value((Value)i); - int y = (i % 10) * 24; - tft.clearRect(220, y, 310, y + 23); - tft.drawText(310, y, 'R', text.c_str()); + + tft.setTextColor(EA_WHITE, EA_BLACK); + for (int i = start; i <= min(VAL_LAST, start + 9); i += 2) { + update_value_testing(i); } + tft.setTextColor(EA_WHITE, EA_DARKGREY); + for (int i = start + 1; i <= min(VAL_LAST, start + 9); i += 2) { + update_value_testing(i); + } +} + +void redraw_label_testing(int i, uint8_t color) { + String text = get_label((Value)i) + ":"; + int y = (i % 10) * 24; + tft.drawRectf(0, y, 320, y + 23, color); + tft.drawText(10, y, 'L', text.c_str()); +} + +void update_value_testing(int i) { + String text = pad_left(get_value((Value)i), 5); + int y = (i % 10) * 24; + tft.drawText(310, y, 'R', text.c_str()); } DataBox::DataBox(int x1, int y1, int x2, int y2, int text_x, int text_y, @@ -443,12 +473,7 @@ void TireTempBox::update_value(int val_new) { } else { color = TT_COL3; } - String val_str = String(val_new); - if (val_str.length() == 1) { - val_str = " " + val_str; - } else if (val_str.length() == 2) { - val_str = " " + val_str; - } + String val_str = pad_left(String(val_new), 3); DataBox::update_value(val_str); } } diff --git a/lib/FT18_STW_DISPLAY/FT18_STW_DISPLAY.h b/lib/FT18_STW_DISPLAY/FT18_STW_DISPLAY.h index eefc34d..6651d45 100644 --- a/lib/FT18_STW_DISPLAY/FT18_STW_DISPLAY.h +++ b/lib/FT18_STW_DISPLAY/FT18_STW_DISPLAY.h @@ -21,6 +21,8 @@ #define TOIL_ALARM_TIME 10000 // ms #define ENC_DISPLAY_TIME 1000 // ms +String pad_left(String orig, int len, char pad_char = ' '); + enum DisplayView { VIEW_DRIVER, VIEW_TESTING, VIEW_LAST = VIEW_TESTING }; enum Value { @@ -64,6 +66,8 @@ void redraw_view_driver(); void update_view_driver(); void redraw_view_testing(); void update_view_testing(); +void redraw_label_testing(int i, uint8_t bg_color); +void update_value_testing(int i); class DataBox { public: