TORCS  1.3.10
The Open Racing Car Simulator
Loading...
Searching...
No Matches
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-2026 by Eric Espi�, Bernhard Wymann
6 email : berniw@bluewin.ch
7
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
25extern 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
78typedef 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;
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
112
113typedef struct
114{
115 unsigned int state;
116 unsigned char *disabled;
117 unsigned char *enabled;
118 unsigned char *focused;
119 unsigned char *pushed;
127
128#define GFUI_FOCUS_NONE 0
129#define GFUI_FOCUS_MOUSE_MOVE 1
130#define GFUI_FOCUS_MOUSE_CLICK 2
131
142
159
168
185
186typedef struct
187{
188 GLuint texture;
189} tGfuiImage;
190
214
215/* Keyboard key assignment */
227
228/* screen definition */
229typedef struct
230{
231 float width, height;
232 float *bgColor; /* RGBA */
233 GLuint bgImage;
234
235 /* sub-objects */
237 tGfuiObject *hasFocus; /* in order to speed up focus management */
238 int curId;
239
240 /* users keys definition */
245
246 /* key callback functions */
249
250 /* mouse handling */
251 int mouse;
253 float *mouseColor[2];
254
255 /* menu specific */
257
258 /* Screen type */
261
262
263extern tGfuiScreen *GfuiScreen;
264extern tMouseInfo GfuiMouse;
265extern int GfuiMouseHW;
266
267extern void gfuiReleaseObject(tGfuiObject *curObject);
268
269extern void GfuiDrawCursor();
270extern void GfuiDraw(tGfuiObject *obj);;
271extern void gfuiUpdateFocus();
272extern void gfuiPrintString(int x, int y, GfuiFontClass *font, const char *string);
273extern tGfuiAction gfuiMakeAction(void *userData, tfuiCallback callback);
274extern tGfuiAction *gfuiCreateAction(const tGfuiAction &action);
275extern void gfuiRunAction(const tGfuiAction *action);
276extern void gfuiReleaseAction(tGfuiAction *action);
277extern void gfuiMouseAction(int action);
278extern void gfuiSelectNext(void *);
279extern void gfuiSelectPrev(void *);
280extern void gfuiSelectId(void *scr, int id);
281extern void gfuiAddObject(tGfuiScreen *screen, tGfuiObject *object);
282extern tGfuiObject *gfuiGetObject(void *scr, int id);
283
284extern void gfuiSetLabelText(tGfuiObject *object, tGfuiLabel *label, const char *text);
285
286extern void gfuiDrawLabel(tGfuiObject *obj);
287extern void gfuiDrawButton(tGfuiObject *obj);
288extern void gfuiButtonAction(int action);
289extern void gfuiDrawGrButton(tGfuiObject *obj);
290extern void gfuiGrButtonAction(int action);
291extern void gfuiDrawScrollist(tGfuiObject *obj);
292extern void gfuiScrollListAction(int mouse);
293extern void gfuiDrawEditbox(tGfuiObject *obj);
294extern void gfuiEditboxAction(int action);
295
296extern void gfuiInit(void);
297extern void gfuiButtonInit(void);
298extern void gfuiHelpInit(void);
299extern void gfuiLabelInit(void);
300extern void gfuiObjectInit(void);
301extern void gfuiEditboxInit(void);
302
303extern void gfuiReleaseLabel(tGfuiObject *obj);
304extern void gfuiReleaseButton(tGfuiObject *obj);
305extern void gfuiReleaseGrButton(tGfuiObject *obj);
306extern void gfuiReleaseScrollist(tGfuiObject *curObject);
307extern void gfuiReleaseScrollbar(tGfuiObject *curObject);
308extern void gfuiReleaseEditbox(tGfuiObject *curObject);
309
310extern void gfuiLoadFonts(void);
311
312extern void gfuiEditboxKey(tGfuiObject *obj, int key, int modifier);
313
314
315extern void gfuiScrollListNextElt (tGfuiObject *object);
316extern void gfuiScrollListPrevElt (tGfuiObject *object);
317
318extern void gfuiReleaseImage(tGfuiObject *obj);
319extern void gfuiDrawImage(tGfuiObject *obj);
320
321
322#endif /* _GUI_H__ */
323
static Vector y[4]
Definition Convex.cpp:56
float a
Definition gui.h:72
float r
Definition gui.h:72
float b
Definition gui.h:72
const float * getRGBA()
Definition gui.h:69
void setRGBA(const float prgba[4])
Definition gui.h:63
float rgba[4]
Definition gui.h:73
float g
Definition gui.h:72
tGfuiScreen * GfuiScreen
Definition gui.cpp:32
float GfuiColor[GFUI_COLORNB][4]
Definition gui.cpp:38
tMouseInfo GfuiMouse
Definition gui.cpp:34
int GfuiMouseHW
Definition gui.cpp:36
void gfuiScrollListNextElt(tGfuiObject *object)
void gfuiSelectPrev(void *)
void gfuiDrawImage(tGfuiObject *obj)
Definition guiimage.cpp:123
void gfuiEditboxKey(tGfuiObject *obj, int key, int modifier)
Definition guiedit.cpp:274
void gfuiSetLabelText(tGfuiObject *object, tGfuiLabel *label, const char *text)
Definition guilabel.cpp:156
void GfuiDrawCursor()
Definition guiobject.cpp:76
void gfuiReleaseGrButton(tGfuiObject *obj)
void gfuiReleaseAction(tGfuiAction *action)
Definition gui.cpp:79
struct GfuiKey tGfuiKey
tGfuiAction gfuiMakeAction(void *userData, tfuiCallback callback)
Definition gui.cpp:48
void gfuiInit(void)
Definition gui.cpp:124
#define GFUI_COLORNB
Definition gui.h:24
void gfuiScrollListPrevElt(tGfuiObject *object)
void GfuiDraw(tGfuiObject *obj)
void gfuiEditboxAction(int action)
Definition guiedit.cpp:219
void gfuiPrintString(int x, int y, GfuiFontClass *font, const char *string)
Definition guiobject.cpp:32
void gfuiLoadFonts(void)
Definition guifont.cpp:65
void gfuiReleaseLabel(tGfuiObject *obj)
Definition guilabel.cpp:261
tGfuiAction * gfuiCreateAction(const tGfuiAction &action)
Definition gui.cpp:60
void gfuiDrawLabel(tGfuiObject *obj)
Definition guilabel.cpp:242
void gfuiSelectNext(void *)
void gfuiDrawGrButton(tGfuiObject *obj)
void gfuiReleaseObject(tGfuiObject *curObject)
void gfuiScrollListAction(int mouse)
void gfuiReleaseImage(tGfuiObject *obj)
Definition guiimage.cpp:113
void gfuiButtonInit(void)
Definition guibutton.cpp:34
void gfuiAddObject(tGfuiScreen *screen, tGfuiObject *object)
void gfuiReleaseScrollist(tGfuiObject *curObject)
void gfuiRunAction(const tGfuiAction *action)
Definition gui.cpp:70
struct GfuiObject tGfuiObject
void gfuiDrawScrollist(tGfuiObject *obj)
void gfuiLabelInit(void)
Definition guilabel.cpp:32
struct GfuiListElement tGfuiListElement
void gfuiObjectInit(void)
Definition guiobject.cpp:27
void gfuiButtonAction(int action)
void gfuiUpdateFocus()
tGfuiObject * gfuiGetObject(void *scr, int id)
void gfuiDrawButton(tGfuiObject *obj)
void gfuiDrawEditbox(tGfuiObject *obj)
Definition guiedit.cpp:165
void gfuiHelpInit(void)
Definition guihelp.cpp:36
void gfuiReleaseButton(tGfuiObject *obj)
void gfuiEditboxInit(void)
Definition guiedit.cpp:33
void gfuiMouseAction(int action)
void gfuiSelectId(void *scr, int id)
void gfuiReleaseEditbox(tGfuiObject *curObject)
Definition guiedit.cpp:411
void gfuiGrButtonAction(int action)
void gfuiReleaseScrollbar(tGfuiObject *curObject)
Definition gui.h:217
int specialkey
Definition gui.h:221
struct GfuiKey * next
Definition gui.h:225
tGfuiAction * onReleaseAction
Definition gui.h:224
int modifier
Definition gui.h:222
unsigned char key
Definition gui.h:218
char * name
Definition gui.h:219
char * descr
Definition gui.h:220
tGfuiAction * onPressAction
Definition gui.h:223
char * name
Definition gui.h:134
int selected
Definition gui.h:137
void * userData
Definition gui.h:136
char * label
Definition gui.h:135
struct GfuiListElement * prev
Definition gui.h:140
struct GfuiListElement * next
Definition gui.h:139
tGfuiScrollList scrollist
Definition gui.h:206
tGfuiImage image
Definition gui.h:209
tGfuiButton button
Definition gui.h:204
tGfuiEditbox editbox
Definition gui.h:208
struct GfuiObject * prev
Definition gui.h:212
int ymin
Definition gui.h:199
int xmin
Definition gui.h:199
int visible
Definition gui.h:195
tGfuiScrollBar scrollbar
Definition gui.h:207
int xmax
Definition gui.h:200
int ymax
Definition gui.h:200
tGfuiGrButton grbutton
Definition gui.h:205
int state
Definition gui.h:198
tGfuiLabel label
Definition gui.h:203
int id
Definition gui.h:194
union GfuiObject::@107216344126174123112226307372375007210201317144 u
int widget
Definition gui.h:193
int focusMode
Definition gui.h:196
int focus
Definition gui.h:197
struct GfuiObject * next
Definition gui.h:211
unsigned int state
Definition gui.h:105
float * fgColor[3]
Definition gui.h:102
tGfuiLabel label
Definition gui.h:100
tGfuiAction * onFocusAction
Definition gui.h:109
tGfuiAction * onFocusLostAction
Definition gui.h:110
float * fgFocusColor[3]
Definition gui.h:104
int buttonType
Definition gui.h:106
int mouseBehaviour
Definition gui.h:107
float * bgColor[3]
Definition gui.h:101
tGfuiAction * onPushAction
Definition gui.h:108
float * bgFocusColor[3]
Definition gui.h:103
float * bgColor[3]
Definition gui.h:173
tGfuiAction * onFocusLostAction
Definition gui.h:183
float * cursorColor[3]
Definition gui.h:172
int cursorIdx
Definition gui.h:181
int cursory1
Definition gui.h:179
int state
Definition gui.h:177
float * fgColor[3]
Definition gui.h:174
tGfuiLabel label
Definition gui.h:171
float * fgFocusColor[3]
Definition gui.h:176
float * bgFocusColor[3]
Definition gui.h:175
int cursory2
Definition gui.h:180
tGfuiAction * onFocusAction
Definition gui.h:182
int cursorx
Definition gui.h:178
int buttonType
Definition gui.h:121
unsigned char * disabled
Definition gui.h:116
tGfuiAction * onFocusLostAction
Definition gui.h:125
int height
Definition gui.h:120
unsigned char * enabled
Definition gui.h:117
unsigned char * focused
Definition gui.h:118
unsigned int state
Definition gui.h:115
tGfuiAction * onPushAction
Definition gui.h:123
unsigned char * pushed
Definition gui.h:119
int mouseBehaviour
Definition gui.h:122
int width
Definition gui.h:120
tGfuiAction * onFocusAction
Definition gui.h:124
GLuint texture
Definition gui.h:188
float * bgColor
Definition gui.h:81
char * text
Definition gui.h:80
int maxlen
Definition gui.h:86
int y
Definition gui.h:84
ForeGroundColor fgColor
Definition gui.h:82
int align
Definition gui.h:85
int x
Definition gui.h:84
GfuiFontClass * font
Definition gui.h:83
tGfuiObject * objects
Definition gui.h:236
tGfuiKey * userKeys
Definition gui.h:241
float height
Definition gui.h:231
float * bgColor
Definition gui.h:232
tfuiKeyCallback onKeyAction
Definition gui.h:247
int onlyCallback
Definition gui.h:259
tGfuiObject * hasFocus
Definition gui.h:237
tGfuiAction * onActivateAction
Definition gui.h:243
GLuint bgImage
Definition gui.h:233
float width
Definition gui.h:231
tGfuiAction * onDeactivateAction
Definition gui.h:244
int curId
Definition gui.h:238
int mouseAllowed
Definition gui.h:252
int nbItems
Definition gui.h:256
float * mouseColor[2]
Definition gui.h:253
tGfuiKey * userSpecKeys
Definition gui.h:242
int mouse
Definition gui.h:251
tfuiSKeyCallback onSKeyAction
Definition gui.h:248
int orientation
Definition gui.h:164
tScrollBarInfo info
Definition gui.h:162
tfuiSBCallback onScroll
Definition gui.h:166
void * userData
Definition gui.h:165
float * bgColor[3]
Definition gui.h:146
int firstVisible
Definition gui.h:153
tGfuiAction * onSelectAction
Definition gui.h:157
tGfuiListElement * elts
Definition gui.h:151
GfuiFontClass * font
Definition gui.h:150
float * fgSelectColor[3]
Definition gui.h:149
int scrollBar
Definition gui.h:156
float * fgColor[3]
Definition gui.h:147
int nbVisible
Definition gui.h:154
int selectedElt
Definition gui.h:155
float * bgSelectColor[3]
Definition gui.h:148
void(* tfuiCallback)(void *)
Definition tgfclient.h:108
struct MouseInfo tMouseInfo
int(* tfuiKeyCallback)(unsigned char key, int modifier, int state)
return 1 to prevent normal key computing
Definition tgfclient.h:110
struct ScrollBarInfo tScrollBarInfo
Scroll bar call-back information.
int(* tfuiSKeyCallback)(int key, int modifier, int state)
return 1 to prevent normal key computing
Definition tgfclient.h:111
std::function< void()> tGfuiAction
Definition tgfclient.h:107
void(* tfuiSBCallback)(tScrollBarInfo *)
Definition tgfclient.h:109