macwin.h

Go to the documentation of this file.
00001 /*      SCCS Id: @(#)macwin.h   3.4     1996/01/15      */
00002 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
00003 /* NetHack may be freely redistributed.  See license for details. */
00004 
00005 #ifndef MACWIN_H
00006 # define MACWIN_H
00007 #undef red                      /* undef internal color const strings from decl */
00008 #undef green
00009 #undef blue
00010 
00011 #ifndef __MACH__
00012 #include <windows.h>
00013 #include <dialogs.h>
00014 #endif
00015 
00016 /* more headers */
00017 #ifdef THINK_C
00018 #include <pascal.h>     /* for CtoPStr and PtoCStr */
00019 #endif
00020 
00021 /* resources */
00022 #define PLAYER_NAME_RES_ID      1001
00023 
00024 /* fake some things if we don't have universal headers.. */
00025 #if 0  /*ndef NewUserItemProc*/
00026 typedef pascal void (*UserItemProcPtr)(WindowPtr theWindow, short itemNo);
00027 typedef UserItemProcPtr UserItemUPP;
00028 #define NewUserItemProc(p)      (UserItemUPP)(p)
00029 
00030 typedef pascal void (*ControlActionProcPtr)(ControlHandle theControl, short partCode);
00031 typedef ControlActionProcPtr ControlActionUPP;
00032 #define NewControlActionProc(p) (ControlActionUPP)(p)
00033 
00034 typedef ModalFilterProcPtr ModalFilterUPP;
00035 #define DisposeRoutineDescriptor(p)
00036 #endif
00037 
00038 /* misc */
00039 #ifdef __MWERKS__
00040 # define ResumeProcPtr long             /* for call to InitDialogs */
00041 #endif
00042 
00043 /* working dirs structure */
00044 typedef struct macdirs {
00045         Str32           dataName;
00046         short           dataRefNum;
00047         long            dataDirID;
00048 
00049         Str32           saveName;
00050         short           saveRefNum;
00051         long            saveDirID;
00052 
00053         Str32           levelName;
00054         short           levelRefNum;
00055         long            levelDirID;
00056 } MacDirs;
00057 
00058 typedef struct macflags {
00059         Bitfield (processes, 1);
00060         Bitfield (color, 1);
00061         Bitfield (folders, 1);
00062         Bitfield (tempMem, 1);
00063         Bitfield (help, 1);
00064         Bitfield (fsSpec, 1);
00065         Bitfield (trueType, 1);
00066         Bitfield (aux, 1);
00067         Bitfield (alias, 1);
00068         Bitfield (standardFile, 1);
00069         Bitfield (hasDebugger, 1);
00070         Bitfield (hasAE, 1);
00071         Bitfield (gotOpen, 1);
00072 } MacFlags;
00073 
00074 extern MacDirs theDirs;         /* used in macfile.c */
00075 extern MacFlags macFlags;
00076 
00077 /*
00078  * Mac windows
00079  */
00080 #define NUM_MACWINDOWS 15
00081 #define TEXT_BLOCK 512L
00082 
00083 /* Window constants */
00084 #define kMapWindow 0
00085 #define kStatusWindow 1
00086 #define kMessageWindow 2
00087 #define kTextWindow 3
00088 #define kMenuWindow 4
00089 #define kLastWindowKind kMenuWindow
00090 
00091 /*
00092  * This determines the minimum logical line length in text windows
00093  * That is; even if physical width is less, this is where line breaks
00094  * go at the minimum. 350 is about right for score lines with a
00095  * geneva 10 pt font.
00096  */
00097 #define MIN_RIGHT 350
00098 
00099 typedef struct {
00100         anything id;
00101         char accelerator;
00102         char groupAcc;
00103         short line;
00104 } MacMHMenuItem;
00105 
00106 typedef struct NhWindow {
00107         WindowPtr               its_window;
00108 
00109         short                   font_number;
00110         short                   font_size;
00111         short                   char_width;
00112         short                   row_height;
00113         short                   ascent_height;
00114         
00115         short                   x_size;
00116         short                   y_size;
00117         short                   x_curs;
00118         short                   y_curs;
00119         
00120         short           last_more_lin; /* Used by message window */
00121         short           save_lin;               /* Used by message window */
00122 
00123         short                   miSize;         /* size of menu items arrays */
00124         short                   miLen;          /* number of menu items in array */
00125         MacMHMenuItem   **menuInfo;             /* Used by menus (array handle) */
00126         char            menuChar;               /* next menu accelerator to use */
00127         short                   **menuSelected; /* list of selected elements from list */
00128         short                   miSelLen;       /* number of items selected */
00129         short                   how;            /* menu mode */
00130 
00131         char                    drawn;
00132         Handle                  windowText;
00133         long                    windowTextLen;
00134         short           scrollPos;
00135         ControlHandle   scrollBar;
00136 } NhWindow;
00137 
00138 extern Boolean CheckNhWin(WindowPtr mac_win);
00139 
00140 
00141 #define NUM_STAT_ROWS 2
00142 #define NUM_ROWS 22
00143 #define NUM_COLS 80 /* We shouldn't use column 0 */
00144 #define QUEUE_LEN 24
00145 
00146 extern NhWindow * theWindows;
00147 
00148 extern struct window_procs mac_procs;
00149 
00150 #define NHW_BASE 0
00151 extern winid BASE_WINDOW, WIN_MAP, WIN_MESSAGE, WIN_INVEN, WIN_STATUS;
00152 
00153 
00154 /*
00155  * External declarations for the window routines.
00156  */
00157 
00158 #define E extern
00159 
00160 /* ### dprintf.c ### */
00161 
00162 extern void dprintf (char *, ...);
00163 
00164 /* ### maccurs.c ### */
00165 
00166 extern Boolean RetrievePosition (short, short *, short *);
00167 extern Boolean RetrieveSize (short, short, short, short *, short *);
00168 extern void SaveWindowPos (WindowPtr);
00169 extern void SaveWindowSize (WindowPtr);
00170 extern Boolean FDECL(RetrieveWinPos, (WindowPtr,short *,short *));
00171 
00172 /* ### macerrs.c ### */
00173 
00174 extern void showerror(char *,const char *);
00175 extern Boolean itworked(short);
00176 extern void mustwork(short);
00177 extern void attemptingto(char *);
00178 /* appear to be unused 
00179 extern void comment(char *,long);
00180 extern void pushattemptingto(char *);
00181 extern void popattempt(void);
00182 */
00183 /* ### macfile.c ### */
00184 
00185 /* extern char *macgets(int fd, char *ptr, unsigned len); unused */
00186 extern void FDECL(C2P,(const char *c, unsigned char *p));
00187 extern void FDECL(P2C,(const unsigned char *p, char *c));
00188 
00189 /* ### macmenu.c ### */
00190 
00191 extern void DoMenuEvt (long);
00192 extern void InitMenuRes(void);
00193 extern void AdjustMenus(short);
00194 #define DimMenuBar() AdjustMenus(1)
00195 #define UndimMenuBar() AdjustMenus(0)
00196 
00197 /* ### macmain.c ### */
00198 
00199 extern void FDECL (process_openfile, (short s_vol, long s_dir, Str255 fNm, OSType ft));
00200 
00201 /* ### macwin.c ### */
00202 
00203 extern void AddToKeyQueue(unsigned char, Boolean);
00204 extern unsigned char GetFromKeyQueue (void);
00205 void trans_num_keys (EventRecord *);
00206 extern void NDECL (InitMac);
00207 int FDECL (try_key_queue, (char *));
00208 void FDECL (enter_topl_mode, (char *));
00209 void FDECL (leave_topl_mode, (char *));
00210 void FDECL (topl_set_resp, (char *, char));
00211 Boolean FDECL (topl_key, (unsigned char, Boolean));
00212 E void FDECL(HandleEvent, (EventRecord *));     /* used in mmodal.c */
00213 extern void NDECL(port_help);
00214 
00215 extern Boolean small_screen;
00216 
00217 E void FDECL(mac_init_nhwindows, (int *, char **));
00218 E void NDECL(mac_askname);
00219 E void NDECL(mac_get_nh_event);
00220 E void FDECL(mac_exit_nhwindows, (const char *));
00221 E winid FDECL(mac_create_nhwindow, (int));
00222 E void FDECL(mac_clear_nhwindow, (winid));
00223 E void FDECL(mac_display_nhwindow, (winid, BOOLEAN_P));
00224 E void FDECL(mac_destroy_nhwindow, (winid));
00225 E void FDECL(mac_curs, (winid,int,int));
00226 E void FDECL(mac_putstr, (winid, int, const char *));
00227 E void FDECL(mac_start_menu, (winid));
00228 E void FDECL(mac_add_menu, (winid,int,const anything *,
00229                 CHAR_P,CHAR_P,int,const char *, BOOLEAN_P));
00230 E void FDECL(mac_end_menu, (winid, const char *));
00231 E int FDECL(mac_select_menu, (winid, int, menu_item **));
00232 #ifdef CLIPPING
00233 E void FDECL(mac_cliparound, (int, int));
00234 #endif
00235 E int NDECL(mac_nhgetch);
00236 E int FDECL(mac_nh_poskey, (int *, int *, int *));
00237 E int NDECL(mac_doprev_message);
00238 E char FDECL(mac_yn_function, (const char *, const char *, CHAR_P));
00239 E void FDECL(mac_getlin, (const char *,char *));
00240 E int NDECL(mac_get_ext_cmd);
00241 E void FDECL(mac_number_pad, (int));
00242 E void NDECL(mac_delay_output);
00243 
00244 #undef E
00245 
00246 #endif /* ! MACWIN_H */