source: libcaca/trunk/caca/caca_conio.h @ 3601

Last change on this file since 3601 was 3601, checked in by Sam Hocevar, 10 years ago

Fix <conio.h> delay(), getch() and kbhit() to avoid busy loops and ensure
frequent screen refreshes.
Implement <conio.h> clreol() (incomplete) and <dos.h> sleep() functions.
Replace some defines with enums in <caca_conio.h>.

  • Property svn:keywords set to Id
File size: 8.2 KB
Line 
1/*
2 *  libcaca       Colour ASCII-Art library
3 *  Copyright (c) 2002-2009 Sam Hocevar <sam@hocevar.net>
4 *                All Rights Reserved
5 *
6 *  $Id: caca_conio.h 3601 2009-08-02 11:09:05Z sam $
7 *
8 *  This library is free software. It comes without any warranty, to
9 *  the extent permitted by applicable law. You can redistribute it
10 *  and/or modify it under the terms of the Do What The Fuck You Want
11 *  To Public License, Version 2, as published by Sam Hocevar. See
12 *  http://sam.zoy.org/wtfpl/COPYING for more details.
13 */
14
15/*
16 *  This header contains a conio.h reimplementation.
17 */
18
19#ifndef __CACA_CONIO_H__
20#define __CACA_CONIO_H__
21
22#include <caca.h>
23
24#if !defined(__KERNEL__)
25#   include <stdio.h>
26#endif
27
28#undef __extern
29#if defined(_DOXYGEN_SKIP_ME)
30#elif defined(_WIN32) && defined(__LIBCACA__)
31#   define __extern extern __declspec(dllexport)
32#else
33#   define __extern extern
34#endif
35
36#ifdef __cplusplus
37extern "C"
38{
39#endif
40
41/* conio.h enums and global variables */
42enum CACA_CONIO_COLORS
43{
44    CACA_CONIO_BLINK = 128,
45    CACA_CONIO_BLACK = 0,
46    CACA_CONIO_BLUE = 1,
47    CACA_CONIO_GREEN = 2,
48    CACA_CONIO_CYAN = 3,
49    CACA_CONIO_RED = 4,
50    CACA_CONIO_MAGENTA = 5,
51    CACA_CONIO_BROWN = 6,
52    CACA_CONIO_LIGHTGRAY = 7,
53    CACA_CONIO_DARKGRAY = 8,
54    CACA_CONIO_LIGHTBLUE = 9,
55    CACA_CONIO_LIGHTGREEN = 10,
56    CACA_CONIO_LIGHTCYAN = 11,
57    CACA_CONIO_LIGHTRED = 12,
58    CACA_CONIO_LIGHTMAGENTA = 13,
59    CACA_CONIO_YELLOW = 14,
60    CACA_CONIO_WHITE = 15,
61};
62__extern int caca_conio_directvideo;
63enum CACA_CONIO_CURSOR
64{
65    CACA_CONIO__NOCURSOR = 0,
66    CACA_CONIO__SOLIDCURSOR = 1,
67    CACA_CONIO__NORMALCURSOR = 2,
68};
69struct caca_conio_text_info
70{
71    unsigned char winleft;        /* left window coordinate */
72    unsigned char wintop;         /* top window coordinate */
73    unsigned char winright;       /* right window coordinate */
74    unsigned char winbottom;      /* bottom window coordinate */
75    unsigned char attribute;      /* text attribute */
76    unsigned char normattr;       /* normal attribute */
77    unsigned char currmode;       /* current video mode:
78                                     BW40, BW80, C40, C80, or C4350 */
79    unsigned char screenheight;   /* text screen's height */
80    unsigned char screenwidth;    /* text screen's width */
81    unsigned char curx;           /* x-coordinate in current window */
82    unsigned char cury;           /* y-coordinate in current window */
83};
84enum CACA_CONIO_MODE
85{
86    CACA_CONIO_LASTMODE = -1,
87    CACA_CONIO_BW40 = 0,
88    CACA_CONIO_C40 = 1,
89    CACA_CONIO_BW80 = 2,
90    CACA_CONIO_C80 = 3,
91    CACA_CONIO_MONO = 7,
92    CACA_CONIO_C4350 = 64,
93};
94__extern int caca_conio__wscroll;
95
96#if !defined _DOXYGEN_SKIP_ME && !defined __LIBCACA__
97#   undef BLINK
98#   define BLINK CACA_CONIO_BLINK
99#   undef BLACK
100#   define BLACK CACA_CONIO_BLACK
101#   undef BLUE
102#   define BLUE CACA_CONIO_BLUE
103#   undef GREEN
104#   define GREEN CACA_CONIO_GREEN
105#   undef CYAN
106#   define CYAN CACA_CONIO_CYAN
107#   undef RED
108#   define RED CACA_CONIO_RED
109#   undef MAGENTA
110#   define MAGENTA CACA_CONIO_MAGENTA
111#   undef BROWN
112#   define BROWN CACA_CONIO_BROWN
113#   undef LIGHTGRAY
114#   define LIGHTGRAY CACA_CONIO_LIGHTGRAY
115#   undef DARKGRAY
116#   define DARKGRAY CACA_CONIO_DARKGRAY
117#   undef LIGHTBLUE
118#   define LIGHTBLUE CACA_CONIO_LIGHTBLUE
119#   undef LIGHTGREEN
120#   define LIGHTGREEN CACA_CONIO_LIGHTGREEN
121#   undef LIGHTCYAN
122#   define LIGHTCYAN CACA_CONIO_LIGHTCYAN
123#   undef LIGHTRED
124#   define LIGHTRED CACA_CONIO_LIGHTRED
125#   undef LIGHTMAGENTA
126#   define LIGHTMAGENTA CACA_CONIO_LIGHTMAGENTA
127#   undef YELLOW
128#   define YELLOW CACA_CONIO_YELLOW
129#   undef WHITE
130#   define WHITE CACA_CONIO_WHITE
131#   undef directvideo
132#   define directvideo caca_conio_directvideo
133#   undef _NOCURSOR
134#   define _NOCURSOR CACA_CONIO__NOCURSOR
135#   undef _SOLIDCURSOR
136#   define _SOLIDCURSOR CACA_CONIO__SOLIDCURSOR
137#   undef _NORMALCURSOR
138#   define _NORMALCURSOR CACA_CONIO__NORMALCURSOR
139#   undef text_info
140#   define text_info caca_conio_text_info
141#   undef LASTMODE
142#   define LASTMODE CACA_CONIO_LASTMODE
143#   undef BW40
144#   define BW40 CACA_CONIO_BW40
145#   undef C40
146#   define C40 CACA_CONIO_C40
147#   undef BW80
148#   define BW80 CACA_CONIO_BW80
149#   undef C80
150#   define C80 CACA_CONIO_C80
151#   undef MONO
152#   define MONO CACA_CONIO_MONO
153#   undef C4350
154#   define C4350 CACA_CONIO_C4350
155#   undef _wscroll
156#   define _wscroll caca_conio__wscroll
157#endif
158
159/* conio.h functions */
160__extern char * caca_conio_cgets(char *str);
161__extern void   caca_conio_clreol(void);
162__extern void   caca_conio_clrscr(void);
163__extern int    caca_conio_cprintf(const char *format, ...);
164__extern int    caca_conio_cputs(const char *str);
165__extern int    caca_conio_cscanf(char *format, ...);
166__extern void   caca_conio_delay(unsigned int);
167__extern void   caca_conio_delline(void);
168__extern int    caca_conio_getch(void);
169__extern int    caca_conio_getche(void);
170__extern char * caca_conio_getpass(const char *prompt);
171__extern int    caca_conio_gettext(int left, int top, int right, int bottom,
172                                   void *destin);
173__extern void   caca_conio_gettextinfo(struct caca_conio_text_info *r);
174__extern void   caca_conio_gotoxy(int x, int y);
175__extern void   caca_conio_highvideo(void);
176__extern void   caca_conio_insline(void);
177__extern int    caca_conio_kbhit(void);
178__extern void   caca_conio_lowvideo(void);
179__extern int    caca_conio_movetext(int left, int top, int right, int bottom,
180                                    int destleft, int desttop);
181__extern void   caca_conio_normvideo(void);
182__extern void   caca_conio_nosound(void);
183__extern int    caca_conio_printf(const char *format, ...);
184__extern int    caca_conio_putch(int ch);
185__extern int    caca_conio_puttext(int left, int top, int right, int bottom,
186                                   void *destin);
187__extern void   caca_conio__setcursortype(int cur_t);
188__extern void   caca_conio_sleep(unsigned int);
189__extern void   caca_conio_sound(unsigned int);
190__extern void   caca_conio_textattr(int newattr);
191__extern void   caca_conio_textbackground(int newcolor);
192__extern void   caca_conio_textcolor(int newcolor);
193__extern void   caca_conio_textmode(int newmode);
194__extern int    caca_conio_ungetch(int ch);
195__extern int    caca_conio_wherex(void);
196__extern int    caca_conio_wherey(void);
197__extern void   caca_conio_window(int left, int top, int right, int bottom);
198
199#if !defined _DOXYGEN_SKIP_ME && !defined __LIBCACA__
200#   undef cgets
201#   define cgets caca_conio_cgets
202#   undef clreol
203#   define clreol caca_conio_clreol
204#   undef clrscr
205#   define clrscr caca_conio_clrscr
206#   undef cprintf
207#   define cprintf caca_conio_cprintf
208#   undef cputs
209#   define cputs caca_conio_cputs
210#   undef cscanf
211#   define cscanf caca_conio_cscanf
212#   undef delay
213#   define delay caca_conio_delay
214#   undef delline
215#   define delline caca_conio_delline
216#   undef getch
217#   define getch caca_conio_getch
218#   undef getche
219#   define getche caca_conio_getche
220#   undef getpass
221#   define getpass caca_conio_getpass
222#   undef gettext
223#   define gettext caca_conio_gettext
224#   undef gettextinfo
225#   define gettextinfo caca_conio_gettextinfo
226#   undef gotoxy
227#   define gotoxy caca_conio_gotoxy
228#   undef highvideo
229#   define highvideo caca_conio_highvideo
230#   undef insline
231#   define insline caca_conio_insline
232#   undef kbhit
233#   define kbhit caca_conio_kbhit
234#   undef lowvideo
235#   define lowvideo caca_conio_lowvideo
236#   undef movetext
237#   define movetext caca_conio_movetext
238#   undef normvideo
239#   define normvideo caca_conio_normvideo
240#   undef nosound
241#   define nosound caca_conio_nosound
242#   undef printf
243#   define printf caca_conio_printf
244#   undef putch
245#   define putch caca_conio_putch
246#   undef puttext
247#   define puttext caca_conio_puttext
248#   undef _setcursortype
249#   define _setcursortype caca_conio__setcursortype
250#   undef sleep
251#   define sleep caca_conio_sleep
252#   undef sound
253#   define sound caca_conio_sound
254#   undef textattr
255#   define textattr caca_conio_textattr
256#   undef textbackground
257#   define textbackground caca_conio_textbackground
258#   undef textcolor
259#   define textcolor caca_conio_textcolor
260#   undef textmode
261#   define textmode caca_conio_textmode
262#   undef ungetch
263#   define ungetch caca_conio_ungetch
264#   undef wherex
265#   define wherex caca_conio_wherex
266#   undef wherey
267#   define wherey caca_conio_wherey
268#   undef window
269#   define window caca_conio_window
270#endif
271
272#ifdef __cplusplus
273}
274#endif
275
276#endif /* __CACA_CONIO_H__ */
Note: See TracBrowser for help on using the repository browser.