text_cursor[2] = 7*scale;
text_cursor[3] = 7*scale;
+ u32 current_colour = 0xffffffff;
+
const char *_c = str;
char c;
while( (c = *(_c ++)) )
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;