summaryrefslogtreecommitdiffstats
path: root/example/escape.c
blob: c5e71acd67b4d8ba04f79d939ca4a527f116775e (plain)
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
// escape.c - Simple test print code


#include <stdint.h>
#include <tgmath.h>

#define ESCAPE_IMPLEMENTATION
#include "../include/escape.h"

#define TEST_STRING "HELLO"

void hsv_rgb( float h, float s, float v, uint8_t *r, uint8_t *g, uint8_t *b )
{
	float h0 = h * 6.0;

	float k = fmod( 5.0 + h0, 6.0 );
	*r = 255 * ( v - v * s * fmax( 0.0, fmin( k, fmin( 4.0 - k, 1.0 ) ) ) );

	k = fmod( 3.0 + h0, 6.0 );
	*g = 255 * ( v - v * s * fmax( 0.0, fmin( k, fmin( 4.0 - k, 1.0 ) ) ) );

	k = fmod( 1.0 + h0, 6.0 );
	*b = 255 * ( v - v * s * fmax( 0.0, fmin( k, fmin( 4.0 - k, 1.0 ) ) ) );
}


int main( void )
{
	// Clear screen
	fputs( ESC_CLEAR_SCREEN, stdout );

	// Print a rectangle of Xs with positional coordinates
	fputs( ESC_CURSOR_POSITION( 1, 1 ), stdout ); fflush( stdout );
	fputs( ESC_CURSOR_POSITION( 3, 2 ) "X", stdout );	fflush( stdout );
	fputs( ESC_CURSOR_POSITION( 10, 2 ) "X", stdout );  fflush( stdout );
	fputs( ESC_CURSOR_POSITION( 10, 4 ) "X", stdout ); fflush( stdout );
	fputs( ESC_CURSOR_POSITION( 3, 4 ) "X", stdout ); fflush( stdout );
	fputs( "\n", stdout );

	fputs( "\n" ESC_RESET TEST_STRING "\n\n", stdout );
	fputs( ESC_BOLD TEST_STRING ESC_RESET "\n\n", stdout );
	fputs( ESC_OVERLINE TEST_STRING ESC_RESET "\n\n", stdout );
	fputs( ESC_UNDERLINE TEST_STRING ESC_RESET "\n\n", stdout );
	fputs( ESC_STRIKETHROUGH TEST_STRING ESC_RESET "\n\n", stdout );
	fputs( ESC_COLOR_FG_RGB( 0, 128, 128 ) TEST_STRING ESC_RESET "\n\n", stdout );
	fputs( ESC_COLOR_BG_RGB( 128, 0, 128 ) TEST_STRING ESC_RESET "\n\n", stdout );
	fputs( ESC_BLINK TEST_STRING ESC_RESET "\n\n", stdout );
	fputs( ESC_REVERSE TEST_STRING ESC_RESET "\n\n", stdout );
	fputs( ESC_CONCEAL TEST_STRING ESC_REVEAL TEST_STRING ESC_RESET "\n\n", stdout );

	uint8_t r,g,b;

	for( float i = 0; i < 1; i += 0.01 )
	{
		hsv_rgb( i, 1.0, 1.0, &r, &g, &b );

		esc_color_fg_rgb( r, g, b );
		fputs( "█", stdout );
	}

	fputs( "\n", stdout );
}