1 // Copyright 2004 "Gilles Degottex" 2 3 // This file is part of "fmit" 4 5 // "fmit" is free software; you can redistribute it and/or modify 6 // it under the terms of the GNU General Public License as published by 7 // the Free Software Foundation; either version 2 of the License, or 8 // (at your option) any later version. 9 // 10 // "fmit" 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 General Public License for more details. 14 // 15 // You should have received a copy of the GNU 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 _GLFT_h_ 21 #define _GLFT_h_ 22 23 #include <vector> 24 using namespace std; 25 #include <Music/CFFTW3.h> 26 // using namespace Music; 27 #include <QOpenGLWidget> 28 #include <qspinbox.h> 29 #include <qaction.h> 30 #include "View.h" 31 32 class GLFT : public QOpenGLWidget, public View 33 { 34 Q_OBJECT 35 36 QFont m_font; 37 mouseReleaseEvent(QMouseEvent * e)38 virtual void mouseReleaseEvent(QMouseEvent* e){View::mouseReleaseEvent(e);} 39 virtual void mousePressEvent(QMouseEvent* e); 40 virtual void mouseDoubleClickEvent(QMouseEvent* e); 41 virtual void mouseMoveEvent(QMouseEvent* e); 42 43 vector<double> win; 44 CFFTW3 m_plan; 45 vector<double> m_components; 46 double m_components_max; 47 48 bool m_start_move_mouse; 49 int m_press_x, m_press_y; 50 double m_press_minf, m_press_maxf; 51 52 double m_minf, m_maxf; // [Hz] 53 double m_minA, m_maxA; // [dB or amplitude depending on ] 54 void resetaxis(); 55 QString m_text; 56 57 public: 58 GLFT(QWidget* parent); ~GLFT()59 ~GLFT(){} 60 61 deque<double> buff; 62 63 void refreshGraph(); 64 65 double m_os; 66 void setSamplingRate(int sr); 67 68 // settings 69 QAction* setting_db_scale; 70 QSpinBox* setting_winlen; 71 72 public slots: 73 void spinWinLengthChanged(int num); 74 void dBScaleChanged(bool db); 75 void initializeGL(); 76 void paintGL(); 77 void resizeGL( int w, int h ); 78 }; 79 80 #endif // _GLFT_h_ 81 82