X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=vg%2Fvg_ui.h;h=bf9adc85549d761ecbd833c5df438aa1ad1c3b31;hb=79844daac2e6c95698639247b2affcf75fabe5db;hp=74ecc97988771f70a4a4f03d8e696fbec7ed0034;hpb=026b67150e9bd238709a6aeab656f7d01f3765a8;p=fishladder.git diff --git a/vg/vg_ui.h b/vg/vg_ui.h index 74ecc97..bf9adc8 100644 --- a/vg/vg_ui.h +++ b/vg/vg_ui.h @@ -437,6 +437,8 @@ static void ui_text( ui_ctx *ctx, const char *str, ui_px scale, int alignment ) text_cursor[2] = 7*scale; text_cursor[3] = 7*scale; + u32 current_colour = 0xffffffff; + const char *_c = str; char c; while( (c = *(_c ++)) ) @@ -457,7 +459,43 @@ static void ui_text( ui_ctx *ctx, const char *str, ui_px scale, int alignment ) glyph_base[0] *= 7; glyph_base[1] *= 7; - ui_fill_rect_uv( ctx, text_cursor, 0xffffffff, (ui_px[4]){glyph_base[0],glyph_base[1],glyph_base[0]+7,glyph_base[1]+7} ); + ui_fill_rect_uv( ctx, text_cursor, current_colour, (ui_px[4]){glyph_base[0],glyph_base[1],glyph_base[0]+7,glyph_base[1]+7} ); + } + else if( c == '\x1B' ) + { + _c ++; + u16 colour_id = 0; + for( int i = 0; i < 3; i ++ ) + { + if( _c[i] ) + { + if( _c[i] == 'm' ) + { + _c = _c + i + 1; + + switch( colour_id ) + { + case '0': current_colour = 0xffffffff; break; + case '3'|'1'<<8: current_colour = 0xff201fee; break; + case '3'|'2'<<8: current_colour = 0xff37e420; break; + case '3'|'3'<<8: current_colour = 0xff0ed8e2; break; + case '3'|'4'<<8: current_colour = 0xfff15010; break; + case '3'|'5'<<8: current_colour = 0xffee20ee; break; + case '3'|'6'<<8: current_colour = 0xffeeee20; break; + case '3'|'7'<<8: current_colour = 0xffffffff; break; + } + + break; + } + + colour_id |= _c[i] << (i*8); + } + else + { + _c = _c +i; + break; + } + } } text_cursor[0] += 6*scale; @@ -646,6 +684,7 @@ static void ui_test(void) ui_set_mouse( &ui_global_ctx, vg_mouse[0], vg_mouse[1], mouse_state ); + /* static struct ui_window window = { .transform = { 20, 20, 500, 350 }, @@ -689,13 +728,25 @@ static void ui_test(void) ui_end_right( &ui_global_ctx ); } ui_end( &ui_global_ctx ); - + */ + + ui_rect rbf; + ui_rect_copy( ui_global_ctx.cursor, rbf ); + + ui_global_ctx.cursor[0] = 6; + ui_global_ctx.cursor[3] = 21; + ui_fill_x( &ui_global_ctx ); + ui_align_bottom( &ui_global_ctx ); + ui_text( &ui_global_ctx, "Marble computer build 2 -- development version -- (C) Harry Godden 2021\nAknowledgements: 'credits' in console (`)", 1, 0 ); + ui_resolve( &ui_global_ctx ); m3x3f view = M3X3_IDENTITY; m3x3_translate( view, (v3f){ -1.0f, 1.0f, 0.0f } ); m3x3_scale( view, (v3f){ 1.0f/((float)vg_window_x*0.5f), -1.0f/((float)vg_window_y*0.5f), 1.0f } ); - vg_lines_drawall( (float*)view ); + //vg_lines_drawall( (float*)view ); ui_draw( &ui_global_ctx ); + + ui_rect_copy( rbf, ui_global_ctx.cursor ); }