forked from KolibriOS/kolibrios
107 lines
3.8 KiB
C
107 lines
3.8 KiB
C
|
#ifndef KOLIBRI_MENUBAR_H
|
|||
|
#define KOLIBRI_MENUBAR_H
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
uint32_t type; // 1 <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ??
|
|||
|
|
|||
|
uint32_t x_w; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
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; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
uint32_t y_h1;
|
|||
|
|
|||
|
color_t bckg_col; // <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
color_t frnt_col; // <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
color_t menu_col; // <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
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; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
color_t bckg_text_col; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
color_t frnt_text_col; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
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 */
|