Files
nethack/outdated/include/macwin.h
2021-01-31 13:40:15 -05:00

248 lines
6.4 KiB
C

/* NetHack 3.7 macwin.h $NHDT-Date: 1596498543 2020/08/03 23:49:03 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.14 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Kevin Hugo, 2003. */
/* NetHack may be freely redistributed. See license for details. */
#ifndef MACWIN_H
#define MACWIN_H
#undef red /* undef internal color const strings from decl */
#undef green
#undef blue
#ifndef __MACH__
#include <windows.h>
#include <dialogs.h>
#endif
/* more headers */
#ifdef THINK_C
#include <pascal.h> /* for CtoPStr and PtoCStr */
#endif
/* resources */
#define PLAYER_NAME_RES_ID 1001
/* fake some things if we don't have universal headers.. */
#if 0 /*ndef NewUserItemProc*/
typedef pascal void (*UserItemProcPtr)(WindowPtr theWindow, short itemNo);
typedef UserItemProcPtr UserItemUPP;
#define NewUserItemProc(p) (UserItemUPP)(p)
typedef pascal void (*ControlActionProcPtr)(ControlHandle theControl,
short partCode);
typedef ControlActionProcPtr ControlActionUPP;
#define NewControlActionProc(p) (ControlActionUPP)(p)
typedef ModalFilterProcPtr ModalFilterUPP;
#define DisposeRoutineDescriptor(p)
#endif
/* misc */
#ifdef __MWERKS__
#define ResumeProcPtr long /* for call to InitDialogs */
#endif
/* working dirs structure */
typedef struct macdirs {
Str32 dataName;
short dataRefNum;
long dataDirID;
Str32 saveName;
short saveRefNum;
long saveDirID;
Str32 levelName;
short levelRefNum;
long levelDirID;
} MacDirs;
typedef struct macflags {
Bitfield(processes, 1);
Bitfield(color, 1);
Bitfield(folders, 1);
Bitfield(tempMem, 1);
Bitfield(help, 1);
Bitfield(fsSpec, 1);
Bitfield(trueType, 1);
Bitfield(aux, 1);
Bitfield(alias, 1);
Bitfield(standardFile, 1);
Bitfield(hasDebugger, 1);
Bitfield(hasAE, 1);
Bitfield(gotOpen, 1);
} MacFlags;
extern MacDirs theDirs; /* used in macfile.c */
extern MacFlags macFlags;
/*
* Mac windows
*/
#define NUM_MACWINDOWS 15
#define TEXT_BLOCK 512L
/* Window constants */
#define kMapWindow 0
#define kStatusWindow 1
#define kMessageWindow 2
#define kTextWindow 3
#define kMenuWindow 4
#define kLastWindowKind kMenuWindow
/*
* This determines the minimum logical line length in text windows
* That is; even if physical width is less, this is where line breaks
* go at the minimum. 350 is about right for score lines with a
* geneva 10 pt font.
*/
#define MIN_RIGHT 350
typedef struct {
anything id;
char accelerator;
char groupAcc;
short line;
} MacMHMenuItem;
typedef struct NhWindow {
WindowPtr its_window;
short font_number;
short font_size;
short char_width;
short row_height;
short ascent_height;
short x_size;
short y_size;
short x_curs;
short y_curs;
short last_more_lin; /* Used by message window */
short save_lin; /* Used by message window */
short miSize; /* size of menu items arrays */
short miLen; /* number of menu items in array */
MacMHMenuItem **menuInfo; /* Used by menus (array handle) */
char menuChar; /* next menu accelerator to use */
short **menuSelected; /* list of selected elements from list */
short miSelLen; /* number of items selected */
short how; /* menu mode */
char drawn;
Handle windowText;
long windowTextLen;
short scrollPos;
ControlHandle scrollBar;
} NhWindow;
extern Boolean CheckNhWin(WindowPtr mac_win);
#define NUM_STAT_ROWS 2
#define NUM_ROWS 22
#define NUM_COLS 80 /* We shouldn't use column 0 */
#define QUEUE_LEN 24
extern NhWindow *theWindows;
extern struct window_procs mac_procs;
#define NHW_BASE 0
extern winid BASE_WINDOW, WIN_MAP, WIN_MESSAGE, WIN_INVEN, WIN_STATUS;
/*
* External declarations for the window routines.
*/
#define E extern
/* ### dprintf.c ### */
extern void dprintf(char *, ...);
/* ### maccurs.c ### */
extern Boolean RetrievePosition(short, short *, short *);
extern Boolean RetrieveSize(short, short, short, short *, short *);
extern void SaveWindowPos(WindowPtr);
extern void SaveWindowSize(WindowPtr);
extern Boolean RetrieveWinPos(WindowPtr, short *, short *);
/* ### macerrs.c ### */
extern void showerror(char *, const char *);
extern Boolean itworked(short);
extern void mustwork(short);
extern void attemptingto(char *);
/* appear to be unused
extern void comment(char *,long);
extern void pushattemptingto(char *);
extern void popattempt(void);
*/
/* ### macfile.c ### */
/* extern char *macgets(int fd, char *ptr, unsigned len); unused */
extern void C2P(const char *c, unsigned char *p);
extern void P2C(const unsigned char *p, char *c);
/* ### macmenu.c ### */
extern void DoMenuEvt(long);
extern void InitMenuRes(void);
extern void AdjustMenus(short);
#define DimMenuBar() AdjustMenus(1)
#define UndimMenuBar() AdjustMenus(0)
/* ### macmain.c ### */
extern void process_openfile(short s_vol, long s_dir, Str255 fNm,
OSType ft);
/* ### macwin.c ### */
extern void AddToKeyQueue(unsigned char, Boolean);
extern unsigned char GetFromKeyQueue(void);
void trans_num_keys(EventRecord *);
extern void InitMac(void);
int try_key_queue(char *);
void enter_topl_mode(char *);
void leave_topl_mode(char *);
void topl_set_resp(char *, char);
Boolean topl_key(unsigned char, Boolean);
E void HandleEvent(EventRecord *); /* used in mmodal.c */
extern void port_help(void);
extern Boolean small_screen;
E void mac_init_nhwindows(int *, char **);
E void mac_askname(void);
E void mac_get_nh_event(void);
E void mac_exit_nhwindows(const char *);
E winid mac_create_nhwindow(int);
E void mac_clear_nhwindow(winid);
E void mac_display_nhwindow(winid, BOOLEAN_P);
E void mac_destroy_nhwindow(winid);
E void mac_curs(winid, int, int);
E void mac_putstr(winid, int, const char *);
E void mac_start_menu(winid, unsigned long mbehavior);
E void mac_add_menu(winid, int, const anything *, CHAR_P, CHAR_P, int,
const char *, unsigned int);
E void mac_end_menu(winid, const char *);
E int mac_select_menu(winid, int, menu_item **);
#ifdef CLIPPING
E void mac_cliparound(int, int);
#endif
E int mac_nhgetch(void);
E int mac_nh_poskey(int *, int *, int *);
E int mac_doprev_message(void);
E char mac_yn_function(const char *, const char *, CHAR_P);
E void mac_getlin(const char *, char *);
E int mac_get_ext_cmd(void);
E void mac_number_pad(int);
E void mac_delay_output(void);
#undef E
#endif /* ! MACWIN_H */