From 180425707bef029602c36b7da18b4f7e3af913e8 Mon Sep 17 00:00:00 2001 From: Abdelrahman Date: Sun, 16 Feb 2025 16:32:52 +0000 Subject: [PATCH] Use Str8 instead of const char * in termcolour functions --- .../shell/termcolour/posix/termcolour_posix.c | 41 ++++++++++--------- src/os/shell/termcolour/termcolour.c | 5 ++- src/os/shell/termcolour/termcolour.h | 5 ++- src/os/shell/termcolour/win/termcolour_win.c | 5 ++- 4 files changed, 30 insertions(+), 26 deletions(-) diff --git a/src/os/shell/termcolour/posix/termcolour_posix.c b/src/os/shell/termcolour/posix/termcolour_posix.c index 51cdf2f..a24d277 100644 --- a/src/os/shell/termcolour/posix/termcolour_posix.c +++ b/src/os/shell/termcolour/posix/termcolour_posix.c @@ -1,33 +1,34 @@ #include "aliases.h" #include "platform.h" +#include "str8.h" #ifdef WAPP_PLATFORM_POSIX #include "terminal_colours.h" #include -internal const char *colours[COUNT_TERM_COLOUR] = { - [WAPP_TERM_COLOUR_FG_BLACK] = "\033[30m", - [WAPP_TERM_COLOUR_FG_RED] = "\033[31m", - [WAPP_TERM_COLOUR_FG_GREEN] = "\033[32m", - [WAPP_TERM_COLOUR_FG_BLUE] = "\033[34m", - [WAPP_TERM_COLOUR_FG_CYAN] = "\033[36m", - [WAPP_TERM_COLOUR_FG_MAGENTA] = "\033[35m", - [WAPP_TERM_COLOUR_FG_YELLOW] = "\033[33m", - [WAPP_TERM_COLOUR_FG_WHITE] = "\033[37m", - [WAPP_TERM_COLOUR_FG_BR_BLACK] = "\033[90m", - [WAPP_TERM_COLOUR_FG_BR_RED] = "\033[91m", - [WAPP_TERM_COLOUR_FG_BR_GREEN] = "\033[92m", - [WAPP_TERM_COLOUR_FG_BR_BLUE] = "\033[94m", - [WAPP_TERM_COLOUR_FG_BR_CYAN] = "\033[96m", - [WAPP_TERM_COLOUR_FG_BR_MAGENTA] = "\033[95m", - [WAPP_TERM_COLOUR_FG_BR_YELLOW] = "\033[93m", - [WAPP_TERM_COLOUR_FG_BR_WHITE] = "\033[97m", - [WAPP_TERM_COLOUR_CLEAR] = "\033[0m", +internal Str8RO colours[COUNT_TERM_COLOUR] = { + [WAPP_TERM_COLOUR_FG_BLACK] = wapp_str8_lit_ro("\033[30m"), + [WAPP_TERM_COLOUR_FG_RED] = wapp_str8_lit_ro("\033[31m"), + [WAPP_TERM_COLOUR_FG_GREEN] = wapp_str8_lit_ro("\033[32m"), + [WAPP_TERM_COLOUR_FG_BLUE] = wapp_str8_lit_ro("\033[34m"), + [WAPP_TERM_COLOUR_FG_CYAN] = wapp_str8_lit_ro("\033[36m"), + [WAPP_TERM_COLOUR_FG_MAGENTA] = wapp_str8_lit_ro("\033[35m"), + [WAPP_TERM_COLOUR_FG_YELLOW] = wapp_str8_lit_ro("\033[33m"), + [WAPP_TERM_COLOUR_FG_WHITE] = wapp_str8_lit_ro("\033[37m"), + [WAPP_TERM_COLOUR_FG_BR_BLACK] = wapp_str8_lit_ro("\033[90m"), + [WAPP_TERM_COLOUR_FG_BR_RED] = wapp_str8_lit_ro("\033[91m"), + [WAPP_TERM_COLOUR_FG_BR_GREEN] = wapp_str8_lit_ro("\033[92m"), + [WAPP_TERM_COLOUR_FG_BR_BLUE] = wapp_str8_lit_ro("\033[94m"), + [WAPP_TERM_COLOUR_FG_BR_CYAN] = wapp_str8_lit_ro("\033[96m"), + [WAPP_TERM_COLOUR_FG_BR_MAGENTA] = wapp_str8_lit_ro("\033[95m"), + [WAPP_TERM_COLOUR_FG_BR_YELLOW] = wapp_str8_lit_ro("\033[93m"), + [WAPP_TERM_COLOUR_FG_BR_WHITE] = wapp_str8_lit_ro("\033[97m"), + [WAPP_TERM_COLOUR_CLEAR] = wapp_str8_lit_ro("\033[0m"), }; -void print_coloured_text(const char *text, TerminalColour colour) { - printf("%s%s", colours[colour], text); +void print_coloured_text(Str8RO *text, TerminalColour colour) { + printf(WAPP_STR8_SPEC WAPP_STR8_SPEC, wapp_str8_varg(colours[colour]), wapp_str8_varg((*text))); } #endif // !WAPP_PLATFORM_POSIX diff --git a/src/os/shell/termcolour/termcolour.c b/src/os/shell/termcolour/termcolour.c index 471e671..353288b 100644 --- a/src/os/shell/termcolour/termcolour.c +++ b/src/os/shell/termcolour/termcolour.c @@ -1,7 +1,7 @@ #include "termcolour.h" #include "terminal_colours.h" -void wapp_shell_termcolour_print_text(const char *text, TerminalColour colour) { +void wapp_shell_termcolour_print_text(Str8RO *text, TerminalColour colour) { if (colour < WAPP_TERM_COLOUR_FG_BLACK || colour > WAPP_TERM_COLOUR_FG_BR_WHITE) { return; } @@ -10,5 +10,6 @@ void wapp_shell_termcolour_print_text(const char *text, TerminalColour colour) { } void wapp_shell_termcolour_clear_colour(void) { - print_coloured_text("", WAPP_TERM_COLOUR_CLEAR); + Str8RO empty = wapp_str8_lit_ro(""); + print_coloured_text(&empty, WAPP_TERM_COLOUR_CLEAR); } diff --git a/src/os/shell/termcolour/termcolour.h b/src/os/shell/termcolour/termcolour.h index 5090f19..fc1531d 100644 --- a/src/os/shell/termcolour/termcolour.h +++ b/src/os/shell/termcolour/termcolour.h @@ -3,15 +3,16 @@ #include "aliases.h" #include "terminal_colours.h" +#include "str8.h" #ifdef __cplusplus BEGIN_C_LINKAGE #endif // __cplusplus -void wapp_shell_termcolour_print_text(const char *text, TerminalColour colour); +void wapp_shell_termcolour_print_text(Str8RO *text, TerminalColour colour); void wapp_shell_termcolour_clear_colour(void); -external void print_coloured_text(const char *text, TerminalColour colour); +external void print_coloured_text(Str8RO *text, TerminalColour colour); #ifdef __cplusplus END_C_LINKAGE diff --git a/src/os/shell/termcolour/win/termcolour_win.c b/src/os/shell/termcolour/win/termcolour_win.c index 893e957..f511c42 100644 --- a/src/os/shell/termcolour/win/termcolour_win.c +++ b/src/os/shell/termcolour/win/termcolour_win.c @@ -1,5 +1,6 @@ #include "aliases.h" #include "platform.h" +#include "str8.h" #ifdef WAPP_PLATFORM_WINDOWS @@ -40,7 +41,7 @@ internal WORD colours[COUNT_TERM_COLOUR] = { [WAPP_TERM_COLOUR_FG_BR_WHITE] = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY, }; -void print_coloured_text(const char *text, TerminalColour colour) { +void print_coloured_text(Str8RO *text, TerminalColour colour) { persistent TermcolourData data = {0}; if (data.handle == 0) { init_data(&data); @@ -53,7 +54,7 @@ void print_coloured_text(const char *text, TerminalColour colour) { } SetConsoleTextAttribute(data.handle, data.current_colour); - printf("%s", text); + printf(WAPP_STR8_SPEC, wapp_str8_varg(text)); } internal void init_data(TermcolourData *data) {