Recreate base64 project
This commit is contained in:
		
							
								
								
									
										36
									
								
								wapp/core/os/shell/termcolour/posix/termcolour_posix.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								wapp/core/os/shell/termcolour/posix/termcolour_posix.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,36 @@
 | 
			
		||||
// vim:fileencoding=utf-8:foldmethod=marker
 | 
			
		||||
 | 
			
		||||
#include "../../../../../common/aliases/aliases.h"
 | 
			
		||||
#include "../../../../../common/platform/platform.h"
 | 
			
		||||
#include "../../../../../primitives/strings/str8/str8.h"
 | 
			
		||||
 | 
			
		||||
#ifdef WAPP_PLATFORM_POSIX
 | 
			
		||||
 | 
			
		||||
#include "../terminal_colours.h"
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
internal Str8RO colours[COUNT_TERM_COLOUR] = {
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BLACK]      = wapp_str8_lit_ro_initialiser_list("\033[30m"),
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_RED]        = wapp_str8_lit_ro_initialiser_list("\033[31m"),
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_GREEN]      = wapp_str8_lit_ro_initialiser_list("\033[32m"),
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BLUE]       = wapp_str8_lit_ro_initialiser_list("\033[34m"),
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_CYAN]       = wapp_str8_lit_ro_initialiser_list("\033[36m"),
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_MAGENTA]    = wapp_str8_lit_ro_initialiser_list("\033[35m"),
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_YELLOW]     = wapp_str8_lit_ro_initialiser_list("\033[33m"),
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_WHITE]      = wapp_str8_lit_ro_initialiser_list("\033[37m"),
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BR_BLACK]   = wapp_str8_lit_ro_initialiser_list("\033[90m"),
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BR_RED]     = wapp_str8_lit_ro_initialiser_list("\033[91m"),
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BR_GREEN]   = wapp_str8_lit_ro_initialiser_list("\033[92m"),
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BR_BLUE]    = wapp_str8_lit_ro_initialiser_list("\033[94m"),
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BR_CYAN]    = wapp_str8_lit_ro_initialiser_list("\033[96m"),
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BR_MAGENTA] = wapp_str8_lit_ro_initialiser_list("\033[95m"),
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BR_YELLOW]  = wapp_str8_lit_ro_initialiser_list("\033[93m"),
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BR_WHITE]   = wapp_str8_lit_ro_initialiser_list("\033[97m"),
 | 
			
		||||
    [WAPP_TERM_COLOUR_CLEAR]         = wapp_str8_lit_ro_initialiser_list("\033[0m"),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
							
								
								
									
										18
									
								
								wapp/core/os/shell/termcolour/termcolour.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								wapp/core/os/shell/termcolour/termcolour.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
// vim:fileencoding=utf-8:foldmethod=marker
 | 
			
		||||
 | 
			
		||||
#include "termcolour.h"
 | 
			
		||||
#include "terminal_colours.h"
 | 
			
		||||
