summaryrefslogtreecommitdiff
path: root/code/fe310/eos/eve/screen/tile.c
blob: 3715f6d5f842a6c4cf0d29ba8a23a836adec1884 (plain)
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
#include <stdlib.h>
#include <string.h>

#include "eve.h"
#include "eve_kbd.h"

#include "screen.h"
#include "tile.h"

#define MIN(X, Y)           (((X) < (Y)) ? (X) : (Y))

void eve_tile_init(EVETile *tile, EVEScreen *screen, uint16_t x, uint16_t y, uint16_t w, uint16_t h, EVECanvas *canvas) {
    tile->screen = screen;
    tile->x = x;
    tile->y = y;
    tile->w = w;
    tile->h = h;
    tile->canvas = canvas;
}

void eve_tile_get_pos(EVETile *tile, uint16_t *x, uint16_t *y, uint16_t *w, uint16_t *h) {
    if (x) *x = tile->x;
    if (y) *y = tile->y;
    if (w) *w = tile->w;
    if (h) *h = MIN(tile->x + tile->h, tile->screen->h - (tile->screen->kbd && tile->screen->kbd_active ? tile->screen->kbd->h : 0));
}

void eve_canvas_init(EVECanvas *canvas, eve_canvas_touch_t touch, eve_canvas_draw_t draw) {
    canvas->touch = touch;
    canvas->draw = draw;
}