From 95f9a03a7ba1d780e4076a43a295bca9122a085e Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 4 Dec 2016 06:07:53 +0100 Subject: [PATCH] Level meter: isolate paint method --- sdrbase/gui/levelmeter.cpp | 17 +++++++++++------ sdrbase/gui/levelmeter.h | 1 + 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/sdrbase/gui/levelmeter.cpp b/sdrbase/gui/levelmeter.cpp index 3f26c9d5e..d529f23a4 100644 --- a/sdrbase/gui/levelmeter.cpp +++ b/sdrbase/gui/levelmeter.cpp @@ -129,21 +129,26 @@ void LevelMeter::paintEvent(QPaintEvent *event) Q_UNUSED(event) QPainter painter(this); - painter.fillRect(rect(), QColor(42, 42, 42, 255)); + render(&painter); +} + +void LevelMeter::render(QPainter *painter) +{ + painter->fillRect(rect(), QColor(42, 42, 42, 255)); // red zone on top half QRect barTop = rect(); barTop.setBottom(0.5 * rect().height() - 2); barTop.setTop(2); barTop.setLeft(0.75* rect().width()); - painter.fillRect(barTop, Qt::red); + painter->fillRect(barTop, Qt::red); QRect bar = rect(); // 100% full height white line bar.setLeft(0.75* rect().width() - 2); bar.setRight(0.75* rect().width()); - painter.fillRect(bar, Qt::white); + painter->fillRect(bar, Qt::white); // Bottom moving gauge @@ -152,12 +157,12 @@ void LevelMeter::paintEvent(QPaintEvent *event) bar.setRight(rect().right() - (1.0 - 0.75*m_peakHoldLevel) * rect().width()); bar.setLeft(bar.right() - 5); - painter.fillRect(bar, m_peakColor); + painter->fillRect(bar, m_peakColor); bar.setLeft(rect().left()); bar.setRight(rect().right() - (1.0 - 0.75*m_decayedPeakLevel) * rect().width()); - painter.fillRect(bar, m_decayedPeakColor); + painter->fillRect(bar, m_decayedPeakColor); bar.setRight(rect().right() - (1.0 - 0.75*m_rmsLevel) * rect().width()); - painter.fillRect(bar, m_rmsColor); + painter->fillRect(bar, m_rmsColor); } diff --git a/sdrbase/gui/levelmeter.h b/sdrbase/gui/levelmeter.h index 619ad74dc..808990e8a 100644 --- a/sdrbase/gui/levelmeter.h +++ b/sdrbase/gui/levelmeter.h @@ -120,6 +120,7 @@ private: QColor m_peakColor; QColor m_decayedPeakColor; + void render(QPainter *painter); }; #endif /* SDRBASE_GUI_LEVELMETER_H_ */