X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=vumeter.h;h=7a9420058358f30047f8f2d3645eaa972ec51895;hb=d3e48df512d9476d3849227067792a3537bb094e;hp=341f60fb3d8c4a49716f3a6c388fdccb27e58961;hpb=92246b3e7e2d914a0549bbc7f90dd07ff3fd103a;p=nageru diff --git a/vumeter.h b/vumeter.h index 341f60f..7a94200 100644 --- a/vumeter.h +++ b/vumeter.h @@ -2,13 +2,17 @@ #define VUMETER_H #include -#include -#include +#include +#include #include #include #include "vu_common.h" +class QObject; +class QPaintEvent; +class QResizeEvent; + class VUMeter : public QWidget { Q_OBJECT @@ -17,8 +21,24 @@ public: VUMeter(QWidget *parent); void set_level(float level_lufs) { + set_level(level_lufs, level_lufs); + } + + void set_level(float level_lufs_left, float level_lufs_right) { + std::unique_lock lock(level_mutex); + this->level_lufs[0] = level_lufs_left; + this->level_lufs[1] = level_lufs_right; + QMetaObject::invokeMethod(this, "update", Qt::AutoConnection); + } + + void set_peak(float peak_lufs) { + set_peak(peak_lufs, peak_lufs); + } + + void set_peak(float peak_lufs_left, float peak_lufs_right) { std::unique_lock lock(level_mutex); - this->level_lufs = level_lufs; + this->peak_lufs[0] = peak_lufs_left; + this->peak_lufs[1] = peak_lufs_right; QMetaObject::invokeMethod(this, "update", Qt::AutoConnection); } @@ -50,10 +70,11 @@ private: void recalculate_pixmaps(); std::mutex level_mutex; - float level_lufs = -HUGE_VAL; + float level_lufs[2] { -HUGE_VALF, -HUGE_VALF }; + float peak_lufs[2] { -HUGE_VALF, -HUGE_VALF }; float min_level = -18.0f, max_level = 9.0f, ref_level_lufs = -23.0f; - QPixmap on_pixmap, off_pixmap; + QPixmap full_on_pixmap, on_pixmap, off_pixmap; }; #endif