Jelajahi Sumber

UI: Add the "-60" volume control marker

Shaolin 7 tahun lalu
induk
melakukan
9872e4d525
2 mengubah file dengan 14 tambahan dan 16 penghapusan
  1. 13 16
      UI/volume-control.cpp
  2. 1 0
      UI/volume-control.hpp

+ 13 - 16
UI/volume-control.cpp

@@ -410,6 +410,9 @@ void VolumeMeter::setInputPeakHoldDuration(qreal v)
 VolumeMeter::VolumeMeter(QWidget *parent, obs_volmeter_t *obs_volmeter)
 			: QWidget(parent), obs_volmeter(obs_volmeter)
 {
+	// Use a font that can be rendered small.
+	tickFont = QFont("Arial");
+	tickFont.setPixelSize(7);
 	// Default meter color settings, they only show if
 	// there is no stylesheet, do not remove.
 	backgroundNominalColor.setRgb(0x26, 0x7f, 0x26);    // Dark green
@@ -616,31 +619,25 @@ void VolumeMeter::paintTicks(QPainter &painter, int x, int y,
 {
 	qreal scale = width / minimumLevel;
 
-	// Use a font that can be rendered small.
-	QFont font = QFont("Arial");
-	font.setPixelSize(7);
-
-	painter.setFont(font);
+	painter.setFont(tickFont);
 	painter.setPen(majorTickColor);
 
 	// Draw major tick lines and numeric indicators.
-	for (int i = 0; i > minimumLevel; i-= 5) {
+	for (int i = 0; i >= minimumLevel; i-= 5) {
 		int position = x + width - (i * scale) - 1;
-		char str[5];
-
-		snprintf(str, sizeof (str), "%i", i);
+		QString str = QString::number(i);
 
-		if (i == 0 || i == 5)  {
-			painter.drawText(position - 3, height, QString(str));
+		if (i == 0 || i == -5)  {
+			painter.drawText(position - 3, height, str);
 		} else {
-			painter.drawText(position - 5, height, QString(str));
+			painter.drawText(position - 5, height, str);
 		}
 		painter.drawLine(position, y, position, y + 2);
 	}
 
 	// Draw minor tick lines.
 	painter.setPen(minorTickColor);
-	for (int i = 0; i > minimumLevel; i--) {
+	for (int i = 0; i >= minimumLevel; i--) {
 		int position = x + width - (i * scale) - 1;
 
 		if (i % 5 != 0) {
@@ -810,7 +807,7 @@ void VolumeMeter::paintEvent(QPaintEvent *event)
 	bool idle = detectIdle(ts);
 
 	// Draw the ticks in a off-screen buffer when the widget changes size.
-	QSize tickPaintCacheSize = QSize(width - 5, 9);
+	QSize tickPaintCacheSize = QSize(width, 9);
 	if (tickPaintCache == NULL ||
 		tickPaintCache->size() != tickPaintCacheSize) {
 		delete tickPaintCache;
@@ -820,14 +817,14 @@ void VolumeMeter::paintEvent(QPaintEvent *event)
 		tickPaintCache->fill(clearColor);
 
 		QPainter tickPainter(tickPaintCache);
-		paintTicks(tickPainter, 0, 0, tickPaintCacheSize.width(),
+		paintTicks(tickPainter, 6, 0, tickPaintCacheSize.width() - 6,
 			tickPaintCacheSize.height());
 		tickPainter.end();
 	}
 
 	// Actual painting of the widget starts here.
 	QPainter painter(this);
-	painter.drawPixmap(5, height - 9, *tickPaintCache);
+	painter.drawPixmap(0, height - 9, *tickPaintCache);
 
 	for (int channelNr = 0; channelNr < displayNrAudioChannels;
 		channelNr++) {

+ 1 - 0
UI/volume-control.hpp

@@ -115,6 +115,7 @@ private:
 	float displayInputPeakHold[MAX_AUDIO_CHANNELS];
 	uint64_t displayInputPeakHoldLastUpdateTime[MAX_AUDIO_CHANNELS];
 
+	QFont tickFont;
 	QColor backgroundNominalColor;
 	QColor backgroundWarningColor;
 	QColor backgroundErrorColor;