Annotation of sbbs/src/conio/ciolib.h, revision 1.1.1.1

1.1       root        1: /* $Id: ciolib.h,v 1.38 2006/05/28 21:43:23 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 2005 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 <string.h>    /* size_t */
                     38: #include "mouse.h"
                     39: 
                     40: #ifdef CIOLIBEXPORT
                     41:         #undef CIOLIBEXPORT
                     42: #endif
                     43: 
                     44: #ifdef _WIN32
                     45:         #ifdef __BORLANDC__
                     46:                 #define CIOLIBCALL __stdcall
                     47:         #else
                     48:                 #define CIOLIBCALL
                     49:         #endif
                     50:         #if defined(CIOLIB_IMPORTS) || defined(CIOLIB_EXPORTS)
                     51:                 #if defined(CIOLIB_IMPORTS)
                     52:                         #define CIOLIBEXPORT __declspec( dllimport )
                     53:                         #define CIOLIBEXPORTVAR __declspec( dllimport )
                     54:                 #else
                     55:                         #define CIOLIBEXPORT __declspec( dllexport )
                     56:                         #define CIOLIBEXPORTVAR __declspec( dllexport )
                     57:                 #endif
                     58:         #else   /* self-contained executable */
                     59:                 #define CIOLIBEXPORT
                     60:                 #define CIOLIBEXPORTVAR        extern
                     61:         #endif
                     62: #elif defined __unix__
                     63:         #define CIOLIBCALL
                     64:         #define CIOLIBEXPORT
                     65:         #define CIOLIBEXPORTVAR        extern
                     66: #else
                     67:         #define CIOLIBCALL
                     68:         #define CIOLIBEXPORT
                     69:         #define CIOLIBEXPORTVAR        extern
                     70: #endif
                     71: 
                     72: enum {
                     73:         CIOLIB_MODE_AUTO
                     74:        ,CIOLIB_MODE_CURSES
                     75:        ,CIOLIB_MODE_CURSES_IBM
                     76:        ,CIOLIB_MODE_ANSI
                     77:        ,CIOLIB_MODE_X
                     78:        ,CIOLIB_MODE_CONIO
                     79:        ,CIOLIB_MODE_SDL
                     80:        ,CIOLIB_MODE_SDL_FULLSCREEN
                     81: };
                     82: 
                     83: #if defined(_WIN32)    /* presumably, Win32 */
                     84: 
                     85:        #include <io.h>                 /* isatty */
                     86: 
                     87: #endif
                     88: 
                     89: #ifndef __COLORS
                     90: #define __COLORS
                     91: 
                     92: enum {
                     93:         BLACK
                     94:        ,BLUE
                     95:        ,GREEN
                     96:        ,CYAN
                     97:        ,RED
                     98:        ,MAGENTA
                     99:        ,BROWN  
                    100:        ,LIGHTGRAY      
                    101:        ,DARKGRAY
                    102:        ,LIGHTBLUE      
                    103:        ,LIGHTGREEN     
                    104:        ,LIGHTCYAN
                    105:        ,LIGHTRED
                    106:        ,LIGHTMAGENTA
                    107:        ,YELLOW
                    108:        ,WHITE
                    109: };
                    110: 
                    111: #endif /* __COLORS */
                    112: 
                    113: #ifndef BLINK
                    114: #define BLINK 128
                    115: #endif
                    116: 
                    117: enum text_modes
                    118: {
                    119:     /* DOS-compatible modes */
                    120: 
                    121:     LASTMODE = -1,
                    122:     BW40     = 0,
                    123:     C40,
                    124:     BW80,
                    125:     C80,
                    126:     MONO     = 7,
                    127: 
                    128:     /* New Color modes */
                    129: 
                    130:     C40X14   = 8,
                    131:     C40X21,
                    132:     C40X28,
                    133:     C40X43,
                    134:     C40X50,
                    135:     C40X60,
                    136: 
                    137:     C80X14,
                    138:     C80X21,
                    139:     C80X28,
                    140:     C80X43,
                    141:     C80X50,
                    142:     C80X60,
                    143: 
                    144:     /* New Black & White modes */
                    145: 
                    146:     BW40X14,
                    147:     BW40X21,
                    148:     BW40X28,
                    149:     BW40X43,
                    150:     BW40X50,
                    151:     BW40X60,
                    152: 
                    153:     BW80X14,
                    154:     BW80X21,
                    155:     BW80X28,
                    156:     BW80X43,
                    157:     BW80X50,
                    158:     BW80X60,
                    159: 
                    160:     /* New Monochrome modes */
                    161: 
                    162:     MONO14,             /* Invalid VGA mode */
                    163:     MONO21,
                    164:     MONO28,
                    165:     MONO43,
                    166:     MONO50,
                    167:     MONO60,
                    168: 
                    169:     C4350    = C80X50, /* this is actually "64" in the "real" conio */
                    170: 
                    171:     _ORIGMODE = 65      /* original mode at program startup */
                    172: };
                    173: 
                    174: #define COLOR_MODE     C80
                    175: 
                    176: enum
                    177: {
                    178:        _NOCURSOR,
                    179:        _SOLIDCURSOR,
                    180:        _NORMALCURSOR
                    181: };
                    182: 
                    183: struct text_info {
                    184:        unsigned char winleft;        /* left window coordinate */
                    185:        unsigned char wintop;         /* top window coordinate */
                    186:        unsigned char winright;       /* right window coordinate */
                    187:        unsigned char winbottom;      /* bottom window coordinate */
                    188:        unsigned char attribute;      /* text attribute */
                    189:        unsigned char normattr;       /* normal attribute */
                    190:        unsigned char currmode;       /* current video mode:
                    191:                                         BW40, BW80, C40, C80, or C4350 */
                    192:        unsigned char screenheight;   /* text screen's height */
                    193:        unsigned char screenwidth;    /* text screen's width */
                    194:        unsigned char curx;           /* x-coordinate in current window */
                    195:        unsigned char cury;           /* y-coordinate in current window */
                    196: };
                    197: 
                    198: typedef struct {
                    199:        int             mode;
                    200:        int             mouse;
                    201:        void    (*clreol)               (void);
                    202:        int             (*puttext)              (int,int,int,int,void *);
                    203:        int             (*gettext)              (int,int,int,int,void *);
                    204:        void    (*textattr)             (int);
                    205:        int             (*kbhit)                (void);
                    206:        void    (*delay)                (long);
                    207:        int             (*wherex)               (void);
                    208:        int             (*wherey)               (void);
                    209:        int             (*putch)                (int);
                    210:        void    (*gotoxy)               (int,int);
                    211:        void    (*clrscr)               (void);
                    212:        void    (*gettextinfo)  (struct text_info *);
                    213:        void    (*setcursortype)(int);
                    214:        int             (*getch)                (void);
                    215:        int             (*getche)               (void);
                    216:        int             (*beep)                 (void);
                    217:        void    (*highvideo)    (void);
                    218:        void    (*lowvideo)             (void);
                    219:        void    (*normvideo)    (void);
                    220:        void    (*textmode)             (int);
                    221:        int             (*ungetch)              (int);
                    222:        int             (*movetext)             (int,int,int,int,int,int);
                    223:        char    *(*cgets)               (char *);
                    224:        int             (*cscanf)               (char *,...);
                    225:        char    *(*getpass)             (const char *);
                    226:        void    (*wscroll)              (void);
                    227:        void    (*window)               (int,int,int,int);
                    228:        void    (*delline)              (void);
                    229:        void    (*insline)              (void);
                    230:        int             (*cprintf)              (char *,...);
                    231:        int             (*cputs)                (char *);
                    232:        void    (*textbackground)       (int);
                    233:        void    (*textcolor)    (int);
                    234:        int             (*getmouse)             (struct mouse_event *mevent);
                    235:        int             (*ungetmouse)   (struct mouse_event *mevent);
                    236:        int             (*hidemouse)    (void);
                    237:        int             (*showmouse)    (void);
                    238:        void    (*settitle)             (const char *);
                    239:        void    (*setname)              (const char *);
                    240:        void    (*copytext)             (const char *, size_t);
                    241:        char    *(*getcliptext) (void);
                    242:        void    (*suspend)              (void);
                    243:        void    (*resume)               (void);
                    244:        int             (*setfont)              (int font, int force);
                    245:        int             (*getfont)              (void);
                    246:        int             (*loadfont)             (char *filename);
                    247:        int             *ESCDELAY;
                    248: } cioapi_t;
                    249: 
                    250: CIOLIBEXPORTVAR cioapi_t cio_api;
                    251: CIOLIBEXPORTVAR int _wscroll;
                    252: CIOLIBEXPORTVAR int directvideo;
                    253: CIOLIBEXPORTVAR int hold_update;
                    254: CIOLIBEXPORTVAR int puttext_can_move;
                    255: 
                    256: #define _conio_kbhit()         kbhit()
                    257: 
                    258: #ifdef __cplusplus
                    259: extern "C" {
                    260: #endif
                    261: CIOLIBEXPORT int CIOLIBCALL initciolib(int mode);
                    262: CIOLIBEXPORT void CIOLIBCALL suspendciolib(void);
                    263: 
                    264: CIOLIBEXPORT int CIOLIBCALL ciolib_movetext(int sx, int sy, int ex, int ey, int dx, int dy);
                    265: CIOLIBEXPORT char * CIOLIBCALL ciolib_cgets(char *str);
                    266: CIOLIBEXPORT int CIOLIBCALL ciolib_cscanf (char *format , ...);
                    267: CIOLIBEXPORT int CIOLIBCALL ciolib_kbhit(void);
                    268: CIOLIBEXPORT int CIOLIBCALL ciolib_getch(void);
                    269: CIOLIBEXPORT int CIOLIBCALL ciolib_getche(void);
                    270: CIOLIBEXPORT int CIOLIBCALL ciolib_ungetch(int ch);
                    271: CIOLIBEXPORT void CIOLIBCALL ciolib_gettextinfo(struct text_info *info);
                    272: CIOLIBEXPORT int CIOLIBCALL ciolib_wherex(void);
                    273: CIOLIBEXPORT int CIOLIBCALL ciolib_wherey(void);
                    274: CIOLIBEXPORT void CIOLIBCALL ciolib_wscroll(void);
                    275: CIOLIBEXPORT void CIOLIBCALL ciolib_gotoxy(int x, int y);
                    276: CIOLIBEXPORT void CIOLIBCALL ciolib_clreol(void);
                    277: CIOLIBEXPORT void CIOLIBCALL ciolib_clrscr(void);
                    278: CIOLIBEXPORT int CIOLIBCALL ciolib_cputs(char *str);
                    279: CIOLIBEXPORT int       CIOLIBCALL ciolib_cprintf(char *fmat, ...);
                    280: CIOLIBEXPORT void CIOLIBCALL ciolib_textbackground(int colour);
                    281: CIOLIBEXPORT void CIOLIBCALL ciolib_textcolor(int colour);
                    282: CIOLIBEXPORT void CIOLIBCALL ciolib_highvideo(void);
                    283: CIOLIBEXPORT void CIOLIBCALL ciolib_lowvideo(void);
                    284: CIOLIBEXPORT void CIOLIBCALL ciolib_normvideo(void);
                    285: CIOLIBEXPORT int CIOLIBCALL ciolib_puttext(int a,int b,int c,int d,unsigned char *e);
                    286: CIOLIBEXPORT int CIOLIBCALL ciolib_gettext(int a,int b,int c,int d,unsigned char *e);
                    287: CIOLIBEXPORT void CIOLIBCALL ciolib_textattr(int a);
                    288: CIOLIBEXPORT void CIOLIBCALL ciolib_delay(long a);
                    289: CIOLIBEXPORT int CIOLIBCALL ciolib_putch(int a);
                    290: CIOLIBEXPORT void CIOLIBCALL ciolib_setcursortype(int a);
                    291: CIOLIBEXPORT void CIOLIBCALL ciolib_textmode(int mode);
                    292: CIOLIBEXPORT void CIOLIBCALL ciolib_window(int sx, int sy, int ex, int ey);
                    293: CIOLIBEXPORT void CIOLIBCALL ciolib_delline(void);
                    294: CIOLIBEXPORT void CIOLIBCALL ciolib_insline(void);
                    295: CIOLIBEXPORT char * CIOLIBCALL ciolib_getpass(const char *prompt);
                    296: CIOLIBEXPORT void CIOLIBCALL ciolib_settitle(const char *title);
                    297: CIOLIBEXPORT void CIOLIBCALL ciolib_setname(const char *title);
                    298: CIOLIBEXPORT int CIOLIBCALL ciolib_showmouse(void);
                    299: CIOLIBEXPORT int CIOLIBCALL ciolib_hidemouse(void);
                    300: CIOLIBEXPORT void CIOLIBCALL ciolib_copytext(const char *text, size_t buflen);
                    301: CIOLIBEXPORT char * CIOLIBCALL ciolib_getcliptext(void);
                    302: CIOLIBEXPORT int CIOLIBCALL ciolib_setfont(int font, int force);
                    303: CIOLIBEXPORT int CIOLIBCALL ciolib_getfont(void);
                    304: CIOLIBEXPORT int CIOLIBCALL ciolib_loadfont(char *filename);
                    305: #ifdef __cplusplus
                    306: }
                    307: #endif
                    308: 
                    309: #ifndef CIOLIB_NO_MACROS
                    310:        #define cscanf                                  ciolib_cscanf
                    311:        #define cprintf                                 ciolib_cprintf
                    312: 
                    313:        #define movetext(a,b,c,d,e,f)   ciolib_movetext(a,b,c,d,e,f)
                    314:        #define cgets(a)                                ciolib_cgets(a)
                    315:        #define kbhit()                                 ciolib_kbhit()
                    316:        #define getch()                                 ciolib_getch()
                    317:        #define getche()                                ciolib_getche()
                    318:        #define ungetch(a)                              ciolib_ungetch(a)
                    319:        #define gettextinfo(a)                  ciolib_gettextinfo(a)
                    320:        #define wherex()                                ciolib_wherex()
                    321:        #define wherey()                                ciolib_wherey()
                    322:        #define wscroll()                               ciolib_wscroll()
                    323:        #define gotoxy(a,b)                             ciolib_gotoxy(a,b)
                    324:        #define clreol()                                ciolib_clreol()
                    325:        #define clrscr()                                ciolib_clrscr()
                    326:        #define cputs(a)                                ciolib_cputs(a)
                    327:        #define textbackground(a)               ciolib_textbackground(a)
                    328:        #define textcolor(a)                    ciolib_textcolor(a)
                    329:        #define highvideo()                             ciolib_highvideo()
                    330:        #define lowvideo()                              ciolib_lowvideo()
                    331:        #define normvideo()                             ciolib_normvideo()
                    332:        #define puttext(a,b,c,d,e)              ciolib_puttext(a,b,c,d,e)
                    333:        #define gettext(a,b,c,d,e)              ciolib_gettext(a,b,c,d,e)
                    334:        #define textattr(a)                             ciolib_textattr(a)
                    335:        #define delay(a)                                ciolib_delay(a)
                    336:        #define putch(a)                                ciolib_putch(a)
                    337:        #define _setcursortype(a)               ciolib_setcursortype(a)
                    338:        #define textmode(a)                             ciolib_textmode(a)
                    339:        #define window(a,b,c,d)                 ciolib_window(a,b,c,d)
                    340:        #define delline()                               ciolib_delline()
                    341:        #define insline()                               ciolib_insline()
                    342:        #define getpass(a)                              ciolib_getpass(a)
                    343:        #define getmouse(a)                             ciolib_getmouse(a)
                    344:        #define ungetmouse(a)                   ciolib_ungetmouse(a)
                    345:        #define hidemouse()                             ciolib_hidemouse()
                    346:        #define showmouse()                             ciolib_showmouse()
                    347:        #define setname(a)                              ciolib_setname(a)
                    348:        #define settitle(a)                             ciolib_settitle(a)
                    349:        #define copytext(a,b)                   ciolib_copytext(a,b)
                    350:        #define getcliptext()                   ciolib_getcliptext()
                    351:        #define setfont(a,b)                    ciolib_setfont(a,b)
                    352:        #define getfont()                               ciolib_getfont()
                    353:        #define loadfont(a)                             ciolib_loadfont(a)
                    354: #endif
                    355: 
                    356: #endif /* Do not add anything after this line */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.