GNU Radio Manual and C++ API Reference  3.8.1.0
The Free & Open Software Radio Ecosystem
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 
27 #include <stdint.h>
28 #include <cstdio>
29 #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)
51  Q_PROPERTY(QColor marker_peak_amplitude_color READ getMarkerPeakAmplitudeColor WRITE
53  Q_PROPERTY(
56  Q_PROPERTY(
59  Q_PROPERTY(QColor marker_CF_color READ getMarkerCFColor WRITE setMarkerCFColor)
60 
61 public:
62  FrequencyDisplayPlot(int nplots, QWidget*);
63  virtual ~FrequencyDisplayPlot();
64 
65  void setFrequencyRange(const double,
66  const double,
67  const double units = 1000.0,
68  const std::string& strunits = "kHz");
69  double getStartFrequency() const;
70  double getStopFrequency() const;
71 
72  void plotNewData(const std::vector<double*> dataPoints,
73  const int64_t numDataPoints,
74  const double noiseFloorAmplitude,
75  const double peakFrequency,
76  const double peakAmplitude,
77  const double timeInterval);
78 
79  // Old method to be removed
80  void plotNewData(const double* dataPoints,
81  const int64_t numDataPoints,
82  const double noiseFloorAmplitude,
83  const double peakFrequency,
84  const double peakAmplitude,
85  const double timeInterval);
86 
87  void replot();
88 
89  void setYaxis(double min, double max);
90  double getYMin() const;
91  double getYMax() const;
92 
93  void setTraceColour(QColor);
94  void setBGColour(QColor c);
95  void showCFMarker(const bool);
96 
97  const bool getMaxFFTVisible() const;
98  const bool getMinFFTVisible() const;
99  const QColor getMinFFTColor() const;
100  const QColor getMaxFFTColor() const;
101  const QColor getMarkerLowerIntensityColor() const;
102  const bool getMarkerLowerIntensityVisible() const;
103  const QColor getMarkerUpperIntensityColor() const;
104  const bool getMarkerUpperIntensityVisible() const;
105  const QColor getMarkerPeakAmplitudeColor() const;
106  const bool getMarkerNoiseFloorAmplitudeVisible() const;
107  const QColor getMarkerNoiseFloorAmplitudeColor() const;
108  const QColor getMarkerCFColor() const;
109 
110 public slots:
111  void setMaxFFTVisible(const bool);
112  void setMinFFTVisible(const bool);
113  void setMinFFTColor(QColor c);
114  void setMaxFFTColor(QColor c);
115  void setMarkerLowerIntensityColor(QColor c);
116  void setMarkerLowerIntensityVisible(bool visible);
117  void setMarkerUpperIntensityColor(QColor c);
118  void setMarkerUpperIntensityVisible(bool visible);
119  void setMarkerPeakAmplitudeColor(QColor c);
120  void setMarkerNoiseFloorAmplitudeVisible(bool visible);
121  void setMarkerNoiseFloorAmplitudeColor(QColor c);
122  void setMarkerCFColor(QColor c);
123 
124  void setLowerIntensityLevel(const double);
125  void setUpperIntensityLevel(const double);
126 
127  void onPickerPointSelected(const QwtDoublePoint& p);
128  void onPickerPointSelected6(const QPointF& p);
129 
130  void setAutoScale(bool state);
131  void setAutoScaleShot();
132 
133  void setPlotPosHalf(bool half);
134 
135  void setYLabel(const std::string& label, const std::string& unit);
136 
137  void clearMaxData();
138  void clearMinData();
139 
140  void attachTriggerLine(bool en);
141  void setTriggerLine(double value);
142 
143 private:
144  void _resetXAxisPoints();
145  void _autoScale(double bottom, double top);
146 
147  std::vector<double*> d_ydata;
148 
149  QwtPlotCurve* d_min_fft_plot_curve;
150  QwtPlotCurve* d_max_fft_plot_curve;
151  QColor d_min_fft_color;
152  bool d_min_fft_visible;
153  QColor d_max_fft_color;
154  bool d_max_fft_visible;
155  QColor d_marker_lower_intensity_color;
156  bool d_marker_lower_intensity_visible;
157  QColor d_marker_upper_intensity_color;
158  bool d_marker_upper_intensity_visible;
159  QColor d_marker_peak_amplitude_color;
160  QColor d_marker_noise_floor_amplitude_color;
161  bool d_marker_noise_floor_amplitude_visible;
162  QColor d_marker_cf_color;
163 
164  double d_start_frequency;
165  double d_stop_frequency;
166  double d_center_frequency;
167  double d_ymax;
168  double d_ymin;
169  bool d_half_freq;
170 
171  QwtPlotMarker* d_lower_intensity_marker;
172  QwtPlotMarker* d_upper_intensity_marker;
173 
174  QwtPlotMarker* d_marker_peak_amplitude;
175  QwtPlotMarker* d_marker_noise_floor_amplitude;
176  QwtPlotMarker* d_marker_cf;
177 
178  double* d_xdata;
179  int d_xdata_multiplier;
180 
181  double* d_min_fft_data;
182  double* d_max_fft_data;
183 
184  double d_peak_frequency;
185  double d_peak_amplitude;
186 
187  double d_noise_floor_amplitude;
188 
189  bool d_autoscale_shot;
190 
191  QwtPlotMarker* d_trigger_line;
192 };
193 
194 #endif /* FREQUENCY_DISPLAY_PLOT_HPP */
FrequencyDisplayPlot::setMarkerNoiseFloorAmplitudeColor
void setMarkerNoiseFloorAmplitudeColor(QColor c)
FrequencyDisplayPlot::setYaxis
void setYaxis(double min, double max)
FrequencyDisplayPlot::setMarkerUpperIntensityVisible
void setMarkerUpperIntensityVisible(bool visible)
FrequencyDisplayPlot::getMarkerCFColor
const QColor getMarkerCFColor() const
FrequencyDisplayPlot::onPickerPointSelected
void onPickerPointSelected(const QwtDoublePoint &p)
FrequencyDisplayPlot::marker_lower_intensity_color
QColor marker_lower_intensity_color
Definition: FrequencyDisplayPlot.h:44
FrequencyDisplayPlot::setLowerIntensityLevel
void setLowerIntensityLevel(const double)
DisplayPlot.h
FrequencyDisplayPlot::max_fft_visible
bool max_fft_visible
Definition: FrequencyDisplayPlot.h:42
FrequencyDisplayPlot::getMarkerNoiseFloorAmplitudeColor
const QColor getMarkerNoiseFloorAmplitudeColor() const
FrequencyDisplayPlot::setTraceColour
void setTraceColour(QColor)
FrequencyDisplayPlot::getMarkerPeakAmplitudeColor
const QColor getMarkerPeakAmplitudeColor() const
FrequencyDisplayPlot::clearMaxData
void clearMaxData()
FrequencyDisplayPlot::getYMin
double getYMin() const
FrequencyDisplayPlot::getMarkerNoiseFloorAmplitudeVisible
const bool getMarkerNoiseFloorAmplitudeVisible() const
gr::trellis::min
float min(float a, float b)
FrequencyDisplayPlot::getStopFrequency
double getStopFrequency() const
FrequencyDisplayPlot
QWidget for displaying frequency domain (PSD) plots.
Definition: FrequencyDisplayPlot.h:35
FrequencyDisplayPlot::min_fft_color
QColor min_fft_color
Definition: FrequencyDisplayPlot.h:39
FrequencyDisplayPlot::setMinFFTColor
void setMinFFTColor(QColor c)
FrequencyDisplayPlot::marker_upper_intensity_color
QColor marker_upper_intensity_color
Definition: FrequencyDisplayPlot.h:48
FrequencyDisplayPlot::marker_CF_color
QColor marker_CF_color
Definition: FrequencyDisplayPlot.h:59
FrequencyDisplayPlot::setMarkerCFColor
void setMarkerCFColor(QColor c)
FrequencyDisplayPlot::getMarkerUpperIntensityColor
const QColor getMarkerUpperIntensityColor() const
FrequencyDisplayPlot::setMarkerPeakAmplitudeColor
void setMarkerPeakAmplitudeColor(QColor c)
FrequencyDisplayPlot::setMarkerLowerIntensityVisible
void setMarkerLowerIntensityVisible(bool visible)
FrequencyDisplayPlot::showCFMarker
void showCFMarker(const bool)
FrequencyDisplayPlot::setUpperIntensityLevel
void setUpperIntensityLevel(const double)
FrequencyDisplayPlot::setMinFFTVisible
void setMinFFTVisible(const bool)
FrequencyDisplayPlot::setMarkerUpperIntensityColor
void setMarkerUpperIntensityColor(QColor c)
FrequencyDisplayPlot::min_fft_visible
bool min_fft_visible
Definition: FrequencyDisplayPlot.h:41
FrequencyDisplayPlot::marker_peak_amplitude_color
QColor marker_peak_amplitude_color
Definition: FrequencyDisplayPlot.h:52
DisplayPlot
QWidget base plot to build QTGUI plotting tools.
Definition: DisplayPlot.h:61
FrequencyDisplayPlot::setAutoScale
void setAutoScale(bool state)
FrequencyDisplayPlot::plotNewData
void plotNewData(const std::vector< double * > dataPoints, const int64_t numDataPoints, const double noiseFloorAmplitude, const double peakFrequency, const double peakAmplitude, const double timeInterval)
FrequencyDisplayPlot::getYMax
double getYMax() const
FrequencyDisplayPlot::setBGColour
void setBGColour(QColor c)
FrequencyDisplayPlot::getMarkerLowerIntensityColor
const QColor getMarkerLowerIntensityColor() const
FrequencyDisplayPlot::max_fft_color
QColor max_fft_color
Definition: FrequencyDisplayPlot.h:40
FrequencyDisplayPlot::setMarkerLowerIntensityColor
void setMarkerLowerIntensityColor(QColor c)
FrequencyDisplayPlot::getMinFFTVisible
const bool getMinFFTVisible() const
FrequencyDisplayPlot::clearMinData
void clearMinData()
FrequencyDisplayPlot::setMaxFFTVisible
void setMaxFFTVisible(const bool)
FrequencyDisplayPlot::getMinFFTColor
const QColor getMinFFTColor() const
FrequencyDisplayPlot::onPickerPointSelected6
void onPickerPointSelected6(const QPointF &p)
FrequencyDisplayPlot::getStartFrequency
double getStartFrequency() const
FrequencyDisplayPlot::replot
void replot()
FrequencyDisplayPlot::getMaxFFTVisible
const bool getMaxFFTVisible() const
FrequencyDisplayPlot::setPlotPosHalf
void setPlotPosHalf(bool half)
FrequencyDisplayPlot::marker_upper_intensity_visible
bool marker_upper_intensity_visible
Definition: FrequencyDisplayPlot.h:50
FrequencyDisplayPlot::setTriggerLine
void setTriggerLine(double value)
FrequencyDisplayPlot::getMarkerLowerIntensityVisible
const bool getMarkerLowerIntensityVisible() const
FrequencyDisplayPlot::marker_noise_floor_amplitude_color
QColor marker_noise_floor_amplitude_color
Definition: FrequencyDisplayPlot.h:55
FrequencyDisplayPlot::marker_lower_intensity_visible
bool marker_lower_intensity_visible
Definition: FrequencyDisplayPlot.h:46
FrequencyDisplayPlot::getMarkerUpperIntensityVisible
const bool getMarkerUpperIntensityVisible() const
FrequencyDisplayPlot::setFrequencyRange
void setFrequencyRange(const double, const double, const double units=1000.0, const std::string &strunits="kHz")
FrequencyDisplayPlot::setMarkerNoiseFloorAmplitudeVisible
void setMarkerNoiseFloorAmplitudeVisible(bool visible)
FrequencyDisplayPlot::setYLabel
void setYLabel(const std::string &label, const std::string &unit)
FrequencyDisplayPlot::getMaxFFTColor
const QColor getMaxFFTColor() const
FrequencyDisplayPlot::marker_noise_floor_amplitude_visible
bool marker_noise_floor_amplitude_visible
Definition: FrequencyDisplayPlot.h:58
FrequencyDisplayPlot::setAutoScaleShot
void setAutoScaleShot()
FrequencyDisplayPlot::setMaxFFTColor
void setMaxFFTColor(QColor c)
FrequencyDisplayPlot::attachTriggerLine
void attachTriggerLine(bool en)