#include "vg_engine.h"
#include "vg_tex.h"
#include "vg_shader.h"
+#include "vg_font.h"
+
+extern vg_font_sheet vg_default_font_sheet;
+extern vg_font_face vgf_default_small, vgf_default_large, vgf_default_title;
typedef i16 ui_px;
typedef ui_px ui_rect[4];
typedef u32 ui_scheme[8*4];
-struct ui_font {
- ui_px glyph_width,
- glyph_height,
- glyph_baseline,
- line_height,
- sheet_size,
- spacing,
- offset_y;
-
- u8 ascii_start;
-};
-typedef struct ui_font ui_font;
-
-extern ui_font vg_ui_font_small, vg_ui_font_big;
-
#define UI_RGB( STDHEX ) 0xff000000 |\
((STDHEX&0x000000ff)<<16) |\
((STDHEX&0x0000ff00) ) |\
ui_px mouse[2], mouse_delta[2], mouse_click[2];
u32 mouse_state[2];
u32 ignore_input_frames;
+ bool mouse_pos_overriden;
int wants_mouse;
ui_rect click_fader, click_fader_end;
f32 frosting;
ui_scheme scheme;
- const ui_font *font;
+ const vg_font_face *font;
+ v2f inverse_font_sheet;
enum ui_cursor{
k_ui_cursor_default,
void vg_ui_init(void);
void rect_copy( ui_rect a, ui_rect b );
void ui_flush( enum ui_shader shader, f32 w, f32 h );
-void ui_fill_rect( ui_rect rect, u32 colour, ui_px uv[4] );
-void ui_fill( ui_rect rect, u32 colour );
+struct ui_vert *ui_fill_rect( ui_rect rect, u32 colour, ui_px uv[4] );
+struct ui_vert *ui_fill( ui_rect rect, u32 colour );
void ui_outline( ui_rect rect, ui_px thickness, u32 colour, u32 mask );
void ui_split( ui_rect rect, enum ui_axis other, ui_px width, ui_px gap,
ui_rect l, ui_rect r );
int ui_click_down( u32 mask );
int ui_clicking( u32 mask );
int ui_click_up( u32 mask );
+void ui_set_mouse_pos( ui_px x, ui_px y );
void ui_prerender(void);
u32 ui_colour( enum ui_scheme_colour id );
u32 v4f_u32_colour( v4f colour );
u32 ui_opacity( u32 colour, f32 opacity );
+void ui_font_face( vg_font_face *ff );
u32 ui_ntext( ui_rect rect, const char *str, u32 len, ui_px scale,
enum ui_align align, u32 colour );
-void ui_text( ui_rect rect, const char *str, ui_px scale,
- enum ui_align align, u32 colour );
+u32 ui_text( ui_rect rect, const char *str, ui_px scale,
+ enum ui_align align, u32 colour );
void ui_panel( ui_rect in_rect, ui_rect out_panel );
void ui_label( ui_rect rect, const char *text, ui_px size,
ui_px gap, ui_rect r );
int ui_checkbox( ui_rect inout_panel, const char *str_label, i32 *data );
void ui_enum( ui_rect inout_panel, const char *str_label,
struct ui_enum_opt *options, u32 len, i32 *value );
-void ui_slider( ui_rect inout_panel, const char *str_label,
+bool ui_slider( ui_rect inout_panel, const char *str_label,
f32 min, f32 max, f32 *value, const char *format );
void ui_colourpicker( ui_rect inout_panel, const char *str_label, v4f value );
int ui_textbox( ui_rect inout_panel, const char *label,