From 801b4c76e39d993216b3254a3b157b1c0404ee7b Mon Sep 17 00:00:00 2001 From: Narcha <42248344+Narcha@users.noreply.github.com> Date: Wed, 1 May 2024 12:38:43 +0200 Subject: [PATCH] Do some culling --- tools/twix/src/panels/enum_plot.rs | 32 ++++++++++++++---------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/tools/twix/src/panels/enum_plot.rs b/tools/twix/src/panels/enum_plot.rs index 98eca7ddc9..036a72b43c 100644 --- a/tools/twix/src/panels/enum_plot.rs +++ b/tools/twix/src/panels/enum_plot.rs @@ -74,13 +74,7 @@ impl Segment { } } - fn render( - &self, - ui: &mut Ui, - offset: usize, - index: usize, - viewport_transform: &RectTransform, - ) -> Rect { + fn render(&self, ui: &mut Ui, offset: usize, index: usize, viewport_transform: &RectTransform) { let stroke_color = color_hash(self.name()); let fill_color = stroke_color.gamma_multiply(0.5); let stroke_width = 2.0; @@ -90,8 +84,21 @@ impl Segment { [(self.end + offset) as f32, (index + 1) as f32].into(), ); + if !rect + .x_range() + .intersects(viewport_transform.from().x_range()) + { + return; + } + let screenspace_rect = viewport_transform.transform_rect(rect).shrink(stroke_width); + if ui.rect_contains_pointer(screenspace_rect) { + if let Some(tooltip) = self.tooltip() { + show_tooltip_at_pointer(ui.ctx(), "Fridolin".into(), |ui| ui.label(tooltip)); + } + } + ui.painter().rect( screenspace_rect, Rounding::same(4.0), @@ -118,8 +125,6 @@ impl Segment { text, Color32::WHITE, ))); - - screenspace_rect } } @@ -371,14 +376,7 @@ impl EnumPlotPanel { let offset = max_message_count - message_count; for segment in segments { - let rect = segment.render(ui, offset, index, &viewport_transform); - if let Some(tooltip) = segment.tooltip() { - if ui.rect_contains_pointer(rect) { - show_tooltip_at_pointer(ui.ctx(), "Karsten".into(), |ui| { - ui.label(tooltip) - }); - } - } + segment.render(ui, offset, index, &viewport_transform); } } });