#pragma once #include "zephr_math.h" typedef enum Alignment { ALIGN_TOP_LEFT, ALIGN_TOP_CENTER, ALIGN_TOP_RIGHT, ALIGN_LEFT_CENTER, ALIGN_CENTER, ALIGN_RIGHT_CENTER, ALIGN_BOTTOM_LEFT, ALIGN_BOTTOM_CENTER, ALIGN_BOTTOM_RIGHT, } Alignment; typedef enum UIConstraint { UI_CONSTRAINT_FIXED, UI_CONSTRAINT_RELATIVE, UI_CONSTRAINT_RELATIVE_PIXELS, UI_CONSTRAINT_ASPECT_RATIO, } UIConstraint; typedef struct UIConstraints { float x; float y; float width; float height; float rotation; } UIConstraints; int init_ui(const char* font_path, Size window_size); void set_x_constraint(UIConstraints *constraints, float value, UIConstraint type); void set_y_constraint(UIConstraints *constraints, float value, UIConstraint type); void set_width_constraint(UIConstraints *constraints, float value, UIConstraint type); void set_height_constraint(UIConstraints *constraints, float value, UIConstraint type); void set_rotation_constraint(UIConstraints *constraints, float angle_d); void apply_constraints(UIConstraints constraints, Vec2f *pos, Sizef *size); void apply_alignment(Alignment align, Vec2f *pos, Sizef size); void draw_quad(UIConstraints constraints, const Color *color, float border_radius, Alignment align); void draw_circle(UIConstraints constraints, const Color *color, Alignment align); void draw_triangle(UIConstraints constraints, const Color *color, Alignment align);