13 #define ASCII_CHAR_COUNT 96
16 #include <cglm/cglm.h>
30 #define UI_MAX_BATCH_VERTICES 8192
121 float pos_y,
float padding,
int screen_width,
134 float pos_y,
const vec3 color,
int screen_width,
147 float pos_y,
const vec3 color,
float alpha,
148 int screen_width,
int screen_height);
152 float pos_y,
const vec3 color,
float alpha,
153 float scale,
int screen_width,
int screen_height);
157 float width,
float height,
const vec3 color,
int screen_width,
162 float width,
float height,
const vec3 color,
float alpha,
163 int screen_width,
int screen_height);
167 float size,
float angle,
const vec3 color,
168 int screen_width,
int screen_height);
172 float width,
float height,
float radius,
173 const vec3 color,
float alpha,
int screen_width,
178 float width,
float height,
float radius,
179 const vec3 color,
float alpha,
int screen_width,
194 float rect_y,
float width,
float height,
195 const vec3 tint,
float alpha,
int screen_width,
212 float rect_y,
float width,
float height,
213 const vec3 tint,
float intensity,
int screen_width,
layout(location=0) in vec3 RayDir
High-level OpenGL shader management with metadata and uniform caching.
Metrics and texture coordinates for a single font character.
Definition: ui.h:22
float h
Definition: ui.h:24
float advance
Definition: ui.h:26
float x_off
Definition: ui.h:25
float x0
Definition: ui.h:23
Wrapper for an OpenGL program with uniform caching and automatic cleanup.
Definition: shader.h:71
Persistent state for the UI system.
Definition: ui.h:49
GLuint vao
Definition: ui.h:54
int batch_active
Definition: ui.h:61
GLuint current_texture
Definition: ui.h:62
Shader * spinner_shader
Definition: ui.h:53
int current_screen_width
Definition: ui.h:59
Shader * shader
Definition: ui.h:51
GLuint texture
Definition: ui.h:50
int current_screen_height
Definition: ui.h:60
float font_size
Definition: ui.h:56
int batch_count
Definition: ui.h:58
Helper for automatic vertical stacking of UI elements.
Definition: ui.h:69
float cursor_y
Definition: ui.h:72
int screen_height
Definition: ui.h:75
float start_x
Definition: ui.h:71
float padding
Definition: ui.h:73
int screen_width
Definition: ui.h:74
UIContext * ui
Definition: ui.h:70
Vertex data for the batch renderer.
Definition: ui.h:36
float rect_size_x
Definition: ui.h:41
float mode
Definition: ui.h:40
float u
Definition: ui.h:38
float a
Definition: ui.h:39
float radius
Definition: ui.h:42
float x
Definition: ui.h:37
void ui_layout_init(UILayout *layout, UIContext *ui_ctx, float pos_x, float pos_y, float padding, int screen_width, int screen_height)
Initializes a layout helper for a frame.
Definition: ui.c:554
void ui_draw_rect_ex(UIContext *ui_context, float rect_x, float rect_y, float width, float height, const vec3 color, float alpha, int screen_width, int screen_height)
Draws a solid color rectangle with custom alpha transparency.
Definition: ui.c:472
float ui_measure_text(const UIContext *ui_context, const char *text)
Measures the width of a text string in pixels.
Definition: ui.c:380
void ui_begin(UIContext *ui_context, int screen_width, int screen_height)
Begins a new UI batch.
Definition: ui.c:304
void ui_draw_glow_rect(UIContext *ui_context, float rect_x, float rect_y, float width, float height, float radius, const vec3 color, float alpha, int screen_width, int screen_height)
Draws an SDF neon glow border around a rounded rectangle area.
Definition: ui.c:828
void ui_destroy(UIContext *ui_context)
Releases UI resources.
Definition: ui.c:524
void ui_draw_text_ex(UIContext *ui_context, const char *text, float pos_x, float pos_y, const vec3 color, float alpha, int screen_width, int screen_height)
Draws text with custom alpha transparency.
Definition: ui.c:403
void ui_layout_text(UILayout *layout, const char *text, const vec3 color)
Draws text and advances the layout cursor.
Definition: ui.c:566
void ui_layout_separator(UILayout *layout, float space)
Adds vertical space to the layout.
Definition: ui.c:580
#define UI_MAX_BATCH_VERTICES
Maximum number of vertices per UI batch.
Definition: ui.h:30
#define ASCII_CHAR_COUNT
Number of supported glyphs in the font atlas.
Definition: ui.h:13
void ui_draw_text(UIContext *ui_context, const char *text, float pos_x, float pos_y, const vec3 color, int screen_width, int screen_height)
Draws a single text string at a specific coordinate.
Definition: ui.c:372
void ui_flush(UIContext *ui_context)
Flushes the current UI batch to the GPU.
Definition: ui.c:327
void ui_draw_bloom_quad(UIContext *ui_context, GLuint texture, float rect_x, float rect_y, float width, float height, const vec3 tint, float intensity, int screen_width, int screen_height)
Draws a textured quad with additive blending for bloom effects (mode 4).
Definition: ui.c:771
void ui_draw_textured_quad(UIContext *ui_context, GLuint texture, float rect_x, float rect_y, float width, float height, const vec3 tint, float alpha, int screen_width, int screen_height)
Draws a textured quad tinted by a color (mode 3).
Definition: ui.c:719
void ui_draw_text_scaled(UIContext *ui_context, const char *text, float pos_x, float pos_y, const vec3 color, float alpha, float scale, int screen_width, int screen_height)
Draws text with custom alpha transparency and a scale factor.
Definition: ui.c:411
int ui_init(UIContext *ui_context, const char *font_path, float font_size)
Initializes the UI system.
Definition: ui.c:237
void ui_draw_rect(UIContext *ui_context, float rect_x, float rect_y, float width, float height, const vec3 color, int screen_width, int screen_height)
Draws a solid color rectangle.
Definition: ui.c:464
void ui_draw_spinner(UIContext *ui_context, float center_x, float center_y, float size, float angle, const vec3 color, int screen_width, int screen_height)
Draws a rotating loading spinner.
Definition: ui.c:588
void ui_draw_rounded_rect(UIContext *ui_context, float rect_x, float rect_y, float width, float height, float radius, const vec3 color, float alpha, int screen_width, int screen_height)
Draws a rounded rectangle with custom alpha.
Definition: ui.c:661
void ui_end(UIContext *ui_context)
Ends the current UI batch and restores OpenGL state.
Definition: ui.c:361