#ifndef FCODER_GUI_H #define FCODER_GUI_H #include struct GUI_id{ uint64_t id[2]; }; inline GUI_id gui_id_zero(){ GUI_id id = {0}; return(id); } typedef struct GUI GUI; #define GUI_BEGIN_SIG(n) void n(GUI *gui) #define GUI_END_SIG(n) void n(GUI *gui) #define GUI_TOP_BAR_SIG(n) void n(GUI *gui) // TODO(allen): Do we want to break this call // down a little more? I think maybe we do. #define GUI_GET_SCROLL_VARS_SIG(n) void n(GUI *gui, GUI_id scroll_id, GUI_Scroll_Vars *vars, i32_Rect *region) #define GUI_BEGIN_SCROLLABLE_SIG(n) int32_t n(GUI *gui, GUI_id scroll_id, GUI_Scroll_Vars vars, float delta, int32_t show_scrollbar) #define GUI_END_SCROLLABLE_SIG(n) void n(GUI *gui) #define GUI_FILE_SIG(n) void n(GUI *gui, int32_t buffer_id) typedef GUI_BEGIN_SIG(GUI_Begin_Function); typedef GUI_END_SIG(GUI_End_Function); typedef GUI_TOP_BAR_SIG(GUI_Top_Bar_Function); typedef GUI_GET_SCROLL_VARS_SIG(GUI_Get_Scroll_Vars_Function); typedef GUI_BEGIN_SCROLLABLE_SIG(GUI_Begin_Scrollable_Function); typedef GUI_END_SCROLLABLE_SIG(GUI_End_Scrollable_Function); typedef GUI_FILE_SIG(GUI_File_Function); struct GUI_Functions{ GUI_Begin_Function *begin; GUI_End_Function *end; GUI_Top_Bar_Function *top_bar; GUI_Get_Scroll_Vars_Function *get_scroll_vars; GUI_Begin_Scrollable_Function *begin_scrollable; GUI_End_Scrollable_Function *end_scrollable; GUI_File_Function *file; }; #endif