#include "../../../../primitives/strings/str8/str8.h"
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  print_coloured_text(text, colour);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void wapp_shell_termcolour_clear_colour(void) {
 | 
			
		||||
  Str8RO empty = wapp_str8_lit_ro("");
 | 
			
		||||
  print_coloured_text(&empty, WAPP_TERM_COLOUR_CLEAR);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										24
									
								
								wapp/core/os/shell/termcolour/termcolour.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								wapp/core/os/shell/termcolour/termcolour.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
// vim:fileencoding=utf-8:foldmethod=marker
 | 
			
		||||
 | 
			
		||||
#ifndef TERM_COLOUR_H
 | 
			
		||||
#define TERM_COLOUR_H
 | 
			
		||||
 | 
			
		||||
#include "terminal_colours.h"
 | 
			
		||||
#include "../../../../common/aliases/aliases.h"
 | 
			
		||||
#include "../../../../common/platform/platform.h"
 | 
			
		||||
#include "../../../../primitives/strings/str8/str8.h"
 | 
			
		||||
 | 
			
		||||
#ifdef WAPP_PLATFORM_CPP
 | 
			
		||||
BEGIN_C_LINKAGE
 | 
			
		||||
#endif // !WAPP_PLATFORM_CPP
 | 
			
		||||
 | 
			
		||||
void wapp_shell_termcolour_print_text(Str8RO *text, TerminalColour colour);
 | 
			
		||||
void wapp_shell_termcolour_clear_colour(void);
 | 
			
		||||
 | 
			
		||||
external void print_coloured_text(Str8RO *text, TerminalColour colour);
 | 
			
		||||
 | 
			
		||||
#ifdef WAPP_PLATFORM_CPP
 | 
			
		||||
END_C_LINKAGE
 | 
			
		||||
#endif // !WAPP_PLATFORM_CPP
 | 
			
		||||
 | 
			
		||||
#endif // !TERM_COLOUR_H
 | 
			
		||||
							
								
								
									
										39
									
								
								wapp/core/os/shell/termcolour/terminal_colours.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								wapp/core/os/shell/termcolour/terminal_colours.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
// vim:fileencoding=utf-8:foldmethod=marker
 | 
			
		||||
 | 
			
		||||
#ifndef TERMINAL_COLOURS_H
 | 
			
		||||
#define TERMINAL_COLOURS_H
 | 
			
		||||
 | 
			
		||||
#include "../../../../common/aliases/aliases.h"
 | 
			
		||||
#include "../../../../common/platform/platform.h"
 | 
			
		||||
 | 
			
		||||
#ifdef WAPP_PLATFORM_CPP
 | 
			
		||||
BEGIN_C_LINKAGE
 | 
			
		||||
#endif // !WAPP_PLATFORM_CPP
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
  WAPP_TERM_COLOUR_FG_BLACK,
 | 
			
		||||
  WAPP_TERM_COLOUR_FG_RED,
 | 
			
		||||
  WAPP_TERM_COLOUR_FG_GREEN,
 | 
			
		||||
  WAPP_TERM_COLOUR_FG_BLUE,
 | 
			
		||||
  WAPP_TERM_COLOUR_FG_CYAN,
 | 
			
		||||
  WAPP_TERM_COLOUR_FG_MAGENTA,
 | 
			
		||||
  WAPP_TERM_COLOUR_FG_YELLOW,
 | 
			
		||||
  WAPP_TERM_COLOUR_FG_WHITE,
 | 
			
		||||
  WAPP_TERM_COLOUR_FG_BR_BLACK,
 | 
			
		||||
  WAPP_TERM_COLOUR_FG_BR_RED,
 | 
			
		||||
  WAPP_TERM_COLOUR_FG_BR_GREEN,
 | 
			
		||||
  WAPP_TERM_COLOUR_FG_BR_BLUE,
 | 
			
		||||
  WAPP_TERM_COLOUR_FG_BR_CYAN,
 | 
			
		||||
  WAPP_TERM_COLOUR_FG_BR_MAGENTA,
 | 
			
		||||
  WAPP_TERM_COLOUR_FG_BR_YELLOW,
 | 
			
		||||
  WAPP_TERM_COLOUR_FG_BR_WHITE,
 | 
			
		||||
  WAPP_TERM_COLOUR_CLEAR,
 | 
			
		||||
 | 
			
		||||
  COUNT_TERM_COLOUR,
 | 
			
		||||
} TerminalColour;
 | 
			
		||||
 | 
			
		||||
#ifdef WAPP_PLATFORM_CPP
 | 
			
		||||
END_C_LINKAGE
 | 
			
		||||
#endif // !WAPP_PLATFORM_CPP
 | 
			
		||||
 | 
			
		||||
#endif // !TERMINAL_COLOURS_H
 | 
			
		||||
							
								
								
									
										73
									
								
								wapp/core/os/shell/termcolour/win/termcolour_win.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								wapp/core/os/shell/termcolour/win/termcolour_win.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,73 @@
 | 
			
		||||
