#ifndef _PIUMA_GUI_LAYOUT_H_ #define _PIUMA_GUI_LAYOUT_H_ #include "../lib/types.h" #include "../lib/geometry.h" // Grid const s32 GUI_LAYOUT_MAX_CELLS = 0x7FFFFFFF; struct Gui_Layout_Grid { v2 window_position; v2 window_size; v2 cell_size; f32 cell_border; v2s max_cells_count; v2s cursor; Rect last_rect; Rect rect(); // Get last rect void row(u32 count = 1); Rect cell(u32 count = 1); Rect rect_at(v2s position, v2s size = {1,1}); // Does not modify cursor. You have to assign it yourself. }; Gui_Layout_Grid gui_layout_grid_create_by_divisions(v2 position, v2 window_size, u32 divisions_x, u32 divisions_y, f32 border = 0); Gui_Layout_Grid gui_layout_grid_create_by_cell_size(v2 position, v2 window_size, v2 cell_size, f32 border = 0); // Basic struct Gui_Layout_Basic { v2 window_position; v2 window_size; v2 cursor = {0,0}; f32 next_row_y = 0; Rect last_rect = {0,0,0,0}; f32 font_size; v2 button_padding = {0,0}; v2 element_distance = {0,0}; v2 window_padding = {0,0}; Rect rect(); void push_rect(Rect r); void row(); Rect label_rect(const char *text = ""); Rect button_rect(const char *text = ""); Rect button_rect(f32 length); }; Gui_Layout_Basic gui_layout_basic_create(v2 position, v2 size, f32 font_size); #endif