summaryrefslogtreecommitdiffstats
path: root/src/tk.h
blob: 90b0bcfc2a13b2004fb71a5c23daf871b9ee3393 (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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*
 * Copyright (C) 2021  P. J. McDermott
 *
 * This file is part of Maze Fight
 *
 * Maze Fight is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Maze Fight is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Maze Fight.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef MFTK_H_
#define MFTK_H_

#include <SDL.h>
#include <SDL_ttf.h>

struct mftk_window;
struct mftk_widget;

struct mftk_window *
mftk_window_new(int x, int y, struct mftk_widget *root);

int
mftk_window_event(struct mftk_window *w, SDL_Event *e);

int
mftk_window_render(struct mftk_window *w, SDL_Renderer *renderer);

void
mftk_window_destroy(struct mftk_window **w_p);

struct mftk_widget *
mftk_label_new(TTF_Font *font, const char *text, SDL_Renderer *renderer);

struct mftk_widget *
mftk_button_new(TTF_Font *font, const char *text, int padding,
		int (*action)(void *), void *user_data, SDL_Renderer *renderer);

#define MFTK_GRID_HALIGN_L  1
#define MFTK_GRID_HALIGN_C  2
#define MFTK_GRID_HALIGN_R  4
#define MFTK_GRID_VALIGN_T  8
#define MFTK_GRID_VALIGN_M 16
#define MFTK_GRID_VALIGN_B 32
struct mftk_widget *
mftk_grid_new(int rows, int cols, int row_spacing, int col_spacing, ...);

struct mftk_widget *
mftk_box_new(int container_w, int container_h, int own_w, int own_h,
		int padding, struct mftk_widget *child);

struct mftk_widget *
mftk_check_new(int butn_width, int butn_padding, int state, int label_padding,
		TTF_Font *font, const char *text, int (*action)(void *, int),
		int (*submit)(void *), void *user_data, SDL_Renderer *renderer);

struct mftk_widget *
mftk_radio_new(int butn_width, int butn_padding, int label_padding,
		int item_padding, TTF_Font *font, int (*action)(void *, int),
		int (*submit)(void *), void *user_data, SDL_Renderer *renderer,
		int state, int options, ...);

struct mftk_widget *
mftk_text_new(char min_char, char max_char, int len, const char *val,
		TTF_Font *font, int editable, int (*allowed)(void *, char),
		int (*action)(void *, const char *), int (*submit)(void *),
		void *user_data);

void
mftk_text_set_value(struct mftk_widget *w, const char *val);

struct mftk_widget *
mftk_blank_new(void);

#endif  /* MFTK_H_ */