8 LRAMeter::LRAMeter(QWidget *parent)
13 void LRAMeter::paintEvent(QPaintEvent *event)
15 QPainter painter(this);
17 painter.fillRect(0, 0, width(), height(), parentWidget()->palette().window());
21 float range_high_lufs;
23 unique_lock<mutex> lock(level_mutex);
24 level_lufs = this->level_lufs;
25 range_low_lufs = this->range_low_lufs;
26 range_high_lufs = this->range_high_lufs;
29 float level_lu = level_lufs + 23.0f;
30 float range_low_lu = range_low_lufs + 23.0f;
31 float range_high_lu = range_high_lufs + 23.0f;
33 draw_vu_meter(painter, range_low_lu, range_high_lu, width(), height(), margin);
35 // Draw the target area (+/-1 LU is allowed EBU range).
36 // It turns green when we're within.
37 int min_y = lufs_to_pos(1.0f, height());
38 int max_y = lufs_to_pos(-1.0f, height());
40 // FIXME: This outlining isn't so pretty.
45 painter.drawRect(2, min_y, width() - 5, max_y - min_y);
49 if (level_lu >= -1.0f && level_lu <= 1.0f) {
50 pen.setColor(Qt::green);
52 pen.setColor(Qt::red);
56 painter.drawRect(2, min_y, width() - 5, max_y - min_y);
59 // Draw the integrated loudness meter, in the same color as the target area.
60 int y = lufs_to_pos(level_lu, height());
65 painter.drawRect(2, y, width() - 5, 1);
69 if (level_lu >= -1.0f && level_lu <= 1.0f) {
70 pen.setColor(Qt::green);
72 pen.setColor(Qt::red);
76 painter.drawRect(2, y, width() - 5, 1);