From eb871ceccce1d7002a80e72bf78b02c02b500184 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Wed, 18 Mar 2020 14:09:19 +1100 Subject: [PATCH] waveformview: implemented rectified waveforms --- app/config/config.cpp | 1 + app/widget/viewer/waveformview.cpp | 43 +++++++++++++++++++++++------- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/app/config/config.cpp b/app/config/config.cpp index f9c1bcb46..88d80d4c0 100644 --- a/app/config/config.cpp +++ b/app/config/config.cpp @@ -77,6 +77,7 @@ void Config::SetDefaults() config_map_["DefaultViewerDivider"] = 2; config_map_["AutoSelectDivider"] = false; config_map_["SetNameWithMarker"] = false; + config_map_["RectifiedWaveforms"] = false; config_map_["DropWithoutSequenceBehavior"] = TimelineWidget::kDWSAsk; config_map_["DiskCachePath"] = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation); diff --git a/app/widget/viewer/waveformview.cpp b/app/widget/viewer/waveformview.cpp index e6305bc16..c57ea502f 100644 --- a/app/widget/viewer/waveformview.cpp +++ b/app/widget/viewer/waveformview.cpp @@ -5,6 +5,7 @@ #include #include "common/clamp.h" +#include "config/config.h" WaveformView::WaveformView(QWidget *parent) : SeekableWidget(parent), @@ -65,12 +66,23 @@ void WaveformView::DrawWaveform(QPainter *painter, const QRect& rect, const doub int line_x = i + rect.x(); for (int j=0;jdrawLine(line_x, - channel_mid + clamp(qRound(summary.at(j).min * channel_half_height), -channel_half_height, channel_half_height), - line_x, - channel_mid + clamp(qRound(summary.at(j).max * channel_half_height), -channel_half_height, channel_half_height)); + int diff = qRound((summary.at(j).max - summary.at(j).min) * channel_height); + + painter->drawLine(line_x, + channel_bottom - diff, + line_x, + channel_bottom); + } else{ + int channel_mid = rect.y() + channel_height * j + channel_half_height; + + painter->drawLine(line_x, + channel_mid + clamp(qRound(summary.at(j).min * channel_half_height), -channel_half_height, channel_half_height), + line_x, + channel_mid + clamp(qRound(summary.at(j).max * channel_half_height), -channel_half_height, channel_half_height)); + } } } } @@ -120,12 +132,23 @@ void WaveformView::paintEvent(QPaintEvent *event) params.channel_count()); for (int i=0;i(channel_half_height), - x, - channel_mid + samples.at(i).max * static_cast(channel_half_height)); + int diff = qRound((samples.at(i).max - samples.at(i).min) * channel_height); + + p.drawLine(x, + channel_bottom - diff, + x, + channel_bottom); + } else { + int channel_mid = channel_height * i + channel_half_height; + + p.drawLine(x, + channel_mid + samples.at(i).min * static_cast(channel_half_height), + x, + channel_mid + samples.at(i).max * static_cast(channel_half_height)); + } drew++; }