int ui_init(ui_t *ctx, int txtc, char **txtv, int w, int h, ui_image_t *icon);
Inicializálja az UI kontextust és ablakot nyit. A legelső sztringnek a txtv[]
tömbben az ablak fejlécének kell lennie, a többi
szabadon választható.
Paraméter | Leírás |
---|---|
ctx |
Mutató az UI kontextusra |
txtc |
Sztringek száma |
txtv |
[Lokalizáció]hoz sztringtömb |
w |
Ablak szélessége |
h |
Ablak magassága |
icon |
Ablak ikonja kép |
Siker esetén 0-val tér vissza, egyébként hibakóddal.
int ui_free(ui_t *ctx);
Bezárja az ablakot és felszabadítja a lefoglalt erőforrásokat.
Paraméter | Leírás |
---|---|
ctx |
Mutató az UI kontextusra |
Siker esetén 0-val tér vissza, egyébként hibakóddal.
int ui_fullscreen(ui_t *ctx);
Váltogatja a kontextust teljesképernyős és ablakos mód között (inicializálást követően ablakos).
Paraméter | Leírás |
---|---|
ctx |
Mutató az UI kontextusra |
Siker esetén 0-val tér vissza, egyébként hibakóddal.
void *ui_getwindow(ui_t *ctx);
Amennyiben szükség lenne rá, ezzel a funkcióval lekérhető a motor által használt ablak objektum.
Paraméter | Leírás |
---|---|
ctx |
Mutató az UI kontextusra |
Egy implementációfüggő objektumot ad vissza.
A program általános szerkezetének valami ilyesminek kell lennie:
/* UI kontextus, ablakonként egy */
ui_t ctx;
/* lokalizációhoz sztringtömb */
enum { WINDOW_TITLE, HELLO_WORLD };
char *english[] = { "Window title", "Hello World!" };
/* ablak megnyitása és kontextus inicializálása */
ui_init(&ctx, 2, english, 640, 480, NULL);
/* a fő ciklus */
do {
/* tedd, amit tennél, rajzolj, amit akarsz */
glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
/* ... */
/* események lekérése és UI réteg megjelenítése a kívánt űrlappal */
/* ha ez NULL-t ad vissza, ki kell lépni a ciklusból */
if(!(evt = ui_event(&ctx, form))) break;
/* események feldolgozása */
switch(evt->type) {
case UI_EVT_KEY: /* billentyűleütés */ break;
case UI_EVT_MOUSE: /* egérgomb esemény */ break;
case UI_EVT_GAMEPAD: /* gamepad esemény */ break;
/* ... */
}
} while(1);
/* ablak bezárása */
ui_free(&ctx);