update font to include australia title. Update other glyph mappings
[vg.git] / vg_imgui.c
index a4af9aecb3c922005ef90081792be4fc3747cd92..51792ff53042666d9e43853f2adf7242bbecc09d 100644 (file)
@@ -430,17 +430,20 @@ void ui_flush( enum ui_shader shader, f32 w, f32 h ){
    vg_ui.vert_start = vg_ui.cur_vert;
 }
 
-void ui_fill_rect( ui_rect rect, u32 colour, ui_px uv[4] )
+struct ui_vert *ui_fill_rect( ui_rect rect, u32 colour, ui_px uv[4] )
 {
    /* this if far from ideal but stops us from crashing */
    if( (vg_ui.cur_vert + 4 > vg_ui.max_verts) || 
        (vg_ui.cur_indice + 6 > vg_ui.max_indices))
-      return;
+   {
+      return &vg_ui.vertex_buffer[0];
+   }
 
    struct ui_vert *vertices = &vg_ui.vertex_buffer[ vg_ui.cur_vert ];
        u16            *indices  = &vg_ui.indice_buffer[ vg_ui.cur_indice ];
 
-   for( int i=0; i<4; i++ ){
+   for( int i=0; i<4; i++ )
+   {
       vertices[i].colour = colour;
    }
 
@@ -465,17 +468,20 @@ void ui_fill_rect( ui_rect rect, u32 colour, ui_px uv[4] )
        u16 start = vg_ui.cur_vert;
    u32 mesh[] = { 0,2,1, 0,3,2 };
 
-   for( u32 i=0; i<vg_list_size(mesh); i++ ){
+   for( u32 i=0; i<vg_list_size(mesh); i++ )
+   {
       indices[i] = start+mesh[i];
    }
 
        vg_ui.cur_indice += 6;
        vg_ui.cur_vert += 4;
+
+   return vertices;
 }
 
-void ui_fill( ui_rect rect, u32 colour )
+struct ui_vert *ui_fill( ui_rect rect, u32 colour )
 {
-   ui_fill_rect( rect, colour, (ui_px[4]){ 4,4,4,4 } );
+   return ui_fill_rect( rect, colour, (ui_px[4]){ 4,4,4,4 } );
 }
 
 void ui_outline( ui_rect rect, ui_px thickness, u32 colour, u32 mask )
@@ -795,6 +801,8 @@ u32 ui_opacity( u32 colour, f32 opacity )
 u32 ui_ntext( ui_rect rect, const char *str, u32 len, ui_px scale, 
               enum ui_align align, u32 colour )
 {
+   ui_px glow_text = 0;
+
        ui_rect text_cursor;
    if( colour == 0 ) colour = ui_colour( k_ui_fg );
 
@@ -850,6 +858,13 @@ u32 ui_ntext( ui_rect rect, const char *str, u32 len, ui_px scale,
          ui_rect cursor_clipped;
          if( ui_clip( rect, text_cursor, cursor_clipped ) )
          {
+            if( glow_text )
+            {
+               cursor_clipped[1] += glow_text;
+               ui_fill_rect( cursor_clipped, 0x00ffffff, glyph );
+               cursor_clipped[1] -= glow_text;
+            }
+
             ui_fill_rect( cursor_clipped, colour, glyph );
          }
                }
@@ -893,6 +908,12 @@ u32 ui_ntext( ui_rect rect, const char *str, u32 len, ui_px scale,
 
          continue;
                }
+      else if( c == '\x06' )
+      {
+         glow_text = *_c;
+         _c ++;
+         continue;
+      }
       else if( c == '\t' )
       {
          text_cursor[0] += vg_ui.font->sx*scale*4;
@@ -907,10 +928,10 @@ u32 ui_ntext( ui_rect rect, const char *str, u32 len, ui_px scale,
    return printed_chars;
 }
 
-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 )
 {
-   ui_ntext( rect, str, 1024, scale, align, colour );
+   return ui_ntext( rect, str, 1024, scale, align, colour );
 }
 
 void ui_font_face( vg_font_face *ff )