@@ -2744,45 +2744,46 @@ uint16_t TFT::validCharsInString(const char* str, uint16_t* chArr, int8_t* ansiA
2744
2744
while ((uint8_t )str[idx] != 0 ) {
2745
2745
switch ((uint8_t )str[idx]) {
2746
2746
case ' \033 ' : // ANSI sequence
2747
- if (strncmp (str + idx, " \033 [30m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 1 ; break ;} // ANSI_ESC_BLACK
2748
- if (strncmp (str + idx, " \033 [31m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 2 ; break ;} // ANSI_ESC_RED
2749
- if (strncmp (str + idx, " \033 [32m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 3 ; break ;} // ANSI_ESC_GREEN
2750
- if (strncmp (str + idx, " \033 [33m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 4 ; break ;} // ANSI_ESC_YELLOW
2751
- if (strncmp (str + idx, " \033 [34m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 5 ; break ;} // ANSI_ESC_BLUE
2752
- if (strncmp (str + idx, " \033 [35m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 6 ; break ;} // ANSI_ESC_MAGENTA
2753
- if (strncmp (str + idx, " \033 [36m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 7 ; break ;} // ANSI_ESC_CYAN
2754
- if (strncmp (str + idx, " \033 [37m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 8 ; break ;} // ANSI_ESC_WHITE
2755
- if (strncmp (str + idx, " \033 [38;5;130m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 9 ; break ;} // ANSI_ESC_BROWN
2756
- if (strncmp (str + idx, " \033 [38;5;214m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 10 ; break ;} // ANSI_ESC_ORANGE
2757
- if (strncmp (str + idx, " \033 [90m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 11 ; break ;} // ANSI_ESC_GREY
2758
- if (strncmp (str + idx, " \033 [91m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 12 ; break ;} // ANSI_ESC_LIGHTRED
2759
- if (strncmp (str + idx, " \033 [92m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 13 ; break ;} // ANSI_ESC_LIGHTGREEN
2760
- if (strncmp (str + idx, " \033 [93m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 14 ; break ;} // ANSI_ESC_LIGHTYELLOW
2761
- if (strncmp (str + idx, " \033 [94m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 15 ; break ;} // ANSI_ESC_LIGHTBLUE
2762
- if (strncmp (str + idx, " \033 [95m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 16 ; break ;} // ANSI_ESC_LIGHTMAGENTA
2763
- if (strncmp (str + idx, " \033 [96m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 17 ; break ;} // ANSI_ESC_LIGHTCYAN
2764
- if (strncmp (str + idx, " \033 [97m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 18 ; break ;} // ANSI_ESC_LIGHTGREY
2765
- if (strncmp (str + idx, " \033 [38;5;52m" , 10 ) == 0 ) {idx += 10 ; ansiArr[chLen] = 19 ; break ;} // ANSI_ESC_DARKRED
2766
- if (strncmp (str + idx, " \033 [38;5;22m" , 10 ) == 0 ) {idx += 10 ; ansiArr[chLen] = 20 ; break ;} // ANSI_ESC_DARKGREEN
2767
- if (strncmp (str + idx, " \033 [38;5;136m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 21 ; break ;} // ANSI_ESC_DARKYELLOW
2768
- if (strncmp (str + idx, " \033 [38;5;17m" , 10 ) == 0 ) {idx += 10 ; ansiArr[chLen] = 22 ; break ;} // ANSI_ESC_DARKBLUE
2769
- if (strncmp (str + idx, " \033 [38;5;53m" , 10 ) == 0 ) {idx += 10 ; ansiArr[chLen] = 23 ; break ;} // ANSI_ESC_DARKMAGENTA
2770
- if (strncmp (str + idx, " \033 [38;5;23m" , 10 ) == 0 ) {idx += 10 ; ansiArr[chLen] = 24 ; break ;} // ANSI_ESC_DARKCYAN
2771
- if (strncmp (str + idx, " \033 [38;5;240m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 25 ; break ;} // ANSI_ESC_DARKGREY
2772
- if (strncmp (str + idx, " \033 [38;5;166m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 26 ; break ;} // ANSI_ESC_DARKORANGE
2773
- if (strncmp (str + idx, " \033 [38;5;215m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 27 ; break ;} // ANSI_ESC_LIGHTORANGE
2774
- if (strncmp (str + idx, " \033 [38;5;129m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 28 ; break ;} // ANSI_ESC_PURPLE
2775
- if (strncmp (str + idx, " \033 [38;5;213m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 29 ; break ;} // ANSI_ESC_PINK
2776
- if (strncmp (str + idx, " \033 [38;5;190m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 30 ; break ;} // ANSI_ESC_LIME
2777
- if (strncmp (str + idx, " \033 [38;5;25m" , 10 ) == 0 ) {idx += 10 ; ansiArr[chLen] = 31 ; break ;} // ANSI_ESC_NAVY
2778
- if (strncmp (str + idx, " \033 [38;5;51m" , 10 ) == 0 ) {idx += 10 ; ansiArr[chLen] = 32 ; break ;} // ANSI_ESC_AQUAMARINE
2779
- if (strncmp (str + idx, " \033 [38;5;189m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 33 ; break ;} // ANSI_ESC_LAVENDER
2780
- if (strncmp (str + idx, " \033 [0m" , 4 ) == 0 ) {idx += 4 ; ansiArr[chLen] = -1 ; break ;} // ANSI_ESC_RESET unused
2781
- if (strncmp (str + idx, " \033 [1m" , 4 ) == 0 ) {idx += 4 ; ansiArr[chLen] = -1 ; break ;} // ANSI_ESC_BOLD unused
2782
- if (strncmp (str + idx, " \033 [2m" , 4 ) == 0 ) {idx += 4 ; ansiArr[chLen] = -1 ; break ;} // ANSI_ESC_FAINT unused
2783
- if (strncmp (str + idx, " \033 [3m" , 4 ) == 0 ) {idx += 4 ; ansiArr[chLen] = -1 ; break ;} // ANSI_ESC_ITALIC unused
2784
- if (strncmp (str + idx, " \033 [4m" , 4 ) == 0 ) {idx += 4 ; ansiArr[chLen] = -1 ; break ;} // ANSI_ESC_UNDERLINE unused
2785
- log_w (" unknown ANSI ESC SEQUENCE" ); {idx += 4 ; ansiArr[chLen] = -1 ; break ;} // unknown
2747
+ if (strncmp (str + idx, " \033 [30m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 1 ; break ;} // ANSI_ESC_BLACK
2748
+ if (strncmp (str + idx, " \033 [31m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 2 ; break ;} // ANSI_ESC_RED
2749
+ if (strncmp (str + idx, " \033 [32m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 3 ; break ;} // ANSI_ESC_GREEN
2750
+ if (strncmp (str + idx, " \033 [33m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 4 ; break ;} // ANSI_ESC_YELLOW
2751
+ if (strncmp (str + idx, " \033 [34m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 5 ; break ;} // ANSI_ESC_BLUE
2752
+ if (strncmp (str + idx, " \033 [35m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 6 ; break ;} // ANSI_ESC_MAGENTA
2753
+ if (strncmp (str + idx, " \033 [36m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 7 ; break ;} // ANSI_ESC_CYAN
2754
+ if (strncmp (str + idx, " \033 [37m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 8 ; break ;} // ANSI_ESC_WHITE
2755
+ if (strncmp (str + idx, " \033 [38;5;130m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 9 ; break ;} // ANSI_ESC_BROWN
2756
+ if (strncmp (str + idx, " \033 [38;5;214m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 10 ; break ;} // ANSI_ESC_ORANGE
2757
+ if (strncmp (str + idx, " \033 [90m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 11 ; break ;} // ANSI_ESC_GREY
2758
+ if (strncmp (str + idx, " \033 [91m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 12 ; break ;} // ANSI_ESC_LIGHTRED
2759
+ if (strncmp (str + idx, " \033 [92m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 13 ; break ;} // ANSI_ESC_LIGHTGREEN
2760
+ if (strncmp (str + idx, " \033 [93m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 14 ; break ;} // ANSI_ESC_LIGHTYELLOW
2761
+ if (strncmp (str + idx, " \033 [94m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 15 ; break ;} // ANSI_ESC_LIGHTBLUE
2762
+ if (strncmp (str + idx, " \033 [95m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 16 ; break ;} // ANSI_ESC_LIGHTMAGENTA
2763
+ if (strncmp (str + idx, " \033 [96m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 17 ; break ;} // ANSI_ESC_LIGHTCYAN
2764
+ if (strncmp (str + idx, " \033 [97m" , 5 ) == 0 ) {idx += 5 ; ansiArr[chLen] = 18 ; break ;} // ANSI_ESC_LIGHTGREY
2765
+ if (strncmp (str + idx, " \033 [38;5;52m" , 10 ) == 0 ) {idx += 10 ; ansiArr[chLen] = 19 ; break ;} // ANSI_ESC_DARKRED
2766
+ if (strncmp (str + idx, " \033 [38;5;22m" , 10 ) == 0 ) {idx += 10 ; ansiArr[chLen] = 20 ; break ;} // ANSI_ESC_DARKGREEN
2767
+ if (strncmp (str + idx, " \033 [38;5;136m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 21 ; break ;} // ANSI_ESC_DARKYELLOW
2768
+ if (strncmp (str + idx, " \033 [38;5;17m" , 10 ) == 0 ) {idx += 10 ; ansiArr[chLen] = 22 ; break ;} // ANSI_ESC_DARKBLUE
2769
+ if (strncmp (str + idx, " \033 [38;5;53m" , 10 ) == 0 ) {idx += 10 ; ansiArr[chLen] = 23 ; break ;} // ANSI_ESC_DARKMAGENTA
2770
+ if (strncmp (str + idx, " \033 [38;5;23m" , 10 ) == 0 ) {idx += 10 ; ansiArr[chLen] = 24 ; break ;} // ANSI_ESC_DARKCYAN
2771
+ if (strncmp (str + idx, " \033 [38;5;240m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 25 ; break ;} // ANSI_ESC_DARKGREY
2772
+ if (strncmp (str + idx, " \033 [38;5;166m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 26 ; break ;} // ANSI_ESC_DARKORANGE
2773
+ if (strncmp (str + idx, " \033 [38;5;215m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 27 ; break ;} // ANSI_ESC_LIGHTORANGE
2774
+ if (strncmp (str + idx, " \033 [38;5;129m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 28 ; break ;} // ANSI_ESC_PURPLE
2775
+ if (strncmp (str + idx, " \033 [38;5;213m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 29 ; break ;} // ANSI_ESC_PINK
2776
+ if (strncmp (str + idx, " \033 [38;5;190m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 30 ; break ;} // ANSI_ESC_LIME
2777
+ if (strncmp (str + idx, " \033 [38;5;25m" , 10 ) == 0 ) {idx += 10 ; ansiArr[chLen] = 31 ; break ;} // ANSI_ESC_NAVY
2778
+ if (strncmp (str + idx, " \033 [38;5;51m" , 10 ) == 0 ) {idx += 10 ; ansiArr[chLen] = 32 ; break ;} // ANSI_ESC_AQUAMARINE
2779
+ if (strncmp (str + idx, " \033 [38;5;189m" , 11 ) == 0 ) {idx += 11 ; ansiArr[chLen] = 33 ; break ;} // ANSI_ESC_LAVENDER
2780
+ if (strncmp (str + idx, " \033 [38;2;210;180;140m" , 19 ) == 0 ) {idx += 19 ; ansiArr[chLen] = 34 ; break ;} // ANSI_ESC_LIGHTBROWN
2781
+ if (strncmp (str + idx, " \033 [0m" , 4 ) == 0 ) {idx += 4 ; ansiArr[chLen] = -1 ; break ;} // ANSI_ESC_RESET unused
2782
+ if (strncmp (str + idx, " \033 [1m" , 4 ) == 0 ) {idx += 4 ; ansiArr[chLen] = -1 ; break ;} // ANSI_ESC_BOLD unused
2783
+ if (strncmp (str + idx, " \033 [2m" , 4 ) == 0 ) {idx += 4 ; ansiArr[chLen] = -1 ; break ;} // ANSI_ESC_FAINT unused
2784
+ if (strncmp (str + idx, " \033 [3m" , 4 ) == 0 ) {idx += 4 ; ansiArr[chLen] = -1 ; break ;} // ANSI_ESC_ITALIC unused
2785
+ if (strncmp (str + idx, " \033 [4m" , 4 ) == 0 ) {idx += 4 ; ansiArr[chLen] = -1 ; break ;} // ANSI_ESC_UNDERLINE unused
2786
+ log_w (" unknown ANSI ESC SEQUENCE" ); {idx += 4 ; ansiArr[chLen] = -1 ; break ;} // unknown
2786
2787
break ;
2787
2788
case 0x20 ... 0x7F : // is ASCII
2788
2789
chArr[chLen] = (uint8_t )str[idx]; // codepoint
@@ -2991,6 +2992,7 @@ size_t TFT::writeText(const char* str, uint16_t win_X, uint16_t win_Y, int16_t w
2991
2992
if (ansiArr[idx] == 31 ) setTextColor (TFT_NAVY);
2992
2993
if (ansiArr[idx] == 32 ) setTextColor (TFT_AQUAMARINE);
2993
2994
if (ansiArr[idx] == 33 ) setTextColor (TFT_LAVENDER);
2995
+ if (ansiArr[idx] == 34 ) setTextColor (TFT_LIGHTBROWN);
2994
2996
}
2995
2997
if (cnt == 0 && utfPosArr[idx] == 0x20 ) {
2996
2998
idx++;
0 commit comments