1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #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;
- bool signalChanged;
- uint64_t lastMeterTime;
- float levelTotal;
- float levelCount;
- static void OBSVolumeChanged(void *param, calldata_t *calldata);
- static void OBSVolumeLevel(void *data, calldata_t *calldata);
- private slots:
- void VolumeChanged(int vol);
- 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);
- };
|