10 #include "vu_common.h"
12 class VUMeter : public QWidget
17 VUMeter(QWidget *parent);
19 void set_level(float level_lufs) {
20 set_level(level_lufs, level_lufs);
23 void set_level(float level_lufs_left, float level_lufs_right) {
24 std::unique_lock<std::mutex> lock(level_mutex);
25 this->level_lufs[0] = level_lufs_left;
26 this->level_lufs[1] = level_lufs_right;
27 QMetaObject::invokeMethod(this, "update", Qt::AutoConnection);
30 void set_peak(float peak_lufs) {
31 set_peak(peak_lufs, peak_lufs);
34 void set_peak(float peak_lufs_left, float peak_lufs_right) {
35 std::unique_lock<std::mutex> lock(level_mutex);
36 this->peak_lufs[0] = peak_lufs_left;
37 this->peak_lufs[1] = peak_lufs_right;
38 QMetaObject::invokeMethod(this, "update", Qt::AutoConnection);
41 double lufs_to_pos(float level_lu, int height)
43 return ::lufs_to_pos(level_lu, height, min_level, max_level);
46 void set_min_level(float min_level)
48 this->min_level = min_level;
49 recalculate_pixmaps();
52 void set_max_level(float max_level)
54 this->max_level = max_level;
55 recalculate_pixmaps();
58 void set_ref_level(float ref_level_lufs)
60 this->ref_level_lufs = ref_level_lufs;
63 void set_flip(bool flip)
66 recalculate_pixmaps();
70 void resizeEvent(QResizeEvent *event) override;
71 void paintEvent(QPaintEvent *event) override;
72 void recalculate_pixmaps();
74 std::mutex level_mutex;
75 float level_lufs[2] { -HUGE_VALF, -HUGE_VALF };
76 float peak_lufs[2] { -HUGE_VALF, -HUGE_VALF };
77 float min_level = -18.0f, max_level = 9.0f, ref_level_lufs = -23.0f;
80 QPixmap full_on_pixmap, on_pixmap, off_pixmap;