1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
// escape.h - ESC escape code macros and functions
#ifndef ESCAPE_H
#define ESCAPE_H
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
#define CSI "\x1B["
#define ESC_CURSOR_UP( n ) CSI #n "A"
void esc_cursor_up( uint32_t n );
#define ESC_CURSOR_DOWN( n ) CSI #n "B"
void esc_cursor_down( uint32_t n );
#define ESC_CURSOR_LEFT( n ) CSI #n "C"
void esc_cursor_left( uint32_t n );
#define ESC_CURSOR_RIGHT( n ) CSI #n "D"
void esc_cursor_right( uint32_t n );
#define ESC_CURSOR_LINE_NEXT( n ) CSI #n "E"
void esc_cursor_line_next( uint32_t n );
#define ESC_CURSOR_POSITION( x, y ) CSI #y ";" #x "H"
void esc_cursor_position( uint32_t x, uint32_t y );
#define ESC_CLEAR_SCREEN CSI "2J"
void esc_clear_screen( void );
#define ESC_CLEAR_SCREEN_START CSI "1J"
void esc_clear_screen_start( void );
#define ESC_CLEAR_SCREEN_END CSI "0J"
void esc_clear_screen_end( void );
#define ESC_CLEAR_LINE CSI "2K"
void esc_clear_line( void );
#define ESC_CLEAR_LINE_START CSI "1L"
void esc_clear_line_start( void );
#define ESC_CLEAR_LINE_END CSI "0L"
void esc_clear_line_end( void );
#define ESC_SCROLL_UP( n ) CSI #n "S"
void esc_scroll_up( uint32_t n );
#define ESC_SCROLL_DOWN( n ) CSI #n "T"
void esc_scroll_down( uint32_t n );
#define ESC_SGR "m"
#define ESC_RESET CSI "0" ESC_SGR
#define ESC_BOLD CSI "1" ESC_SGR
#define ESC_UNDERLINE CSI "4" ESC_SGR
#define ESC_BLINK CSI "5" ESC_SGR
#define ESC_REVERSE CSI "7" ESC_SGR
#define ESC_CONCEAL CSI "8" ESC_SGR
#define ESC_REVEAL CSI "28" ESC_SGR
#define ESC_STRIKETHROUGH CSI "9" ESC_SGR
#define ESC_OVERLINE CSI "53" ESC_SGR
#define ESC_COLOR_FG_RGB( r, g, b ) CSI "38;2;" #r ";" #g ";" #b ESC_SGR
void esc_color_fg_rgb( uint32_t r, uint32_t g, uint32_t b );
#define ESC_COLOR_BG_RGB( r, g, b ) CSI "48;2;" #r ";" #g ";" #b ESC_SGR
void esc_color_bg_rgb( uint32_t r, uint32_t g, uint32_t b );
#define ESC_COLOR_FG_256( n ) CSI "38;5;" #n ESC_SGR
void esc_color_fg_256( uint32_t r, uint32_t g, uint32_t b );
#define ESC_COLOR_BG_256( n ) CSI "48;5;" #n ESC_SGR
void esc_color_bg_256( uint32_t r, uint32_t g, uint32_t b );
#define ESC_COLOR_FG( n ) CSI "3" #n ESC_SGR
#define ESC_COLOR_BG( n ) CSI "4" #n ESC_SGR
#define ESC_COLOR_FG_BRIGHT( n ) CSI "9" #n ESC_SGR
#define ESC_COLOR_BG_BRIGHT( n ) CSI "10" #n ESC_SGR
#ifdef __cplusplus
}
#endif
#endif // ESCAPE_H
#ifdef ESCAPE_IMPLEMENTATION
#include <stdio.h>
void esc_cursor_up( uint32_t n ) { fprintf( stdout, CSI "%dA", n ); }
void esc_cursor_down( uint32_t n ) { fprintf( stdout, CSI "%dB", n ); }
void esc_cursor_left( uint32_t n ) { fprintf( stdout, CSI "%dC", n ); }
void esc_cursor_right( uint32_t n ) { fprintf( stdout, CSI "%dD", n ); }
void esc_cursor_line_next( uint32_t n ) { fprintf( stdout, CSI "%dE", n ); }
void esc_cursor_position( uint32_t x, uint32_t y ) { fprintf( stdout, CSI "%d;%dH", y, x ); }
void esc_clear_screen( void ) { fputs( CSI "2J", stdout ); }
void esc_clear_screen_start( void ) { fputs( CSI "1J", stdout ); }
void esc_clear_screen_end( void ) { fputs( CSI "0J", stdout ); }
void esc_clear_line( void ) { fputs( CSI "2L", stdout ); }
void esc_clear_line_start( void ) { fputs( CSI "1L", stdout ); }
void esc_clear_line_end( void ) { fputs( CSI "0L", stdout ); }
void esc_scroll_up( uint32_t n ) { fprintf( stdout, "%dS", n ); }
void esc_scroll_down( uint32_t n ) { fprintf( stdout, "%dT", n ); }
void esc_color_fg_rgb( uint32_t r, uint32_t g, uint32_t b ) { fprintf( stdout, CSI "38;2;%d;%d;%d" ESC_SGR, r, g, b ); }
void esc_color_bg_rgb( uint32_t r, uint32_t g, uint32_t b ) { fprintf( stdout, CSI "48;2;%d;%d;%d" ESC_SGR, r, g, b ); }
void esc_color_fg_256( uint32_t r, uint32_t g, uint32_t b ) { fprintf( stdout, CSI "38;5;%d;%d;%d" ESC_SGR, r, g, b ); }
void esc_color_bg_256( uint32_t r, uint32_t g, uint32_t b ) { fprintf( stdout, CSI "48;5;%d;%d;%d" ESC_SGR, r, g, b ); }
#endif // ESCAPE_IMPLEMENTATION
|