diff options
Diffstat (limited to 'code/fe310/eos/eve/widget/widget.c')
-rw-r--r-- | code/fe310/eos/eve/widget/widget.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/code/fe310/eos/eve/widget/widget.c b/code/fe310/eos/eve/widget/widget.c new file mode 100644 index 0000000..44de4c6 --- /dev/null +++ b/code/fe310/eos/eve/widget/widget.c @@ -0,0 +1,35 @@ +#include <stdlib.h> + +#include "eve.h" +#include "eve_kbd.h" + +#include "screen/screen.h" +#include "screen/tile.h" +#include "screen/page.h" +#include "screen/font.h" + +#include "widget.h" +#include "page.h" +#include "text.h" + +static const size_t _eve_wsize[] = { + 0, + sizeof(EVETextWidget), + sizeof(EVEPageWidget) +}; + +void eve_widget_init(EVEWidget *widget, uint8_t type, int16_t x, int16_t y, uint16_t w, uint16_t h, eve_widget_touch_t touch, eve_widget_draw_t draw, eve_kbd_input_handler_t putc) { + widget->type = type; + widget->x = x; + widget->y = y; + widget->w = w; + widget->h = h; + widget->touch = touch; + widget->draw = draw; + widget->putc = putc; +} + +EVEWidget *eve_widget_next(EVEWidget *widget) { + char *_w = (char *)widget; + return (EVEWidget *)(_w + _eve_wsize[widget->type]); +}
\ No newline at end of file |