srsLTE/graphics/lib/common/Spectrogramplot.h

80 lines
2.2 KiB
C++

/**
* \file lib/generic/graphics/qt/common/Spectrogramplot.h
* \version 1.0
*
* \section COPYRIGHT
*
* Copyright 2012-2013 The Iris Project Developers. See the
* COPYRIGHT file at the top-level directory of this distribution
* and at http://www.softwareradiosystems.com/iris/copyright.html.
*
* \section LICENSE
*
* This file is part of the Iris Project.
*
* Iris is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* Iris is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* A copy of the GNU Lesser General Public License can be found in
* the LICENSE file in the top-level directory of this distribution
* and at http://www.gnu.org/licenses/.
*
* \section DESCRIPTION
*
* A spectrogram plot which acts as a waterfall. New data is plotted
* at the top row of the spectrogram and all old data is shifted
* downwards.
*/
#ifndef SPECTROGRAMPLOT_H
#define SPECTROGRAMPLOT_H
#include <qwt_plot.h>
#include <qwt_scale_engine.h>
#include <qwt_scale_widget.h>
#include <qwt_plot_zoomer.h>
#include <qwt_plot_panner.h>
#include <qwt_plot_magnifier.h>
#include <qwt_plot_spectrogram.h>
#include "WaterfallData.h"
class Spectrogramplot
:public QwtPlot
{
Q_OBJECT
public:
Spectrogramplot(int numDataPoints, int numRows, QWidget * = NULL);
void appendData(double* data, int n);
void setXAxisRange(double xMin, double xMax);
void setYAxisRange(double yMin, double yMax);
void setZAxisScale(double zMin, double zMax);
double min();
double max();
void autoscale();
private:
QwtPlotZoomer* zoomer_;
QwtPlotPanner *panner_;
QwtPlotMagnifier *magnifier_;
QwtPlotSpectrogram *spectrogram_;
WaterfallData* data_;
int nData_;
int nRows_;
double xMin_;
double xMax_;
double yMin_;
double yMax_;
double zMin_;
double zMax_;
};
#endif // SPECTROGRAMPLOT_H