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;
}
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 )
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 );
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 );
}
}
continue;
}
+ else if( c == '\x06' )
+ {
+ glow_text = *_c;
+ _c ++;
+ continue;
+ }
else if( c == '\t' )
{
text_cursor[0] += vg_ui.font->sx*scale*4;
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 )