58 lines
1.2 KiB
C
58 lines
1.2 KiB
C
#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
|