OSDN Git Service

add gitignore
[nethackexpress/trunk.git] / include / wintty.h
1 /*      SCCS Id: @(#)wintty.h   3.4     1996/02/18      */
2 /* Copyright (c) David Cohrs, 1991,1992                           */
3 /* NetHack may be freely redistributed.  See license for details. */
4
5 #ifndef WINTTY_H
6 #define WINTTY_H
7
8 #define E extern
9
10 #ifndef WINDOW_STRUCTS
11 #define WINDOW_STRUCTS
12
13 /* menu structure */
14 typedef struct tty_mi {
15     struct tty_mi *next;
16     anything identifier;        /* user identifier */
17     long count;                 /* user count */
18     char *str;                  /* description string (including accelerator) */
19     int attr;                   /* string attribute */
20     boolean selected;           /* TRUE if selected by user */
21     char selector;              /* keyboard accelerator */
22     char gselector;             /* group accelerator */
23 } tty_menu_item;
24
25 /* descriptor for tty-based windows */
26 struct WinDesc {
27     int flags;                  /* window flags */
28     xchar type;                 /* type of window */
29     boolean active;             /* true if window is active */
30     uchar offx, offy;           /* offset from topleft of display */
31     short rows, cols;           /* dimensions */
32     short curx, cury;           /* current cursor position */
33     short maxrow, maxcol;       /* the maximum size used -- for MENU wins */
34                                 /* maxcol is also used by WIN_MESSAGE for */
35                                 /* tracking the ^P command */
36     short *datlen;              /* allocation size for *data */
37     char **data;                /* window data [row][column] */
38     char *morestr;              /* string to display instead of default */
39     tty_menu_item *mlist;       /* menu information (MENU) */
40     tty_menu_item **plist;      /* menu page pointers (MENU) */
41     short plist_size;           /* size of allocated plist (MENU) */
42     short npages;               /* number of pages in menu (MENU) */
43     short nitems;               /* total number of items (MENU) */
44     short how;                  /* menu mode - pick 1 or N (MENU) */
45     char menu_ch;               /* menu char (MENU) */
46 };
47
48 /* window flags */
49 #define WIN_CANCELLED 1
50 #define WIN_STOP 1              /* for NHW_MESSAGE; stops output */
51
52 /* descriptor for tty-based displays -- all the per-display data */
53 struct DisplayDesc {
54     uchar rows, cols;           /* width and height of tty display */
55     uchar curx, cury;           /* current cursor position on the screen */
56 #ifdef TEXTCOLOR
57     int color;                  /* current color */
58 #endif
59     int attrs;                  /* attributes in effect */
60     int toplin;                 /* flag for topl stuff */
61     int rawprint;               /* number of raw_printed lines since synch */
62     int inmore;                 /* non-zero if more() is active */
63     int inread;                 /* non-zero if reading a character */
64     int intr;                   /* non-zero if inread was interrupted */
65     winid lastwin;              /* last window used for I/O */
66     char dismiss_more;          /* extra character accepted at --More-- */
67 };
68
69 #endif /* WINDOW_STRUCTS */
70
71 #define MAXWIN 20               /* maximum number of windows, cop-out */
72
73 /* tty dependent window types */
74 #ifdef NHW_BASE
75 #undef NHW_BASE
76 #endif
77 #define NHW_BASE    6
78
79 extern struct window_procs tty_procs;
80
81 /* port specific variable declarations */
82 extern winid BASE_WINDOW;
83
84 extern struct WinDesc *wins[MAXWIN];
85
86 extern struct DisplayDesc *ttyDisplay;  /* the tty display descriptor */
87
88 extern char morc;               /* last character typed to xwaitforspace */
89 extern char defmorestr[];       /* default --more-- prompt */
90
91 /* port specific external function references */
92
93 /* ### getline.c ### */
94 E void FDECL(xwaitforspace, (const char *));
95
96 /* ### termcap.c, video.c ### */
97
98 E void FDECL(tty_startup,(int*, int*));
99 #ifndef NO_TERMS
100 E void NDECL(tty_shutdown);
101 #endif
102 #if defined(apollo)
103 /* Apollos don't widen old-style function definitions properly -- they try to
104  * be smart and use the prototype, or some such strangeness.  So we have to
105  * define UNWIDENDED_PROTOTYPES (in tradstdc.h), which makes CHAR_P below a
106  * char.  But the tputs termcap call was compiled as if xputc's argument
107  * actually would be expanded.  So here, we have to make an exception. */
108 E void FDECL(xputc, (int));
109 #else
110 E void FDECL(xputc, (CHAR_P));
111 #endif
112 E void FDECL(xputs, (const char *));
113 #if defined(SCREEN_VGA) || defined(SCREEN_8514)
114 E void FDECL(xputg, (int, int, unsigned));
115 #endif
116 E void NDECL(cl_end);
117 E void NDECL(clear_screen);
118 E void NDECL(home);
119 E void NDECL(standoutbeg);
120 E void NDECL(standoutend);
121 # if 0
122 E void NDECL(revbeg);
123 E void NDECL(boldbeg);
124 E void NDECL(blinkbeg);
125 E void NDECL(dimbeg);
126 E void NDECL(m_end);
127 # endif
128 E void NDECL(backsp);
129 E void NDECL(graph_on);
130 E void NDECL(graph_off);
131 E void NDECL(cl_eos);
132
133 /*
134  * termcap.c (or facsimiles in other ports) is the right place for doing
135  * strange and arcane things such as outputting escape sequences to select
136  * a color or whatever.  wintty.c should concern itself with WHERE to put
137  * stuff in a window.
138  */
139 E void FDECL(term_start_attr,(int attr));
140 E void FDECL(term_end_attr,(int attr));
141 E void NDECL(term_start_raw_bold);
142 E void NDECL(term_end_raw_bold);
143
144 #ifdef TEXTCOLOR
145 E void NDECL(term_end_color);
146 E void FDECL(term_start_color,(int color));
147 E int FDECL(has_color,(int color));
148 #endif /* TEXTCOLOR */
149
150
151 /* ### topl.c ### */
152
153 E void FDECL(addtopl, (const char *));
154 E void NDECL(more);
155 E void FDECL(update_topl, (const char *));
156 E void FDECL(putsyms, (const char*));
157
158 /* ### wintty.c ### */
159 #ifdef CLIPPING
160 E void NDECL(setclipped);
161 #endif
162 E void FDECL(docorner, (int, int));
163 E void NDECL(end_glyphout);
164 E void FDECL(g_putch, (int));
165 E void NDECL(win_tty_init);
166
167 /* external declarations */
168 E void FDECL(tty_init_nhwindows, (int *, char **));
169 E void NDECL(tty_player_selection);
170 E void NDECL(tty_askname);
171 E void NDECL(tty_get_nh_event) ;
172 E void FDECL(tty_exit_nhwindows, (const char *));
173 E void FDECL(tty_suspend_nhwindows, (const char *));
174 E void NDECL(tty_resume_nhwindows);
175 E winid FDECL(tty_create_nhwindow, (int));
176 E void FDECL(tty_clear_nhwindow, (winid));
177 E void FDECL(tty_display_nhwindow, (winid, BOOLEAN_P));
178 E void FDECL(tty_dismiss_nhwindow, (winid));
179 E void FDECL(tty_destroy_nhwindow, (winid));
180 E void FDECL(tty_curs, (winid,int,int));
181 E void FDECL(tty_putstr, (winid, int, const char *));
182 E void FDECL(tty_display_file, (const char *, BOOLEAN_P));
183 E void FDECL(tty_start_menu, (winid));
184 E void FDECL(tty_add_menu, (winid,int,const ANY_P *,
185                         CHAR_P,CHAR_P,int,const char *, BOOLEAN_P));
186 E void FDECL(tty_end_menu, (winid, const char *));
187 E int FDECL(tty_select_menu, (winid, int, MENU_ITEM_P **));
188 E char FDECL(tty_message_menu, (CHAR_P,int,const char *));
189 E void NDECL(tty_update_inventory);
190 E void NDECL(tty_mark_synch);
191 E void NDECL(tty_wait_synch);
192 #ifdef CLIPPING
193 E void FDECL(tty_cliparound, (int, int));
194 #endif
195 #ifdef POSITIONBAR
196 E void FDECL(tty_update_positionbar, (char *));
197 #endif
198 E void FDECL(tty_print_glyph, (winid,XCHAR_P,XCHAR_P,int));
199 E void FDECL(tty_raw_print, (const char *));
200 E void FDECL(tty_raw_print_bold, (const char *));
201 E int NDECL(tty_nhgetch);
202 E int FDECL(tty_nh_poskey, (int *, int *, int *));
203 E void NDECL(tty_nhbell);
204 E int NDECL(tty_doprev_message);
205 E char FDECL(tty_yn_function, (const char *, const char *, CHAR_P));
206 E void FDECL(tty_getlin, (const char *,char *));
207 E int NDECL(tty_get_ext_cmd);
208 E void FDECL(tty_number_pad, (int));
209 E void NDECL(tty_delay_output);
210 #ifdef CHANGE_COLOR
211 E void FDECL(tty_change_color,(int color,long rgb,int reverse));
212 #ifdef MAC
213 E void FDECL(tty_change_background,(int white_or_black));
214 E short FDECL(set_tty_font_name, (winid, char *));
215 #endif
216 E char * NDECL(tty_get_color_string);
217 #endif
218
219 /* other defs that really should go away (they're tty specific) */
220 E void NDECL(tty_start_screen);
221 E void NDECL(tty_end_screen);
222
223 E void FDECL(genl_outrip, (winid,int));
224
225 #ifdef NO_TERMS
226 # ifdef MAC
227 #  ifdef putchar
228 #   undef putchar
229 #   undef putc
230 #  endif
231 #  define putchar term_putc
232 #  define fflush term_flush
233 #  define puts term_puts
234 E int FDECL(term_putc, (int c));
235 E int FDECL(term_flush, (void *desc));
236 E int FDECL(term_puts, (const char *str));
237 # endif /* MAC */
238 # if defined(MSDOS) || defined(WIN32CON)
239 #  if defined(SCREEN_BIOS) || defined(SCREEN_DJGPPFAST) || defined(WIN32CON)
240 #   undef putchar
241 #   undef putc
242 #   undef puts
243 #   define putchar(x) xputc(x)  /* these are in video.c, nttty.c */
244 #   define putc(x) xputc(x)
245 #   define puts(x) xputs(x)
246 #  endif/*SCREEN_BIOS || SCREEN_DJGPPFAST || WIN32CON */
247 #  ifdef POSITIONBAR
248 E void FDECL(video_update_positionbar, (char *));
249 #  endif
250 # endif/*MSDOS*/
251 #endif/*NO_TERMS*/
252
253 #undef E
254
255 #endif /* WINTTY_H */