RTP Audio System  2.0.0
qspectrumanalyzer.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines