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