diff --git a/UI/volume-control.cpp b/UI/volume-control.cpp index f0826294f0b43d6d8e1bedf677991dceef8ffeeb..497315a984b3e75f23046a728fbdcf07c5b0cb0b 100644 --- a/UI/volume-control.cpp +++ b/UI/volume-control.cpp @@ -3,6 +3,7 @@ #include "obs-app.hpp" #include "mute-checkbox.hpp" #include "slider-absoluteset-style.hpp" +#include #include #include #include @@ -265,7 +266,10 @@ VolumeMeter::VolumeMeter(QWidget *parent) magColor.setRgb(0x20, 0x7D, 0x17); peakColor.setRgb(0x3E, 0xF1, 0x2B); peakHoldColor.setRgb(0x00, 0x00, 0x00); - + + clipColor1.setRgb(0x7F, 0x00, 0x00); + clipColor2.setRgb(0xFF, 0x00, 0x00); + updateTimerRef = updateTimer.toStrongRef(); if (!updateTimerRef) { updateTimerRef = QSharedPointer::create(); @@ -329,15 +333,17 @@ void VolumeMeter::paintEvent(QPaintEvent *event) int scaledPeak = int((float)width * curPeak); int scaledPeakHold = int((float)width * curPeakHold); + float db = obs_volmeter_get_cur_db(OBS_FADER_LOG, curPeakHold); + gradient.setStart(qreal(scaledMag), 0); gradient.setFinalStop(qreal(scaledPeak), 0); - gradient.setColorAt(0, magColor); - gradient.setColorAt(1, peakColor); + gradient.setColorAt(0, db == 0.0f ? clipColor1 : magColor); + gradient.setColorAt(1, db == 0.0f ? clipColor2 : peakColor); // RMS painter.fillRect(0, 0, scaledMag, height, - magColor); + db == 0.0f ? clipColor1 : magColor); // RMS - Peak gradient painter.fillRect(scaledMag, 0, diff --git a/UI/volume-control.hpp b/UI/volume-control.hpp index 2f54aeb15d6caf281686312cedae673ce5cff73a..f9876dfb8528166192dbe863e85802df5fd743e4 100644 --- a/UI/volume-control.hpp +++ b/UI/volume-control.hpp @@ -31,6 +31,7 @@ private: uint64_t lastUpdateTime = 0; QColor bkColor, magColor, peakColor, peakHoldColor; + QColor clipColor1, clipColor2; public: explicit VolumeMeter(QWidget *parent = 0);