diff --git a/src/gui2/fluxview.cc b/src/gui2/fluxview.cc index a9d5c59e..3c90233b 100644 --- a/src/gui2/fluxview.cc +++ b/src/gui2/fluxview.cc @@ -78,9 +78,11 @@ class FluxViewImpl : public FluxView painter.setBrush(Qt::NoBrush); - for (int pixel = startPos / _nanosecondsPerPixel; - pixel < t.gradient.size(); - pixel++) + int start = std::max(0, (int)(startPos / _nanosecondsPerPixel)); + int end = std::min( + (int)t.gradient.size(), (int)(endPos / _nanosecondsPerPixel)); + + for (int pixel = start; pixel < end; pixel++) { int c = t.gradient[pixel] * 255; painter.setPen(QPen(QColor(0, c, c), 1.5)); diff --git a/src/gui2/fluxvisualiserwidget.cc b/src/gui2/fluxvisualiserwidget.cc index 359ef2c1..c5b1f26f 100644 --- a/src/gui2/fluxvisualiserwidget.cc +++ b/src/gui2/fluxvisualiserwidget.cc @@ -66,6 +66,7 @@ class FluxVisualiserWidgetImpl : public FluxVisualiserWidget _numTracks = 0; _totalDuration = 0; _fluxView = FluxView::create(); + _fluxView->setScale(_nanosecondsPerPixel); repaint(); } @@ -95,14 +96,18 @@ class FluxVisualiserWidgetImpl : public FluxVisualiserWidget painter.setRenderHint(QPainter::Antialiasing); _viewNavigator->transform(painter); + QRectF world = + painter.worldTransform().inverted().mapRect(QRectF(event->rect())); + nanoseconds_t left = world.left() * _nanosecondsPerPixel; + nanoseconds_t right = world.right() * _nanosecondsPerPixel; painter.setPen(palette().color(QPalette::Text)); painter.setBrush(Qt::NoBrush); for (int i = 0; i < _numTracks; i++) { painter.save(); - painter.translate(HBORDER, VBORDER + VSCALE_TRACK_SIZE * i); - _fluxView->redraw(painter, 0, 100, i); + painter.translate(0, VSCALE_TRACK_SIZE * i); + _fluxView->redraw(painter, left, right, i); painter.restore(); } } diff --git a/src/gui2/viewnavigator.h b/src/gui2/viewnavigator.h index 335182c8..9003665f 100644 --- a/src/gui2/viewnavigator.h +++ b/src/gui2/viewnavigator.h @@ -6,5 +6,5 @@ class ViewNavigator : public QObject static std::unique_ptr create(QWidget* obj); public: - virtual void transform(QPainter& painter) = 0; + virtual void transform(QPainter& painter) = 0; };