From 71dd7fcccb45a54d85ae23a95a8a8905ed21fe15 Mon Sep 17 00:00:00 2001 From: aura Date: Sun, 1 Mar 2026 20:16:45 +0100 Subject: wip on dropdowns --- src/gui/dropdown.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/gui/dropdown.cpp (limited to 'src/gui/dropdown.cpp') diff --git a/src/gui/dropdown.cpp b/src/gui/dropdown.cpp new file mode 100644 index 0000000..68ebcc6 --- /dev/null +++ b/src/gui/dropdown.cpp @@ -0,0 +1,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* 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; +} + + -- cgit v1.2.3