From: Steinar H. Gunderson Date: Sat, 13 Aug 2016 21:33:38 +0000 (+0200) Subject: Simplify draw_vu_meter(). X-Git-Tag: 1.4.0~144 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=82e711de31a86ce697ebe80720f92db748272d62;p=nageru Simplify draw_vu_meter(). --- diff --git a/lrameter.cpp b/lrameter.cpp index d0304e1..9ca7b01 100644 --- a/lrameter.cpp +++ b/lrameter.cpp @@ -21,12 +21,12 @@ void LRAMeter::resizeEvent(QResizeEvent *event) on_pixmap = QPixmap(width(), height()); QPainter on_painter(&on_pixmap); on_painter.fillRect(0, 0, width(), height(), parentWidget()->palette().window()); - draw_vu_meter(on_painter, -HUGE_VAL, HUGE_VAL, width(), height(), margin); + draw_vu_meter(on_painter, width(), height(), margin, true); off_pixmap = QPixmap(width(), height()); QPainter off_painter(&off_pixmap); off_painter.fillRect(0, 0, width(), height(), parentWidget()->palette().window()); - draw_vu_meter(off_painter, -HUGE_VAL, -HUGE_VAL, width(), height(), margin); + draw_vu_meter(off_painter, width(), height(), margin, false); } void LRAMeter::paintEvent(QPaintEvent *event) diff --git a/vu_common.cpp b/vu_common.cpp index d16b732..5024969 100644 --- a/vu_common.cpp +++ b/vu_common.cpp @@ -25,7 +25,7 @@ int lufs_to_pos(float level_lu, int height) return y; } -void draw_vu_meter(QPainter &painter, float range_low_lu, float range_high_lu, int width, int height, int margin) +void draw_vu_meter(QPainter &painter, int width, int height, int margin, bool is_on) { painter.fillRect(margin, 0, width - 2 * margin, height, Qt::black); @@ -36,19 +36,15 @@ void draw_vu_meter(QPainter &painter, float range_low_lu, float range_high_lu, i on.setColorAt(1.0f, QColor(0, 255, 0)); QColor off(80, 80, 80); - int min_on_y = lufs_to_pos(range_high_lu, height); - int max_on_y = lufs_to_pos(range_low_lu, height); - // Draw bars colored up until the level, then gray from there. for (int level = -18; level < 9; ++level) { int min_y = lufs_to_pos(level + 1.0f, height) + 1; int max_y = lufs_to_pos(level, height) - 1; - painter.fillRect(margin, min_y, width - 2 * margin, max_y - min_y, off); - int min_draw_y = max(min_y, min_on_y); - int max_draw_y = min(max_y, max_on_y); - if (min_draw_y < max_draw_y) { - painter.fillRect(margin, min_draw_y, width - 2 * margin, max_draw_y - min_draw_y, on); + if (is_on) { + painter.fillRect(margin, min_y, width - 2 * margin, max_y - min_y, on); + } else { + painter.fillRect(margin, min_y, width - 2 * margin, max_y - min_y, off); } } } diff --git a/vu_common.h b/vu_common.h index aa57721..5df149e 100644 --- a/vu_common.h +++ b/vu_common.h @@ -5,8 +5,6 @@ int lufs_to_pos(float level_lu, int height); -// TODO: Now that we precalculate these as pixmaps, perhaps we don't need the -// high/low range anymore, just a yes/no. -void draw_vu_meter(QPainter &painter, float range_low_lu, float range_high_lu, int width, int height, int margin); +void draw_vu_meter(QPainter &painter, int width, int height, int margin, bool is_on); #endif // !defined(_VU_COMMON_H) diff --git a/vumeter.cpp b/vumeter.cpp index 9fca7dd..2e2d1c4 100644 --- a/vumeter.cpp +++ b/vumeter.cpp @@ -14,11 +14,11 @@ void VUMeter::resizeEvent(QResizeEvent *event) { on_pixmap = QPixmap(width(), height()); QPainter on_painter(&on_pixmap); - draw_vu_meter(on_painter, -HUGE_VAL, HUGE_VAL, width(), height(), 0); + draw_vu_meter(on_painter, width(), height(), 0, true); off_pixmap = QPixmap(width(), height()); QPainter off_painter(&off_pixmap); - draw_vu_meter(off_painter, -HUGE_VAL, -HUGE_VAL, width(), height(), 0); + draw_vu_meter(off_painter, width(), height(), 0, false); } void VUMeter::paintEvent(QPaintEvent *event)