UI: Fix padding with vertical volume meters

Since Yami uses a different font, the 0 dB mark at the top of the
vertical meters would be cut off. This adds a 1px padding to the top
and bottom of the volume meters, when in vertical mode.
master
cg2121 2022-08-10 11:08:00 -05:00 committed by Jim
parent cdd3399286
commit 94189402c2
1 changed files with 9 additions and 3 deletions

View File

@ -20,6 +20,9 @@ using namespace std;
// Size of the audio indicator in pixels
#define INDICATOR_THICKNESS 3
// Padding on top and bottom of vertical meters
#define METER_PADDING 1
QWeakPointer<VolumeMeterTimer> VolumeMeter::updateTimer;
void VolControl::OBSVolumeChanged(void *data, float db)
@ -1035,7 +1038,7 @@ void VolumeMeter::paintVTicks(QPainter &painter, int x, int y, int height)
// Draw major tick lines and numeric indicators.
for (int i = 0; i >= minimumLevel; i -= 5) {
int position = y + int(i * scale);
int position = y + int(i * scale) + METER_PADDING;
QString str = QString::number(i);
// Center the number on the tick, but don't overflow
@ -1054,7 +1057,7 @@ void VolumeMeter::paintVTicks(QPainter &painter, int x, int y, int height)
// Draw minor tick lines.
painter.setPen(minorTickColor);
for (int i = 0; i >= minimumLevel; i--) {
int position = y + int(i * scale);
int position = y + int(i * scale) + METER_PADDING;
if (i % 5 != 0)
painter.drawLine(x, position, x + 1, position);
}
@ -1304,6 +1307,9 @@ void VolumeMeter::paintEvent(QPaintEvent *event)
QPainter painter(this);
if (vertical)
height -= METER_PADDING * 2;
// timerEvent requests update of the bar(s) only, so we can avoid the
// overhead of repainting the scale and labels.
if (event->region().boundingRect() != getBarRect()) {
@ -1332,7 +1338,7 @@ void VolumeMeter::paintEvent(QPaintEvent *event)
if (vertical) {
// Invert the Y axis to ease the math
painter.translate(0, height);
painter.translate(0, height + METER_PADDING);
painter.scale(1, -1);
}