obs-studio/obs/volume-control.hpp
fryshorts 43552478fc obs: Remove update time from volume meter
Remove the update time check from the volume meter since it is no longer
nescessary. The update interval can now be set with the volmeter which has
the added benefit of not loosing data where previously updates had been
skipped.
2014-12-14 18:39:54 +01:00

57 lines
1.2 KiB
C++

#pragma once
#include <obs.hpp>
#include <QWidget>
class VolumeMeter : public QWidget
{
Q_OBJECT
private:
float mag, peak, peakHold;
QColor bkColor, magColor, peakColor, peakHoldColor;
QTimer *resetTimer;
public:
explicit VolumeMeter(QWidget *parent = 0);
void setLevels(float nmag, float npeak, float npeakHold);
protected:
void paintEvent(QPaintEvent *event);
private slots:
void resetState();
};
class QLabel;
class QSlider;
class VolControl : public QWidget {
Q_OBJECT
private:
OBSSource source;
QLabel *nameLabel;
QLabel *volLabel;
VolumeMeter *volMeter;
QSlider *slider;
float levelTotal;
float levelCount;
obs_fader_t *obs_fader;
obs_volmeter_t *obs_volmeter;
static void OBSVolumeChanged(void *param, calldata_t *calldata);
static void OBSVolumeLevel(void *data, calldata_t *calldata);
private slots:
void VolumeChanged();
void VolumeLevel(float mag, float peak, float peakHold);
void SliderChanged(int vol);
public:
VolControl(OBSSource source);
~VolControl();
inline obs_source_t *GetSource() const {return source;}
QString GetName() const;
void SetName(const QString &newName);
};