From 31c6eb08218a442a62fc4bad0a5dd33df3f6f569 Mon Sep 17 00:00:00 2001 From: Rushmore75 Date: Thu, 29 Jan 2026 16:20:48 -0700 Subject: [PATCH] make pause menu better --- README.md | 1 + src/main.rs | 60 ++++++++++++++++++++++++++++++++++++----------------- 2 files changed, 42 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 8f9f71e..9fa4ed3 100644 --- a/README.md +++ b/README.md @@ -9,3 +9,4 @@ Finally, an easy way to do graphics with rust. | F1 | Pause/Play the graph | | F2 | Dump the current data to a csv and graph it with gnuplot | | F3 | Show/Hide Debug info | +| F4 | Show/Hide Cursor Location | diff --git a/src/main.rs b/src/main.rs index 5761521..fa4ad63 100644 --- a/src/main.rs +++ b/src/main.rs @@ -282,7 +282,7 @@ async fn get_font() -> Option { let ttf = load_ttf_font(selection) .await .expect("Cannot load ttf {selection}"); - println!("Loaded \"{:?}\"", ttfs[0]); + println!("Loaded {:?}", ttfs[0]); return Some(ttf); } else { eprintln!( @@ -306,13 +306,19 @@ async fn main() { let mut graph = Graph::new(Axis::One, font.as_ref()); // Tooling - let mut show_debug = true; + let mut show_debug = false; let mut plot_delta_time = 0.; let mut pause = false; // Serial let (rx, _handle) = get_serial_port_or_demo(); loop { + let mut debug = DebugWindow::new(font.as_ref()); + let params = debug.get_params(); + let (mouse_x, mouse_y) = mouse_position(); + let (_, my) = mouse_wheel(); + graph.px_per_s += 10. * my; + clear_background(BLACK); graph.recalculate_origin(); @@ -391,26 +397,41 @@ async fn main() { show_debug = !show_debug; } - let (_, my) = mouse_wheel(); - graph.px_per_s += 10. * my; + if !pause { + // Cursor information + let text = &format!("x{mouse_x}, y{}", -(mouse_y - graph.y_origin)); + let size = measure_text(text, params.font, params.font_size, params.font_scale); + draw_rectangle( + mouse_x, + mouse_y + (size.offset_y / 4.), + size.width, + -(size.height), + DARKGRAY, + ); + draw_text_ex(text, mouse_x, mouse_y, params.clone()); + } - let mut debug = DebugWindow::new(font.as_ref()); - let params = debug.get_params(); + if pause { + for i in graph.points { + let distance = 15.; + if (i.x - mouse_x).abs() < distance && (i.y - mouse_y).abs() < distance { + let size = 10.; + draw_rectangle(i.x - size / 2., i.y - size / 2., size, size, YELLOW); - // Cursor information - let (mouse_x, mouse_y) = mouse_position(); - let text = &format!("x{mouse_x}, y{}", -(mouse_y - graph.y_origin)); - let size = measure_text(text, params.font, params.font_size, params.font_scale); - draw_rectangle( - mouse_x, - mouse_y + (size.offset_y / 4.), - size.width, - -(size.height), - DARKGRAY, - ); + let text = &format!("x{}, y{}", i.x, i.y); + let size = measure_text(text, params.font, params.font_size, params.font_scale); + draw_rectangle( + i.x, + i.y + (size.offset_y / 4.), + size.width, + -(size.height), + DARKGRAY, + ); + draw_text_ex(text, i.x, i.y, params.clone()); + } + } + } - draw_text_ex(text, mouse_x, mouse_y, params); - // toggle debug box if show_debug { // Debug textbox debug.add_line(format!( @@ -431,6 +452,7 @@ async fn main() { debug.draw(); } + next_frame().await; } }