From 30696762df278404fa1f3fb9ad829ed0a39cc3a9 Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 17 May 2017 00:13:40 +0200 Subject: [PATCH] Put level meter in sunken perspective --- sdrbase/gui/levelmeter.cpp | 19 +++++++++++++++++-- sdrbase/gui/levelmeter.h | 6 ++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/sdrbase/gui/levelmeter.cpp b/sdrbase/gui/levelmeter.cpp index 8a2e4274f..5da48f471 100644 --- a/sdrbase/gui/levelmeter.cpp +++ b/sdrbase/gui/levelmeter.cpp @@ -203,7 +203,7 @@ void LevelMeterVU::resized() painter.drawText(QPointF(tick.textPos - (tick.textSize/2) - 2, bar.height()/2), tick.text); } - painter.drawLine(tick.pos, 0, scaleTickList[i].pos, bar.height()); + painter.drawLine(shiftx(tick.pos, bar.width()), 0, shiftx(scaleTickList[i].pos, bar.width()), bar.height()); } else { @@ -239,6 +239,13 @@ void LevelMeterVU::render(QPainter *painter) bar.setRight(rect().right() - (1.0 - 0.75*m_decayedPeakLevel) * rect().width()); painter->fillRect(bar, m_decayedPeakColor); + // borders + painter->setPen(QColor(0,0,0)); + painter->drawLine(0, 0, rect().width() - 2, 0); + painter->drawLine(0, rect().height() - 1, 0, 0); + painter->setPen(QColor(80,80,80)); + painter->drawLine(1, rect().height() - 1, rect().width() - 1, rect().height() - 1); + painter->drawLine(rect().width() - 1, rect().height() - 1, rect().width() - 1, 0); } // ==================================================================== @@ -314,7 +321,7 @@ void LevelMeterSignalDB::resized() painter.drawText(QPointF(tick.textPos - (tick.textSize/2) - 2, bar.height()/2 - 1), tick.text); } - painter.drawLine(tick.pos, 0, scaleTickList[i].pos, bar.height()); + painter.drawLine(shiftx(tick.pos, bar.width()), 0, shiftx(scaleTickList[i].pos,bar.width()), bar.height()); } else { @@ -350,5 +357,13 @@ void LevelMeterSignalDB::render(QPainter *painter) bar.setRight(rect().right() - (1.0 - m_peakHoldLevel) * rect().width()); bar.setLeft(bar.right() - 2); painter->fillRect(bar, m_peakColor[m_colorTheme]); + + // borders + painter->setPen(QColor(0,0,0)); + painter->drawLine(0, 0, rect().width() - 2, 0); + painter->drawLine(0, rect().height() - 1, 0, 0); + painter->setPen(QColor(80,80,80)); + painter->drawLine(1, rect().height() - 1, rect().width() - 1, rect().height() - 1); + painter->drawLine(rect().width() - 1, rect().height() - 1, rect().width() - 1, 0); } diff --git a/sdrbase/gui/levelmeter.h b/sdrbase/gui/levelmeter.h index 65f674121..25c6a0361 100644 --- a/sdrbase/gui/levelmeter.h +++ b/sdrbase/gui/levelmeter.h @@ -129,6 +129,12 @@ protected: virtual void render(QPainter *painter) = 0; virtual void resized() = 0; + + /** Shift the x coordinate so it does not fall right on 0 or width-1 */ + int shiftx(int val, int width) + { + return val == 0 ? 1 : val == width-1 ? width-2 : val; + } }; class LevelMeterVU : public LevelMeter