aboutsummaryrefslogtreecommitdiff
path: root/src/gui/inc/gui.h
blob: b24984d9db448003714d905d0bcfc05e318de012 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#ifndef GUI_H
#define GUI_H

#include <camera.h>
#include <gfx.h>
#include <input.h>
#include <peripheral.h>

#ifdef __cplusplus
extern "C"
{
#endif

struct gui_common
{
    const struct gui_common_cb
    {
        void (*add_child)(struct gui_common *parent, struct gui_common *child);
        int (*update)(struct gui_common *, const union peripheral *,
            const struct camera *, struct input *);
        int (*render)(const struct gui_common *);
        void (*get_dim)(const struct gui_common *, short *w, short *h);
        void (*deinit)(struct gui_common *, struct input *);
    } *cb;

    short x, y, xoff, yoff;
    bool hidden, hcentered, vcentered;
    struct gui_common *parent, *child, *sibling;
};

void gui_add_child(struct gui_common *parent, struct gui_common *child);
void gui_add_sibling(struct gui_common *g, struct gui_common *sibling);
int gui_update(struct gui_common *g, const union peripheral *p,
    const struct camera *c, struct input *in);
int gui_render(const struct gui_common *g);
void gui_deinit(struct gui_common *g, struct input *in);

#ifdef __cplusplus
}
#endif

#endif /* GUI_H */