// vim:fileencoding=utf-8:foldmethod=marker
 | 
			
		||||
 | 
			
		||||
#include "../../../../../common/aliases/aliases.h"
 | 
			
		||||
#include "../../../../../common/platform/platform.h"
 | 
			
		||||
#include "../../../../../primitives/strings/str8/str8.h"
 | 
			
		||||
 | 
			
		||||
#ifdef WAPP_PLATFORM_WINDOWS
 | 
			
		||||
 | 
			
		||||
#include "../terminal_colours.h"
 | 
			
		||||
#include "../../../../../common/misc/misc_utils.h"
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
#define WIN32_LEAN_AND_MEAN
 | 
			
		||||
#include <Windows.h>
 | 
			
		||||
 | 
			
		||||
typedef struct termcolour_data TermcolourData;
 | 
			
		||||
struct termcolour_data {
 | 
			
		||||
  HANDLE handle;
 | 
			
		||||
  WORD   default_colour;
 | 
			
		||||
  WORD   current_colour;
 | 
			
		||||
 | 
			
		||||
  wapp_misc_utils_padding_size(sizeof(HANDLE) + sizeof(WORD) + sizeof(WORD));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
internal void init_data(TermcolourData *data);
 | 
			
		||||
 | 
			
		||||
internal WORD colours[COUNT_TERM_COLOUR] = {
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BLACK]      = 0,
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_RED]        = FOREGROUND_RED,
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_GREEN]      = FOREGROUND_GREEN,
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BLUE]       = FOREGROUND_BLUE,
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_CYAN]       = FOREGROUND_GREEN | FOREGROUND_BLUE,
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_MAGENTA]    = FOREGROUND_RED | FOREGROUND_BLUE,
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_YELLOW]     = FOREGROUND_RED | FOREGROUND_GREEN,
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_WHITE]      = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE,
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BR_BLACK]   = FOREGROUND_INTENSITY,
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BR_RED]     = FOREGROUND_RED | FOREGROUND_INTENSITY,
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BR_GREEN]   = FOREGROUND_GREEN | FOREGROUND_INTENSITY,
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BR_BLUE]    = FOREGROUND_BLUE | FOREGROUND_INTENSITY,
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BR_CYAN]    = FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY,
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BR_MAGENTA] = FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY,
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BR_YELLOW]  = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY,
 | 
			
		||||
    [WAPP_TERM_COLOUR_FG_BR_WHITE]   = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void print_coloured_text(Str8RO *text, TerminalColour colour) {
 | 
			
		||||
  persistent TermcolourData data = {0};
 | 
			
		||||
  if (data.handle == 0) {
 | 
			
		||||
    init_data(&data);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (colour == WAPP_TERM_COLOUR_CLEAR) {
 | 
			
		||||
    data.current_colour = data.default_colour;
 | 
			
		||||
  } else {
 | 
			
		||||
    data.current_colour = colours[colour];
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  SetConsoleTextAttribute(data.handle, data.current_colour);
 | 
			
		||||
  printf(WAPP_STR8_SPEC, wapp_str8_varg((*text)));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
internal void init_data(TermcolourData *data) {
 | 
			
		||||
  // create handle
 | 
			
		||||
  data->handle = GetStdHandle(STD_OUTPUT_HANDLE);
 | 
			
		||||
 | 
			
		||||
  // get console colour information
 | 
			
		||||
  CONSOLE_SCREEN_BUFFER_INFO csbi;
 | 
			
		||||
  GetConsoleScreenBufferInfo(data->handle, &csbi);
 | 
			
		||||
  data->default_colour = csbi.wAttributes;
 | 
			
		||||
  data->current_colour = data->default_colour;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif // !WAPP_PLATFORM_WINDOWS
 | 
			
		||||
		Reference in New Issue
	
	Block a user