0,0 → 1,106 |
#ifndef KOLIBRI_MENUBAR_H |
#define KOLIBRI_MENUBAR_H |
|
typedef struct |
{ |
uint32_t type; // 1 åñëè íåò ïîäìåíþ ?? |
|
uint32_t x_w; // âåðõíèé ïóíêò |
uint32_t y_h; |
|
char* text_pointer; |
char* pos_pointer; |
char* text_end; |
uint32_t mouse_pos; |
uint32_t mouse_keys; |
|
uint32_t x_w1; // ïîäìåíþ |
uint32_t y_h1; |
|
color_t bckg_col; // ôîí âåðõíåãî ïóêòà |
color_t frnt_col; // ôîí âûáðàííîãî âåðõíåãî ïóíêòà |
color_t menu_col; // ôîí âûïàäàþùåé ÷àñòè (ïîäïóêòû) |
uint32_t select; |
uint32_t out_select; |
char* buf_adress; |
char* procinfo; |
uint32_t click; |
uint32_t cursor; |
uint32_t cursor_old; |
uint32_t interval; |
uint32_t cursor_max; |
uint32_t extended_key; |
color_t menu_sel_col; // öâåò ôîíà âûáðàííîãî ïîäïóíêòà |
color_t bckg_text_col; // öâåò øðèôòà íåâûáðàííîãî ïóíêòà |
color_t frnt_text_col; // öâåò øðèôòà âûáðàííîãî ïóíêòà |
uint32_t mouse_keys_old; |
uint32_t font_height; |
uint32_t cursor_out; |
uint32_t get_mouse_flag; |
} menubar; |
|
|
inline menubar* kolibri_menubar(menubar* bar, uint32_t x_w, uint32_t y_h, uint16_t sub_w, uint16_t sub_h, char *menutext, char *subitems, |
color_t sel_font, color_t unsel_font, color_t top_bg, color_t top_select, color_t sub_bg, color_t sub_select) |
{ |
static char procinfo[1024]; |
memset(bar, 0, sizeof(menubar)); |
bar->type = 0; |
bar->x_w = x_w; |
bar->y_h = y_h; |
bar->text_pointer = menutext; |
bar->pos_pointer = subitems; |
|
// search last item - double zero |
char *pc = subitems; |
while (*pc) pc = strchr(pc, 0) + 1; |
bar->text_end = pc; |
bar->x_w1 = X_Y(x_w >> 16, sub_w); |
bar->y_h1 = X_Y((y_h >> 16) + (y_h & 0xFFFF), sub_h); |
|
bar->interval = 16; |
bar->font_height = 8; |
|
bar->bckg_col = top_bg; |
bar->frnt_col = top_select; |
bar->menu_col = sub_bg; |
bar->menu_sel_col = sub_select; |
bar->bckg_text_col = unsel_font; |
bar->frnt_text_col = sel_font; |
bar->procinfo = procinfo; |
|
return bar; |
} |
|
inline menubar* kolibri_new_menubar(uint32_t x_w, uint32_t y_h, uint16_t sub_w, uint16_t sub_h, char *menutext, char *subitems, |
color_t sel_font, color_t unsel_font, color_t top_bg, color_t top_select, color_t sub_bg, color_t sub_select) |
{ |
menubar *new_bar = (menubar*)malloc(sizeof(menubar)); |
return kolibri_menubar(new_bar, x_w, y_h, sub_w, sub_h, menutext, subitems, sel_font, unsel_font, top_bg, top_select, sub_bg, sub_select); |
} |
|
inline menubar* kolibri_menubar_def(menubar* bar, uint32_t x_w, uint32_t y_h, uint16_t sub_w, uint16_t sub_h, char *menutext, char *subitems) |
{ |
return kolibri_menubar(bar, x_w, y_h, sub_w, sub_h, menutext, subitems, |
kolibri_color_table.color_work_button_text, kolibri_color_table.color_work_text, kolibri_color_table.color_work_area, |
kolibri_color_table.color_work_button, kolibri_color_table.color_work_area, kolibri_color_table.color_work_button); |
} |
|
inline menubar* kolibri_new_menubar_def(uint32_t x_w, uint32_t y_h, uint16_t sub_w, uint16_t sub_h, char *menutext, char *subitems) |
{ |
return kolibri_new_menubar(x_w, y_h, sub_w, sub_h, menutext, subitems, |
kolibri_color_table.color_work_button_text, kolibri_color_table.color_work_text, kolibri_color_table.color_work_area, |
kolibri_color_table.color_work_button, kolibri_color_table.color_work_area, kolibri_color_table.color_work_button); |
} |
|
inline void gui_add_menubar(kolibri_window *wnd, menubar* bar) |
{ |
kolibri_window_add_element(wnd, KOLIBRI_MENU_BAR, bar); |
} |
|
|
extern void (*menu_bar_draw)(menubar *) __attribute__((__stdcall__)); |
extern void (*menu_bar_mouse)(menubar *) __attribute__((__stdcall__)); |
extern void (*menu_bar_activate)(menubar *) __attribute__((__stdcall__)); |
|
#endif /* KOLIBRI_MENUBAR_H */ |