1 /* NetHack 3.7 wincurs.h */ 2 /* Copyright (c) Karl Garrison, 2010. */ 3 /* NetHack may be freely redistributed. See license for details. */ 4 5 #ifndef WINCURS_H 6 #define WINCURS_H 7 8 /* Global declarations for curses interface */ 9 10 extern int term_rows, term_cols; /* size of underlying terminal */ 11 extern int orig_cursor; /* Preserve initial cursor state */ 12 extern WINDOW *base_term; /* underlying terminal window */ 13 extern boolean counting; /* Count window is active */ 14 extern WINDOW *mapwin, *statuswin, *messagewin; /* Main windows */ 15 16 #define TEXTCOLOR /* Allow color */ 17 #define NHW_END 19 18 #define OFF 0 19 #define ON 1 20 #define NONE -1 21 #define KEY_ESC 0x1b 22 #define DIALOG_BORDER_COLOR CLR_MAGENTA 23 #define ALERT_BORDER_COLOR CLR_RED 24 #define SCROLLBAR_COLOR CLR_MAGENTA 25 #define SCROLLBAR_BACK_COLOR CLR_BLACK 26 #define HIGHLIGHT_COLOR CLR_WHITE 27 #define MORECOLOR CLR_ORANGE 28 #define STAT_UP_COLOR CLR_GREEN 29 #define STAT_DOWN_COLOR CLR_RED 30 #define MESSAGE_WIN 1 31 #define STATUS_WIN 2 32 #define MAP_WIN 3 33 #define INV_WIN 4 34 #define NHWIN_MAX 5 35 #define MESG_HISTORY_MAX 200 36 #if !defined(__APPLE__) || !defined(NCURSES_VERSION) 37 # define USE_DARKGRAY /* Allow "bright" black; delete if not visible */ 38 #endif /* !__APPLE__ && !PDCURSES */ 39 #define CURSES_DARK_GRAY 17 40 #define MAP_SCROLLBARS 41 42 #if !defined(A_LEFTLINE) && defined(A_LEFT) 43 #define A_LEFTLINE A_LEFT 44 #endif 45 #if !defined(A_RIGHTLINE) && defined(A_RIGHT) 46 #define A_RIGHTLINE A_RIGHT 47 #endif 48 49 typedef enum orient_type 50 { 51 CENTER, 52 UP, 53 DOWN, 54 RIGHT, 55 LEFT, 56 UNDEFINED 57 } orient; 58 59 #ifdef GCC_WARN 60 int wprintw(WINDOW *, const char *, ...) PRINTF_F(2, 3); 61 int mvwprintw(WINDOW *, int, int, const char *, ...) PRINTF_F(4, 5); 62 #endif 63 64 /* cursmain.c */ 65 66 extern struct window_procs curses_procs; 67 68 extern void curses_init_nhwindows(int* argcp, char** argv); 69 extern void curses_player_selection(void); 70 extern void curses_askname(void); 71 extern void curses_get_nh_event(void); 72 extern void curses_uncurse_terminal(void); 73 extern void curses_exit_nhwindows(const char *str); 74 extern void curses_suspend_nhwindows(const char *str); 75 extern void curses_resume_nhwindows(void); 76 extern winid curses_create_nhwindow(int type); 77 extern void curses_clear_nhwindow(winid wid); 78 extern void curses_display_nhwindow(winid wid, boolean block); 79 extern void curses_destroy_nhwindow(winid wid); 80 extern void curses_curs(winid wid, int x, int y); 81 extern void curses_putstr(winid wid, int attr, const char *text); 82 extern void curses_display_file(const char *filename, boolean must_exist); 83 extern void curses_start_menu(winid wid, unsigned long); 84 extern void curses_add_menu(winid wid, const glyph_info *, 85 const ANY_P * identifier, 86 char accelerator, char group_accel, int attr, 87 const char *str, unsigned int itemflags); 88 extern void curses_end_menu(winid wid, const char *prompt); 89 extern int curses_select_menu(winid wid, int how, MENU_ITEM_P **selected); 90 extern void curses_update_inventory(int); 91 extern void curses_mark_synch(void); 92 extern void curses_wait_synch(void); 93 extern void curses_cliparound(int x, int y); 94 extern void curses_print_glyph(winid wid, xchar x, xchar y, 95 const glyph_info *, const glyph_info *); 96 extern void curses_raw_print(const char *str); 97 extern void curses_raw_print_bold(const char *str); 98 extern int curses_nhgetch(void); 99 extern int curses_nh_poskey(int *x, int *y, int *mod); 100 extern void curses_nhbell(void); 101 extern int curses_doprev_message(void); 102 extern char curses_yn_function(const char *question, const char *choices, 103 char def); 104 extern void curses_getlin(const char *question, char *input); 105 extern int curses_get_ext_cmd(void); 106 extern void curses_number_pad(int state); 107 extern void curses_delay_output(void); 108 extern void curses_start_screen(void); 109 extern void curses_end_screen(void); 110 extern void curses_outrip(winid wid, int how, time_t when); 111 extern void genl_outrip(winid tmpwin, int how, time_t when); 112 extern void curses_preference_update(const char *pref); 113 extern void curs_reset_windows(boolean, boolean); 114 115 /* curswins.c */ 116 117 extern WINDOW *curses_create_window(int width, int height, orient orientation); 118 extern void curses_destroy_win(WINDOW *win); 119 extern WINDOW *curses_get_nhwin(winid wid); 120 extern void curses_add_nhwin(winid wid, int height, int width, int y, 121 int x, orient orientation, boolean border); 122 extern void curses_add_wid(winid wid); 123 extern void curses_refresh_nhwin(winid wid); 124 extern void curses_refresh_nethack_windows(void); 125 extern void curses_del_nhwin(winid wid); 126 extern void curses_del_wid(winid wid); 127 extern void curs_destroy_all_wins(void); 128 extern void curses_putch(winid wid, int x, int y, int ch, 129 int color, int attrs); 130 extern void curses_get_window_size(winid wid, int *height, int *width); 131 extern boolean curses_window_has_border(winid wid); 132 extern boolean curses_window_exists(winid wid); 133 extern int curses_get_window_orientation(winid wid); 134 extern void curses_get_window_xy(winid wid, int *x, int *y); 135 extern void curses_puts(winid wid, int attr, const char *text); 136 extern void curses_clear_nhwin(winid wid); 137 extern void curses_alert_win_border(winid wid, boolean onoff); 138 extern void curses_alert_main_borders(boolean onoff); 139 extern void curses_draw_map(int sx, int sy, int ex, int ey); 140 extern boolean curses_map_borders(int *sx, int *sy, int *ex, int *ey, 141 int ux, int uy); 142 143 /* cursmisc.c */ 144 145 extern int curses_read_char(void); 146 extern void curses_toggle_color_attr(WINDOW *win, int color, int attr, 147 int onoff); 148 extern void curses_menu_color_attr(WINDOW *, int, int, int); 149 extern void curses_bail(const char *mesg); 150 extern winid curses_get_wid(int type); 151 extern char *curses_copy_of(const char *s); 152 extern int curses_num_lines(const char *str, int width); 153 extern char *curses_break_str(const char *str, int width, int line_num); 154 extern char *curses_str_remainder(const char *str, int width, int line_num); 155 extern boolean curses_is_menu(winid wid); 156 extern boolean curses_is_text(winid wid); 157 extern int curses_convert_glyph(int ch, int glyph); 158 extern void curses_move_cursor(winid wid, int x, int y); 159 extern void curses_prehousekeeping(void); 160 extern void curses_posthousekeeping(void); 161 extern void curses_view_file(const char *filename, boolean must_exist); 162 extern void curses_rtrim(char *str); 163 extern int curses_get_count(int first_digit); 164 extern int curses_convert_attr(int attr); 165 extern int curses_read_attrs(const char *attrs); 166 extern char *curses_fmt_attrs(char *); 167 extern int curses_convert_keys(int key); 168 extern int curses_get_mouse(int *mousex, int *mousey, int *mod); 169 extern void curses_mouse_support(int); 170 171 /* cursdial.c */ 172 173 extern void curses_line_input_dialog(const char *prompt, 174 char *answer, int buffer); 175 extern int curses_character_input_dialog(const char *prompt, 176 const char *choices, char def); 177 extern int curses_ext_cmd(void); 178 extern void curses_create_nhmenu(winid wid, unsigned long); 179 extern void curses_add_nhmenu_item(winid wid, const glyph_info *, 180 const ANY_P *identifier, char accelerator, 181 char group_accel, int attr, 182 const char *str, unsigned itemflags); 183 extern void curs_menu_set_bottom_heavy(winid); 184 extern void curses_finalize_nhmenu(winid wid, const char *prompt); 185 extern int curses_display_nhmenu(winid wid, int how, MENU_ITEM_P **_selected); 186 extern boolean curses_menu_exists(winid wid); 187 extern void curses_del_menu(winid, boolean); 188 189 /* cursstat.c */ 190 191 extern void curses_status_init(void); 192 extern void curses_status_finish(void); 193 extern void curses_status_update(int, genericptr_t, int, int, int, 194 unsigned long *); 195 196 /* cursinvt.c */ 197 198 extern void curs_purge_perminv_data(boolean); 199 extern void curs_update_invt(int); 200 extern void curs_add_invt(int, char, attr_t, const char *); 201 202 /* cursinit.c */ 203 204 extern void curses_create_main_windows(void); 205 extern void curses_init_nhcolors(void); 206 extern void curses_choose_character(void); 207 extern int curses_character_dialog(const char **choices, const char *prompt); 208 extern void curses_init_options(void); 209 extern void curses_display_splash_window(void); 210 extern void curses_cleanup(void); 211 212 /* cursmesg.c */ 213 214 extern void curses_message_win_puts(const char *message, boolean recursed); 215 extern void curses_got_input(void); 216 extern int curses_block(boolean require_tab); /* for MSGTYPE=STOP */ 217 extern int curses_more(void); 218 extern void curses_clear_unhighlight_message_window(void); 219 extern void curses_message_win_getline(const char *prompt, 220 char *answer, int buffer); 221 extern void curses_last_messages(void); 222 extern void curses_init_mesg_history(void); 223 extern void curses_teardown_messages(void); 224 extern void curses_prev_mesg(void); 225 extern void curses_count_window(const char *count_text); 226 char *curses_getmsghistory(boolean); 227 void curses_putmsghistory(const char *, boolean); 228 229 #endif /* WINCURS_H */ 230 231