OSDN Git Service

Initial Import
[nethackexpress/trunk.git] / include / winprocs.h
1 /*      SCCS Id: @(#)winprocs.h 3.4     2003/01/08      */
2 /* Copyright (c) David Cohrs, 1992                                */
3 /* NetHack may be freely redistributed.  See license for details. */
4
5 #ifndef WINPROCS_H
6 #define WINPROCS_H
7
8 struct window_procs {
9     const char *name;
10     unsigned long wincap;       /* window port capability options supported */
11     unsigned long wincap2;      /* additional window port capability options supported */
12     void FDECL((*win_init_nhwindows), (int *, char **));
13     void NDECL((*win_player_selection));
14     void NDECL((*win_askname));
15     void NDECL((*win_get_nh_event)) ;
16     void FDECL((*win_exit_nhwindows), (const char *));
17     void FDECL((*win_suspend_nhwindows), (const char *));
18     void NDECL((*win_resume_nhwindows));
19     winid FDECL((*win_create_nhwindow), (int));
20     void FDECL((*win_clear_nhwindow), (winid));
21     void FDECL((*win_display_nhwindow), (winid, BOOLEAN_P));
22     void FDECL((*win_destroy_nhwindow), (winid));
23     void FDECL((*win_curs), (winid,int,int));
24     void FDECL((*win_putstr), (winid, int, const char *));
25     void FDECL((*win_display_file), (const char *, BOOLEAN_P));
26     void FDECL((*win_start_menu), (winid));
27     void FDECL((*win_add_menu), (winid,int,const ANY_P *,
28                 CHAR_P,CHAR_P,int,const char *, BOOLEAN_P));
29     void FDECL((*win_end_menu), (winid, const char *));
30     int FDECL((*win_select_menu), (winid, int, MENU_ITEM_P **));
31     char FDECL((*win_message_menu), (CHAR_P,int,const char *));
32     void NDECL((*win_update_inventory));
33     void NDECL((*win_mark_synch));
34     void NDECL((*win_wait_synch));
35 #ifdef CLIPPING
36     void FDECL((*win_cliparound), (int, int));
37 #endif
38 #ifdef POSITIONBAR
39     void FDECL((*win_update_positionbar), (char *));
40 #endif
41     void FDECL((*win_print_glyph), (winid,XCHAR_P,XCHAR_P,int));
42     void FDECL((*win_raw_print), (const char *));
43     void FDECL((*win_raw_print_bold), (const char *));
44     int NDECL((*win_nhgetch));
45     int FDECL((*win_nh_poskey), (int *, int *, int *));
46     void NDECL((*win_nhbell));
47     int NDECL((*win_doprev_message));
48     char FDECL((*win_yn_function), (const char *, const char *, CHAR_P));
49     void FDECL((*win_getlin), (const char *,char *));
50     int NDECL((*win_get_ext_cmd));
51     void FDECL((*win_number_pad), (int));
52     void NDECL((*win_delay_output));
53 #ifdef CHANGE_COLOR
54     void FDECL((*win_change_color), (int,long,int));
55 #ifdef MAC
56     void FDECL((*win_change_background), (int));
57     short FDECL((*win_set_font_name), (winid, char *));
58 #endif
59     char * NDECL((*win_get_color_string));
60 #endif
61
62     /* other defs that really should go away (they're tty specific) */
63     void NDECL((*win_start_screen));
64     void NDECL((*win_end_screen));
65
66     void FDECL((*win_outrip), (winid,int));
67     void FDECL((*win_preference_update), (const char *));
68 };
69
70 extern NEARDATA struct window_procs windowprocs;
71
72 /*
73  * If you wish to only support one window system and not use procedure
74  * pointers, add the appropriate #ifdef below.
75  */
76
77 #define init_nhwindows (*windowprocs.win_init_nhwindows)
78 #define player_selection (*windowprocs.win_player_selection)
79 #define askname (*windowprocs.win_askname)
80 #define get_nh_event (*windowprocs.win_get_nh_event)
81 #define exit_nhwindows (*windowprocs.win_exit_nhwindows)
82 #define suspend_nhwindows (*windowprocs.win_suspend_nhwindows)
83 #define resume_nhwindows (*windowprocs.win_resume_nhwindows)
84 #define create_nhwindow (*windowprocs.win_create_nhwindow)
85 #define clear_nhwindow (*windowprocs.win_clear_nhwindow)
86 #define display_nhwindow (*windowprocs.win_display_nhwindow)
87 #define destroy_nhwindow (*windowprocs.win_destroy_nhwindow)
88 #define curs (*windowprocs.win_curs)
89 #define putstr (*windowprocs.win_putstr)
90 #define display_file (*windowprocs.win_display_file)
91 #define start_menu (*windowprocs.win_start_menu)
92 #define add_menu (*windowprocs.win_add_menu)
93 #define end_menu (*windowprocs.win_end_menu)
94 #define select_menu (*windowprocs.win_select_menu)
95 #define message_menu (*windowprocs.win_message_menu)
96 #define update_inventory (*windowprocs.win_update_inventory)
97 #define mark_synch (*windowprocs.win_mark_synch)
98 #define wait_synch (*windowprocs.win_wait_synch)
99 #ifdef CLIPPING
100 #define cliparound (*windowprocs.win_cliparound)
101 #endif
102 #ifdef POSITIONBAR
103 #define update_positionbar (*windowprocs.win_update_positionbar)
104 #endif
105 #define print_glyph (*windowprocs.win_print_glyph)
106 #define raw_print (*windowprocs.win_raw_print)
107 #define raw_print_bold (*windowprocs.win_raw_print_bold)
108 #define nhgetch (*windowprocs.win_nhgetch)
109 #define nh_poskey (*windowprocs.win_nh_poskey)
110 #define nhbell (*windowprocs.win_nhbell)
111 #define nh_doprev_message (*windowprocs.win_doprev_message)
112 #define getlin (*windowprocs.win_getlin)
113 #define get_ext_cmd (*windowprocs.win_get_ext_cmd)
114 #define number_pad (*windowprocs.win_number_pad)
115 #define delay_output (*windowprocs.win_delay_output)
116 #ifdef CHANGE_COLOR
117 #define change_color (*windowprocs.win_change_color)
118 #ifdef MAC
119 #define change_background (*windowprocs.win_change_background)
120 #define set_font_name (*windowprocs.win_set_font_name)
121 #endif
122 #define get_color_string (*windowprocs.win_get_color_string)
123 #endif
124
125 /* 3.4.2: There is a real yn_function() in the core now, which does
126  *        some buffer length validation on the parameters prior to
127  *        invoking the window port routine. yn_function() is in cmd.c
128  */
129 /* #define yn_function (*windowprocs.win_yn_function) */
130
131 /* other defs that really should go away (they're tty specific) */
132 #define start_screen (*windowprocs.win_start_screen)
133 #define end_screen (*windowprocs.win_end_screen)
134
135 #define outrip (*windowprocs.win_outrip)
136 #define preference_update (*windowprocs.win_preference_update)
137
138 /*
139  * WINCAP
140  * Window port preference capability bits.
141  * Some day this might be better in its own wincap.h file.
142  */
143 #define WC_COLOR         0x01L          /* 01 Port can display things in color       */
144 #define WC_HILITE_PET    0x02L          /* 02 supports hilite pet                    */
145 #define WC_ASCII_MAP     0x04L          /* 03 supports an ascii map                  */
146 #define WC_TILED_MAP     0x08L          /* 04 supports a tiled map                   */
147 #define WC_PRELOAD_TILES 0x10L          /* 05 supports pre-loading tiles             */
148 #define WC_TILE_WIDTH    0x20L          /* 06 prefer this width of tile              */
149 #define WC_TILE_HEIGHT   0x40L          /* 07 prefer this height of tile             */
150 #define WC_TILE_FILE     0x80L          /* 08 alternative tile file name             */
151 #define WC_INVERSE       0x100L         /* 09 Port supports inverse video            */
152 #define WC_ALIGN_MESSAGE 0x200L         /* 10 supports message alignmt top|b|l|r     */
153 #define WC_ALIGN_STATUS  0x400L         /* 11 supports status alignmt top|b|l|r      */
154 #define WC_VARY_MSGCOUNT 0x800L         /* 12 supports varying message window        */
155 #define WC_FONT_MAP      0x1000L        /* 13 supports specification of map win font */
156 #define WC_FONT_MESSAGE  0x2000L        /* 14 supports specification of msg win font */
157 #define WC_FONT_STATUS   0x4000L        /* 15 supports specification of sts win font */
158 #define WC_FONT_MENU     0x8000L        /* 16 supports specification of mnu win font */
159 #define WC_FONT_TEXT     0x10000L       /* 17 supports specification of txt win font */
160 #define WC_FONTSIZ_MAP   0x20000L       /* 18 supports specification of map win font */
161 #define WC_FONTSIZ_MESSAGE 0x40000L     /* 19 supports specification of msg win font */
162 #define WC_FONTSIZ_STATUS 0x80000L      /* 20 supports specification of sts win font */
163 #define WC_FONTSIZ_MENU  0x100000L      /* 21 supports specification of mnu win font */
164 #define WC_FONTSIZ_TEXT  0x200000L      /* 22 supports specification of txt win font */
165 #define WC_SCROLL_MARGIN 0x400000L      /* 23 supports setting scroll margin for map */
166 #define WC_SPLASH_SCREEN 0x800000L      /* 24 supports display of splash screen      */
167 #define WC_POPUP_DIALOG  0x1000000L     /* 25 supports queries in pop dialogs        */
168 #define WC_SCROLL_AMOUNT 0x2000000L     /* 26 scroll this amount at scroll margin    */
169 #define WC_EIGHT_BIT_IN  0x4000000L     /* 27 8-bit character input                  */
170 #define WC_PERM_INVENT   0x8000000L     /* 28 8-bit character input                  */
171 #define WC_MAP_MODE      0x10000000L    /* 29 map_mode option                        */
172 #define WC_WINDOWCOLORS  0x20000000L    /* 30 background color for message window    */
173 #define WC_PLAYER_SELECTION  0x40000000L /* 31 background color for message window    */
174 #define WC_MOUSE_SUPPORT 0x80000000L    /* 32 mouse support                          */
175                                         /* no free bits */
176
177 #define WC2_FULLSCREEN          0x01L   /* 01 display full screen                    */
178 #define WC2_SOFTKEYBOARD        0x02L   /* 02 software keyboard                      */
179 #define WC2_WRAPTEXT            0x04L   /* 04 wrap long lines of text                */
180                                         /* 29 free bits */
181
182 #define ALIGN_LEFT      1
183 #define ALIGN_RIGHT     2
184 #define ALIGN_TOP       3
185 #define ALIGN_BOTTOM    4
186
187 /* player_selection */
188 #define VIA_DIALOG      0
189 #define VIA_PROMPTS     1
190
191 /* map_mode settings - deprecated */
192 #define MAP_MODE_TILES          0
193 #define MAP_MODE_ASCII4x6       1
194 #define MAP_MODE_ASCII6x8       2
195 #define MAP_MODE_ASCII8x8       3
196 #define MAP_MODE_ASCII16x8      4
197 #define MAP_MODE_ASCII7x12      5
198 #define MAP_MODE_ASCII8x12      6
199 #define MAP_MODE_ASCII16x12     7
200 #define MAP_MODE_ASCII12x16     8
201 #define MAP_MODE_ASCII10x18     9
202 #define MAP_MODE_ASCII_FIT_TO_SCREEN 10
203 #define MAP_MODE_TILES_FIT_TO_SCREEN 11
204
205 #if 0
206 #define WC_SND_SOUND     0x01L          /* 01 Port has some sound capabilities       */
207 #define WC_SND_SPEAKER   0x02L          /* 02 Sound supported via built-in speaker   */
208 #define WC_SND_STEREO    0x04L          /* 03 Stereo sound supported                 */
209 #define WC_SND_RAW       0x08L          /* 04 Raw sound supported                    */
210 #define WC_SND_WAVE      0x10L          /* 05 Wave support                           */
211 #define WC_SND_MIDI      0x20L          /* 06 Midi support                           */
212                                         /* 26 free bits */
213 #endif
214
215 struct wc_Opt {
216         const char *wc_name;
217         unsigned long wc_bit;
218 };
219
220 #endif /* WINPROCS_H */