292e534f18bf30f0e64e7a4bec4218479fba690c
[people/xl0/gpxe.git] / src / tests / curses_scr.c
1 #include "../include/curses.h"
2 #include <termios.h>
3 #include <stddef.h>
4 #include <stdio.h>
5
6 #define ESC 27
7 #define MODE 3
8
9 unsigned int _COLOUR_PAIRS = 4;
10 unsigned int _COLOURS = 8;
11 unsigned short _COLS = 80;
12 unsigned short _LINES = 25;
13
14 static struct termios original, runtime;
15
16 void _init_screen( struct _curses_screen *scr __unused ) {
17         tcgetattr(fileno(stdin),&original);
18         tcgetattr(fileno(stdin),&runtime);
19         runtime.c_lflag &= ~(ICANON|ECHO);
20         tcsetattr(fileno(stdin),TCSANOW,&runtime);
21         //printf("%c[=%dh",ESC,MODE);
22         LINES = 25; COLS = 80;
23 }
24
25 void _exit_screen( struct _curses_screen *scr __unused ) {
26         tcsetattr(fileno(stdin),TCSANOW,&original);
27         printf("%c[0",ESC);
28         printf("%c[u",ESC);
29 }
30
31 void _movetoyx( struct _curses_screen *scr __unused, unsigned int y, unsigned int x ) {
32         printf( "%c[%d;%dH", ESC, y+1, x+1 );
33 }
34
35 void _putc( struct _curses_screen *scr __unused, chtype c ) {
36         unsigned short pairno;
37         pairno = (unsigned short)(( c & A_COLOUR ) >> CPAIR_SHIFT);
38         
39         // print rendition (colour and attrs)
40         //printf( "%c[%d;%d",ESC, 
41         //      cpairs[pairno][0], cpairs[pairno][1] );
42         // print rendition (character)
43         //printf("char is \"%d\"", c );
44         putchar( c );
45 }
46
47 int _getc( struct _curses_screen *scr __unused ) {
48         return getchar();
49 }
50
51 bool _peek( struct _curses_screen *scr __unused ) {
52         int c;
53         if ( ( c = getchar() ) != EOF ) {
54                 ungetc( c, stdin );
55                 return TRUE;
56         } else { return FALSE; }
57 }
58
59 SCREEN _curscr = {
60         .init = _init_screen,
61         .exit = _exit_screen,
62         .movetoyx = _movetoyx,
63         .putc = _putc,
64         .getc = _getc,
65         .peek = _peek,
66 };