1 #pragma once
2 
3 #include "waveform/widgets/glwaveformwidgetabstract.h"
4 
5 class GLSLWaveformRendererSignal;
6 
7 class GLSLWaveformWidget : public GLWaveformWidgetAbstract {
8     Q_OBJECT
9   public:
10     GLSLWaveformWidget(
11             const QString& group,
12             QWidget* parent,
13             bool rgbRenderer);
14     ~GLSLWaveformWidget() override = default;
15 
16     void resize(int width, int height) override;
17 
18   protected:
19     void castToQWidget() override;
20     void paintEvent(QPaintEvent* event) override;
21     void mouseDoubleClickEvent(QMouseEvent *) override;
22     mixxx::Duration render() override;
23 
24   private:
25     GLSLWaveformRendererSignal* m_signalRenderer;
26 
27     friend class WaveformWidgetFactory;
28 };
29 
30 class GLSLFilteredWaveformWidget : public GLSLWaveformWidget {
31     Q_OBJECT
32   public:
33     GLSLFilteredWaveformWidget(const QString& group, QWidget* parent);
34     ~GLSLFilteredWaveformWidget() override = default;
35 
getType()36     WaveformWidgetType::Type getType() const override { return WaveformWidgetType::GLSLFilteredWaveform; }
37 
getWaveformWidgetName()38     static inline QString getWaveformWidgetName() { return tr("Filtered"); }
useOpenGl()39     static inline bool useOpenGl() { return true; }
useOpenGles()40     static inline bool useOpenGles() { return false; }
useOpenGLShaders()41     static inline bool useOpenGLShaders() { return true; }
developerOnly()42     static inline bool developerOnly() { return false; }
43 };
44 
45 class GLSLRGBWaveformWidget : public GLSLWaveformWidget {
46     Q_OBJECT
47   public:
48     GLSLRGBWaveformWidget(const QString& group, QWidget* parent);
49     ~GLSLRGBWaveformWidget() override = default;
50 
getType()51     WaveformWidgetType::Type getType() const override { return WaveformWidgetType::GLSLRGBWaveform; }
52 
getWaveformWidgetName()53     static inline QString getWaveformWidgetName() { return tr("RGB"); }
useOpenGl()54     static inline bool useOpenGl() { return true; }
useOpenGles()55     static inline bool useOpenGles() { return false; }
useOpenGLShaders()56     static inline bool useOpenGLShaders() { return true; }
developerOnly()57     static inline bool developerOnly() { return false; }
58 };
59