From 33fdcfbfaf8504328a37204472c35d7f75433d05 Mon Sep 17 00:00:00 2001 From: Enrico Lumetti Date: Mon, 4 May 2020 16:52:04 +0200 Subject: [PATCH] Stroke a path instead of drawing many circles --- src/bin/gtk_capture.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/bin/gtk_capture.rs b/src/bin/gtk_capture.rs index f9408b3..5a5bd55 100644 --- a/src/bin/gtk_capture.rs +++ b/src/bin/gtk_capture.rs @@ -42,10 +42,16 @@ fn main() { let state = &*state_clone_1.borrow(); - for pt in &state.point_buffer { + if state.point_buffer.len() > 0 { + let (x, y) = state.point_buffer[0]; + cr.move_to(x - wa.x as f64, y - wa.y as f64); + + for pt in &state.point_buffer[1..] { + cr.line_to(pt.0 - wa.x as f64, pt.1 - wa.y as f64); + } cr.set_source_rgb(1.0, 0.0, 0.0); - cr.arc(pt.0 - wa.x as f64, pt.1 - wa.y as f64, 3., 0., 2.*std::f64::consts::PI); - cr.fill(); + cr.set_line_width(3.); + cr.stroke(); } println!("{} points drawn", state.point_buffer.len()); @@ -72,7 +78,7 @@ fn main() { let state_clone_3 = Rc::clone(&app_state); let win_clone = Rc::clone(&window); - clear_button.connect_clicked(move |widget| { + clear_button.connect_clicked(move |_| { state_clone_3.borrow_mut().point_buffer.clear(); win_clone.queue_draw(); });