From 423f22b51c15e18ff3e56b25232f4825707f1d8f Mon Sep 17 00:00:00 2001 From: Willem Melching Date: Sun, 29 Jan 2023 21:57:01 +0100 Subject: [PATCH] cabana: show dots when zoomed far into a signal (#27145) * cabana: show dots when zoomed far into a signal * review comments old-commit-hash: f038193f4447afc8ae7b6034dec430d08f6da331 --- tools/cabana/chartswidget.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tools/cabana/chartswidget.cc b/tools/cabana/chartswidget.cc index 26c05cf119..9f5b4acbd1 100644 --- a/tools/cabana/chartswidget.cc +++ b/tools/cabana/chartswidget.cc @@ -469,6 +469,18 @@ void ChartView::updatePlot(double cur, double min, double max) { axis_x->setRange(min, max); updateAxisY(); } + + // Show points when zoomed in enough + for (auto &s : sigs) { + auto begin = std::lower_bound(s.vals.begin(), s.vals.end(), axis_x->min(), [](auto &p, double x) { return p.x() < x; }); + auto end = std::lower_bound(s.vals.begin(), s.vals.end(), axis_x->max(), [](auto &p, double x) { return p.x() < x; }); + + int num_points = std::max(end - begin, 1); + int pixels_per_point = width() / num_points; + + s.series->setPointsVisible(pixels_per_point > 20); + } + scene()->invalidate({}, QGraphicsScene::ForegroundLayer); }