X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Frtk.h;h=25bd5cd92e6d6b92cba25400f116773c2064dbe3;hb=8b26b033e3709d820996a23008435632fa7922bf;hp=58cccadd5dba23ee5b66467ccc615cea8348cd32;hpb=c4a043b45ff38d532579cfdf0b6a7e3f50527559;p=retroray diff --git a/src/rtk.h b/src/rtk.h index 58cccad..25bd5cd 100644 --- a/src/rtk.h +++ b/src/rtk.h @@ -2,10 +2,21 @@ #define RTK_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 }; +/* 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 +25,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,11 +47,11 @@ 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); @@ -54,6 +74,7 @@ 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); @@ -62,15 +83,21 @@ rtk_widget *rtk_create_button(rtk_widget *par, const char *str, rtk_callback cbf 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); #endif /* RTK_H_ */