bad char
[vg.git] / vg_imgui.h
index 4e725a824c37c62cc9e6448f1c0e349f4796534d..8ec033009859b9ac44fe180a945a44eb27fcaeeb 100644 (file)
 #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];
@@ -83,21 +87,6 @@ extern ui_px k_ui_widget_height,
 
 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)    ) |\
@@ -192,6 +181,7 @@ struct vg_imgui
        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;
@@ -199,7 +189,8 @@ struct vg_imgui
    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,
@@ -229,8 +220,8 @@ enum ui_button_state {
 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 );
@@ -248,6 +239,7 @@ int ui_inside_rect( ui_rect rect, ui_px co[2] );
 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 );
 
@@ -258,10 +250,11 @@ void ui_hex_to_norm( u32 hex, v4f norm );
 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 );
@@ -269,24 +262,30 @@ void ui_standard_widget( ui_rect inout_panel, ui_rect out_rect, ui_px count );
 void ui_info( ui_rect inout_panel, const char *text );
 void ui_image( ui_rect rect, GLuint image );
 void ui_defocus_all(void);
+
+enum ui_button_state ui_button_base( ui_rect rect );
 enum ui_button_state ui_colourbutton( ui_rect rect, 
                                       enum ui_scheme_colour colour,
                                       enum ui_scheme_colour hover_colour,
-                                      enum ui_scheme_colour hi_colour,
-                                      bool const fill );
+                                      enum ui_scheme_colour hi_colour );
 enum ui_button_state ui_colourbutton_text( 
       ui_rect rect, const char *string, ui_px scale,
       enum ui_scheme_colour colour );
 enum ui_button_state ui_button_text( ui_rect rect, 
                                      const char *string, ui_px scale );
 enum ui_button_state ui_button( ui_rect inout_panel, const char *string );
+
 void ui_postrender(void);
 
+enum ui_button_state ui_checkbox_base( ui_rect box, i32 *data );
 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, 
-                f32 min, f32 max, f32 *value, const char *format );
+enum ui_button_state ui_slider_base( ui_rect box, f32 min, f32 max, f32 *value, 
+                                     f32 *out_t );
+bool ui_slider( ui_rect inout_panel, const char *str_label, 
+                f32 min, f32 max, f32 *value );
+void ui_slider_text( ui_rect box, const char *format, f32 value );
 void ui_colourpicker( ui_rect inout_panel, const char *str_label, v4f value );
 int ui_textbox( ui_rect inout_panel, const char *label,
                 char *buf, u32 len, u32 lines, u32 flags,