1 /* NetHack 3.6 macwin.h $NHDT-Date: 1447755970 2015/11/17 10:26:10 $ $NHDT-Branch: master $:$NHDT-Revision: 1.10 $ */ 2 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3 /*-Copyright (c) Kevin Hugo, 2003. */ 4 /* NetHack may be freely redistributed. See license for details. */ 5 6 #ifndef MACWIN_H 7 #define MACWIN_H 8 #undef red /* undef internal color const strings from decl */ 9 #undef green 10 #undef blue 11 12 #ifndef __MACH__ 13 #include <windows.h> 14 #include <dialogs.h> 15 #endif 16 17 /* more headers */ 18 #ifdef THINK_C 19 #include <pascal.h> /* for CtoPStr and PtoCStr */ 20 #endif 21 22 /* resources */ 23 #define PLAYER_NAME_RES_ID 1001 24 25 /* fake some things if we don't have universal headers.. */ 26 #if 0 /*ndef NewUserItemProc*/ 27 typedef pascal void (*UserItemProcPtr)(WindowPtr theWindow, short itemNo); 28 typedef UserItemProcPtr UserItemUPP; 29 #define NewUserItemProc(p) (UserItemUPP)(p) 30 31 typedef pascal void (*ControlActionProcPtr)(ControlHandle theControl, 32 short partCode); 33 typedef ControlActionProcPtr ControlActionUPP; 34 #define NewControlActionProc(p) (ControlActionUPP)(p) 35 36 typedef ModalFilterProcPtr ModalFilterUPP; 37 #define DisposeRoutineDescriptor(p) 38 #endif 39 40 /* misc */ 41 #ifdef __MWERKS__ 42 #define ResumeProcPtr long /* for call to InitDialogs */ 43 #endif 44 45 /* working dirs structure */ 46 typedef struct macdirs { 47 Str32 dataName; 48 short dataRefNum; 49 long dataDirID; 50 51 Str32 saveName; 52 short saveRefNum; 53 long saveDirID; 54 55 Str32 levelName; 56 short levelRefNum; 57 long levelDirID; 58 } MacDirs; 59 60 typedef struct macflags { 61 Bitfield(processes, 1); 62 Bitfield(color, 1); 63 Bitfield(folders, 1); 64 Bitfield(tempMem, 1); 65 Bitfield(help, 1); 66 Bitfield(fsSpec, 1); 67 Bitfield(trueType, 1); 68 Bitfield(aux, 1); 69 Bitfield(alias, 1); 70 Bitfield(standardFile, 1); 71 Bitfield(hasDebugger, 1); 72 Bitfield(hasAE, 1); 73 Bitfield(gotOpen, 1); 74 } MacFlags; 75 76 extern MacDirs theDirs; /* used in macfile.c */ 77 extern MacFlags macFlags; 78 79 /* 80 * Mac windows 81 */ 82 #define NUM_MACWINDOWS 15 83 #define TEXT_BLOCK 512L 84 85 /* Window constants */ 86 #define kMapWindow 0 87 #define kStatusWindow 1 88 #define kMessageWindow 2 89 #define kTextWindow 3 90 #define kMenuWindow 4 91 #define kLastWindowKind kMenuWindow 92 93 /* 94 * This determines the minimum logical line length in text windows 95 * That is; even if physical width is less, this is where line breaks 96 * go at the minimum. 350 is about right for score lines with a 97 * geneva 10 pt font. 98 */ 99 #define MIN_RIGHT 350 100 101 typedef struct { 102 anything id; 103 char accelerator; 104 char groupAcc; 105 short line; 106 } MacMHMenuItem; 107 108 typedef struct NhWindow { 109 WindowPtr its_window; 110 111 short font_number; 112 short font_size; 113 short char_width; 114 short row_height; 115 short ascent_height; 116 117 short x_size; 118 short y_size; 119 short x_curs; 120 short y_curs; 121 122 short last_more_lin; /* Used by message window */ 123 short save_lin; /* Used by message window */ 124 125 short miSize; /* size of menu items arrays */ 126 short miLen; /* number of menu items in array */ 127 MacMHMenuItem **menuInfo; /* Used by menus (array handle) */ 128 char menuChar; /* next menu accelerator to use */ 129 short **menuSelected; /* list of selected elements from list */ 130 short miSelLen; /* number of items selected */ 131 short how; /* menu mode */ 132 133 char drawn; 134 Handle windowText; 135 long windowTextLen; 136 short scrollPos; 137 ControlHandle scrollBar; 138 } NhWindow; 139 140 extern Boolean CheckNhWin(WindowPtr mac_win); 141 142 #define NUM_STAT_ROWS 2 143 #define NUM_ROWS 22 144 #define NUM_COLS 80 /* We shouldn't use column 0 */ 145 #define QUEUE_LEN 24 146 147 extern NhWindow *theWindows; 148 149 extern struct window_procs mac_procs; 150 151 #define NHW_BASE 0 152 extern winid BASE_WINDOW, WIN_MAP, WIN_MESSAGE, WIN_INVEN, WIN_STATUS; 153 154 /* 155 * External declarations for the window routines. 156 */ 157 158 #define E extern 159 160 /* ### dprintf.c ### */ 161 162 extern void dprintf(char *, ...); 163 164 /* ### maccurs.c ### */ 165 166 extern Boolean RetrievePosition(short, short *, short *); 167 extern Boolean RetrieveSize(short, short, short, short *, short *); 168 extern void SaveWindowPos(WindowPtr); 169 extern void SaveWindowSize(WindowPtr); 170 extern Boolean FDECL(RetrieveWinPos, (WindowPtr, short *, short *)); 171 172 /* ### macerrs.c ### */ 173 174 extern void showerror(char *, const char *); 175 extern Boolean itworked(short); 176 extern void mustwork(short); 177 extern void attemptingto(char *); 178 /* appear to be unused 179 extern void comment(char *,long); 180 extern void pushattemptingto(char *); 181 extern void popattempt(void); 182 */ 183 /* ### macfile.c ### */ 184 185 /* extern char *macgets(int fd, char *ptr, unsigned len); unused */ 186 extern void FDECL(C2P, (const char *c, unsigned char *p)); 187 extern void FDECL(P2C, (const unsigned char *p, char *c)); 188 189 /* ### macmenu.c ### */ 190 191 extern void DoMenuEvt(long); 192 extern void InitMenuRes(void); 193 extern void AdjustMenus(short); 194 #define DimMenuBar() AdjustMenus(1) 195 #define UndimMenuBar() AdjustMenus(0) 196 197 /* ### macmain.c ### */ 198 199 extern void FDECL(process_openfile, 200 (short s_vol, long s_dir, Str255 fNm, OSType ft)); 201 202 /* ### macwin.c ### */ 203 204 extern void AddToKeyQueue(unsigned char, Boolean); 205 extern unsigned char GetFromKeyQueue(void); 206 void trans_num_keys(EventRecord *); 207 extern void NDECL(InitMac); 208 int FDECL(try_key_queue, (char *)); 209 void FDECL(enter_topl_mode, (char *)); 210 void FDECL(leave_topl_mode, (char *)); 211 void FDECL(topl_set_resp, (char *, char)); 212 Boolean FDECL(topl_key, (unsigned char, Boolean)); 213 E void FDECL(HandleEvent, (EventRecord *)); /* used in mmodal.c */ 214 extern void NDECL(port_help); 215 216 extern Boolean small_screen; 217 218 E void FDECL(mac_init_nhwindows, (int *, char **)); 219 E void NDECL(mac_askname); 220 E void NDECL(mac_get_nh_event); 221 E void FDECL(mac_exit_nhwindows, (const char *)); 222 E winid FDECL(mac_create_nhwindow, (int)); 223 E void FDECL(mac_clear_nhwindow, (winid)); 224 E void FDECL(mac_display_nhwindow, (winid, BOOLEAN_P)); 225 E void FDECL(mac_destroy_nhwindow, (winid)); 226 E void FDECL(mac_curs, (winid, int, int)); 227 E void FDECL(mac_putstr, (winid, int, const char *)); 228 E void FDECL(mac_start_menu, (winid)); 229 E void FDECL(mac_add_menu, (winid, int, const anything *, CHAR_P, CHAR_P, int, 230 const char *, BOOLEAN_P)); 231 E void FDECL(mac_end_menu, (winid, const char *)); 232 E int FDECL(mac_select_menu, (winid, int, menu_item **)); 233 #ifdef CLIPPING 234 E void FDECL(mac_cliparound, (int, int)); 235 #endif 236 E int NDECL(mac_nhgetch); 237 E int FDECL(mac_nh_poskey, (int *, int *, int *)); 238 E int NDECL(mac_doprev_message); 239 E char FDECL(mac_yn_function, (const char *, const char *, CHAR_P)); 240 E void FDECL(mac_getlin, (const char *, char *)); 241 E int NDECL(mac_get_ext_cmd); 242 E void FDECL(mac_number_pad, (int)); 243 E void NDECL(mac_delay_output); 244 245 #undef E 246 247 #endif /* ! MACWIN_H */ 248