/* * Copyright (C) 1997-2001 Id Software, Inc. * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. * * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 59 * Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ #ifndef __QMENU_H__ #define __QMENU_H__ #define MAXMENUITEMS 64 #define MTYPE_SLIDER 0 #define MTYPE_LIST 1 #define MTYPE_ACTION 2 #define MTYPE_SPINCONTROL 3 #define MTYPE_SEPARATOR 4 #define MTYPE_FIELD 5 #define K_TAB 9 #define K_ENTER 13 #define K_ESCAPE 27 #define K_SPACE 32 /* normal keys should be passed as lowercased ascii */ #define K_BACKSPACE 127 #define K_UPARROW 128 #define K_DOWNARROW 129 #define K_LEFTARROW 130 #define K_RIGHTARROW 131 #define QMF_LEFT_JUSTIFY 0x00000001 #define QMF_GRAYED 0x00000002 #define QMF_NUMBERSONLY 0x00000004 #define RCOLUMN_OFFSET 16 #define LCOLUMN_OFFSET -16 #define SLIDER_RANGE 10 typedef struct _tag_menuframework { int x , y; int cursor; int nitems; int nslots; void *items[64]; const char *statusbar; void (*cursordraw) (struct _tag_menuframework *m); } menuframework_s; typedef struct { int type; const char *name; int x , y; menuframework_s *parent; int cursor_offset; int localdata [4]; unsigned flags; const char *statusbar; void (*callback) (void *self); void (*statusbarfunc) (void *self); void (*ownerdraw) (void *self); void (*cursordraw) (void *self); } menucommon_s; typedef struct { menucommon_s generic; char buffer [80]; int cursor; int length; int visible_length; int visible_offset; } menufield_s; typedef struct { menucommon_s generic; float minvalue; float maxvalue; float curvalue; float range; } menuslider_s; typedef struct { menucommon_s generic; int curvalue; const char **itemnames; } menulist_s; typedef struct { menucommon_s generic; } menuaction_s; typedef struct { menucommon_s generic; } menuseparator_s; qboolean Field_Key(menufield_s * field, int key); void Menu_AddItem(menuframework_s * menu, void *item); void Menu_AdjustCursor(menuframework_s * menu, int dir); void Menu_Center(menuframework_s * menu); void Menu_Draw (menuframework_s * menu); void *Menu_ItemAtCursor(menuframework_s * m); qboolean Menu_SelectItem(menuframework_s * s); qboolean Menu_MouseSelectItem(menucommon_s * item); void Menu_SetStatusBar(menuframework_s * s, const char *string); void Menu_SlideItem(menuframework_s * s, int dir); int Menu_TallySlots(menuframework_s * menu); void Menu_DrawString(int, int, const char *, int alpha); void Menu_DrawStringDark(int, int, const char *, int alpha); void Menu_DrawStringR2L(int, int, const char *, int alpha); void Menu_DrawStringR2LDark(int, int, const char *, int alpha); int GetPosInList(const char **list, const char *name); void refreshCursorLink(void); cursor_t cursor; #endif