Use Str8 instead of const char * in termcolour functions

This commit is contained in:
Abdelrahman Said 2025-02-16 16:32:52 +00:00
parent 62dcfdaa93
commit 180425707b
4 changed files with 30 additions and 26 deletions

View File

@ -1,33 +1,34 @@
#include "aliases.h" #include "aliases.h"
#include "platform.h" #include "platform.h"
#include "str8.h"
#ifdef WAPP_PLATFORM_POSIX #ifdef WAPP_PLATFORM_POSIX
#include "terminal_colours.h" #include "terminal_colours.h"
#include <stdio.h> #include <stdio.h>
internal const char *colours[COUNT_TERM_COLOUR] = { internal Str8RO colours[COUNT_TERM_COLOUR] = {
[WAPP_TERM_COLOUR_FG_BLACK] = "\033[30m", [WAPP_TERM_COLOUR_FG_BLACK] = wapp_str8_lit_ro("\033[30m"),
[WAPP_TERM_COLOUR_FG_RED] = "\033[31m", [WAPP_TERM_COLOUR_FG_RED] = wapp_str8_lit_ro("\033[31m"),
[WAPP_TERM_COLOUR_FG_GREEN] = "\033[32m", [WAPP_TERM_COLOUR_FG_GREEN] = wapp_str8_lit_ro("\033[32m"),
[WAPP_TERM_COLOUR_FG_BLUE] = "\033[34m", [WAPP_TERM_COLOUR_FG_BLUE] = wapp_str8_lit_ro("\033[34m"),
[WAPP_TERM_COLOUR_FG_CYAN] = "\033[36m", [WAPP_TERM_COLOUR_FG_CYAN] = wapp_str8_lit_ro("\033[36m"),
[WAPP_TERM_COLOUR_FG_MAGENTA] = "\033[35m", [WAPP_TERM_COLOUR_FG_MAGENTA] = wapp_str8_lit_ro("\033[35m"),
[WAPP_TERM_COLOUR_FG_YELLOW] = "\033[33m", [WAPP_TERM_COLOUR_FG_YELLOW] = wapp_str8_lit_ro("\033[33m"),
[WAPP_TERM_COLOUR_FG_WHITE] = "\033[37m", [WAPP_TERM_COLOUR_FG_WHITE] = wapp_str8_lit_ro("\033[37m"),
[WAPP_TERM_COLOUR_FG_BR_BLACK] = "\033[90m", [WAPP_TERM_COLOUR_FG_BR_BLACK] = wapp_str8_lit_ro("\033[90m"),
[WAPP_TERM_COLOUR_FG_BR_RED] = "\033[91m", [WAPP_TERM_COLOUR_FG_BR_RED] = wapp_str8_lit_ro("\033[91m"),
[WAPP_TERM_COLOUR_FG_BR_GREEN] = "\033[92m", [WAPP_TERM_COLOUR_FG_BR_GREEN] = wapp_str8_lit_ro("\033[92m"),
[WAPP_TERM_COLOUR_FG_BR_BLUE] = "\033[94m", [WAPP_TERM_COLOUR_FG_BR_BLUE] = wapp_str8_lit_ro("\033[94m"),
[WAPP_TERM_COLOUR_FG_BR_CYAN] = "\033[96m", [WAPP_TERM_COLOUR_FG_BR_CYAN] = wapp_str8_lit_ro("\033[96m"),
[WAPP_TERM_COLOUR_FG_BR_MAGENTA] = "\033[95m", [WAPP_TERM_COLOUR_FG_BR_MAGENTA] = wapp_str8_lit_ro("\033[95m"),
[WAPP_TERM_COLOUR_FG_BR_YELLOW] = "\033[93m", [WAPP_TERM_COLOUR_FG_BR_YELLOW] = wapp_str8_lit_ro("\033[93m"),
[WAPP_TERM_COLOUR_FG_BR_WHITE] = "\033[97m", [WAPP_TERM_COLOUR_FG_BR_WHITE] = wapp_str8_lit_ro("\033[97m"),
[WAPP_TERM_COLOUR_CLEAR] = "\033[0m", [WAPP_TERM_COLOUR_CLEAR] = wapp_str8_lit_ro("\033[0m"),
}; };
void print_coloured_text(const char *text, TerminalColour colour) { void print_coloured_text(Str8RO *text, TerminalColour colour) {
printf("%s%s", colours[colour], text); printf(WAPP_STR8_SPEC WAPP_STR8_SPEC, wapp_str8_varg(colours[colour]), wapp_str8_varg((*text)));
} }
#endif // !WAPP_PLATFORM_POSIX #endif // !WAPP_PLATFORM_POSIX

View File

@ -1,7 +1,7 @@
#include "termcolour.h" #include "termcolour.h"
#include "terminal_colours.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) { if (colour < WAPP_TERM_COLOUR_FG_BLACK || colour > WAPP_TERM_COLOUR_FG_BR_WHITE) {
return; return;
} }
@ -10,5 +10,6 @@ void wapp_shell_termcolour_print_text(const char *text, TerminalColour colour) {
} }
void wapp_shell_termcolour_clear_colour(void) { 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);
} }

View File

@ -3,15 +3,16 @@
#include "aliases.h" #include "aliases.h"
#include "terminal_colours.h" #include "terminal_colours.h"
#include "str8.h"
#ifdef __cplusplus #ifdef __cplusplus
BEGIN_C_LINKAGE BEGIN_C_LINKAGE
#endif // __cplusplus #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); 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 #ifdef __cplusplus
END_C_LINKAGE END_C_LINKAGE

View File

@ -1,5 +1,6 @@
#include "aliases.h" #include "aliases.h"
#include "platform.h" #include "platform.h"
#include "str8.h"
#ifdef WAPP_PLATFORM_WINDOWS #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, [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}; persistent TermcolourData data = {0};
if (data.handle == 0) { if (data.handle == 0) {
init_data(&data); init_data(&data);
@ -53,7 +54,7 @@ void print_coloured_text(const char *text, TerminalColour colour) {
} }
SetConsoleTextAttribute(data.handle, data.current_colour); SetConsoleTextAttribute(data.handle, data.current_colour);
printf("%s", text); printf(WAPP_STR8_SPEC, wapp_str8_varg(text));
} }
internal void init_data(TermcolourData *data) { internal void init_data(TermcolourData *data) {