TORCS  1.3.9
The Open Racing Car Simulator
gui.h
Go to the documentation of this file.
1 /***************************************************************************
2  gui.h -- Interface file for GUI
3  -------------------
4  created : Fri Aug 13 22:15:46 CEST 1999
5  copyright : (C) 1999 by Eric Espie
6  email : torcs@free.fr
7  version : $Id$
8  ***************************************************************************/
9 
10 /***************************************************************************
11  * *
12  * This program is free software; you can redistribute it and/or modify *
13  * it under the terms of the GNU General Public License as published by *
14  * the Free Software Foundation; either version 2 of the License, or *
15  * (at your option) any later version. *
16  * *
17  ***************************************************************************/
18 
19 #ifndef _GUI_H__
20 #define _GUI_H__
21 
22 #include "guifont.h"
23 
24 #define GFUI_COLORNB 21
25 extern float GfuiColor[GFUI_COLORNB][4];
26 
27 #define GFUI_BGCOLOR 0
28 #define GFUI_TITLECOLOR 1
29 #define GFUI_BGBTNFOCUS 2
30 #define GFUI_BGBTNCLICK 3
31 #define GFUI_BGBTNENABLED 4
32 #define GFUI_BGBTNDISABLED 5
33 #define GFUI_BTNFOCUS 6
34 #define GFUI_BTNCLICK 7
35 #define GFUI_BTNENABLED 8
36 #define GFUI_BTNDISABLED 9
37 #define GFUI_LABELCOLOR 10
38 #define GFUI_TIPCOLOR 11
39 #define GFUI_MOUSECOLOR1 12
40 #define GFUI_MOUSECOLOR2 13
41 #define GFUI_HELPCOLOR1 14
42 #define GFUI_HELPCOLOR2 15
43 #define GFUI_BGSCROLLIST 16
44 #define GFUI_FGSCROLLIST 17
45 #define GFUI_BGSELSCROLLIST 18
46 #define GFUI_FGSELSCROLLIST 19
47 #define GFUI_EDITCURSORCLR 20
48 #define GFUI_IMAGE 21
49 
51  public:
52  /*ForeGroundColor(const float pr, const float pg, const float pb, const float pa) :
53  r(pr), g(pg), b(pb), a(pa)
54  {}
55  ForeGroundColor(const float prgba[4]) :
56  r(prgba[0]), g(prgba[1]), b(prgba[2]), a(prgba[3])
57  {}
58  ForeGroundColor() :
59  r(0.0f), g(0.0f), b(0.0f), a(0.0f)
60  {}
61  virtual ~ForeGroundColor() {}
62 */
63  void setRGBA(const float prgba[4]) {
64  r = prgba[0];
65  g = prgba[1];
66  b = prgba[2];
67  a = prgba[3];
68  }
69  const float* getRGBA() { return rgba; }
70 
71  union {
72  struct { float r, g, b, a; };
73  float rgba[4];
74  };
75 };
76 
77 
78 typedef struct
79 {
80  char *text; /* text */
81  float *bgColor; /* RGBA */
83  GfuiFontClass *font; /* ttf font */
84  int x, y; /* label position */
85  int align;
86  int maxlen;
87 } tGfuiLabel;
88 
89 /* button state */
90 #define GFUI_BTN_DISABLE 0
91 #define GFUI_BTN_RELEASED 1
92 #define GFUI_BTN_PUSHED 2
93 
94 /* Button type */
95 #define GFUI_BTN_PUSH 0
96 #define GFUI_BTN_STATE 1
97 
98 typedef struct
99 {
101  float *bgColor[3];
102  float *fgColor[3];
103  float *bgFocusColor[3];
104  float *fgFocusColor[3];
105  unsigned int state;
113 } tGfuiButton;
114 
115 typedef struct
116 {
117  unsigned int state;
118  unsigned char *disabled;
119  unsigned char *enabled;
120  unsigned char *focused;
121  unsigned char *pushed;
122  int width, height;
130 } tGfuiGrButton;
131 
132 #define GFUI_FOCUS_NONE 0
133 #define GFUI_FOCUS_MOUSE_MOVE 1
134 #define GFUI_FOCUS_MOUSE_CLICK 2
135 
136 typedef struct GfuiListElement
137 {
138  char *name;
139  char *label;
140  void *userData;
141  int selected;
142  int index;
146 
147 typedef struct
148 {
149  int sbPos;
150  float *bgColor[3];
151  float *fgColor[3];
152  float *bgSelectColor[3];
153  float *fgSelectColor[3];
156  int nbElts;
164 
165 typedef struct
166 {
168  int min, max, len, pos;
170  void *userData;
173 
174 typedef struct
175 {
177  float *cursorColor[3];
178  float *bgColor[3];
179  float *fgColor[3];
180  float *bgFocusColor[3];
181  float *fgFocusColor[3];
182  int state;
183  int cursorx;
184  int cursory1;
185  int cursory2;
190 } tGfuiEditbox;
191 
192 typedef struct
193 {
194  GLuint texture;
195 } tGfuiImage;
196 
197 typedef struct GfuiObject
198 {
199  int widget;
200  int id;
201  int visible;
203  int focus;
204  int state; /* enable / disable */
205  int xmin, ymin; /* bounding box for focus */
206  int xmax, ymax;
207  union
208  {
216  } u;
217  struct GfuiObject *next;
218  struct GfuiObject *prev;
219 } tGfuiObject;
220 
221 /* Keyboard key assignment */
222 typedef struct GfuiKey
223 {
224  unsigned char key;
225  char *name;
226  char *descr;
228  int modifier;
229  void *userData;
232  struct GfuiKey *next;
233 } tGfuiKey;
234 
235 /* screen definition */
236 typedef struct
237 {
238  float width, height;
239  float *bgColor; /* RGBA */
240  GLuint bgImage;
241 
242  /* sub-objects */
244  tGfuiObject *hasFocus; /* in order to speed up focus management */
245  int curId;
246 
247  /* users keys definition */
250  void *userActData;
254 
255  /* key callback functions */
258 
259  /* mouse handling */
260  int mouse;
262  float *mouseColor[2];
263 
264  /* menu specific */
265  int nbItems;
266 
267  /* Screen type */
269 } tGfuiScreen;
270 
271 
272 extern tGfuiScreen *GfuiScreen;
273 extern tMouseInfo GfuiMouse;
274 extern int GfuiMouseHW;
275 
276 extern void gfuiReleaseObject(tGfuiObject *curObject);
277 
278 extern void GfuiDrawCursor();
279 extern void GfuiDraw(tGfuiObject *obj);;
280 extern void gfuiUpdateFocus();
281 extern void gfuiPrintString(int x, int y, GfuiFontClass *font, const char *string);
282 extern void gfuiMouseAction(void *action);
283 extern void gfuiSelectNext(void *);
284 extern void gfuiSelectPrev(void *);
285 extern void gfuiSelectId(void *scr, int id);
286 extern void gfuiAddObject(tGfuiScreen *screen, tGfuiObject *object);
287 extern tGfuiObject *gfuiGetObject(void *scr, int id);
288 
289 extern void gfuiSetLabelText(tGfuiObject *object, tGfuiLabel *label, const char *text);
290 
291 extern void gfuiDrawLabel(tGfuiObject *obj);
292 extern void gfuiDrawButton(tGfuiObject *obj);
293 extern void gfuiButtonAction(int action);
294 extern void gfuiDrawGrButton(tGfuiObject *obj);
295 extern void gfuiGrButtonAction(int action);
296 extern void gfuiDrawScrollist(tGfuiObject *obj);
297 extern void gfuiScrollListAction(int mouse);
298 extern void gfuiDrawEditbox(tGfuiObject *obj);
299 extern void gfuiEditboxAction(int action);
300 
301 extern void gfuiInit(void);
302 extern void gfuiButtonInit(void);
303 extern void gfuiHelpInit(void);
304 extern void gfuiLabelInit(void);
305 extern void gfuiObjectInit(void);
306 extern void gfuiEditboxInit(void);
307 
308 extern void gfuiReleaseLabel(tGfuiObject *obj);
309 extern void gfuiReleaseButton(tGfuiObject *obj);
310 extern void gfuiReleaseGrButton(tGfuiObject *obj);
311 extern void gfuiReleaseScrollist(tGfuiObject *curObject);
312 extern void gfuiReleaseScrollbar(tGfuiObject *curObject);
313 extern void gfuiReleaseEditbox(tGfuiObject *curObject);
314 
315 extern void gfuiLoadFonts(void);
316 
317 extern void gfuiEditboxKey(tGfuiObject *obj, int key, int modifier);
318 
319 
320 extern void gfuiScrollListNextElt (tGfuiObject *object);
321 extern void gfuiScrollListPrevElt (tGfuiObject *object);
322 
323 extern void gfuiReleaseImage(tGfuiObject *obj);
324 extern void gfuiDrawImage(tGfuiObject *obj);
325 
326 
327 #endif /* _GUI_H__ */
328 
329 
330 
int focus
Definition: gui.h:203
int GfuiMouseHW
Definition: gui.cpp:39
GLuint bgImage
Definition: gui.h:240
Definition: gui.h:222
struct GfuiObject * prev
Definition: gui.h:218
void gfuiReleaseGrButton(tGfuiObject *obj)
Definition: guibutton.cpp:636
struct GfuiListElement tGfuiListElement
struct GfuiKey tGfuiKey
tfuiCallback onPress
Definition: gui.h:230
void gfuiSetLabelText(tGfuiObject *object, tGfuiLabel *label, const char *text)
Definition: guilabel.cpp:176
tfuiCallback onFocusLost
Definition: gui.h:129
void * userDeactData
Definition: gui.h:252
void * userDataOnSelect
Definition: gui.h:162
void gfuiSelectId(void *scr, int id)
Definition: guiobject.cpp:378
int align
Definition: gui.h:85
float b
Definition: gui.h:72
tGfuiEditbox editbox
Definition: gui.h:214
tfuiCallback onFocus
Definition: gui.h:111
void * userDataOnPush
Definition: gui.h:125
void * userDataOnFocus
Definition: gui.h:110
Scalar max(Scalar x, Scalar y)
Definition: Basic.h:50
tfuiCallback onFocus
Definition: gui.h:188
int buttonType
Definition: gui.h:123
int nbVisible
Definition: gui.h:158
int id
Definition: gui.h:200
void gfuiEditboxInit(void)
Definition: guiedit.cpp:36
int focusMode
Definition: gui.h:202
float * bgColor
Definition: gui.h:239
float width
Definition: gui.h:238
tGfuiListElement * elts
Definition: gui.h:155
int y
Definition: gui.h:84
void gfuiInit(void)
Definition: gui.cpp:90
int mouseAllowed
Definition: gui.h:261
void gfuiReleaseImage(tGfuiObject *obj)
Definition: guiimage.cpp:109
unsigned char key
Definition: gui.h:224
Scroll bar call-back information.
Definition: tgfclient.h:99
float rgba[4]
Definition: gui.h:73
void gfuiDrawLabel(tGfuiObject *obj)
Definition: guilabel.cpp:260
int mouse
Definition: gui.h:260
unsigned char * enabled
Definition: gui.h:119
int(* tfuiSKeyCallback)(int key, int modifier, int state)
return 1 to prevent normal key computing
Definition: tgfclient.h:108
int width
Definition: gui.h:122
void gfuiObjectInit(void)
Definition: guiobject.cpp:27
tGfuiScreen * GfuiScreen
Definition: gui.cpp:35
int orientation
Definition: gui.h:169
void gfuiEditboxKey(tGfuiObject *obj, int key, int modifier)
Definition: guiedit.cpp:270
int(* tfuiKeyCallback)(unsigned char key, int modifier, int state)
return 1 to prevent normal key computing
Definition: tgfclient.h:107
tGfuiGrButton grbutton
Definition: gui.h:211
tfuiCallback onRelease
Definition: gui.h:231
GfuiFontClass * font
Definition: gui.h:83
int curId
Definition: gui.h:245
int ymin
Definition: gui.h:205
struct GfuiKey * next
Definition: gui.h:232
int scrollBar
Definition: gui.h:160
GfuiFontClass * font
Definition: gui.h:154
void * userData
Definition: gui.h:170
unsigned char * focused
Definition: gui.h:120
int state
Definition: gui.h:182
tGfuiScrollBar scrollbar
Definition: gui.h:213
void * userData
Definition: gui.h:229
tfuiCallback onSelect
Definition: gui.h:161
tGfuiScrollList scrollist
Definition: gui.h:212
tMouseInfo GfuiMouse
Definition: gui.cpp:37
void gfuiButtonAction(int action)
Definition: guibutton.cpp:551
int firstVisible
Definition: gui.h:157
tGfuiButton button
Definition: gui.h:210
void gfuiReleaseObject(tGfuiObject *curObject)
Definition: guiobject.cpp:520
int mouseBehaviour
Definition: gui.h:124
void gfuiHelpInit(void)
Definition: guihelp.cpp:38
tfuiSBCallback onScroll
Definition: gui.h:171
int xmax
Definition: gui.h:206
void gfuiDrawGrButton(tGfuiObject *obj)
Definition: guibutton.cpp:453
struct GfuiListElement * next
Definition: gui.h:143
void gfuiDrawImage(tGfuiObject *obj)
Definition: guiimage.cpp:119
int visible
Definition: gui.h:201
float a
Definition: gui.h:72
int modifier
Definition: gui.h:228
int pos
Definition: gui.h:168
unsigned char * disabled
Definition: gui.h:118
void gfuiDrawEditbox(tGfuiObject *obj)
Definition: guiedit.cpp:161
tfuiCallback onPush
Definition: gui.h:109
int index
Definition: gui.h:142
unsigned int state
Definition: gui.h:105
void * userActData
Definition: gui.h:250
tfuiCallback onFocusLost
Definition: gui.h:112
tfuiKeyCallback onKeyAction
Definition: gui.h:256
void gfuiReleaseEditbox(tGfuiObject *curObject)
Definition: guiedit.cpp:404
void gfuiEditboxAction(int action)
Definition: guiedit.cpp:215
void gfuiDrawScrollist(tGfuiObject *obj)
union GfuiObject::@17 u
char * text
Definition: gui.h:80
int cursorx
Definition: gui.h:183
float r
Definition: gui.h:72
tfuiSKeyCallback onSKeyAction
Definition: gui.h:257
void gfuiButtonInit(void)
Definition: guibutton.cpp:36
void(* tfuiCallback)(void *)
Definition: tgfclient.h:105
int specialkey
Definition: gui.h:227
tfuiCallback onFocus
Definition: gui.h:128
struct GfuiListElement * prev
Definition: gui.h:144
unsigned int state
Definition: gui.h:117
void gfuiScrollListNextElt(tGfuiObject *object)
tGfuiObject * gfuiGetObject(void *scr, int id)
Definition: guiobject.cpp:501
struct GfuiObject * next
Definition: gui.h:217
ForeGroundColor fgColor
Definition: gui.h:82
int onlyCallback
Definition: gui.h:268
void gfuiSelectPrev(void *)
Definition: guiobject.cpp:344
tGfuiImage image
Definition: gui.h:215
void gfuiLabelInit(void)
Definition: guilabel.cpp:35
char * descr
Definition: gui.h:226
void gfuiAddObject(tGfuiScreen *screen, tGfuiObject *object)
Definition: guiobject.cpp:485
void gfuiReleaseButton(tGfuiObject *obj)
Definition: guibutton.cpp:622
void GfuiDraw(tGfuiObject *obj)
Definition: guiobject.cpp:114
char * label
Definition: gui.h:139
Scalar min(Scalar x, Scalar y)
Definition: Basic.h:49
void gfuiDrawButton(tGfuiObject *obj)
Definition: guibutton.cpp:409
tfuiCallback onActivate
Definition: gui.h:251
void gfuiScrollListPrevElt(tGfuiObject *object)
void gfuiReleaseLabel(tGfuiObject *obj)
Definition: guilabel.cpp:279
void * userDataOnFocus
Definition: gui.h:187
static Vector y[4]
Definition: Convex.cpp:56
void gfuiLoadFonts(void)
Definition: guifont.cpp:65
int sbPos
Definition: gui.h:149
Definition: gui.h:78
#define GFUI_COLORNB
Definition: gui.h:24
int nbItems
Definition: gui.h:265
int maxlen
Definition: gui.h:86
void gfuiReleaseScrollist(tGfuiObject *curObject)
int cursory1
Definition: gui.h:184
tGfuiLabel label
Definition: gui.h:209
unsigned char * pushed
Definition: gui.h:121
tGfuiObject * hasFocus
Definition: gui.h:244
void * userDataOnPush
Definition: gui.h:108
tfuiCallback onPush
Definition: gui.h:126
struct GfuiObject tGfuiObject
tfuiCallback onDeactivate
Definition: gui.h:253
int ymax
Definition: gui.h:206
int mouseBehaviour
Definition: gui.h:107
tGfuiObject * objects
Definition: gui.h:243
int cursory2
Definition: gui.h:185
int selectedElt
Definition: gui.h:159
void GfuiDrawCursor()
Definition: guiobject.cpp:76
int state
Definition: gui.h:204
tGfuiKey * userKeys
Definition: gui.h:248
int selected
Definition: gui.h:141
GLuint texture
Definition: gui.h:194
void * userData
Definition: gui.h:140
tfuiCallback onFocusLost
Definition: gui.h:189
float * bgColor
Definition: gui.h:81
void gfuiMouseAction(void *action)
Definition: guiobject.cpp:456
float g
Definition: gui.h:72
void setRGBA(const float prgba[4])
Definition: gui.h:63
void * userDataOnFocus
Definition: gui.h:127
void gfuiPrintString(int x, int y, GfuiFontClass *font, const char *string)
Definition: guiobject.cpp:32
const float * getRGBA()
Definition: gui.h:69
int nbElts
Definition: gui.h:156
void gfuiReleaseScrollbar(tGfuiObject *curObject)
tGfuiLabel label
Definition: gui.h:100
float GfuiColor[GFUI_COLORNB][4]
Definition: gui.cpp:41
tScrollBarInfo info
Definition: gui.h:167
tGfuiKey * userSpecKeys
Definition: gui.h:249
void gfuiScrollListAction(int mouse)
tGfuiLabel label
Definition: gui.h:176
void gfuiGrButtonAction(int action)
Definition: guibutton.cpp:476
int buttonType
Definition: gui.h:106
int widget
Definition: gui.h:199
char * name
Definition: gui.h:138
int xmin
Definition: gui.h:205
void(* tfuiSBCallback)(tScrollBarInfo *)
Definition: tgfclient.h:106
int cursorIdx
Definition: gui.h:186
char * name
Definition: gui.h:225
void gfuiUpdateFocus()
Definition: guiobject.cpp:277
void gfuiSelectNext(void *)
Definition: guiobject.cpp:311