Merging qtgui branch-r9068:9837: this ads a qtgui_sink_c and qtgui_sink_f that displa...
[debian/gnuradio] / gr-qtgui / src / lib / FrequencyDisplayPlot.h
1 #ifndef FREQUENCY_DISPLAY_PLOT_HPP
2 #define FREQUENCY_DISPLAY_PLOT_HPP
3
4 #include <qwt_plot.h>
5 #include <qwt_painter.h>
6 #include <qwt_plot_canvas.h>
7 #include <qwt_plot_curve.h>
8 #include <qwt_scale_engine.h>
9 #include <qwt_scale_widget.h>
10 #include <qwt_plot_zoomer.h>
11 #include <qwt_plot_panner.h>
12 #include <qwt_plot_marker.h>
13 #include <highResTimeFunctions.h>
14 #include <qwt_symbol.h>
15
16 class FrequencyDisplayPlot:public QwtPlot{
17   Q_OBJECT
18
19 public:
20   FrequencyDisplayPlot(QWidget*);
21   virtual ~FrequencyDisplayPlot();
22
23   void SetFrequencyRange(const double, const double, const double, const bool);
24   double GetStartFrequency()const;
25   double GetStopFrequency()const;
26
27   void PlotNewData(const double* dataPoints, const int64_t numDataPoints, const double noiseFloorAmplitude, const double peakFrequency, const double peakAmplitude);
28   
29   void ClearMaxData();
30   void ClearMinData();
31   
32   void SetMaxFFTVisible(const bool);
33   void SetMinFFTVisible(const bool);
34                                    
35   virtual void replot();
36
37 public slots:
38   void SetLowerIntensityLevel(const double);
39   void SetUpperIntensityLevel(const double);
40
41 protected:
42
43 private:
44   void _resetXAxisPoints();
45   
46   double _startFrequency;
47   double _stopFrequency;
48
49   QwtPlotCurve* _fft_plot_curve;
50   QwtPlotCurve* _min_fft_plot_curve;
51   QwtPlotCurve* _max_fft_plot_curve;
52
53   QwtPlotMarker* _lower_intensity_marker;
54   QwtPlotMarker* _upper_intensity_marker;
55
56   QwtPlotPanner* _panner;
57   QwtPlotZoomer* _zoomer;
58
59   QwtPlotMarker *_markerPeakAmplitude;
60   QwtPlotMarker *_markerNoiseFloorAmplitude;
61   
62   double* _dataPoints;
63   double* _xAxisPoints;
64
65   double* _minFFTPoints;
66   double* _maxFFTPoints;
67   int64_t _numPoints;
68
69   double _peakFrequency;
70   double _peakAmplitude;
71
72   double _noiseFloorAmplitude;
73
74   timespec _lastReplot;
75
76   bool _useCenterFrequencyFlag;
77
78   double _displayIntervalTime;
79 };
80
81 #endif /* FREQUENCY_DISPLAY_PLOT_HPP */