12 LRAMeter::LRAMeter(QWidget *parent)
17 void LRAMeter::paintEvent(QPaintEvent *event)
19 QPainter painter(this);
21 painter.fillRect(0, 0, width(), height(), parentWidget()->palette().window());
25 float range_high_lufs;
27 unique_lock<mutex> lock(level_mutex);
28 level_lufs = this->level_lufs;
29 range_low_lufs = this->range_low_lufs;
30 range_high_lufs = this->range_high_lufs;
33 float level_lu = level_lufs + 23.0f;
34 float range_low_lu = range_low_lufs + 23.0f;
35 float range_high_lu = range_high_lufs + 23.0f;
37 draw_vu_meter(painter, range_low_lu, range_high_lu, width(), height(), margin);
39 // Draw the target area (+/-1 LU is allowed EBU range).
40 // It turns green when we're within.
41 int min_y = lufs_to_pos(1.0f, height());
42 int max_y = lufs_to_pos(-1.0f, height());
44 // FIXME: This outlining isn't so pretty.
49 painter.drawRect(2, min_y, width() - 5, max_y - min_y);
53 if (level_lu >= -1.0f && level_lu <= 1.0f) {
54 pen.setColor(Qt::green);
56 pen.setColor(Qt::red);
60 painter.drawRect(2, min_y, width() - 5, max_y - min_y);
63 // Draw the integrated loudness meter, in the same color as the target area.
64 int y = lufs_to_pos(level_lu, height());
69 painter.drawRect(2, y, width() - 5, 1);
73 if (level_lu >= -1.0f && level_lu <= 1.0f) {
74 pen.setColor(Qt::green);
76 pen.setColor(Qt::red);
80 painter.drawRect(2, y, width() - 5, 1);