From 763c7f692f67b491935b900560c2a0ef614afa42 Mon Sep 17 00:00:00 2001 From: hgn Date: Mon, 15 Apr 2024 22:13:17 +0100 Subject: [PATCH 1/7] imgui API changes (buttons) --- src/fonts/vg_font_thin_3.xcf | Bin 627594 -> 627594 bytes vg_imgui.c | 148 +++++++++++++++++++---------------- vg_imgui.h | 6 +- 3 files changed, 86 insertions(+), 68 deletions(-) diff --git a/src/fonts/vg_font_thin_3.xcf b/src/fonts/vg_font_thin_3.xcf index 20f4098f13844621ee7b57e23dfa3375d14b4129..85ed68942883c3580b27cd5b621267b5e99eec90 100644 GIT binary patch delta 41 wcmeBLuGY0&ZGscy)<)-6XU0}%rdDU>R%e!0XVz9{wpM5MR%ec_&YbR(0W1a$IsgCw delta 41 wcmeBLuGY0&ZGscynnveVXU0}%rdDU>R%e!0XVz9{wpM5MR%ec_&YbR(0V?JVF#rGn diff --git a/vg_imgui.c b/vg_imgui.c index 51792ff..600d118 100644 --- a/vg_imgui.c +++ b/vg_imgui.c @@ -740,7 +740,8 @@ void ui_prerender(void) return; } - if( ui_click_down(UI_MOUSE_LEFT)||ui_click_down(UI_MOUSE_MIDDLE) ) + if( ui_click_down(UI_MOUSE_LEFT)||ui_click_down(UI_MOUSE_MIDDLE)|| + ui_click_down(UI_MOUSE_RIGHT) ) { vg_ui.mouse_click[0] = vg_ui.mouse[0]; vg_ui.mouse_click[1] = vg_ui.mouse[1]; @@ -997,92 +998,100 @@ void ui_defocus_all(void) vg_ui.focused_control_type = k_ui_control_none; } -/* TODO: split this out into a formatless button and one that auto fills */ -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_button_state ui_button_base( ui_rect rect ) { int clickup= ui_click_up(UI_MOUSE_LEFT), click = ui_clicking(UI_MOUSE_LEFT) | clickup, target = ui_inside_rect( rect, vg_ui.mouse_click ) && click, hover = ui_inside_rect( rect, vg_ui.mouse ); - u32 col_base = vg_ui.scheme[ colour ], - col_highlight = vg_ui.scheme[ hi_colour? hi_colour: k_ui_fg ], - col_hover = vg_ui.scheme[ hover_colour? hover_colour: - colour + k_ui_brighter ]; - - if( vg_ui.focused_control_type != k_ui_control_none ){ + if( vg_ui.focused_control_type != k_ui_control_none ) + { clickup = 0; click = 0; target = 0; hover = 0; } - if( hover ){ + if( hover ) vg_ui.cursor = k_ui_cursor_hand; - } - if( click ){ - if( target ){ - if( hover ){ - if( clickup ){ + if( click ) + { + if( target ) + { + if( hover ) + { + if( clickup ) + { vg_ui.ignore_input_frames = 2; ui_defocus_all(); - - if( fill ) { - ui_fill( rect, col_highlight ); - rect_copy( rect, vg_ui.click_fader ); - rect_copy( rect, vg_ui.click_fader_end ); - vg_ui.click_fader_end[3] = 0; - ui_rect_center( rect, vg_ui.click_fader_end ); - vg_ui.click_fade_opacity = 1.0f; - } - return k_ui_button_click; } - else{ - if( fill ) ui_fill( rect, col_highlight ); - return k_ui_button_holding_inside; - } + else return k_ui_button_holding_inside; } - else{ - if( fill ) ui_fill( rect, col_base ); - ui_outline( rect, 1, col_highlight, 0 ); - return k_ui_button_holding_outside; - } - } - else{ - if( fill ) ui_fill( rect, col_base ); - return k_ui_button_none; + else return k_ui_button_holding_outside; } + else return k_ui_button_none; } - else{ - if( hover ){ - if( fill ) ui_fill( rect, col_hover ); - return k_ui_button_hover; - } - else{ - if( fill ) ui_fill( rect, col_base ); - return k_ui_button_none; - } + else + { + if( hover ) return k_ui_button_hover; + else return k_ui_button_none; } } +/* TODO: split this out into a formatless button and one that auto fills */ +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 ) +{ + enum ui_button_state state = ui_button_base( rect ); + + u32 col_base = vg_ui.scheme[ colour ], + col_highlight = vg_ui.scheme[ hi_colour? hi_colour: k_ui_fg ], + col_hover = vg_ui.scheme[ hover_colour? hover_colour: + colour + k_ui_brighter ]; + + if( state == k_ui_button_click ) + { + ui_fill( rect, col_highlight ); + rect_copy( rect, vg_ui.click_fader ); + rect_copy( rect, vg_ui.click_fader_end ); + vg_ui.click_fader_end[3] = 0; + ui_rect_center( rect, vg_ui.click_fader_end ); + vg_ui.click_fade_opacity = 1.0f; + } + else if( state == k_ui_button_holding_inside ) + { + ui_fill( rect, col_highlight ); + } + else if( state == k_ui_button_holding_outside ) + { + ui_fill( rect, col_base ); + ui_outline( rect, 1, col_highlight, 0 ); + } + else if( state == k_ui_button_hover ) + { + ui_fill( rect, col_hover ); + } + else ui_fill( rect, col_base ); + + return state; +} + 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 state = ui_colourbutton( rect, colour, 0, 0, 1 ); - ui_rect t = { 0,0, ui_text_line_width( string )*scale, 14*scale }; - ui_rect_center( rect, t ); + enum ui_scheme_colour colour ) +{ + enum ui_button_state state = ui_colourbutton( rect, colour, 0, 0 ); u32 text_colour = ui_colourcont(colour); if( state == k_ui_button_holding_inside ) text_colour = colour; - ui_text( t, string, scale, k_ui_align_left, text_colour ); + ui_text( rect, string, scale, k_ui_align_middle_center, text_colour ); return state; } @@ -1198,7 +1207,7 @@ int ui_checkbox( ui_rect inout_panel, const char *str_label, i32 *data ) ui_split( rect, k_ui_axis_v, -rect[3], 0, label, box ); ui_text( label, str_label, k_ui_scale, k_ui_align_middle_left, 0 ); - int changed = ui_colourbutton( box, k_ui_bg, 0, 0, 1 )==1; + int changed = ui_colourbutton( box, k_ui_bg, 0, 0 ) == k_ui_button_click; if( changed ) *data = (*data) ^ 0x1; @@ -1304,7 +1313,7 @@ static enum ui_button_state _ui_slider( k_ui_button_click, mask_brighter = mask_using | k_ui_button_hover, - state = ui_colourbutton( box, k_ui_bg, k_ui_bg+2, k_ui_bg+3, 1 ); + state = ui_colourbutton( box, k_ui_bg, k_ui_bg+2, k_ui_bg+3 ); if( state & mask_using ){ t = vg_clampf( (f32)(vg_ui.mouse[0] - box[0]) / (f32)( box[2] ), @@ -1378,7 +1387,7 @@ void ui_colourpicker( ui_rect inout_panel, const char *str_label, v4f value ) ui_rect preview, square; ui_split_ratio( left, k_ui_axis_v, 0.8f, 8, square, preview ); - u32 state = ui_colourbutton( square, 0, 0, 0, 0 ); + u32 state = ui_button_base( square ); modified |= state; enum ui_button_state @@ -1387,7 +1396,8 @@ void ui_colourpicker( ui_rect inout_panel, const char *str_label, v4f value ) k_ui_button_holding_outside | k_ui_button_click; - if( state & mask_using ){ + if( state & mask_using ) + { for( u32 i=0; i<2; i ++ ){ hsv[1+i] = vg_clampf( (f32)(vg_ui.mouse[i] - square[i]) / (f32)(square[2+i]), @@ -1398,7 +1408,8 @@ void ui_colourpicker( ui_rect inout_panel, const char *str_label, v4f value ) } if( modified & (k_ui_button_click|k_ui_button_holding_inside| - k_ui_button_holding_outside) ){ + k_ui_button_holding_outside) ) + { vg_hsv_rgb( hsv, value ); value[3] = hsv[3]; } @@ -1437,7 +1448,8 @@ void ui_colourpicker( ui_rect inout_panel, const char *str_label, v4f value ) * ----------------------------------------------------------------------------- */ -static void _ui_textbox_make_selection( int *start, int *end ){ +static void _ui_textbox_make_selection( int *start, int *end ) +{ *start = VG_MIN( vg_ui.textbox.cursor_pos, vg_ui.textbox.cursor_user ); *end = VG_MAX( vg_ui.textbox.cursor_pos, vg_ui.textbox.cursor_user ); } @@ -1455,7 +1467,8 @@ void _ui_textbox_move_cursor( int *cursor0, int *cursor1, *cursor1 = *cursor0; } -static int _ui_textbox_makeroom( int datastart, int length ){ +static int _ui_textbox_makeroom( int datastart, int length ) +{ int move_to = VG_MIN( datastart+length, vg_ui.textbox.len-1 ); int move_amount = strlen( vg_ui.textbuf )-datastart; int move_end = VG_MIN( move_to+move_amount, vg_ui.textbox.len-1 ); @@ -1494,7 +1507,8 @@ int _ui_textbox_delete_char( int direction ) return start; } -static void _ui_textbox_to_clipboard(void){ +static void _ui_textbox_to_clipboard(void) +{ int start, end; _ui_textbox_make_selection( &start, &end ); char buffer[512]; @@ -1506,7 +1520,8 @@ static void _ui_textbox_to_clipboard(void){ } } -static void _ui_textbox_change_callback(void){ +static void _ui_textbox_change_callback(void) +{ if( vg_ui.textbox.callbacks.change ){ vg_ui.textbox.callbacks.change( vg_ui.textbuf, vg_ui.textbox.len ); @@ -1518,7 +1533,8 @@ static void _ui_textbox_change_callback(void){ } void ui_start_modal( const char *message, u32 options ); -static void _ui_textbox_clipboard_paste(void){ +static void _ui_textbox_clipboard_paste(void) +{ if( !SDL_HasClipboardText() ) return; diff --git a/vg_imgui.h b/vg_imgui.h index 82468e3..cbb0862 100644 --- a/vg_imgui.h +++ b/vg_imgui.h @@ -262,17 +262,19 @@ 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); int ui_checkbox( ui_rect inout_panel, const char *str_label, i32 *data ); -- 2.25.1 From 7e5fa8d856fd520ca1ebfff341845ccd4cf3154c Mon Sep 17 00:00:00 2001 From: hgn Date: Wed, 17 Apr 2024 02:01:38 +0100 Subject: [PATCH 2/7] IMGUI Slider API --- vg_imgui.c | 79 +++++++++++++++++++++++++++++++----------------------- vg_imgui.h | 5 +++- 2 files changed, 49 insertions(+), 35 deletions(-) diff --git a/vg_imgui.c b/vg_imgui.c index 600d118..60bb296 100644 --- a/vg_imgui.c +++ b/vg_imgui.c @@ -1301,57 +1301,67 @@ static void ui_enum_post(void){ * ----------------------------------------------------------------------------- */ -static enum ui_button_state _ui_slider( - ui_rect box, 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 ) { - f32 t; - - enum ui_button_state - mask_using = - k_ui_button_holding_inside | - k_ui_button_holding_outside | - k_ui_button_click, - mask_brighter = - mask_using | k_ui_button_hover, - state = ui_colourbutton( box, k_ui_bg, k_ui_bg+2, k_ui_bg+3 ); + enum ui_button_state mask_using = + k_ui_button_holding_inside | + k_ui_button_holding_outside | + k_ui_button_click, + state = ui_button_base( box ); - if( state & mask_using ){ - t = vg_clampf( (f32)(vg_ui.mouse[0] - box[0]) / (f32)( box[2] ), - 0.0f, 1.0f ); + f32 t; + if( state & mask_using ) + { + t = vg_clampf( (f32)(vg_ui.mouse[0] - box[0]) / (f32)( box[2] ), 0,1 ); *value = vg_lerpf( min, max, t ); } else t = vg_clampf( (*value - min) / (max-min), 0.0f, 1.0f ); - - ui_rect line = { box[0], box[1], t * (f32)box[2], box[3] }; - ui_fill( line, ui_colour(state&mask_brighter? k_ui_bg+4: k_ui_bg+2) ); - ui_outline( box, 1, ui_colour(state? k_ui_fg+3: k_ui_bg+3), 0 ); + *out_t = t; + + return state; +} +void ui_slider_text( ui_rect box, const char *format, f32 value ) +{ /* TODO: replace this one day with our own function */ char buf[32]; - snprintf( buf, sizeof(buf), format? format: "%.2f", *value ); + snprintf( buf, sizeof(buf), format? format: "%.2f", value ); ui_text( box, buf, 1, k_ui_align_middle_center, 0 ); - - return state; } -bool ui_slider( ui_rect inout_panel, const char *str_label, - f32 min, f32 max, f32 *value, const char *format ) +bool ui_slider_standard( ui_rect box, f32 min, f32 max, f32 *value, + const char *format ) { - ui_rect rect, label, box; - ui_standard_widget( inout_panel, rect, 1 ); - ui_label( rect, str_label, k_ui_scale, 0, box ); + f32 t; enum ui_button_state mask_using = k_ui_button_holding_inside | k_ui_button_holding_outside | - k_ui_button_click; + k_ui_button_click, + mask_brighter = mask_using | k_ui_button_hover, + state = ui_slider_base( box, min, max, value, &t ); - if( _ui_slider( box, min, max, value, format ) & mask_using ) - return 1; - else - return 0; + ui_rect line = { box[0], box[1], t * (f32)box[2], box[3] }; + ui_fill( line, ui_colour(state&mask_brighter? k_ui_bg+4: k_ui_bg+2) ); + + ui_fill( (ui_rect){ box[0]+line[2], box[1], box[2]-line[2], box[3] }, + ui_colour( k_ui_bg ) ); + ui_outline( box, 1, ui_colour(state? k_ui_fg+3: k_ui_bg+3), 0 ); + ui_slider_text( box, NULL, *value ); + + return (state & mask_using) && 1; +} + +bool ui_slider( ui_rect inout_panel, const char *str_label, + f32 min, f32 max, f32 *value ) +{ + ui_rect rect, label, box; + ui_standard_widget( inout_panel, rect, 1 ); + ui_label( rect, str_label, k_ui_scale, 0, box ); + return ui_slider_standard( box, min, max, value, NULL ); } /* @@ -1376,8 +1386,9 @@ void ui_colourpicker( ui_rect inout_panel, const char *str_label, v4f value ) enum ui_button_state modified = 0x00; - for( u32 i=0; i<4; i ++ ){ - modified |= _ui_slider( sliders[i], 0.0f, 1.0f, hsv+i, + for( u32 i=0; i<4; i ++ ) + { + modified |= ui_slider_standard( sliders[i], 0.0f, 1.0f, hsv+i, (const char *[]){ "hue %.2f", "sat %.2f", "lum %.2f", diff --git a/vg_imgui.h b/vg_imgui.h index cbb0862..7e882aa 100644 --- a/vg_imgui.h +++ b/vg_imgui.h @@ -280,8 +280,11 @@ void ui_postrender(void); 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 ); +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, const char *format ); + 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, -- 2.25.1 From fb7a6a573f4259045cdc08d556298b6c41bda5fb Mon Sep 17 00:00:00 2001 From: hgn Date: Wed, 17 Apr 2024 18:29:19 +0100 Subject: [PATCH 3/7] checkbox imgui api --- src/fonts/vg_font_thin_3.png | Bin 21525 -> 21948 bytes src/fonts/vg_font_thin_3.xcf | Bin 627594 -> 632306 bytes vg_build_font.h | 3 +++ vg_imgui.c | 40 ++++++++++++++++++++++++++++++----- vg_imgui.h | 1 + 5 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/fonts/vg_font_thin_3.png b/src/fonts/vg_font_thin_3.png index ad1f1f46da24a25fbf8f4c418efb1c631e9a3aa7..18139a2944e86c8b77988d05d92aa7f33bd06a2c 100644 GIT binary patch delta 15565 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 ADF6Tf delta 14873 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 E0l=6#YybcN diff --git a/src/fonts/vg_font_thin_3.xcf b/src/fonts/vg_font_thin_3.xcf index 85ed68942883c3580b27cd5b621267b5e99eec90..1e40c461bac84e22cad69ef8a585c43c5388a91e 100644 GIT binary patch delta 7920 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 Y_USmaBad$n?ah7bZLe>AWX~7>1!V$;tN;K2 diff --git a/vg_build_font.h b/vg_build_font.h index 5278ca1..5ee5e10 100644 --- a/vg_build_font.h +++ b/vg_build_font.h @@ -111,6 +111,7 @@ void vg_build_default_font(void) vg_build_font_face_run( &small, 'a', 'z', 0, 28 ); vg_build_font_face_run( &small, '0', '9', 208,14 ); vg_build_font_face_run( &small, 0x7f, 0xa4, 0,42 ); + vg_build_font_face_run( &small, 0xb0, 0xb2, 208,28 ); vg_build_write_font_face( fp, &small ); vg_font_face large = @@ -128,6 +129,7 @@ void vg_build_default_font(void) vg_build_font_face_run( &large, 'a', 'z', 0, 98 ); vg_build_font_face_run( &large, '0', '9', 312,77 ); vg_build_font_face_run( &large, 0x7f, 0xa4, 0,119 ); + vg_build_font_face_run( &large, 0xb0, 0xb2, 312,98 ); vg_build_write_font_face( fp, &large ); vg_font_face title = @@ -152,6 +154,7 @@ void vg_build_default_font(void) vg_build_font_face_run( &title, 0x7f, 0x88, 120,350 ); vg_build_font_face_run( &title, 0x93, 0x98, 360,350 ); vg_build_font_face_run( &title, 0x99, 0xa4, 0,392 ); + vg_build_font_face_run( &title, 0xb0, 0xb2, 288,392 ); vg_build_write_font_face( fp, &title ); fclose( fp ); diff --git a/vg_imgui.c b/vg_imgui.c index 60bb296..bb4f46f 100644 --- a/vg_imgui.c +++ b/vg_imgui.c @@ -839,7 +839,7 @@ u32 ui_ntext( ui_rect rect, const char *str, u32 len, ui_px scale, text_cursor[0] -= vg_ui.font->sx*scale; ui_rect glyph; - ui_text_glyph( vg_ui.font, '\xb6' /*FIXME*/, glyph ); + ui_text_glyph( vg_ui.font, '\xb1' /*FIXME*/, glyph ); ui_fill_rect( text_cursor, 0x00ffffff, glyph ); text_cursor[0] += vg_ui.font->sx*scale; } @@ -1199,6 +1199,14 @@ void ui_postrender(void) * ----------------------------------------------------------------------------- */ +enum ui_button_state ui_checkbox_base( ui_rect box, i32 *data ) +{ + enum ui_button_state state = ui_button_base( box ); + if( state == k_ui_button_click ) + *data = (*data) ^ 0x1; + return state; +} + int ui_checkbox( ui_rect inout_panel, const char *str_label, i32 *data ) { ui_rect rect, label, box; @@ -1206,12 +1214,34 @@ int ui_checkbox( ui_rect inout_panel, const char *str_label, i32 *data ) ui_split( rect, k_ui_axis_v, -rect[3], 0, label, box ); ui_text( label, str_label, k_ui_scale, k_ui_align_middle_left, 0 ); + + enum ui_button_state state = ui_checkbox_base( box, data ); - int changed = ui_colourbutton( box, k_ui_bg, 0, 0 ) == k_ui_button_click; - if( changed ) - *data = (*data) ^ 0x1; + if( state == k_ui_button_holding_inside ) + { + ui_fill( box, ui_colour(k_ui_bg+2) ); + ui_outline( box, 1, ui_colour(k_ui_fg), 0 ); + } + else if( state == k_ui_button_holding_outside ) + { + ui_fill( box, ui_colour(k_ui_bg) ); + ui_outline( box, 1, ui_colour(k_ui_fg), 0 ); + } + else if( state == k_ui_button_hover ) + { + ui_fill( box, ui_colour(k_ui_bg) ); + ui_outline( box, 1, ui_colour(k_ui_fg), 0 ); + } + else + { + ui_fill( box, ui_colour(k_ui_bg) ); + ui_outline( box, 1, ui_colour(k_ui_bg+4), 0 ); + } + + bool changed = (state == k_ui_button_click); - if( *data ){ + if( *data ) + { ui_rect_pad( box, (ui_px[2]){4,4} ); ui_fill( box, ui_colour( k_ui_orange ) ); } diff --git a/vg_imgui.h b/vg_imgui.h index 7e882aa..8ec0330 100644 --- a/vg_imgui.h +++ b/vg_imgui.h @@ -277,6 +277,7 @@ 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 ); -- 2.25.1 From 809e802a62579292a64af48937476f4670b2a374 Mon Sep 17 00:00:00 2001 From: hgn Date: Thu, 18 Apr 2024 13:07:04 +0100 Subject: [PATCH 4/7] move mouse wakeup from SR to VG --- vg_engine.c | 4 +--- vg_input.c | 21 +++++++++++++++++---- vg_input.h | 1 + 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/vg_engine.c b/vg_engine.c index 1723c70..fe3a7e9 100644 --- a/vg_engine.c +++ b/vg_engine.c @@ -141,9 +141,6 @@ static void _vg_process_events(void) v2_zero( vg.mouse_wheel ); v2_zero( vg.mouse_delta ); - /* Update input */ - vg_process_inputs(); - /* SDL event loop */ SDL_Event event; while( SDL_PollEvent( &event ) ){ @@ -221,6 +218,7 @@ static void _vg_process_events(void) } SDL_GetMouseState( &vg.mouse_pos[0], &vg.mouse_pos[1] ); + vg_process_inputs(); } static void _vg_gameloop_update(void) diff --git a/vg_input.c b/vg_input.c index 74732f4..c536c1f 100644 --- a/vg_input.c +++ b/vg_input.c @@ -210,10 +210,13 @@ void vg_process_inputs(void) vg_input.sdl_keys = SDL_GetKeyboardState( &count ); vg_input.sdl_mouse = SDL_GetMouseState(NULL,NULL); - if( vg_input.display_input_method != k_input_method_kbm ){ + if( vg_input.display_input_method != k_input_method_kbm ) + { /* check for giving keyboard priority */ - for( int i=0; i 64.0f ) + { + vg_input.display_input_method = k_input_method_kbm; + vg_input.hidden_mouse_travel = 0.0f; + vg_info( "display_input: k_input_method_kbm (mouse move)\n" ); } } + else + vg_input.hidden_mouse_travel = 0.0f; } void async_vg_input_init( void *payload, u32 size ) diff --git a/vg_input.h b/vg_input.h index a203123..1636e07 100644 --- a/vg_input.h +++ b/vg_input.h @@ -47,6 +47,7 @@ struct vg_input { const u8 *sdl_keys; u32 sdl_mouse; + f32 hidden_mouse_travel; struct vg_controller{ SDL_GameController *handle; /* handle for controller. NULL if unused */ -- 2.25.1 From f8364997f9cd4c55e26522aa1e1f1ad93511b297 Mon Sep 17 00:00:00 2001 From: hgn Date: Thu, 18 Apr 2024 22:06:39 +0100 Subject: [PATCH 5/7] input joy sleep wake, revisit string cat code --- src/fonts/vg_font_thin_3.png | Bin 21948 -> 21992 bytes src/fonts/vg_font_thin_3.xcf | Bin 632306 -> 632554 bytes vg_build_font.h | 4 +- vg_input.c | 84 +++++++++++++++++------------------ vg_string.c | 40 +++++++++++------ 5 files changed, 69 insertions(+), 59 deletions(-) diff --git a/src/fonts/vg_font_thin_3.png b/src/fonts/vg_font_thin_3.png index 18139a2944e86c8b77988d05d92aa7f33bd06a2c..7bb79d888dd3a15ffa48c230284788e0fb001830 100644 GIT binary patch delta 17095 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 delta 17419 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 ZUS*lUA)r42IDyW<;OXk;vd$@?2>=9br@#OJ diff --git a/src/fonts/vg_font_thin_3.xcf b/src/fonts/vg_font_thin_3.xcf index 1e40c461bac84e22cad69ef8a585c43c5388a91e..43aa0bf167c282bfc209efc9151d02b70139c97a 100644 GIT binary patch delta 3440 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 Sf<5(_HU1g8<)7hcF8LdQJr_p+ diff --git a/vg_build_font.h b/vg_build_font.h index 5ee5e10..48aba86 100644 --- a/vg_build_font.h +++ b/vg_build_font.h @@ -111,7 +111,7 @@ void vg_build_default_font(void) vg_build_font_face_run( &small, 'a', 'z', 0, 28 ); vg_build_font_face_run( &small, '0', '9', 208,14 ); vg_build_font_face_run( &small, 0x7f, 0xa4, 0,42 ); - vg_build_font_face_run( &small, 0xb0, 0xb2, 208,28 ); + vg_build_font_face_run( &small, 0xb0, 0xb3, 208,28 ); vg_build_write_font_face( fp, &small ); vg_font_face large = @@ -129,7 +129,7 @@ void vg_build_default_font(void) vg_build_font_face_run( &large, 'a', 'z', 0, 98 ); vg_build_font_face_run( &large, '0', '9', 312,77 ); vg_build_font_face_run( &large, 0x7f, 0xa4, 0,119 ); - vg_build_font_face_run( &large, 0xb0, 0xb2, 312,98 ); + vg_build_font_face_run( &large, 0xb0, 0xb3, 312,98 ); vg_build_write_font_face( fp, &large ); vg_font_face title = diff --git a/vg_input.c b/vg_input.c index c536c1f..d4e51bc 100644 --- a/vg_input.c +++ b/vg_input.c @@ -128,13 +128,33 @@ void vg_input_device_event( SDL_Event *ev ) } } +static void vg_input_set_active_controller( int index, const char *why ) +{ + if( vg_input.active_controller_index != index ) + { + vg_input.display_input_type = + SDL_GameControllerGetType( vg_input.controllers[index].handle ); + vg_input.active_controller_index = index; + vg_info( "Switching controller index to #%d. (%s)\n", index, why ); + } + + if( vg_input.display_input_method != k_input_method_controller ) + { + vg_input.display_input_method = k_input_method_controller; + vg_info( "Switching input method to controller. (%s)\n", why ); + } +} + void vg_input_controller_event( SDL_Event *ev ) { - if( ev->type == SDL_CONTROLLERAXISMOTION ){ - for( int i=0; itype == SDL_CONTROLLERAXISMOTION ) + { + for( int i=0; icaxis.which == esta->instance_id ){ + if( ev->caxis.which == esta->instance_id ) + { float value = (float)ev->caxis.value / 32767.0f; if( ev->caxis.axis == SDL_CONTROLLER_AXIS_LEFTX || @@ -146,6 +166,8 @@ void vg_input_controller_event( SDL_Event *ev ) high = vg_maxf( 0.0f, fabsf(value) - deadz ); value = vg_signf(value) * (high / (1.0f-deadz)); + if( fabsf(value) > 0.5f ) + vg_input_set_active_controller( i, "Stick pushed >|0.5|" ); } esta->axises[ ev->caxis.axis ] = value; @@ -153,50 +175,26 @@ void vg_input_controller_event( SDL_Event *ev ) } } } - else if( ev->type == SDL_CONTROLLERBUTTONDOWN ){ - struct vg_controller *active = NULL; - - if( vg_input.active_controller_index >= 0 ) - active = &vg_input.controllers[vg_input.active_controller_index]; - - if( !active || (ev->cbutton.which != active->instance_id) ){ - active = NULL; - vg_input.active_controller_index = -1; - vg_input.display_input_method = k_input_method_kbm; - - for( int i=0; icbutton.which ){ - active = &vg_input.controllers[i]; - vg_input.active_controller_index = i; - vg_input.display_input_type = - SDL_GameControllerGetType(active->handle); - break; - } - } - - if( active ){ - vg_info( "Switching active controller index to #%d\n", - vg_input.active_controller_index ); - } - else{ - vg_error( "Input out of range (SDL_JoystickID#%d)\n", - ev->cbutton.which ); - } - } - - if( active ){ - if( vg_input.display_input_method != k_input_method_controller ){ - vg_input.display_input_method = k_input_method_controller; - vg_info( "display_input: k_input_method_controller\n" ); + else if( ev->type == SDL_CONTROLLERBUTTONDOWN ) + { + for( int i=0; iinstance_id == ev->cbutton.which ) + { + vg_input_set_active_controller( i, "Button press" ); + esta->buttons[ ev->cbutton.button ] = 1; + break; } - active->buttons[ ev->cbutton.button ] = 1; } } - else if( ev->type == SDL_CONTROLLERBUTTONUP ){ - for( int i=0; itype == SDL_CONTROLLERBUTTONUP ) + { + for( int i=0; icbutton.which == esta->instance_id ){ + if( ev->cbutton.which == esta->instance_id ) + { esta->buttons[ ev->cbutton.button ] = 0; break; } diff --git a/vg_string.c b/vg_string.c index 1261f5b..ef29ef3 100644 --- a/vg_string.c +++ b/vg_string.c @@ -69,37 +69,49 @@ static i32 vg_str_dynamic_grow( vg_str *str ) } } -void vg_strcat( vg_str *str, const char *append ) +static void _vg_strcatch( vg_str *str, char c ) { - if( !append || (str->i == -1) ) return; - - i32 max = vg_str_storage( str ), - i = 0; + if( str->i == -1 ) return; -append: - if( str->i == max ){ + i32 max = vg_str_storage( str ); + if( str->i == max ) + { if( str->len == -1 ) max = vg_str_dynamic_grow( str ); - else{ + else + { str->i = -1; str->buffer[ max-1 ] = '\0'; return; } } - char c = append[ i ++ ]; - str->buffer[ str->i ] = c; + str->buffer[ str->i ++ ] = c; +} + +void vg_strcat( vg_str *str, const char *append ) +{ + if( !append || (str->i == -1) ) return; + + i32 i = 0; + +append:; + char c = append[ i ++ ]; + _vg_strcatch( str, c ); if( c == '\0' ) + { + str->i --; return; - - str->i ++; - goto append; + } + else goto append; } void vg_strcatch( vg_str *str, char c ) { - vg_strcat( str, (char[]){ c, '\0' } ); + _vg_strcatch( str, c ); + _vg_strcatch( str, '\x00' ); + str->i --; } /* -- 2.25.1 From e5a497c67011394330a9d8f6311b3a83c1000624 Mon Sep 17 00:00:00 2001 From: hgn Date: Sat, 20 Apr 2024 10:50:15 +0100 Subject: [PATCH 6/7] misc --- src/fonts/vg_font_thin_3.png | Bin 21992 -> 22000 bytes src/fonts/vg_font_thin_3.xcf | Bin 632554 -> 632552 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/fonts/vg_font_thin_3.png b/src/fonts/vg_font_thin_3.png index 7bb79d888dd3a15ffa48c230284788e0fb001830..d3239dd08582a998fbd1560b02452d581befbec0 100644 GIT binary patch delta 12915 zcmchdXIK->-|shofGD7%2#6E`5$U}b6-7WnK|y+#5_*vmVB@WVD7|-3K|}~RhRau$4cPVpb2#LLVVdcUq-6@{L9c1v=K zr(UnnnRe)=NcPFoW}n&?7Y96leERBO&t-q<*Z~msAk-!@>jV>h((y}7=v+oLMJ$>G zytwUAeCjECac~L2`|`JCyRQrO9LKJ4KN89-^7&?N!&8o36Eo^r_!^T>=`=RGKH_xr zZ_1aj`(UBgCg5sR6dP;}VF2MeuKzQ=N(?NH~8;z+~(>Ha->7-DT3Up@SJn zpEQ6RjP>R%Y}%jcU6&>7qzf9dakf8vzLx%a9a5m*JDww15^hPJJjrutk)GNk$Mrbm zAwv^^*fp{ehaZi~`vBqNd$@VdrxEtCtFa3Kj>Rnbz^(AK=KsH>@_s;KU*?dfsWa?TS_?9*`;;7byT(0JyjKbG}KiUHB>b< z6g{=PbQLx3Yx$^Z-uKp0(elXQKYaC=hN6mwqU!&-TZMi#d8Fw; zHFhA{a2jdRU$C>s0WUiX$4Q@1(_swh5rf>^98(_Vij4aSnciy8wLJ{A4wYmt_EfRi zmL>3`4lHM?Q;s?O^XUO0q{Zv>(ot6wAw-03JY7&tZ0i<;&WcUcWU2+*&|+5O-+VWY zn6ZZ%<&K7kkgKsztR>RU!hOt8MO6{957I74oRydu&9%jset12I63!LG?d}xiCg!Tw zn$t}EncoN@GU+4qoJwgyFsv9WYPnM}=_-N$S~EA5?uPp5mv7c`5IIQSRwfGcZ1RK<$tWgy`(a}bSMqDHTRS(z}D_=Ah!I${pG zM&6szL-x$J+AeCNcjT_PUZ7K!kxD&>2uMTbbhbE3SyQ==mK3>IfHXKMn;0{KFp%FcJti?9om}e=9-} z<5ogO+HMo2Kr>sb+w!{pBhe%WYwjDh(HCy6UNWm+)v{AUg?I6{#hsde6|2#-_Qu=l z+xkyP=*=0JSl`8{>)~e$r}lLauG0@@=;wXea)qF^@fe5A8~=FBe<=lOkJsZAs)U$9 z#^mY(z096SNnwI~q+!DKv-b%@1rniv#!)-sDHro?Nf41byDyEmAQ4W^p}c+>=@P~D zO1h@r_?@XLJjneKe5B4E%^{zXelJ(o%(YRTS=zI>nnM9CMIU8;9|<$Ccp1<{?l{M( z1G&Zr51F_x18e;;jc>>*P8^o52ntoG23_ft&M0iC;+s8w?uz>nH%RHv z!$5*80G9LSwu`}Bsp4&E5H4Ub)atN6X}ZT>U5L$q1bXG(nY#Q`Nh|sFKfvDS4w0Pw za!F4&s?%X7e6G~gc^RV53w|g)xxCTQdQc=u%G=qtT+Ru(e(Iv{1-;6<4W$Ktc2yX~ zJ9*p5r3^0zu{8$3|2BbBNL@#j+LU7C{XQ}k{8H0#qw|9^!|954lb(5*)>;8KbPc0v z?r)_bDOHnaJ?d+hJ+_@sc1Aj^$a;5FUvqm~k$L3;-CK1h=)sziEZxGVk^J}Tjk{d# zg2A?WN2244*_-DG)#Um~XdZ^X-?J0d)>zd;jyMvCQa_3Y2@NT<&bTGFmL+4iu4}_! zA}>SVwE${jjP^^EBa4T-#11VDZAYArQZGlnz>UV2@8uU+yq#>S?{BaxoZ8Pr` za}D^wn(eIDe-4ZP*8Zz1`Y22&=}Z6sz!`gwcz8MnPwqua7!u5_<0cS=VkXz7rQowf zF9aK@D7w)nHy;l^*k8FkX2waMR02+&0|03MW?2efug8H5EHrRnT!(Qr1-xn!H_DZI8 z42L1jid`MunC5Xg+Ksnj+i`yjptKREMq>pk!*KCD@oyICNj$|oYHk03JRcjc?=vv5 zpZZWfVa2547L|T&C5%4sw7NQND4JPr&-iO`5H$%d%W{E1gOp35F8fNlBU%oU$+Us&k6F=RM1AT+RA zJfro2jz`7vlq~uEEcJ@lB=hPkNT6{`4yNBytb(nCeY}i=nt)2w^J`og!pelKmKWP6 z9@&LAB$&rKqg#hP?-tN3g>jAA474i#gitS5wU2^?ccmc{^FvF`Ro^p#^`;V|>m0dfl+LgR-7S|A0*B(W)Ozx<$FTe(ra+vw5O}mQ zQnuI8zV)g;XSiFVIw zl6|7;bG7}>TR0Q{*2_}QBo(cdtxWujyHRKMc_e=LJ$B`rQnRy>5{$cTZNvEaJe9I9 zUBTHuyqtaNgV|fAt36|l+##Ag4Gtf!c?vvs4bKuH{B+tBAyiwz^OF@7t<6oVu6axQ z9C}G5=j1VDuBrYIS{C{(%6?YeGh6TaT35I7d9?3%o868LJ$dG<%WK_CSkNo|*x^T; z$*X+5UO7i8?s1^VbqZ#}$f1b6d5PeH8_F?${&DC1!LQnim|qpB<@btr zc0y_7-EIbhqD$AzOysUYHYDzwN8emGMw|R<{Eqn()xk6I0X%{paC4)O$lI|rYXW;M zHeT?xcrA6WxgzHzbV%0Ij1 zrG=v3w{CCG{@G*eg}AGMzG`|+pI*<0H3NM58%Z7=FE|0XAoUSXuNs>K!5!q9$SL2h zl1-@JW~UL(CxCxXNB}_Z;ZOgH%U%dvU4s6uzHMwVPT3eRIdT#_6k6fz6|zY?|C^W~ zS3yvmT&m*FLu|)=Tf9!1Ow^By<%@k5Xih6fRZQN`hIv|D2mRyF34$LG*}Q+nnW@hBFXe`EtJb$Q`Jlu!xao>&2QPSR4rFy zq$WO{H{6FWc+_zBQjp9fzITP^>XODr+7MT37zZ~ay1MHVXJ0d^2^THI-=fs$bR^W_ zk+!v)OMx0VO|^P{CH8zxX_V0f`<3(7-JI6t?ih!6{!k0V$_9te>q6eK@W#BYty zCERh%Pg|#L@iUSyMarpumFQ2!+bm22=o@b6J`fbBo_#&0+wWk@=+m`O9#Bh2pjw)Z z(Gd?sdy+l&7}{Dr>|n-Wt@2%%&oLjuR)*rjLV=Xo+MqWUN1eEAomNZR=R={U8> zwF?iYzfUVFB#nAkmPE2P^Os)^U)NmD-p+n%+K_IO`t)_!bSPUUa^r}RgQndLxw_jo zv5h#6FT-nHJ&`YMMBmQAc3plxmO44R22N}%VJrS{%r#c8j-E2S8CBZWA7=4IIVvle zeY}IKP(&oZ$~sIazRan(AfKzm^JCQ`F6w^6lr$$QFL6vI=z^(o6rYVaq$AaP*b8Mh z;}mWvn{Z=5Qr7*9CU=@RTIad$s9iti^rmHs&>uh}@W2+Mn)w=0A!J+zX0Kd&24=xN za!~U%V%iC9xB?M^*b-W$(vdTIta-q$WxPDXbF-uN%U;N7m!8e8vPOwCODlG&!N=;R z(C#b}%+gpUqmVV7onO7|E-qNg5$Vn}y7)a`S&^wlFDE0?GoE~!>&a6r^Yc<}8(Qc^ zL_15zRwo>iaJy?sYSBonwz7Q&+Me3K_{rYa!KpiC;&o3;g!rS0>;FJE3PykVMv5wR zmKoi3K$-uD9-GGI=m>T4nb&hCnVK1m+10Hpk@TY6lO`yxjFSVhKIg29Ol&W|lacpB z-EH6DF)~YRu(}*F;q*GXyY#f$7u7z|Y+ve|!Ba9*;iX=j2Dyn&={q6JLtxNX;j<4d z({5b$5GJ5vlpH3uVLvqO@Z;*5BhA%(D(18W6#uxM|32{ZYTf1UZG~8cvPTi6a8X$J z10_P2g$q;8_QR1M3LlhZ=GD?P=-mdj6jbBb<+CF%KLnzbZ;E3sDH|s=;tJZ(cYkIy zex_x+s?)9YopUDF%MxJ;Fp!k7$v@O(q|56uPetK2`pBEJ6Y&=ir%i!H_v`vGQ1+J; zGW*oZ{x zxzaNo*0yzN=TZEUlsL6*speO=fj$D67{kG8B;nn;0`4fnOELhz`Y8mZ=Aw6rmAdEq z+=PNPTD{`^D;Zlcj~d&>TDPhVUqoT^)tTbm2TIi6^lLMZxdHh1s)=WTz|T!= ztvk(26rQd(ueFpr`D=rMTNtZEyAZbxVols42FmGc7q-$u#8#q2TLj$k^48`*2^T!- zUI{V5>TfWyR<5aH{qWK|Y2>LDj9l#XD1j2LIMD&+*<(rf*;BC{P~7F6i}fvE>XbHn zZE*#9#|7)sq)bHuy45dB1CA=sx^-mgN7-2;5Q9W6bz{mj3ntGK0`08Cla4ILk3y|S z&C=qw@1Xni0VgkCpMwA)<~_5PMDu#-XO-aD!*9N)x527J zdsp3%AeLhtbv1+(D{kvW*ct}Ax@%*a*ILC>B+0cM2iQGAeV?`P>zlfmm;UKfJ>WDA z(S?~09-{|5b2i@HGkku4>)6ToC4)I^gFG_KBo>CaCeIR~nzHHGy5e{jT}(d_s#w7d zygUDRFC-Yt4^(QN?tb}L>l`qyhnOuXKAt}GX-~XwXtw=TJdWRRRKPH8)<=5r!Tx8t zUdW2?j)HI?qm{|q_ZPWp1#jB~`3;p=dzmQkR7bSuZfWFQx5+*HHL=QyA3o+E>}U_C z%!9g_yX`bto^j5P?BlnmJ_USr2{>@rWOqNXEQOo7^!VL62ON9Gv3LGq>8B8n1DCNE zP=n8Kyf6Jc?!bjL$pCZHOLv+;sP3!oZZ8wJz)pUF!#Zi~?=?b?T2Q^gyPn>PpBa|I zPWVHz0Q?71nWuLZX=K2r^FHF1=RpVp@xv|HAzs-iYG}N{=;|?FyZRQd_KJ5;A@Ec`iv=xExZ6Mh5EnxZrmjnn*FK6%863c zv0a1=u@wgVhWrx6-Wh@MBKH*8+;PZO*ggLW5wkJ)F~l|2_cf7fo~*co** zqLeAyMP1-cWh11~!-S&6_$UAX?~QL7u&w-7@11di)Wly#7jIh2Vd-)F72HawdocOs z1-l1!I3hKW=XosghB9OG!XgJBfJvzlt~~ijeE+~wot$ag9|Q{jlm*gx=pu28KEKQ@ z%k>Ku_R~SPe`tPe<80=8eAXD(&hDiBJh;3iq9?ST}Nf>c-akltWbVgUMqS(fCe5 z?v+0ZK7Lpy`*&+BCceD&FUgc;+R+uY;Np~Ew zn78QhwiZr{6V+o2%{~0+$CRq9*KoO;-Ah>a4ie$A5j9d)yjA-;o{$tibDZ}TcdvKp zSAisIM=D@!YfInGd7r0hKRtIx{vy)Uc$z#JSvlKNj1wO~W13O4 z5y!-yL@!+F#~k|D@L0$(vAVv$!|LBk3zg1;R^OrpbL+2xMa@Tpi#N9H83gLh@B3?EA1*UEZgWc^~v|Z3#~z3yPep%8PZ6)w`v}d2MVbvp`arD zKH{$-5>p68l5Q*eI9VEDf7W)Q;!=pOI-^?$QrnLNW!=d_%-BpLe0wlgT5EAo4u$Vi zNt|##*^}HxMxx~M@Ld>Lqz1Ae?kr`ELb}l}S2K#;`#@_6XUlI^Os#1x^JsI$A0(Yb2E#wk_&l=pK$$(#SIFY!kpZFg0S$(oRc~{n-x;PJCzmX+ zorcUmJ~Co&lUNrW{FcbRSUfe1ITnIeahQTq`(vKvz&Ft#)Ux)`>tEA|S^M_*I>w*k zR54)rYzO%ffjj+uSA&6q1?`8F;4m_5p`2HI?wVCNr!t%NZ&^uK zCbg^_F`MZvp#sJ41>BSQ`h-(43;oDbXQ5Zw(kDY&O93$%QLlw5hfZky7nnRKKmtU6 z>uOc3KtTA&9C`Y2s@+;4`KZCJ+@e^&n@yrT-bb5jaj@>Edc!z$bvv*kdwExWZA=By zn&!5FmVTj)zd~j~ubO3FQcI{jm3Z^AAI4TD(0(vhyk9&nj7?$bx^~0rZT?OQnGcA> zbNCqwpd(jXQDN<;#fXHhLzjszl|BXcujw}GAAnG_&X^GtnF3%CL#bsoJGAbC%wT`iu;aU%wW4dyI1bE zZaOr9_|vw8@2SVoblhcoZDB1@R%=ox-ZyR{CNiLxj|AQ23DSqa=AhjrRjl>#9E>y6 z`E>Itpin`WE^K|lc=lmhAJQ$%bmaWJ`s?EM@xy~bzL;k-alQs=L65FvH7@jDj>rJs zAtt{rcBT1_DL3tGaNHvdHz)l5nFTKln^Xyq^qOgoPkA-Ed2Yz^r8#(brokNc`i_>)=B$pMWv;8y?YG}NzXxv?aYpdxw z(4ep2^q=EFhlTyY#%ghBaST^)PmXP}`brgEtC9(9Js#0{pN~;55Y&eVXeKcgh*vHCfaYO*8&fS8(qiH3r{*Gj&M{K;6 zVMRdA+v>*usW{{BnjgFE$`E9km3;F~;j{vuvo>2JSw)WcY*iP>Ya{L13$ltZbDDbU zyx>6IT`}DcO)F!?yE^)8w_c`}eze)Db5J_s0y?nlMyg>eC2P&D?uHySH(%xfXc=W# z7hk*nYJ{t8b!#I0H_-dQMt4ol|C>kaah4O!L<_r@a^j-(fzY89-$Xx5XV1Fkxb)Zs zr#p!x9AfkpIuF-A$MB7qR5_|%2m0Ml94~EwDTBlJlqSDw%ms(cvvxdJPCgT-Z*LaC z-YibL(ojy;PweGsJA%EjCvH+;IRt#ga=2H|b_Ev>gvO$aPpbCat|!xaM?h z=y$K2@wBHxM_+ua&^H4d3DWN>5$xErjr)}<`JT^<#x@2TiL0>>CbtqvZwG%_gBNh`_ie5TOY$%TSFlh{TbKy}Yo&7wL171uSXh8Q-6n-F~v2qJEK4VD1J~@3BxAo`f zwsA_SJkMX%zkzuSe*A{9vZPecz$%8AVqFv-U>(}hBo?Qp^6rhz{b`oxTOWYI_R0#E(~ZHNB|brTcwCet0PlPQx~h-?JY1D`QSAVqz=iz-Hb}u1 zwpzyaU`?fXbNTjDO9v$l3axKnaXI{=C?WgRyR*q-PyFvciNBvmgANx2fsWH5=nTj^ z+EY6x|5c9%tMiy--&dRZCGCy$1KYZT4{0OysVCis+6|&&+1(1nT zmNRRNv&btdLCn`yl5WmV24H@5x#gEH6=nDAgmr1o6~}Hw@yMKku%ub(G0}hZnZW0; zURKP`yYZOju^bcQQ#lsKM?j$@5261p+csrmc1~E{>c>F-N3SiBB#n<|uv!CF-2YF{ z_~O6U{>w?e{aGe*^TB>7qdY>Z)!L5R-{}8>kG#243tufYAXT~Is69QrAAYslvfpbR zH1hvtIZ@%U-mcT|jy(81?JB4w-1YW2{KS*%TjnEmc17>Dyl^gy7TtNXn^(CELXVg9W|y z=Q(f0OUL${mci24Wg9)6h_Xjhmx3tgapdZkot@XxZd!;~6*0fQcVrLM`tki&8tCFH zHarvXk`%3zEH(})%rh7iTltk!l7?$8-T>LwLw1bQNuR=J4W1pS3W7q9AEa*enW*zS zkeka6`W}%IlG8t1>J2>buAJ`p)cfKHkio8^?X~^8!<9+qpK*$63oNb2pQCvr`5eoy z4EVwe_A2+dFY0PXE_Wqgx=^%!{?R3^C}Z>SD$JdZ)V20 za>4~-bAQORl8*KA@%2(g0>onYIDAX)Ip92FfF#M^$4!O-!j^zYs*wp*sQI~CDZUBo zJ*9iT7=(-TDv$4!!!S<*oBR!!}+-LcT|9u^wGc+Z5ZE{QGV{mFD4UVphaw;^#Bu zeVL0>RLtGg1T;&C7=k5gA4yb(842-+jUfr-&*X^TJ5$YLy!md}UqSxV2wHCILB8HN z$+&qyj}W(o_+C!?J{qAlZe53szIEoz&H(9SU7}|R=U1GyMNp-WTk~1CfyXp~V#AFi zArEA5D|fAH)grdqCoI#QQ7}iMK8%8@k8oFIB8()15lK$!W8Dk5IAIn?79$t`#Yt)A zk&7%~9V_Lrt9Ue;QVPT#gQygSqSAi^A`@Xld2_R#R1m5o*u9hN=#wS192fhM_kX-~ zl}&Nv*uR}G&{GDjSGrgO5R9>A|2S`?;;gTu)^@r6L`^N%Kx6BAHpMX}o%a;&eJ z6iI}RTo&p=wFN{&sqZ5=DqB4$8$xoA>La7dZOsUV*gdg>HOUXhE-EK&3z43h=qv1l zIae{w`TV@sfWqF1s4(pl({YzbD~BYeDVnbkGh{_%t z(FL9-ZO^oCUn%XfnGYOzoV3u2qx?OTxr26r4WBjxV)%Ov9ng&XqFkJCBXPCS2C6x< zx@fN98SL^54m10 z=Or;W`#`Y3I4B~&lw6bES z-y*v180gmAsEm3kh8K%B-2EzePH;e|uenD#A}(eMz%P=8Zp6ZDEV=BM-|q4@f;+}? zXo8Rd4I8MyoTKY3oBFNzmkbzP`(TrFRkOn3Bjw3lX|2 z-QIGeMHEVXavWH*5{=8CtH4ZBtqXZ zXDbf9#}rOYv{_p{iyzfo(PMkB<@)g+?#$xW2D=l+eY=xJvDSIej|@B%Gz)st&%JB3 zi@Y;7F6JToEvPI18?TYBDisyo!15I=sa0JQ3155Am7r_iKZ}U~?MI_^d-griZL7C0 zGAH7=Le?DSXivloT3Y$W5W&tFQ6~uzZbf%!B^VW!k(;em_gE0PTO)}uleE{PMPb7Ov_VksLI6H*>E~ z(p7vJU-nRGQSxLr8l`#b{LHTC6X7ejTWP*+@uD&4H>YI*toYC-4M z@KNa2I|iN#f)Cr@0EGcr7R?u@y+>{DbyZU)Sj| zZ%U*icux}%$l>F4W5(LSr()i(W^fX7Cn%;k1D1L&6}#5B$#0k(qPkuo40(e|@gbdS z)p{{>HaU}>J?gv(YInXSP*LZfZvEmM6OxV{F~h}B)+GGq)@^wH!Sk+`v3VkQp{K#t zOF%aSHuh|%c`m}R&B&IWxIcZXC*lzfvw`&hyNxfA_QhLU**zK4{XLr%`)3mrsheNj zg1vv=)huflsC3{@)4MZ&czm?BP~KWJd#ycZDT95h;Y84QQR(uV^{Bzd^{wuXN4e*X zF(!zxdpC$=rycS7D?z(*%scb9qZHj+_w%abe-;#U+sC7Pw*|wa3{Z|;!)=@-?(v=# zaA5kdyy4l9vc~1n#C-A#e=dnRRUcksVg4_jI&U+3+Sa8nDEA9st*M_9HzOnU^rKEA9)+dc;BLe(Li1J`MNKokyq{M*8+ENAhW;>Vp=GE=&H^6e6MV zc2BFpvL6^Je*N|2HAga0tDx(m{$0`;vrhCUK`8Y$m&8?JL7r)p^^BzE+K;#Iikm4L z+Gd$`yzZ1{Xh|J^^KU4H7;y*B849qd2?26rFCEHhx+Be2ua?7S zY!0I6U@#)%$CI%5j5$4Cmd=|nbo!-At*;*YH#6kUA7ZOAIZ^Y?s@z?YBW`B6R>s&K z3Bw@mnbsqXh|Q~=54iyi{lN%X+8oT5)TCrzALmrv7KpLif1H%QtMbyUM7{Dd2e5SZ z?ukvEVYtQ4_!VkWq_2;(4Y@_ho)`y`el$w&OucanPOSa@qVz%Et!aO22{s84iI_sX z^Qn8LY>qAo?Z>kG!b;6knOY-RWpU>qHR-^Oa!cFSgXX#}3UrNBEPisIJKLatGvX=1 zLlje?hs&s;byA5V>RDfK1-#E{Z3?LA%WJ{UCEx0smw8b>3@;8({)o02UJeHF_{7%a zgE_{c7*|e5P<4>=OhXgZ1LhX8d6VNLz+*$|dLYguQ+5|0WIb<0EjUNdeqCr|F2 zfRfNvWXr8B^p%`n%3zTp!rE-+n$VhT2PglfSusH*u9dF>t*5jHP{1 zcv-vPYM$447#rVj;Knab`TMCBydE?396z?~kKDOxdz4sc)Jrb=a5fG5(QXteDsR4c zGi2oO1yvTG6T*K*fa7z#`{b@MvdV`94N07E)vo$i-{d!nSY-#v=@_fPU;QFJMDxT^ z%aqQbQgsGpUB9{?Q{7_N|0oH9*>a%k^w=fjxRT`I30tw>oo=^#X1-ooB>3!1KHp4E zJSS|hm5kk`pj|c$BRSmH(#Uf2eaDh1E$wO(Ld@<`<&mf0leT!M;ZhID#=%+O?}#ygFWLRw@LbD@lpNWE}Cg&+les4wW&-L-Z4l|U4*1` z4@Ck$Gw*hRfI(C{d$~Qs6a21ce5UEZ+xw$!dT#jgJ0jZ;bV?))&@r9H9!CT&W^EQ z_pnnR?T;vV9mbcZUwy-jYH?ZWPnfCMIrQPd5hqap#CZ0lDTU{Ey8{vqWtOmzcRW^mz~8FqN^JZW=Pm5Tk70zfdc19G-fLICUwRrr;R1e3g}e z65C!UU}-%O@OitfWSa7)n?%gGT|jv?cfscQ2htDs-QX2g#+qJ5!S+LH*kH;l1s)Z7 zVGs!>l4d(-j6`xtvXt$XLkMAEABIZSNU(Tyz4ef27LPK->gB^CDJjiu4C)myu9+m* zkGz`v``u`n>GbqrZhf>6s8h>c*;TTTP{AlQdlBHOY#)ri0M#)~(5GJSl|K zk1M^o<_j_d=Q7?6JlVk_+z)gP!b{{4dcU(k3Bp)o$wZ0i%a^;MV^{RH3^@=JntjE_*3VqYwiE|gdd zybTm=h9uxJHn~KBTNTppjA3kkzmDrz7zu%X-ynMov>eia9UCF_3b=w3#1d;yL6 zeQ4?XWbT^^JKEvxK}$cI{Ma@(2XtH}lEky3*>?etrVf61JhvOKp06sO8@^#tlbFn1 z>B%7x-Rvq--IY2^l<)ZSU|vd7p;n&e+=t5%SO46z*0i61_G0GeD|=TV>LLonES8ea zLF`6(SI#i2zk|h#1!o_`mN6PO8e5>r57#(ShOh{rjyz21kwGhjd0z~TWq-orO z+C-lr*l?xo8Y#)hPq)G>kIq)9oL}(sW+gvGh=50AfzO;~o{?3AOB|bH`$ncn(YLPvWog_ZLp#l-6PjP89$kt9VM->GaB!pBHAoE!7$ z3N8RV2h^1PbdByrd;YUAaw|{7VW0F@mGSR1n@V+!k?n1XKQE-tIDswqtU_d^6I+6g z8nU{A2lR^%f2Z+P;OW3EQAnm0xm)DPL|y=)CA8j`Q0*(T)Y|g(B4!w#*CVyqW!%n& zcFjs&fLuu7xW1zlQu9kEp^LAW&j8EC>Ob_@K&>X%C6vy(Lr-SbIW<5j^HwkbuzmYC zTps#|+k`MX-<0RoNVY`wVfN(#Xu^ii7iUa;R}VHAR}@|EyE%K^bQlH7#aSwb45K-N zEv$+9YdnP{8cT0PCViE9G3^%GlFD&?HJC2M2IxHpOiDP(ej#J{jgy67Kx-8eW&f6V zjm^2)!hQo_EsF<{9O=7u^k3FIUw*Qgu;>*Q&!iyHpUp=U@#|zSN;0{7-bmEH8rOCH zsz?=uI#Ip4mZg+mvC}gD%T~;Vx=C9bMn~8!$PX2zZQrh8Zp({51x#Mae~o5;#3Dei zKH#DYF&sPu0Ox=l@|}x9YX5DiFQy(`IwZS%nTxf?b;J$Watw@x|MfWjzX~g7@BiCn dA-~5=_Ai3HG(+e3Y}VKS^Q%^-4VT^j`Cstxq$dCX delta 12858 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 diff --git a/src/fonts/vg_font_thin_3.xcf b/src/fonts/vg_font_thin_3.xcf index 43aa0bf167c282bfc209efc9151d02b70139c97a..66e8368ea080f9e3456c328de02683f3bfdca77d 100644 GIT binary patch delta 2621 zcmY+_e@v8h90%~{?z!*xc@C^#Cie?3g#(E#nMskXPE!yjSyqM<9J}y6{u7q%>X6^SnR)(X-vX?)~{b_k8d9 ze!tK6LWA*BgYgH~8YVi{-3qfkBWMS=^gvgyu3WJ7{jBh+tZ+jxE8MvEmq?plX4W`z zh5!6TW0K<0qnP4_X-=443o~Y5=1#H{<~{~rTL{ZY$=BM z7Pync(&ypc%dj#Y*5C)3{I`*tzb8+__SLZGP1sM@IqO3nt=3co)5O;(Owli#&PATa z(3$Rd^vr~}A#Z@;*)S4!&Z1h7EoSmV5>v@6_uD(D-mj{TF0%|%0e8qO)5ul>85vx5 z#n`@F6a_Ij79l3G`=3^sf^NIG%V@eMl!?L4XtBj3a)AYpjqzqf@X~&9(%}E~J+bir z#cEMIpH-Fk#9)cfbh^&q_J3>THig;V(tG5VPslGw43QqR`No_J%&}iDG1qT!`3{&e z1lQFy=uLJ0_2DQ_hC5FOk$?Y&Ycr@*H`Ur0cpkvMY+zuCG49-1Q_C z)|1&}Az4QHK0e&h;2-kJMg9l}uMJj4^Oa^ppSFz1D|3)0QC?YQ6 zo`;)1hdZ8v71%0x&ELrNufk?p@L$q!cKw0+KnRY#2&eE5%5USzlsJZ4TGXevOGc?2s$ y4$*ZDxIMFViQaBb!iq4bVe2)=Y{gPDm;8wnDyZQj4|0RG%334`twrXM)&Buj{acU# delta 2614 zcmYk-4^R|U90%~-+uOH$LaAYQ2X~$d2bdYmNF&)WNGQStGdf8^Xbi#ul{EdqiUw#i z5KNI_j)sc@8~=<$44pAT%QT=-Mp=>*X3`7;A*F;AL;eHA>h67iP2J4hXTQIsHX-PN`F{v<7L?zNyd0C zjToY}ojgjh`EcVhnB<1ZH(*K;xf^bef<;SU*%Umu3O1jCt#sUzzan=&NX9_zbS^f| z4#R<2IMf8kaK6$+7xMMnaCRQf8M#Ke4=!2&gR^1S3|#X7jE{qmt{I~rilG)YfiB6&q@dwknHdVGlVl0h%p$vR~{FI1Y&(!E3Mu&9r`C5?%m!8fIX z{|fsh&nudb|;^vWt@yIV}~c&#irL=MKxVwMKpE3+ISJ)>4;)?`~H&c=BKM(u*J z12BP)rywU`{>z(=p`J|tOa26Tb2Qx60keBxK3)CuImo+l-{g{hf7S%~^(W9!M&q~V z4dg0J9C<(eq4pKj-Irm*By9W+Hh&C{(EpF$KyG~xo}k=u0=esNpPKJJoytI=_e1z4 z-KVp7WaNIj@!uz*{bDg3?1V!{;pkWJN*lcP0i5~;-oz6i&l!;avhw}~W@zOFCVvJ^ z=z!gGAM(Ny803a#%v@&13}+TI>Xry{ExC!@Mi!8-l2w9UYLnO86}$YC#in6Ine$z= zJ8`R-6C=xu{&UCq3oHa{1+xWWf190LO=3-8wlvB+$Re_gtbv-Xi3)9GH+ha6A}7gt zXb&XqX(j!~f5`W` zb3Q_a6f%>1hAbiX)qm99=vioEGkS%c#hAoi{~QX@!f)~&)cja-1G$;YfBrv-R?57@ z;^$%dVfgH$usjFW-hvHz@DNS@V>Gm#*LYoHeUsQ>a4Q_gtCP*(F;y7GUb(-Qw=4E~ z7;c2oSh$pRFCr&C4pZ>BD_ed?&ho&VJ@C08znY*F-$kK(9o+jHbmK8pnlX8lmITy0 zuwW@YxF<><7CPlTMojr}3j2-V#id;R3Hgr;@D@}J{`JSVps9hlV%2QtJE+Uf!&Ps? zhq11xaacLkq!!fE;^0=kGz)6hTIB3Rm{&pKf>amXVwaA(%Xb1%zD?D2i3(TA+b~}t zEo5Z%ok-^UD*ByBH9KB(d9n&rn^wo0O~(hwVJ`m>eZT&%@1qtjhh>G(eHyl44y)bw zA`f6js1tNt5!Yw3hVph(G-iZpV=Hp#Q Date: Tue, 23 Apr 2024 21:30:54 +0100 Subject: [PATCH 7/7] bad char --- vg_build_font.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vg_build_font.h b/vg_build_font.h index 48aba86..e743b46 100644 --- a/vg_build_font.h +++ b/vg_build_font.h @@ -124,7 +124,7 @@ void vg_build_default_font(void) vg_build_font_face_run( &large, '!', '/', 12, 56 ); vg_build_font_face_run( &large, '[', '`', 192,56 ); vg_build_font_face_run( &large, '{', '~', 264,56 ); - vg_build_font_face_run( &large, ':', '@', 324,56 ); + vg_build_font_face_run( &large, ':', '@', 312,56 ); vg_build_font_face_run( &large, 'A', 'Z', 0, 77 ); vg_build_font_face_run( &large, 'a', 'z', 0, 98 ); vg_build_font_face_run( &large, '0', '9', 312,77 ); -- 2.25.1