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*/ 26typedef pascal void (*UserItemProcPtr)(WindowPtr theWindow, short itemNo); 27typedef UserItemProcPtr UserItemUPP; 28#define NewUserItemProc(p) (UserItemUPP)(p) 29 30typedef pascal void (*ControlActionProcPtr)(ControlHandle theControl, short partCode); 31typedef ControlActionProcPtr ControlActionUPP; 32#define NewControlActionProc(p) (ControlActionUPP)(p) 33 34typedef 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 */ 44typedef 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 58typedef 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 74extern MacDirs theDirs; /* used in macfile.c */ 75extern 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 99typedef struct { 100 anything id; 101 char accelerator; 102 char groupAcc; 103 short line; 104} MacMHMenuItem; 105 106typedef 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 138extern 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 146extern NhWindow * theWindows; 147 148extern struct window_procs mac_procs; 149 150#define NHW_BASE 0 151extern 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 162extern void dprintf (char *, ...); 163 164/* ### maccurs.c ### */ 165 166extern Boolean RetrievePosition (short, short *, short *); 167extern Boolean RetrieveSize (short, short, short, short *, short *); 168extern void SaveWindowPos (WindowPtr); 169extern void SaveWindowSize (WindowPtr); 170extern Boolean FDECL(RetrieveWinPos, (WindowPtr,short *,short *)); 171 172/* ### macerrs.c ### */ 173 174extern void showerror(char *,const char *); 175extern Boolean itworked(short); 176extern void mustwork(short); 177extern void attemptingto(char *); 178/* appear to be unused 179extern void comment(char *,long); 180extern void pushattemptingto(char *); 181extern void popattempt(void); 182*/ 183/* ### macfile.c ### */ 184 185/* extern char *macgets(int fd, char *ptr, unsigned len); unused */ 186extern void FDECL(C2P,(const char *c, unsigned char *p)); 187extern void FDECL(P2C,(const unsigned char *p, char *c)); 188 189/* ### macmenu.c ### */ 190 191extern void DoMenuEvt (long); 192extern void InitMenuRes(void); 193extern void AdjustMenus(short); 194#define DimMenuBar() AdjustMenus(1) 195#define UndimMenuBar() AdjustMenus(0) 196 197/* ### macmain.c ### */ 198 199extern void FDECL (process_openfile, (short s_vol, long s_dir, Str255 fNm, OSType ft)); 200 201/* ### macwin.c ### */ 202 203extern void AddToKeyQueue(unsigned char, Boolean); 204extern unsigned char GetFromKeyQueue (void); 205void trans_num_keys (EventRecord *); 206extern void NDECL (InitMac); 207int FDECL (try_key_queue, (char *)); 208void FDECL (enter_topl_mode, (char *)); 209void FDECL (leave_topl_mode, (char *)); 210void FDECL (topl_set_resp, (char *, char)); 211Boolean FDECL (topl_key, (unsigned char, Boolean)); 212E void FDECL(HandleEvent, (EventRecord *)); /* used in mmodal.c */ 213extern void NDECL(port_help); 214 215extern Boolean small_screen; 216 217E void FDECL(mac_init_nhwindows, (int *, char **)); 218E void NDECL(mac_askname); 219E void NDECL(mac_get_nh_event); 220E void FDECL(mac_exit_nhwindows, (const char *)); 221E winid FDECL(mac_create_nhwindow, (int)); 222E void FDECL(mac_clear_nhwindow, (winid)); 223E void FDECL(mac_display_nhwindow, (winid, BOOLEAN_P)); 224E void FDECL(mac_destroy_nhwindow, (winid)); 225E void FDECL(mac_curs, (winid,int,int)); 226E void FDECL(mac_putstr, (winid, int, const char *)); 227E void FDECL(mac_start_menu, (winid)); 228E void FDECL(mac_add_menu, (winid,int,const anything *, 229 CHAR_P,CHAR_P,int,const char *, BOOLEAN_P)); 230E void FDECL(mac_end_menu, (winid, const char *)); 231E int FDECL(mac_select_menu, (winid, int, menu_item **)); 232#ifdef CLIPPING 233E void FDECL(mac_cliparound, (int, int)); 234#endif 235E int NDECL(mac_nhgetch); 236E int FDECL(mac_nh_poskey, (int *, int *, int *)); 237E int NDECL(mac_doprev_message); 238E char FDECL(mac_yn_function, (const char *, const char *, CHAR_P)); 239E void FDECL(mac_getlin, (const char *,char *)); 240E int NDECL(mac_get_ext_cmd); 241E void FDECL(mac_number_pad, (int)); 242E void NDECL(mac_delay_output); 243 244#undef E 245 246#endif /* ! MACWIN_H */ 247