Quake-2

Quake 2 GPL Source Release
Log | Files | Refs

qmenu.h (3061B)


      1 /*
      2 Copyright (C) 1997-2001 Id Software, Inc.
      3 
      4 This program is free software; you can redistribute it and/or
      5 modify it under the terms of the GNU General Public License
      6 as published by the Free Software Foundation; either version 2
      7 of the License, or (at your option) any later version.
      8 
      9 This program is distributed in the hope that it will be useful,
     10 but WITHOUT ANY WARRANTY; without even the implied warranty of
     11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
     12 
     13 See the GNU General Public License for more details.
     14 
     15 You should have received a copy of the GNU General Public License
     16 along with this program; if not, write to the Free Software
     17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
     18 
     19 */
     20 #ifndef __QMENU_H__
     21 #define __QMENU_H__
     22 
     23 #define MAXMENUITEMS	64
     24 
     25 #define MTYPE_SLIDER		0
     26 #define MTYPE_LIST			1
     27 #define MTYPE_ACTION		2
     28 #define MTYPE_SPINCONTROL	3
     29 #define MTYPE_SEPARATOR  	4
     30 #define MTYPE_FIELD			5
     31 
     32 #define	K_TAB			9
     33 #define	K_ENTER			13
     34 #define	K_ESCAPE		27
     35 #define	K_SPACE			32
     36 
     37 // normal keys should be passed as lowercased ascii
     38 
     39 #define	K_BACKSPACE		127
     40 #define	K_UPARROW		128
     41 #define	K_DOWNARROW		129
     42 #define	K_LEFTARROW		130
     43 #define	K_RIGHTARROW	131
     44 
     45 #define QMF_LEFT_JUSTIFY	0x00000001
     46 #define QMF_GRAYED			0x00000002
     47 #define QMF_NUMBERSONLY		0x00000004
     48 
     49 typedef struct _tag_menuframework
     50 {
     51 	int x, y;
     52 	int	cursor;
     53 
     54 	int	nitems;
     55 	int nslots;
     56 	void *items[64];
     57 
     58 	const char *statusbar;
     59 
     60 	void (*cursordraw)( struct _tag_menuframework *m );
     61 	
     62 } menuframework_s;
     63 
     64 typedef struct
     65 {
     66 	int type;
     67 	const char *name;
     68 	int x, y;
     69 	menuframework_s *parent;
     70 	int cursor_offset;
     71 	int	localdata[4];
     72 	unsigned flags;
     73 
     74 	const char *statusbar;
     75 
     76 	void (*callback)( void *self );
     77 	void (*statusbarfunc)( void *self );
     78 	void (*ownerdraw)( void *self );
     79 	void (*cursordraw)( void *self );
     80 } menucommon_s;
     81 
     82 typedef struct
     83 {
     84 	menucommon_s generic;
     85 
     86 	char		buffer[80];
     87 	int			cursor;
     88 	int			length;
     89 	int			visible_length;
     90 	int			visible_offset;
     91 } menufield_s;
     92 
     93 typedef struct 
     94 {
     95 	menucommon_s generic;
     96 
     97 	float minvalue;
     98 	float maxvalue;
     99 	float curvalue;
    100 
    101 	float range;
    102 } menuslider_s;
    103 
    104 typedef struct
    105 {
    106 	menucommon_s generic;
    107 
    108 	int curvalue;
    109 
    110 	const char **itemnames;
    111 } menulist_s;
    112 
    113 typedef struct
    114 {
    115 	menucommon_s generic;
    116 } menuaction_s;
    117 
    118 typedef struct
    119 {
    120 	menucommon_s generic;
    121 } menuseparator_s;
    122 
    123 qboolean Field_Key( menufield_s *field, int key );
    124 
    125 void	Menu_AddItem( menuframework_s *menu, void *item );
    126 void	Menu_AdjustCursor( menuframework_s *menu, int dir );
    127 void	Menu_Center( menuframework_s *menu );
    128 void	Menu_Draw( menuframework_s *menu );
    129 void	*Menu_ItemAtCursor( menuframework_s *m );
    130 qboolean Menu_SelectItem( menuframework_s *s );
    131 void	Menu_SetStatusBar( menuframework_s *s, const char *string );
    132 void	Menu_SlideItem( menuframework_s *s, int dir );
    133 int		Menu_TallySlots( menuframework_s *menu );
    134 
    135 void	 Menu_DrawString( int, int, const char * );
    136 void	 Menu_DrawStringDark( int, int, const char * );
    137 void	 Menu_DrawStringR2L( int, int, const char * );
    138 void	 Menu_DrawStringR2LDark( int, int, const char * );
    139 
    140 #endif