RTP Audio System
2.0.0
|
00001 // ########################################################################## 00002 // #### #### 00003 // #### RTP Audio Server Project #### 00004 // #### ============================ #### 00005 // #### #### 00006 // #### QSpectrumAnalyzer #### 00007 // #### #### 00008 // #### Copyright (C) 1999-2012 by Thomas Dreibholz #### 00009 // #### #### 00010 // #### Contact: #### 00011 // #### EMail: dreibh@iem.uni-due.de #### 00012 // #### WWW: https://www.nntb.no/~dreibh/rtpaudio #### 00013 // #### #### 00014 // #### ---------------------------------------------------------------- #### 00015 // #### #### 00016 // #### This program is free software: you can redistribute it and/or #### 00017 // #### modify it under the terms of the GNU General Public License as #### 00018 // #### published by the Free Software Foundation, either version 3 of #### 00019 // #### the License, or (at your option) any later version. #### 00020 // #### #### 00021 // #### This program is distributed in the hope that it will be useful, #### 00022 // #### but WITHOUT ANY WARRANTY; without even the implied warranty of #### 00023 // #### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #### 00024 // #### GNU General Public License for more details. #### 00025 // #### #### 00026 // #### You should have received a copy of the GNU General Public #### 00027 // #### License along with this program. If not, see #### 00028 // #### <http://www.gnu.org/licenses/>. #### 00029 // #### #### 00030 // ########################################################################## 00031 // $Id: qspectrumanalyzer.h 1286 2011-12-18 13:43:16Z dreibh $ 00032 00033 00034 #ifndef QSPECTRUMANALYZER_H 00035 #define QSPECTRUMANALYZER_H 00036 00037 00038 #include "tdsystem.h" 00039 #include "spectrumanalyzer.h" 00040 00041 00042 #include <qapplication.h> 00043 #include <qlayout.h> 00044 #include <qpushbutton.h> 00045 #include <qbuttongroup.h> 00046 #include <qradiobutton.h> 00047 #include <qcheckbox.h> 00048 #include <qtimer.h> 00049 #include <qpainter.h> 00050 #include <qgroupbox.h> 00051 #include <qmainwindow.h> 00052 00053 00054 00058 const card16 QSpectrumAnalyzerTimings[] = { 00059 50,100,150,250,350,500,750 00060 }; 00061 00062 00070 class QSpectrumDisplay : public QWidget 00071 { 00072 // ====== Constructor/Destructor ========================================= 00073 Q_OBJECT 00074 public: 00083 QSpectrumDisplay(QWidget* parent, 00084 const cardinal* array, 00085 const cardinal bars, 00086 cardinal& max, 00087 const bool drawAverageLine = TRUE); 00088 00092 ~QSpectrumDisplay(); 00093 00094 00095 // ====== Qt slots ======================================================= 00096 public slots: 00100 void paintEvent(QPaintEvent*); 00101 00102 inline void setDrawAverageLine(const bool drawAverageLine) { 00103 DrawAverageLine = drawAverageLine; 00104 } 00105 00106 00107 // ====== Private data =================================================== 00108 private: 00109 void drawBar(QPainter* painter, 00110 const cardinal x, 00111 const cardinal y, 00112 const cardinal width, 00113 const cardinal height, 00114 const cardinal barValue); 00115 00116 static const cardinal BarColors = 12; // Number of colors per bar 00117 static const cardinal AverageSteps = 10; // Number of bars per average line 00118 00119 const cardinal* Array; 00120 cardinal Bars; 00121 cardinal& Max; 00122 bool DrawAverageLine; 00123 }; 00124 00125 00133 class QSpectrumAnalyzer : public QMainWindow 00134 { 00135 // ====== Constructor/Destructor ========================================= 00136 Q_OBJECT 00137 public: 00144 QSpectrumAnalyzer(SpectrumAnalyzer* analyzer, 00145 QWidget* parent = NULL); 00146 00150 ~QSpectrumAnalyzer(); 00151 00152 00153 // ====== Qt slots ======================================================= 00154 public slots: 00158 void timerEvent(); 00159 00163 void pause(bool on); 00164 00168 void reset(); 00169 00173 void closeWindow(); 00174 00178 void newInterval(int index); 00179 00183 void drawAverageLineToggled(int status); 00184 00185 00186 // ====== Qt signals ===================================================== 00187 signals: 00191 void closeSpectrumAnalyzer(); 00192 00193 00194 // ====== Private data =================================================== 00195 private: 00196 void closeEvent(QCloseEvent* event); 00197 00198 static const cardinal Bars = 70; // Number of bars 00199 cardinal ArrayL[Bars]; 00200 cardinal ArrayR[Bars]; 00201 00202 cardinal Max; 00203 QSpectrumDisplay* PaintWidget1; 00204 QSpectrumDisplay* PaintWidget2; 00205 QCheckBox* Average; 00206 QPushButton* Pause; 00207 QTimer* Timer; 00208 card16 Timing; 00209 SpectrumAnalyzer* Analyzer; 00210 }; 00211 00212 00213 #endif