1 // Copyright 2005 "Gilles Degottex" 2 3 // This file is part of "Music" 4 5 // "Music" is free software; you can redistribute it and/or modify 6 // it under the terms of the GNU Lesser General Public License as published by 7 // the Free Software Foundation; either version 2.1 of the License, or 8 // (at your option) any later version. 9 // 10 // "Music" is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU Lesser General Public License for more details. 14 // 15 // You should have received a copy of the GNU Lesser General Public License 16 // along with this program; if not, write to the Free Software 17 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 19 20 #ifndef _GLGraph_h_ 21 #define _GLGraph_h_ 22 23 #include <deque> 24 using namespace std; 25 #include <QOpenGLWidget> 26 #include <qaction.h> 27 #include <qspinbox.h> 28 class QTimer; 29 #include <Music/Music.h> 30 #include "View.h" 31 32 class GLGraph : public QOpenGLWidget, public View 33 { 34 Q_OBJECT 35 36 QFont m_font; 37 38 protected: mouseReleaseEvent(QMouseEvent * e)39 virtual void mouseReleaseEvent(QMouseEvent* e){View::mouseReleaseEvent(e);} 40 41 deque<double> m_pending_queue; 42 deque<double> m_queue; 43 int m_skip; 44 deque< pair<double,double> > m_maxs; 45 double m_queue_amplitude; 46 bool m_new_values; 47 48 virtual void base_paint(float graph_gray=0.0); 49 50 void update_maxs(); 51 52 public: 53 GLGraph(QWidget* parent); ~GLGraph()54 ~GLGraph(){} 55 void addValue(double v); 56 void clearValues(); 57 void refreshGraph(); getLength()58 int getLength() const {return (setting_spinDuration->value()*Music::GetSamplingRate())/1000;} 59 60 double m_treshold; 61 62 // settings 63 QAction* setting_showWaveForm; 64 QAction* setting_autoScale; 65 QSpinBox* setting_spinScaleFactor; 66 QSpinBox* setting_spinDuration; 67 QSpinBox* setting_spinMaxHeight; 68 virtual void save(); 69 virtual void load(); 70 virtual void clearSettings(); 71 72 public slots: 73 void initializeGL(); 74 void paintGL(); 75 void resizeGL( int w, int h ); 76 }; 77 78 #endif // _GLGraph_h_ 79