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. */
10 #ifndef WINDOW_STRUCTS
11 #define WINDOW_STRUCTS
14 typedef struct tty_mi
{
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 */
25 /* descriptor for tty-based windows */
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) */
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 */
55 short rows
, cols
; /* width and height of tty display */
56 short curx
, cury
; /* current cursor position on the screen */
58 int color
; /* current color */
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 */
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 *));
101 E
void NDECL(tty_shutdown
);
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));
111 E
void FDECL(xputc
, (CHAR_P
));
113 E
void FDECL(xputs
, (const char *));
114 #if defined(SCREEN_VGA) || defined(SCREEN_8514)
115 E
void FDECL(xputg
, (int, int, unsigned));
117 E
void NDECL(cl_end
);
118 E
void NDECL(clear_screen
);
120 E
void NDECL(standoutbeg
);
121 E
void NDECL(standoutend
);
123 E
void NDECL(revbeg
);
124 E
void NDECL(boldbeg
);
125 E
void NDECL(blinkbeg
);
126 E
void NDECL(dimbeg
);
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
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
);
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 */
153 E
void FDECL(addtopl
, (const char *));
155 E
void FDECL(update_topl
, (const char *));
156 E
void FDECL(putsyms
, (const char *));
158 /* ### wintty.c ### */
160 E
void NDECL(setclipped
);
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
);
193 E
void FDECL(tty_cliparound
, (int, int));
196 E
void FDECL(tty_update_positionbar
, (char *));
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
);
211 E
void FDECL(tty_change_color
, (int color
, long rgb
, int reverse
));
213 E
void FDECL(tty_change_background
, (int white_or_black
));
214 E
short FDECL(set_tty_font_name
, (winid
, char *));
216 E
char *NDECL(tty_get_color_string
);
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));
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
));
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
));
248 #if defined(MSDOS) || defined(WIN32)
249 #if defined(SCREEN_BIOS) || defined(SCREEN_DJGPPFAST) || defined(WIN32)
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 */
258 E
void FDECL(video_update_positionbar
, (char *));
265 #endif /* WINTTY_H */