1*adf37648SKyle Evans /* SPDX-License-Identifier: GPL-2.0 OR MIT */ 2*adf37648SKyle Evans /* 3*adf37648SKyle Evans * Copyright (C) 2015-2020 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. 4*adf37648SKyle Evans */ 5*adf37648SKyle Evans 6*adf37648SKyle Evans #ifndef TERMINAL_H 7*adf37648SKyle Evans #define TERMINAL_H 8*adf37648SKyle Evans 9*adf37648SKyle Evans #define TERMINAL_FG_BLACK "\x1b[30m" 10*adf37648SKyle Evans #define TERMINAL_FG_RED "\x1b[31m" 11*adf37648SKyle Evans #define TERMINAL_FG_GREEN "\x1b[32m" 12*adf37648SKyle Evans #define TERMINAL_FG_YELLOW "\x1b[33m" 13*adf37648SKyle Evans #define TERMINAL_FG_BLUE "\x1b[34m" 14*adf37648SKyle Evans #define TERMINAL_FG_MAGENTA "\x1b[35m" 15*adf37648SKyle Evans #define TERMINAL_FG_CYAN "\x1b[36m" 16*adf37648SKyle Evans #define TERMINAL_FG_WHITE "\x1b[37m" 17*adf37648SKyle Evans #define TERMINAL_FG_DEFAULT "\x1b[39m" 18*adf37648SKyle Evans 19*adf37648SKyle Evans #define TERMINAL_BG_BLACK "\x1b[40m" 20*adf37648SKyle Evans #define TERMINAL_BG_RED "\x1b[41m" 21*adf37648SKyle Evans #define TERMINAL_BG_GREEN "\x1b[42m" 22*adf37648SKyle Evans #define TERMINAL_BG_YELLOW "\x1b[43m" 23*adf37648SKyle Evans #define TERMINAL_BG_BLUE "\x1b[44m" 24*adf37648SKyle Evans #define TERMINAL_BG_MAGENTA "\x1b[45m" 25*adf37648SKyle Evans #define TERMINAL_BG_CYAN "\x1b[46m" 26*adf37648SKyle Evans #define TERMINAL_BG_WHITE "\x1b[47m" 27*adf37648SKyle Evans #define TERMINAL_BG_DEFAULT "\x1b[49m" 28*adf37648SKyle Evans 29*adf37648SKyle Evans #define TERMINAL_BOLD "\x1b[1m" 30*adf37648SKyle Evans #define TERMINAL_NO_BOLD "\x1b[22m" 31*adf37648SKyle Evans #define TERMINAL_UNDERLINE "\x1b[4m" 32*adf37648SKyle Evans #define TERMINAL_NO_UNDERLINE "\x1b[24m" 33*adf37648SKyle Evans 34*adf37648SKyle Evans #define TERMINAL_RESET "\x1b[0m" 35*adf37648SKyle Evans 36*adf37648SKyle Evans #define TERMINAL_SAVE_CURSOR "\x1b[s" 37*adf37648SKyle Evans #define TERMINAL_RESTORE_CURSOR "\x1b[u" 38*adf37648SKyle Evans #define TERMINAL_UP_CURSOR(l) "\x1b[" #l "A" 39*adf37648SKyle Evans #define TERMINAL_DOWN_CURSOR(l) "\x1b[" #l "B" 40*adf37648SKyle Evans #define TERMINAL_RIGHT_CURSOR(c) "\x1b[" #c "C" 41*adf37648SKyle Evans #define TERMINAL_LEFT_CURSOR(c) "\x1b[" #c "D" 42*adf37648SKyle Evans #define TERMINAL_CLEAR_DOWN "\x1b[0J" 43*adf37648SKyle Evans #define TERMINAL_CLEAR_UP "\x1b[1J" 44*adf37648SKyle Evans #define TERMINAL_CLEAR_RIGHT "\x1b[0K" 45*adf37648SKyle Evans #define TERMINAL_CLEAR_LEFT "\x1b[1K" 46*adf37648SKyle Evans #define TERMINAL_CLEAR_LINE "\x1b[2K" 47*adf37648SKyle Evans #define TERMINAL_CLEAR_ALL "\x1b[2J" 48*adf37648SKyle Evans 49*adf37648SKyle Evans void terminal_printf(const char *fmt, ...) __attribute__((format(printf, 1, 2))); 50*adf37648SKyle Evans 51*adf37648SKyle Evans #endif 52