|
|
1.1 ! root 1: /* $Id: ciolib.h,v 1.20 2004/10/17 02:07:04 deuce Exp $ */ ! 2: ! 3: /**************************************************************************** ! 4: * @format.tab-size 4 (Plain Text/Source Code File Header) * ! 5: * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * ! 6: * * ! 7: * Copyright 2004 Rob Swindell - http://www.synchro.net/copyright.html * ! 8: * * ! 9: * This library is free software; you can redistribute it and/or * ! 10: * modify it under the terms of the GNU Lesser General Public License * ! 11: * as published by the Free Software Foundation; either version 2 * ! 12: * of the License, or (at your option) any later version. * ! 13: * See the GNU Lesser General Public License for more details: lgpl.txt or * ! 14: * http://www.fsf.org/copyleft/lesser.html * ! 15: * * ! 16: * Anonymous FTP access to the most recent released source is available at * ! 17: * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net * ! 18: * * ! 19: * Anonymous CVS access to the development source and modification history * ! 20: * is available at cvs.synchro.net:/cvsroot/sbbs, example: * ! 21: * cvs -d :pserver:[email protected]:/cvsroot/sbbs login * ! 22: * (just hit return, no password is necessary) * ! 23: * cvs -d :pserver:[email protected]:/cvsroot/sbbs checkout src * ! 24: * * ! 25: * For Synchronet coding style and modification guidelines, see * ! 26: * http://www.synchro.net/source.html * ! 27: * * ! 28: * You are encouraged to submit any modifications (preferably in Unix diff * ! 29: * format) via e-mail to [email protected] * ! 30: * * ! 31: * Note: If this box doesn't appear square, then you need to fix your tabs. * ! 32: ****************************************************************************/ ! 33: ! 34: #ifndef _CIOLIB_H_ ! 35: #define _CIOLIB_H_ ! 36: ! 37: #include "mouse.h" ! 38: ! 39: enum { ! 40: CIOLIB_MODE_AUTO ! 41: ,CIOLIB_MODE_CURSES ! 42: ,CIOLIB_MODE_CURSES_IBM ! 43: ,CIOLIB_MODE_ANSI ! 44: ,CIOLIB_MODE_X ! 45: ,CIOLIB_MODE_CONIO ! 46: }; ! 47: ! 48: #if defined(_WIN32) /* presumably, Win32 */ ! 49: ! 50: #include <io.h> /* isatty */ ! 51: ! 52: #endif ! 53: ! 54: enum { ! 55: BLACK ! 56: ,BLUE ! 57: ,GREEN ! 58: ,CYAN ! 59: ,RED ! 60: ,MAGENTA ! 61: ,BROWN ! 62: ,LIGHTGRAY ! 63: ,DARKGRAY ! 64: ,LIGHTBLUE ! 65: ,LIGHTGREEN ! 66: ,LIGHTCYAN ! 67: ,LIGHTRED ! 68: ,LIGHTMAGENTA ! 69: ,YELLOW ! 70: ,WHITE ! 71: }; ! 72: #define BLINK 128 ! 73: ! 74: enum text_modes ! 75: { ! 76: /* DOS-compatible modes */ ! 77: ! 78: LASTMODE = -1, ! 79: BW40 = 0, ! 80: C40, ! 81: BW80, ! 82: C80, ! 83: MONO = 7, ! 84: ! 85: /* New Color modes */ ! 86: ! 87: C40X14 = 8, ! 88: C40X21, ! 89: C40X28, ! 90: C40X43, ! 91: C40X50, ! 92: C40X60, ! 93: ! 94: C80X14, ! 95: C80X21, ! 96: C80X28, ! 97: C80X43, ! 98: C80X50, ! 99: C80X60, ! 100: ! 101: /* New Black & White modes */ ! 102: ! 103: BW40X14, ! 104: BW40X21, ! 105: BW40X28, ! 106: BW40X43, ! 107: BW40X50, ! 108: BW40X60, ! 109: ! 110: BW80X14, ! 111: BW80X21, ! 112: BW80X28, ! 113: BW80X43, ! 114: BW80X50, ! 115: BW80X60, ! 116: ! 117: /* New Monochrome modes */ ! 118: ! 119: MONO14, /* Invalid VGA mode */ ! 120: MONO21, ! 121: MONO28, ! 122: MONO43, ! 123: MONO50, ! 124: MONO60, ! 125: ! 126: C4350 = C80X50, /* this is actually "64" in the "real" conio */ ! 127: ! 128: _ORIGMODE = 65 /* original mode at program startup */ ! 129: }; ! 130: ! 131: #define COLOR_MODE C80 ! 132: ! 133: enum ! 134: { ! 135: _NOCURSOR, ! 136: _SOLIDCURSOR, ! 137: _NORMALCURSOR ! 138: }; ! 139: ! 140: struct text_info { ! 141: unsigned char winleft; /* left window coordinate */ ! 142: unsigned char wintop; /* top window coordinate */ ! 143: unsigned char winright; /* right window coordinate */ ! 144: unsigned char winbottom; /* bottom window coordinate */ ! 145: unsigned char attribute; /* text attribute */ ! 146: unsigned char normattr; /* normal attribute */ ! 147: unsigned char currmode; /* current video mode: ! 148: BW40, BW80, C40, C80, or C4350 */ ! 149: unsigned char screenheight; /* text screen's height */ ! 150: unsigned char screenwidth; /* text screen's width */ ! 151: unsigned char curx; /* x-coordinate in current window */ ! 152: unsigned char cury; /* y-coordinate in current window */ ! 153: }; ! 154: ! 155: typedef struct { ! 156: int mode; ! 157: int mouse; ! 158: void (*clreol) (void); ! 159: int (*puttext) (int,int,int,int,void *); ! 160: int (*gettext) (int,int,int,int,void *); ! 161: void (*textattr) (int); ! 162: int (*kbhit) (void); ! 163: void (*delay) (long); ! 164: int (*wherex) (void); ! 165: int (*wherey) (void); ! 166: int (*putch) (int); ! 167: void (*gotoxy) (int,int); ! 168: void (*clrscr) (void); ! 169: void (*gettextinfo) (struct text_info *); ! 170: void (*setcursortype)(int); ! 171: int (*getch) (void); ! 172: int (*getche) (void); ! 173: int (*beep) (void); ! 174: void (*highvideo) (void); ! 175: void (*lowvideo) (void); ! 176: void (*normvideo) (void); ! 177: void (*textmode) (int); ! 178: int (*ungetch) (int); ! 179: int (*movetext) (int,int,int,int,int,int); ! 180: char *(*cgets) (char *); ! 181: int (*cscanf) (char *,...); ! 182: char *(*getpass) (const char *); ! 183: void (*wscroll) (void); ! 184: void (*window) (int,int,int,int); ! 185: void (*delline) (void); ! 186: void (*insline) (void); ! 187: int (*cprintf) (char *,...); ! 188: int (*cputs) (char *); ! 189: void (*textbackground) (int); ! 190: void (*textcolor) (int); ! 191: int (*getmouse) (struct mouse_event *mevent); ! 192: int (*ungetmouse) (struct mouse_event *mevent); ! 193: int (*hidemouse) (void); ! 194: int (*showmouse) (void); ! 195: void (*settitle) (const char *); ! 196: } cioapi_t; ! 197: ! 198: extern cioapi_t cio_api; ! 199: extern int _wscroll; ! 200: extern int directvideo; ! 201: extern int dont_move_cursor; ! 202: ! 203: #define _conio_kbhit() kbhit() ! 204: ! 205: #ifdef __cplusplus ! 206: extern "C" { ! 207: #endif ! 208: int initciolib(int mode); ! 209: ! 210: int ciolib_movetext(int sx, int sy, int ex, int ey, int dx, int dy); ! 211: char *ciolib_cgets(char *str); ! 212: int ciolib_cscanf (char *format , ...); ! 213: int ciolib_kbhit(void); ! 214: int ciolib_getch(void); ! 215: int ciolib_getche(void); ! 216: int ciolib_ungetch(int ch); ! 217: void ciolib_gettextinfo(struct text_info *info); ! 218: int ciolib_wherex(void); ! 219: int ciolib_wherey(void); ! 220: void ciolib_wscroll(void); ! 221: void ciolib_gotoxy(int x, int y); ! 222: void ciolib_clreol(void); ! 223: void ciolib_clrscr(void); ! 224: int ciolib_cputs(char *str); ! 225: int ciolib_cprintf(char *fmat, ...); ! 226: void ciolib_textbackground(int colour); ! 227: void ciolib_textcolor(int colour); ! 228: void ciolib_highvideo(void); ! 229: void ciolib_lowvideo(void); ! 230: void ciolib_normvideo(void); ! 231: int ciolib_puttext(int a,int b,int c,int d,unsigned char *e); ! 232: int ciolib_gettext(int a,int b,int c,int d,unsigned char *e); ! 233: void ciolib_textattr(int a); ! 234: void ciolib_delay(long a); ! 235: int ciolib_putch(int a); ! 236: void ciolib_setcursortype(int a); ! 237: void ciolib_textmode(int mode); ! 238: void ciolib_window(int sx, int sy, int ex, int ey); ! 239: void ciolib_delline(void); ! 240: void ciolib_insline(void); ! 241: char *ciolib_getpass(const char *prompt); ! 242: void settitle(const char *title); ! 243: int ciolib_showmouse(void); ! 244: int ciolib_hidemouse(void); ! 245: void ciolib_settitle(const char *title); ! 246: #ifdef __cplusplus ! 247: } ! 248: #endif ! 249: ! 250: #ifndef CIOLIB_NO_MACROS ! 251: #define cscanf ciolib_cscanf ! 252: #define cprintf ciolib_cprintf ! 253: ! 254: #define movetext(a,b,c,d,e,f) ciolib_movetext(a,b,c,d,e,f) ! 255: #define cgets(a) ciolib_cgets(a) ! 256: #define kbhit() ciolib_kbhit() ! 257: #define getch() ciolib_getch() ! 258: #define getche() ciolib_getche() ! 259: #define ungetch(a) ciolib_ungetch(a) ! 260: #define gettextinfo(a) ciolib_gettextinfo(a) ! 261: #define wherex() ciolib_wherex() ! 262: #define wherey() ciolib_wherey() ! 263: #define wscroll() ciolib_wscroll() ! 264: #define gotoxy(a,b) ciolib_gotoxy(a,b) ! 265: #define clreol() ciolib_clreol() ! 266: #define clrscr() ciolib_clrscr() ! 267: #define cputs(a) ciolib_cputs(a) ! 268: #define textbackground(a) ciolib_textbackground(a) ! 269: #define textcolor(a) ciolib_textcolor(a) ! 270: #define highvideo() ciolib_highvideo() ! 271: #define lowvideo() ciolib_lowvideo() ! 272: #define normvideo() ciolib_normvideo() ! 273: #define puttext(a,b,c,d,e) ciolib_puttext(a,b,c,d,e) ! 274: #define gettext(a,b,c,d,e) ciolib_gettext(a,b,c,d,e) ! 275: #define textattr(a) ciolib_textattr(a) ! 276: #define delay(a) ciolib_delay(a) ! 277: #define putch(a) ciolib_putch(a) ! 278: #define _setcursortype(a) ciolib_setcursortype(a) ! 279: #define textmode(a) ciolib_textmode(a) ! 280: #define window(a,b,c,d) ciolib_window(a,b,c,d) ! 281: #define delline() ciolib_delline() ! 282: #define insline() ciolib_insline() ! 283: #define getpass(a) ciolib_getpass(a) ! 284: #define getmouse(a) ciolib_getmouse(a) ! 285: #define ungetmouse(a) ciolib_ungetmouse(a) ! 286: #define hidemouse() ciolib_hidemouse() ! 287: #define showmouse() ciolib_showmouse() ! 288: #define settitle(a) ciolib_settitle(a) ! 289: #endif ! 290: ! 291: #endif /* Do not add anything after this line */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.