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