summaryrefslogtreecommitdiff
path: root/src/gui/dropdown.cpp
blob: 68ebcc63b7728a1e39394ff810a183f3e017a624 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "base.h"

const U32 DROPDOWN_TITLE_OFFSET = 15;

void gui_dropdown_draw_fn( void* p ) {
  GUI_DROPDOWN* drop = (GUI_DROPDOWN*)p;

  I32 x = gui_relx( drop );
  I32 y = gui_rely( drop );

  CLR col = gui_is_fg_window( drop )? ui_clr.border : ui_clr.border_inactive;
  gui_draw_frect( x, y, drop->w, drop->h, col );
  gui_draw_frect( x+1, y+1, drop->w-2, drop->h-2, ui_clr.bg_sec );

  I32 middle = x + drop->w/2;
  I32 middle_y = y + drop->h/2 - 7;

  gui_draw_str( middle, middle_y, ALIGN_C, FNT_JPN12, ui_clr.txt, drop->name );
}

void gui_dropdown_input_fn( void* p ) {

}

GUI_DROPDOWN* gui_dropdown( I32 x, I32 y, I32 w, I32 h, const char* title, LIST<GUI_LIST_ENTRY>* list, I32* pval ) {
  if( !gui_check_target() ) return 0;

  GUI_DROPDOWN* dropdown = new GUI_DROPDOWN;
  dropdown->x = x;
  dropdown->y = y;
  dropdown->w = w;
  dropdown->h = h;

  dropdown->xbound = w;
  dropdown->ybound = h + DROPDOWN_TITLE_OFFSET;

  dropdown->cb = 0;
  dropdown->pval = pval;
  dropdown->plist = list;
  dropdown->draw_fn = gui_dropdown_draw_fn;
  dropdown->input_fn = gui_dropdown_input_fn;
  strcpy( dropdown->name, title );

  dropdown->parent = gui_get_view();

  gui_get_view()->children.push( dropdown );
  return dropdown;
}