warp-pipe/gui/AudioLevelMeter.h
2026-01-30 10:40:52 -07:00

28 lines
579 B
C++

#pragma once
#include <QWidget>
class AudioLevelMeter : public QWidget {
Q_OBJECT
public:
explicit AudioLevelMeter(QWidget *parent = nullptr);
void setLevel(float level);
float level() const;
float peakHold() const;
void resetPeakHold();
QSize sizeHint() const override;
QSize minimumSizeHint() const override;
protected:
void paintEvent(QPaintEvent *event) override;
private:
float m_level = 0.0f;
float m_peakHold = 0.0f;
int m_peakHoldFrames = 0;
static constexpr int kPeakHoldDuration = 6;
static constexpr float kPeakDecayRate = 0.02f;
};