1 /* File: tnb.h */ 2 3 /* Purpose: AngbandTk header */ 4 5 /* 6 * Copyright (c) 1997-2001 Tim Baker 7 * 8 * This software may be copied and distributed for educational, research, and 9 * not for profit purposes provided that this copyright and statement are 10 * included in all such copies. 11 */ 12 13 #ifndef _INCLUDE_TNB_H_ 14 #define _INCLUDE_TNB_H_ 15 16 #include <tk.h> 17 #include <tcl.h> 18 #include "../angband.h" 19 20 #if !defined(PLATFORM_WIN) && !defined(PLATFORM_X11) 21 #error "You must define one of PLATFORM_WIN or PLATFORM_X11" 22 #endif /* */ 23 24 /* Hack - prevent warnings from tk headers */ 25 #ifdef errno 26 # undef errno 27 # define errno errno_hack 28 #endif /* errno */ 29 30 #ifdef PLATFORM_WIN 31 # include <windows.h> 32 # include <tkWinInt.h> 33 #endif /* PLATFORM_WIN */ 34 35 #ifdef PLATFORM_X11 36 37 /* Hack for makefile.std */ 38 # ifndef HAVE_LIMITS_H 39 # define HAVE_LIMITS_H 40 # define HAVE_UNISTD_H 41 # endif 42 /* 43 * Hack - prevent a huge number of compiler warnings when <tclInt.h> 44 * is included indirectly below. 45 */ 46 /* # define _TCLINTDECLS */ 47 /* # include <tkInt.h> */ 48 #endif /* PLATFORM_X11 */ 49 50 51 /* main-tnb.c */ 52 extern bool game_in_progress; 53 extern char ANGBAND_DIR_TK[1024]; 54 55 extern Tcl_Interp *g_interp; 56 57 extern int tnb_tile_x; 58 extern int tnb_tile_y; 59 60 extern char tnb_tile_file[1024]; 61 extern char tnb_font_file[1024]; 62 extern int tnb_font_size; 63 64 extern void tnb_get_term(int x, int y, byte *a, char *c, byte *ta, char *tc); 65 66 /* plat.c */ 67 68 typedef struct BitmapType { 69 unsigned char *pixelPtr; /* Address of top-left pixel */ 70 int width; /* Width in pixels */ 71 int height; /* Height in pixels */ 72 int depth; /* 8, 16 or 24 */ 73 int pitch; /* Address difference between vertically adjacent pixels */ 74 int pixelSize; /* Address difference between horizontally adjacent pixels */ 75 Pixmap pixmap; 76 void *platData; /* Platform-specific info */ 77 } BitmapType, *BitmapPtr; 78 79 extern void *Plat_PaletteInit(unsigned char *rgb); 80 extern int Plat_XColor2Pixel(XColor *xColorPtr); 81 extern void Plat_SyncDisplay(Display *display); 82 extern BitmapPtr Font_Load(Tcl_Interp *interp, cptr name, int size); 83 84 extern void Bitmap_New(Tcl_Interp *interp, BitmapPtr bitmapPtr); 85 extern void Bitmap_Delete(BitmapPtr bitmapPtr); 86 extern BitmapPtr Bitmap_Load(Tcl_Interp *interp, cptr name); 87 88 /* Widget.c */ 89 extern errr Term_xtra_tnb_react(void); 90 extern errr Term_wipe_tnb(int x, int y, int n); 91 extern errr Term_text_tnb(int x, int y, int n, byte a, const char *s); 92 extern errr Term_pict_tnb(int x, int y, int n, const byte *ap, const char *cp, 93 const byte *tap, const char *tcp); 94 extern errr Term_curs_tnb(int x, int y); 95 extern errr Term_xtra_tnb_clear(void); 96 97 /* canv-widget.c */ 98 extern byte *get_icon_ptr(BitmapPtr bitmap_ptr, int x, int y); 99 extern int CanvasWidget_Init(Tcl_Interp *interp); 100 101 102 /* cmdinfo.c */ 103 typedef struct CommandInfo CommandInfo; 104 typedef struct CommandInit CommandInit; 105 typedef struct SubCommandInfo SubCommandInfo; 106 107 struct SubCommandInfo { 108 int alloc; 109 int count; 110 cptr *name; 111 CommandInfo **info; 112 }; 113 114 struct CommandInfo { 115 int depth; 116 cptr name; 117 int minArgs, maxArgs; 118 cptr errorMsg; 119 Tcl_ObjCmdProc *proc; 120 ClientData clientData; 121 SubCommandInfo subCmd; 122 }; 123 124 struct CommandInit { 125 int depth; 126 cptr name; 127 int minArgs, maxArgs; 128 cptr errorMsg; 129 Tcl_ObjCmdProc *proc; 130 ClientData clientData; 131 }; 132 133 extern void CommandInfo_Add(CommandInfo *infoCmd, CommandInfo *infoSubCmd); 134 extern CommandInfo *CommandInfo_GetInfo(Tcl_Interp *interp, cptr names[]); 135 extern int CommandInfo_InitAux(Tcl_Interp *interp, CommandInit *init, 136 int index, CommandInfo *parent); 137 extern int CommandInfo_Init(Tcl_Interp *interp, CommandInit *init, 138 CommandInfo *parent); 139 extern CommandInfo *CommandInfo_New(CommandInit *init); 140 extern int CommandInfo_ObjCmd(ClientData clientData, Tcl_Interp *interp, 141 int objc, Tcl_Obj *CONST objv[]); 142 143 /* icon1.c */ 144 145 extern int g_icon_size; /* 16, 24 or 32 */ 146 extern void init_icons(int size, int depth); 147 148 extern void Icon_Exit(void); 149 extern void init_palette(void); 150 151 /* interp.c */ 152 extern int exit_skip_save; 153 extern bool command_repeating; 154 extern void angtk_angband_initialized(void); 155 extern void angtk_eval(cptr command, ...); 156 extern int angtk_eval_file(cptr extFileName); 157 extern void angtk_health(char *buf); 158 extern void angtk_init(void); 159 extern cptr player_status(int status, int *value); 160 161 162 /* 163 * XXXXX Important! 164 * If you add INKEY_XXX flags here, you must update the inkey_to_str[] 165 * array in interp2.c 166 */ 167 168 #define INKEY_CMD 1 169 #define INKEY_DIR 2 170 #define INKEY_DISTURB 3 171 #define INKEY_ITEM 4 172 #define INKEY_ITEM_STORE 5 173 #define INKEY_MORE 6 174 #define INKEY_SPELL 7 175 #define INKEY_TARGET 8 176 #define INKEY_POWER 9 177 #define INKEY_CMD_PET 10 178 179 extern int inkey_book; 180 extern int inkey_flags; 181 182 /* describe.c */ 183 extern cptr keyword_slot[]; 184 extern int strcpy_len(char *s1, const char *s2); 185 extern long angtk_describe_object(object_type *o_ptr, char *buf, bool in_store); 186 extern int SetArrayValueChar(cptr varName, cptr field, char value); 187 extern int SetArrayValueLong(cptr varName, cptr field, long value); 188 extern int SetArrayValueString(cptr varName, cptr field, cptr value); 189 190 /* tcltk.c */ 191 extern Tcl_Interp *TclTk_Init(cptr *argv); 192 193 /* util-tnb.c */ 194 extern cptr keyword_term_color[]; 195 extern byte g_prompt_attr; 196 extern void prompt_print(cptr str); 197 extern void prompt_erase(void); 198 extern void prompt_format(cptr fmt, ...); 199 extern void prompt_append(cptr str); 200 extern void prompt_open(cptr str); 201 extern void prompt_update(cptr str); 202 extern void any_more(cptr prompt); 203 204 extern int ExtToUtf_SetArrayValueString(cptr varName, cptr field, cptr value); 205 206 /* util-dll.c */ 207 extern int g_palette_white, g_palette_black; 208 #define PALETTE_WHITE g_palette_white 209 #define PALETTE_BLACK g_palette_black 210 211 extern int g_colormap_white, g_colormap_black; 212 #define COLORMAP_WHITE g_colormap_white 213 #define COLORMAP_BLACK g_colormap_black 214 215 extern unsigned char g_palette2colormap[256]; 216 217 extern int Palette_Init(Tcl_Interp *interp); 218 extern unsigned char *Palette_GetRGB(void); 219 extern void Palette_ResetHash(void); 220 extern int Palette_RGB2Index(unsigned char r, unsigned char g, unsigned char b); 221 222 extern int Colormap_Init(Tcl_Interp *interp); 223 extern unsigned char *Colormap_GetRGB(void); 224 extern int Colormap_RGB2Index(unsigned char r, unsigned char g, unsigned char b); 225 226 typedef struct RGBInfo RGBInfo; 227 struct RGBInfo 228 { 229 int red_count, green_count, blue_count; 230 int red_mask, green_mask, blue_mask; 231 int red_shift, green_shift, blue_shift; 232 int extra; 233 }; 234 235 extern RGBInfo g_rgbi; 236 237 extern void SetPix16(unsigned char *p, int r, int g, int b); 238 239 extern void *Array_Append(void *array_ptr, int *count, int elem_size, 240 void *elem_ptr); 241 extern void *Array_Insert(void *array_ptr, int *count, int elem_size, 242 int index); 243 extern void *Array_Delete(void *array_ptr, int *count, int elem_size, 244 int index); 245 246 extern Tcl_Obj *ExtToUtf_NewStringObj(CONST char *bytes, int length); 247 extern void ExtToUtf_SetResult(Tcl_Interp *interp, cptr string); 248 extern char *UtfToExt_TranslateFileName(Tcl_Interp *interp, char *utfPath, 249 Tcl_DString *extDStringPtr); 250 251 252 /* Make a tk hook function called 'objcmd_name' */ 253 #define DECLARE_TK_HOOK(N) \ 254 extern int objcmd_##N (ClientData clientData, \ 255 Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) 256 257 /* DECLARE_TK_HOOK(angband); */ 258 DECLARE_TK_HOOK(player); 259 DECLARE_TK_HOOK(cave); 260 DECLARE_TK_HOOK(floor); 261 DECLARE_TK_HOOK(game); 262 DECLARE_TK_HOOK(init_icons); 263 DECLARE_TK_HOOK(inkey_flags); 264 DECLARE_TK_HOOK(inventory); 265 DECLARE_TK_HOOK(keycount); 266 DECLARE_TK_HOOK(keypress); 267 DECLARE_TK_HOOK(message); 268 DECLARE_TK_HOOK(fontdesc); 269 DECLARE_TK_HOOK(equipinfo); 270 DECLARE_TK_HOOK(inveninfo); 271 #endif /* _INCLUDE_TNB_H_ */ 272 273 274 extern int init_widget(Tcl_Interp *interp, int g_icon_depth); 275 276