X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Frtk.h;h=a2a54ef01030bd2d08e9369936844c0469e49b48;hb=3c3612761bcf77a5c4ec6810aa47e0e3f0131bf1;hp=58cccadd5dba23ee5b66467ccc615cea8348cd32;hpb=c4a043b45ff38d532579cfdf0b6a7e3f50527559;p=retroray diff --git a/src/rtk.h b/src/rtk.h index 58cccad..a2a54ef 100644 --- a/src/rtk.h +++ b/src/rtk.h @@ -1,11 +1,30 @@ #ifndef RTK_H_ #define RTK_H_ +#include "sizeint.h" + /* widget type */ -enum { RTK_ANY, RTK_WIN, RTK_BUTTON, RTK_LABEL, RTK_CHECKBOX, RTK_SLIDER }; +enum { + RTK_ANY, + RTK_WIN, + RTK_BUTTON, + RTK_LABEL, + RTK_CHECKBOX, + RTK_SLIDER, + RTK_SEP +}; /* window layout */ enum { RTK_NONE, RTK_VBOX, RTK_HBOX }; - +/* window flags */ +enum { + RTK_WIN_FRAME = 1, + RTK_WIN_MOVABLE = 2, + RTK_WIN_RESIZABLE = 4 +}; +/* button mode */ +enum { RTK_PUSHBN, RTK_TOGGLEBN }; + +typedef struct rtk_screen rtk_screen; typedef union rtk_widget rtk_widget; typedef struct rtk_icon rtk_icon; typedef struct rtk_iconsheet rtk_iconsheet; @@ -14,6 +33,15 @@ typedef struct rtk_rect { int x, y, width, height; } rtk_rect; +typedef struct rtk_icon { + char *name; + int width, height, scanlen; + uint32_t *pixels; + + struct rtk_icon *next; +} rtk_icon; + + typedef struct rtk_draw_ops { void (*fill)(rtk_rect *rect, uint32_t color); void (*blit)(int x, int y, rtk_icon *icon); @@ -27,16 +55,17 @@ typedef void (*rtk_callback)(rtk_widget*, void*); void rtk_setup(rtk_draw_ops *drawop); /* widget functions */ - rtk_widget *rtk_create_widget(void); void rtk_free_widget(rtk_widget *w); int rtk_type(rtk_widget *w); +rtk_widget *rtk_parent(rtk_widget *w); void rtk_move(rtk_widget *w, int x, int y); void rtk_pos(rtk_widget *w, int *xptr, int *yptr); void rtk_resize(rtk_widget *w, int xsz, int ysz); void rtk_size(rtk_widget *w, int *xptr, int *yptr); +void rtk_get_rect(rtk_widget *w, rtk_rect *r); int rtk_set_text(rtk_widget *w, const char *str); const char *rtk_get_text(rtk_widget *w); @@ -46,6 +75,13 @@ int rtk_get_value(rtk_widget *w); void rtk_set_callback(rtk_widget *w, rtk_callback cbfunc, void *cls); +void rtk_show(rtk_widget *w); +void rtk_hide(rtk_widget *w); +int rtk_visible(const rtk_widget *w); + +void rtk_invalidate(rtk_widget *w); +void rtk_validate(rtk_widget *w); + /* window functions */ void rtk_win_layout(rtk_widget *w, int layout); void rtk_win_clear(rtk_widget *w); @@ -54,23 +90,35 @@ void rtk_win_rm(rtk_widget *par, rtk_widget *child); int rtk_win_has(rtk_widget *par, rtk_widget *child); /* button functions */ +void rtk_bn_mode(rtk_widget *w, int mode); void rtk_bn_set_icon(rtk_widget *w, rtk_icon *icon); rtk_icon *rtk_bn_get_icon(rtk_widget *w); -rtk_widget *rtk_create_window(rtk_widget *par, const char *title, int x, int y, int w, int h); +rtk_widget *rtk_create_window(rtk_widget *par, const char *title, int x, int y, + int width, int height, unsigned int flags); rtk_widget *rtk_create_button(rtk_widget *par, const char *str, rtk_callback cbfunc); rtk_widget *rtk_create_iconbutton(rtk_widget *par, rtk_icon *icon, rtk_callback cbfunc); rtk_widget *rtk_create_label(rtk_widget *par, const char *text); rtk_widget *rtk_create_checkbox(rtk_widget *par, const char *text, int chk, rtk_callback cbfunc); +rtk_widget *rtk_create_separator(rtk_widget *par); /* icon functions */ rtk_iconsheet *rtk_load_iconsheet(const char *fname); void rtk_free_iconsheet(rtk_iconsheet *is); rtk_icon *rtk_define_icon(rtk_iconsheet *is, const char *name, int x, int y, int w, int h); +rtk_icon *rtk_lookup_icon(rtk_iconsheet *is, const char *name); void rtk_draw_widget(rtk_widget *w); +/* input events */ +int rtk_input_key(rtk_widget *w, int key, int press); +int rtk_input_mbutton(rtk_widget *w, int bn, int press, int x, int y); +int rtk_input_mmotion(rtk_widget *w, int x, int y); + +/* misc */ +void rtk_fix_rect(rtk_rect *r); +void rtk_rect_union(rtk_rect *a, const rtk_rect *b); #endif /* RTK_H_ */