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 "platform.h"
#include "str8.h"
#ifdef WAPP_PLATFORM_POSIX
#include "terminal_colours.h"
#include <stdio.h>
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

View File

@ -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);
}

View File

@ -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

View File

@ -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) {