5 enum { RTK_ANY, RTK_WIN, RTK_BUTTON, RTK_LABEL, RTK_CHECKBOX, RTK_SLIDER, RTK_SEP };
7 enum { RTK_NONE, RTK_VBOX, RTK_HBOX };
9 typedef struct rtk_screen rtk_screen;
10 typedef union rtk_widget rtk_widget;
11 typedef struct rtk_icon rtk_icon;
12 typedef struct rtk_iconsheet rtk_iconsheet;
14 typedef struct rtk_rect {
15 int x, y, width, height;
18 typedef struct rtk_icon {
20 int width, height, scanlen;
23 struct rtk_icon *next;
27 typedef struct rtk_draw_ops {
28 void (*fill)(rtk_rect *rect, uint32_t color);
29 void (*blit)(int x, int y, rtk_icon *icon);
30 void (*drawtext)(int x, int y, const char *str);
31 void (*textrect)(const char *str, rtk_rect *rect);
34 typedef void (*rtk_callback)(rtk_widget*, void*);
37 void rtk_setup(rtk_draw_ops *drawop);
39 /* widget functions */
40 rtk_widget *rtk_create_widget(void);
41 void rtk_free_widget(rtk_widget *w);
43 int rtk_type(rtk_widget *w);
44 rtk_widget *rtk_parent(rtk_widget *w);
46 void rtk_move(rtk_widget *w, int x, int y);
47 void rtk_pos(rtk_widget *w, int *xptr, int *yptr);
48 void rtk_resize(rtk_widget *w, int xsz, int ysz);
49 void rtk_size(rtk_widget *w, int *xptr, int *yptr);
51 int rtk_set_text(rtk_widget *w, const char *str);
52 const char *rtk_get_text(rtk_widget *w);
54 void rtk_set_value(rtk_widget *w, int val);
55 int rtk_get_value(rtk_widget *w);
57 void rtk_set_callback(rtk_widget *w, rtk_callback cbfunc, void *cls);
59 /* window functions */
60 void rtk_win_layout(rtk_widget *w, int layout);
61 void rtk_win_clear(rtk_widget *w);
62 void rtk_win_add(rtk_widget *par, rtk_widget *child);
63 void rtk_win_rm(rtk_widget *par, rtk_widget *child);
64 int rtk_win_has(rtk_widget *par, rtk_widget *child);
66 /* button functions */
67 void rtk_bn_set_icon(rtk_widget *w, rtk_icon *icon);
68 rtk_icon *rtk_bn_get_icon(rtk_widget *w);
70 rtk_widget *rtk_create_window(rtk_widget *par, const char *title, int x, int y, int w, int h);
71 rtk_widget *rtk_create_button(rtk_widget *par, const char *str, rtk_callback cbfunc);
72 rtk_widget *rtk_create_iconbutton(rtk_widget *par, rtk_icon *icon, rtk_callback cbfunc);
73 rtk_widget *rtk_create_label(rtk_widget *par, const char *text);
74 rtk_widget *rtk_create_checkbox(rtk_widget *par, const char *text, int chk, rtk_callback cbfunc);
75 rtk_widget *rtk_create_separator(rtk_widget *par);
78 rtk_iconsheet *rtk_load_iconsheet(const char *fname);
79 void rtk_free_iconsheet(rtk_iconsheet *is);
81 rtk_icon *rtk_define_icon(rtk_iconsheet *is, const char *name, int x, int y, int w, int h);
82 rtk_icon *rtk_lookup_icon(rtk_iconsheet *is, const char *name);
85 void rtk_draw_widget(rtk_widget *w);
88 int rtk_input_key(rtk_widget *w, int key, int press);
89 int rtk_input_mbutton(rtk_widget *w, int bn, int press, int x, int y);
90 int rtk_input_mmotion(rtk_widget *w, int x, int y);