dumplog's saved_plines[]
[aNetHack.git] / include / wintty.h
blob4191cf34965d25bfdaa973cef6fb750d418ce6c4
1 /* NetHack 3.6 wintty.h $NHDT-Date: 1433806583 2015/06/08 23:36:23 $ $NHDT-Branch: master $:$NHDT-Revision: 1.24 $ */
2 /* Copyright (c) David Cohrs, 1991,1992 */
3 /* NetHack may be freely redistributed. See license for details. */
5 #ifndef WINTTY_H
6 #define WINTTY_H
8 #define E extern
10 #ifndef WINDOW_STRUCTS
11 #define WINDOW_STRUCTS
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;
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 short offx, offy; /* offset from topleft of display */
31 long rows, cols; /* dimensions */
32 long curx, cury; /* current cursor position */
33 long 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 long plist_size; /* size of allocated plist (MENU) */
42 long npages; /* number of pages in menu (MENU) */
43 long nitems; /* total number of items (MENU) */
44 short how; /* menu mode - pick 1 or N (MENU) */
45 char menu_ch; /* menu char (MENU) */
48 /* window flags */
49 #define WIN_CANCELLED 1
50 #define WIN_STOP 1 /* for NHW_MESSAGE; stops output */
51 #define WIN_LOCKHISTORY 2 /* for NHW_MESSAGE; suppress history updates */
53 /* descriptor for tty-based displays -- all the per-display data */
54 struct DisplayDesc {
55 short rows, cols; /* width and height of tty display */
56 short curx, cury; /* current cursor position on the screen */
57 #ifdef TEXTCOLOR
58 int color; /* current color */
59 #endif
60 int attrs; /* attributes in effect */
61 int toplin; /* flag for topl stuff */
62 int rawprint; /* number of raw_printed lines since synch */
63 int inmore; /* non-zero if more() is active */
64 int inread; /* non-zero if reading a character */
65 int intr; /* non-zero if inread was interrupted */
66 winid lastwin; /* last window used for I/O */
67 char dismiss_more; /* extra character accepted at --More-- */
70 #endif /* WINDOW_STRUCTS */
72 #define MAXWIN 20 /* maximum number of windows, cop-out */
74 /* tty dependent window types */
75 #ifdef NHW_BASE
76 #undef NHW_BASE
77 #endif
78 #define NHW_BASE 6
80 extern struct window_procs tty_procs;
82 /* port specific variable declarations */
83 extern winid BASE_WINDOW;
85 extern struct WinDesc *wins[MAXWIN];
87 extern struct DisplayDesc *ttyDisplay; /* the tty display descriptor */
89 extern char morc; /* last character typed to xwaitforspace */
90 extern char defmorestr[]; /* default --more-- prompt */
92 /* port specific external function references */
94 /* ### getline.c ### */
95 E void FDECL(xwaitforspace, (const char *));
97 /* ### termcap.c, video.c ### */
99 E void FDECL(tty_startup, (int *, int *));
100 #ifndef NO_TERMS
101 E void NDECL(tty_shutdown);
102 #endif
103 #if defined(apollo)
104 /* Apollos don't widen old-style function definitions properly -- they try to
105 * be smart and use the prototype, or some such strangeness. So we have to
106 * define UNWIDENDED_PROTOTYPES (in tradstdc.h), which makes CHAR_P below a
107 * char. But the tputs termcap call was compiled as if xputc's argument
108 * actually would be expanded. So here, we have to make an exception. */
109 E void FDECL(xputc, (int));
110 #else
111 E void FDECL(xputc, (CHAR_P));
112 #endif
113 E void FDECL(xputs, (const char *));
114 #if defined(SCREEN_VGA) || defined(SCREEN_8514)
115 E void FDECL(xputg, (int, int, unsigned));
116 #endif
117 E void NDECL(cl_end);
118 E void NDECL(clear_screen);
119 E void NDECL(home);
120 E void NDECL(standoutbeg);
121 E void NDECL(standoutend);
122 #if 0
123 E void NDECL(revbeg);
124 E void NDECL(boldbeg);
125 E void NDECL(blinkbeg);
126 E void NDECL(dimbeg);
127 E void NDECL(m_end);
128 #endif
129 E void NDECL(backsp);
130 E void NDECL(graph_on);
131 E void NDECL(graph_off);
132 E void NDECL(cl_eos);
135 * termcap.c (or facsimiles in other ports) is the right place for doing
136 * strange and arcane things such as outputting escape sequences to select
137 * a color or whatever. wintty.c should concern itself with WHERE to put
138 * stuff in a window.
140 E void FDECL(term_start_attr, (int attr));
141 E void FDECL(term_end_attr, (int attr));
142 E void NDECL(term_start_raw_bold);
143 E void NDECL(term_end_raw_bold);
145 #ifdef TEXTCOLOR
146 E void NDECL(term_end_color);
147 E void FDECL(term_start_color, (int color));
148 E int FDECL(has_color, (int color));
149 #endif /* TEXTCOLOR */
151 /* ### topl.c ### */
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 *));
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 FDECL(win_tty_init, (int));
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 *, CHAR_P, CHAR_P, int,
185 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, 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 #ifdef STATUS_VIA_WINDOWPORT
219 E void NDECL(tty_status_init);
220 E void FDECL(tty_status_update, (int, genericptr_t, int, int));
221 #ifdef STATUS_HILITES
222 E void FDECL(tty_status_threshold, (int, int, anything, int, int, int));
223 #endif
224 #endif
226 /* other defs that really should go away (they're tty specific) */
227 E void NDECL(tty_start_screen);
228 E void NDECL(tty_end_screen);
230 E void FDECL(genl_outrip, (winid, int, time_t));
232 E char *FDECL(tty_getmsghistory, (BOOLEAN_P));
233 E void FDECL(tty_putmsghistory, (const char *, BOOLEAN_P));
235 #ifdef NO_TERMS
236 #ifdef MAC
237 #ifdef putchar
238 #undef putchar
239 #undef putc
240 #endif
241 #define putchar term_putc
242 #define fflush term_flush
243 #define puts term_puts
244 E int FDECL(term_putc, (int c));
245 E int FDECL(term_flush, (void *desc));
246 E int FDECL(term_puts, (const char *str));
247 #endif /* MAC */
248 #if defined(MSDOS) || defined(WIN32)
249 #if defined(SCREEN_BIOS) || defined(SCREEN_DJGPPFAST) || defined(WIN32)
250 #undef putchar
251 #undef putc
252 #undef puts
253 #define putchar(x) xputc(x) /* these are in video.c, nttty.c */
254 #define putc(x) xputc(x)
255 #define puts(x) xputs(x)
256 #endif /*SCREEN_BIOS || SCREEN_DJGPPFAST || WIN32 */
257 #ifdef POSITIONBAR
258 E void FDECL(video_update_positionbar, (char *));
259 #endif
260 #endif /*MSDOS*/
261 #endif /*NO_TERMS*/
263 #undef E
265 #endif /* WINTTY_H */