Subversion Repositories Kolibri OS

Rev

Rev 6489 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. #ifndef KOLIBRI_MENUBAR_H
  2. #define KOLIBRI_MENUBAR_H
  3.  
  4. typedef struct
  5. {
  6.         uint32_t type;   // 1 åñëè íåò ïîäìåíþ ??
  7.  
  8.         uint32_t x_w;   // âåðõíèé ïóíêò
  9.         uint32_t y_h;
  10.  
  11.         char* text_pointer;
  12.         char* pos_pointer;
  13.         char* text_end;
  14.         uint32_t mouse_pos;
  15.         uint32_t mouse_keys;
  16.  
  17.         uint32_t x_w1;  // ïîäìåíþ
  18.         uint32_t y_h1;
  19.  
  20.         color_t bckg_col;  // ôîí âåðõíåãî ïóêòà
  21.         color_t frnt_col;  // ôîí âûáðàííîãî âåðõíåãî ïóíêòà
  22.         color_t menu_col;  // ôîí âûïàäàþùåé ÷àñòè (ïîäïóêòû)
  23.         uint32_t select;
  24.         uint32_t out_select;
  25.         char* buf_adress;
  26.         char* procinfo;
  27.         uint32_t click;
  28.         uint32_t cursor;
  29.         uint32_t cursor_old;
  30.         uint32_t interval;
  31.         uint32_t cursor_max;
  32.         uint32_t extended_key;
  33.         color_t menu_sel_col;  // öâåò ôîíà âûáðàííîãî ïîäïóíêòà
  34.         color_t bckg_text_col; // öâåò øðèôòà íåâûáðàííîãî ïóíêòà
  35.         color_t frnt_text_col;  // öâåò øðèôòà âûáðàííîãî ïóíêòà
  36.         uint32_t mouse_keys_old;
  37.         uint32_t font_height;
  38.         uint32_t cursor_out;
  39.         uint32_t get_mouse_flag;
  40. } menubar;
  41.  
  42.  
  43. 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,
  44.                                 color_t sel_font, color_t unsel_font, color_t top_bg, color_t top_select, color_t sub_bg, color_t sub_select)
  45. {
  46.     static char procinfo[1024];
  47.     memset(bar, 0, sizeof(menubar));
  48.     bar->type = 0;
  49.     bar->x_w = x_w;
  50.     bar->y_h = y_h;
  51.     bar->text_pointer = menutext;
  52.     bar->pos_pointer = subitems;
  53.  
  54.     // search last item - double zero
  55.     char *pc = subitems;
  56.     while (*pc) pc = strchr(pc, 0) + 1;
  57.     bar->text_end = pc;
  58.     bar->x_w1 = X_Y(x_w >> 16, sub_w);
  59.     bar->y_h1 = X_Y((y_h >> 16) + (y_h & 0xFFFF), sub_h);
  60.  
  61.     bar->interval = 16;
  62.     bar->font_height = 8;
  63.  
  64.     bar->bckg_col = top_bg;
  65.     bar->frnt_col = top_select;
  66.     bar->menu_col = sub_bg;
  67.     bar->menu_sel_col = sub_select;
  68.     bar->bckg_text_col = unsel_font;
  69.     bar->frnt_text_col = sel_font;
  70.     bar->procinfo = procinfo;
  71.  
  72.     return bar;
  73. }
  74.  
  75. 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,
  76.                                 color_t sel_font, color_t unsel_font, color_t top_bg, color_t top_select, color_t sub_bg, color_t sub_select)
  77. {
  78.     menubar *new_bar = (menubar*)malloc(sizeof(menubar));
  79.     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);
  80. }
  81.  
  82. 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)
  83. {
  84.     return kolibri_menubar(bar, x_w, y_h, sub_w, sub_h, menutext, subitems,
  85.                            kolibri_color_table.color_work_button_text, kolibri_color_table.color_work_text, kolibri_color_table.color_work_area,
  86.                            kolibri_color_table.color_work_button, kolibri_color_table.color_work_area, kolibri_color_table.color_work_button);
  87. }
  88.  
  89. 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)
  90. {
  91.     return kolibri_new_menubar(x_w, y_h, sub_w, sub_h, menutext, subitems,
  92.                            kolibri_color_table.color_work_button_text, kolibri_color_table.color_work_text, kolibri_color_table.color_work_area,
  93.                            kolibri_color_table.color_work_button, kolibri_color_table.color_work_area, kolibri_color_table.color_work_button);
  94. }
  95.  
  96. inline void gui_add_menubar(kolibri_window *wnd, menubar* bar)
  97. {
  98.     kolibri_window_add_element(wnd, KOLIBRI_MENU_BAR, bar);
  99. }
  100.  
  101.  
  102. extern void (*menu_bar_draw)(menubar *) __attribute__((__stdcall__));
  103. extern void (*menu_bar_mouse)(menubar *) __attribute__((__stdcall__));
  104. extern void (*menu_bar_activate)(menubar *) __attribute__((__stdcall__));
  105.  
  106. #endif /* KOLIBRI_MENUBAR_H */
  107.