]> git.sesse.net Git - nageru/blob - nageru/peak_display.h
Make the delay analyzer understand that two sources can have different starting times.
[nageru] / nageru / peak_display.h
1 #ifndef PEAK_DISPLAY_H
2 #define PEAK_DISPLAY_H
3
4 #include <QWidget>
5 #include <chrono>
6 #include <mutex>
7
8 class AudioClip;
9
10 class PeakDisplay : public QWidget
11 {
12         Q_OBJECT
13
14 public:
15         PeakDisplay(QWidget *parent);
16
17         // Does not take ownership.
18         void set_audio_clip(AudioClip *audio_clip) {
19                 this->audio_clip = audio_clip;
20         }
21         void audio_clip_updated();
22
23         void set_base(std::chrono::steady_clock::time_point base)
24         {
25                 this->base = base;
26                 audio_clip_updated();
27         }
28
29         void reset_base()
30         {
31                 base = std::chrono::steady_clock::time_point();
32                 audio_clip_updated();
33         }
34
35 private:
36         void paintEvent(QPaintEvent *event) override;
37
38         AudioClip *audio_clip;
39         std::chrono::steady_clock::time_point base;  // Epoch if not set.
40 };
41
42 #endif