GNU Radio 3.7.2.1 C++ API
FrequencyDisplayPlot.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2008-2011 Free Software Foundation, Inc.
4  *
5  * This file is part of GNU Radio
6  *
7  * GNU Radio is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3, or (at your option)
10  * any later version.
11  *
12  * GNU Radio is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with GNU Radio; see the file COPYING. If not, write to
19  * the Free Software Foundation, Inc., 51 Franklin Street,
20  * Boston, MA 02110-1301, USA.
21  */
22 
23 #ifndef FREQUENCY_DISPLAY_PLOT_HPP
24 #define FREQUENCY_DISPLAY_PLOT_HPP
25 
26 #include <stdint.h>
27 #include <cstdio>
28 #include <vector>
30 
31 /*!
32  * \brief QWidget for displaying frequency domain (PSD) plots.
33  * \ingroup qtgui_blk
34  */
36 {
37  Q_OBJECT
38 
39  Q_PROPERTY ( QColor min_fft_color READ getMinFFTColor WRITE setMinFFTColor )
40  Q_PROPERTY ( QColor max_fft_color READ getMaxFFTColor WRITE setMaxFFTColor )
41  Q_PROPERTY ( bool min_fft_visible READ getMinFFTVisible WRITE setMinFFTVisible )
42  Q_PROPERTY ( bool max_fft_visible READ getMaxFFTVisible WRITE setMaxFFTVisible )
43  Q_PROPERTY ( QColor marker_lower_intensity_color READ getMarkerLowerIntensityColor WRITE setMarkerLowerIntensityColor )
44  Q_PROPERTY ( bool marker_lower_intensity_visible READ getMarkerLowerIntensityVisible WRITE setMarkerLowerIntensityVisible )
45  Q_PROPERTY ( QColor marker_upper_intensity_color READ getMarkerUpperIntensityColor WRITE setMarkerUpperIntensityColor )
46  Q_PROPERTY ( bool marker_upper_intensity_visible READ getMarkerUpperIntensityVisible WRITE setMarkerUpperIntensityVisible )
47  Q_PROPERTY ( QColor marker_peak_amplitude_color READ getMarkerPeakAmplitudeColor WRITE setMarkerPeakAmplitudeColor )
48  Q_PROPERTY ( QColor marker_noise_floor_amplitude_color READ getMarkerNoiseFloorAmplitudeColor WRITE setMarkerNoiseFloorAmplitudeColor )
49  Q_PROPERTY ( bool marker_noise_floor_amplitude_visible READ getMarkerNoiseFloorAmplitudeVisible WRITE setMarkerNoiseFloorAmplitudeVisible )
50  Q_PROPERTY ( QColor marker_CF_color READ getMarkerCFColor WRITE setMarkerCFColor )
51 
52 public:
53  FrequencyDisplayPlot(int nplots, QWidget*);
54  virtual ~FrequencyDisplayPlot();
55 
56  void setFrequencyRange(const double, const double,
57  const double units=1000.0,
58  const std::string &strunits = "kHz");
59  double getStartFrequency()const;
60  double getStopFrequency()const;
61 
62  void plotNewData(const std::vector<double*> dataPoints,
63  const int64_t numDataPoints,
64  const double noiseFloorAmplitude, const double peakFrequency,
65  const double peakAmplitude, const double timeInterval);
66 
67  // Old method to be removed
68  void plotNewData(const double* dataPoints,
69  const int64_t numDataPoints,
70  const double noiseFloorAmplitude, const double peakFrequency,
71  const double peakAmplitude, const double timeInterval);
72 
73  void clearMaxData();
74  void clearMinData();
75 
76  void replot();
77 
78  void setYaxis(double min, double max);
79 
80  void setTraceColour (QColor);
81  void setBGColour (QColor c);
82  void showCFMarker (const bool);
83 
84  const bool getMaxFFTVisible() const;
85  const bool getMinFFTVisible() const;
86  const QColor getMinFFTColor() const;
87  const QColor getMaxFFTColor() const;
88  const QColor getMarkerLowerIntensityColor () const;
89  const bool getMarkerLowerIntensityVisible () const;
90  const QColor getMarkerUpperIntensityColor () const;
91  const bool getMarkerUpperIntensityVisible () const;
92  const QColor getMarkerPeakAmplitudeColor () const;
93  const bool getMarkerNoiseFloorAmplitudeVisible () const;
94  const QColor getMarkerNoiseFloorAmplitudeColor () const;
95  const QColor getMarkerCFColor () const;
96 
97 public slots:
98  void setMaxFFTVisible(const bool);
99  void setMinFFTVisible(const bool);
100  void setMinFFTColor (QColor c);
101  void setMaxFFTColor (QColor c);
102  void setMarkerLowerIntensityColor (QColor c);
103  void setMarkerLowerIntensityVisible (bool visible);
104  void setMarkerUpperIntensityColor (QColor c);
105  void setMarkerUpperIntensityVisible (bool visible);
106  void setMarkerPeakAmplitudeColor (QColor c);
107  void setMarkerNoiseFloorAmplitudeVisible (bool visible);
108  void setMarkerNoiseFloorAmplitudeColor (QColor c);
109  void setMarkerCFColor (QColor c);
110 
111  void setLowerIntensityLevel(const double);
112  void setUpperIntensityLevel(const double);
113 
114  void onPickerPointSelected(const QwtDoublePoint & p);
115  void onPickerPointSelected6(const QPointF & p);
116 
117  void setAutoScale(bool state);
118 
119 private:
120  void _resetXAxisPoints();
121  void _autoScale(double bottom, double top);
122 
123  std::vector<double*> d_ydata;
124 
125  QwtPlotCurve* d_min_fft_plot_curve;
126  QwtPlotCurve* d_max_fft_plot_curve;
127  QColor d_min_fft_color;
128  bool d_min_fft_visible;
129  QColor d_max_fft_color;
130  bool d_max_fft_visible;
131  QColor d_marker_lower_intensity_color;
132  bool d_marker_lower_intensity_visible;
133  QColor d_marker_upper_intensity_color;
134  bool d_marker_upper_intensity_visible;
135  QColor d_marker_peak_amplitude_color;
136  QColor d_marker_noise_floor_amplitude_color;
137  bool d_marker_noise_floor_amplitude_visible;
138  QColor d_marker_cf_color;
139 
140  double d_start_frequency;
141  double d_stop_frequency;
142  double d_ymax;
143  double d_ymin;
144 
145  QwtPlotMarker* d_lower_intensity_marker;
146  QwtPlotMarker* d_upper_intensity_marker;
147 
148  QwtPlotMarker *d_marker_peak_amplitude;
149  QwtPlotMarker *d_marker_noise_floor_amplitude;
150  QwtPlotMarker *d_marker_cf;
151 
152  double* d_xdata;
153  int d_xdata_multiplier;
154 
155  double* d_min_fft_data;
156  double* d_max_fft_data;
157 
158  double d_peak_frequency;
159  double d_peak_amplitude;
160 
161  double d_noise_floor_amplitude;
162 };
163 
164 #endif /* FREQUENCY_DISPLAY_PLOT_HPP */
const bool getMarkerNoiseFloorAmplitudeVisible() const
void setAutoScale(bool state)
void setMarkerLowerIntensityVisible(bool visible)
const bool getMarkerLowerIntensityVisible() const
const bool getMaxFFTVisible() const
const QColor getMaxFFTColor() const
void onPickerPointSelected6(const QPointF &p)
void setFrequencyRange(const double, const double, const double units=1000.0, const std::string &strunits="kHz")
void setMarkerCFColor(QColor c)
QWidget base plot to build QTGUI plotting tools.
Definition: DisplayPlot.h:53
float min(float a, float b)
void setUpperIntensityLevel(const double)
void plotNewData(const std::vector< double * > dataPoints, const int64_t numDataPoints, const double noiseFloorAmplitude, const double peakFrequency, const double peakAmplitude, const double timeInterval)
double getStartFrequency() const
void setMaxFFTColor(QColor c)
void setMarkerPeakAmplitudeColor(QColor c)
const bool getMinFFTVisible() const
const QColor getMarkerNoiseFloorAmplitudeColor() const
void showCFMarker(const bool)
void setLowerIntensityLevel(const double)
void onPickerPointSelected(const QwtDoublePoint &p)
const bool getMarkerUpperIntensityVisible() const
void setYaxis(double min, double max)
QWidget for displaying frequency domain (PSD) plots.
Definition: FrequencyDisplayPlot.h:35
const QColor getMarkerLowerIntensityColor() const
const QColor getMarkerPeakAmplitudeColor() const
void setMarkerNoiseFloorAmplitudeVisible(bool visible)
double getStopFrequency() const
const QColor getMarkerUpperIntensityColor() const
void setMarkerUpperIntensityColor(QColor c)
void setMinFFTVisible(const bool)
FrequencyDisplayPlot(int nplots, QWidget *)
void setTraceColour(QColor)
void setMarkerNoiseFloorAmplitudeColor(QColor c)
const QColor getMinFFTColor() const
void setBGColour(QColor c)
signed __int64 int64_t
Definition: stdint.h:89
void setMinFFTColor(QColor c)
void setMarkerLowerIntensityColor(QColor c)
const QColor getMarkerCFColor() const
void setMaxFFTVisible(const bool)
void setMarkerUpperIntensityVisible(bool visible)
virtual ~FrequencyDisplayPlot()