GNU Radio Manual and C++ API Reference  3.9.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  * SPDX-License-Identifier: GPL-3.0-or-later
8  *
9  */
10 
11 #ifndef FREQUENCY_DISPLAY_PLOT_HPP
12 #define FREQUENCY_DISPLAY_PLOT_HPP
13 
15 #include <cstdint>
16 #include <cstdio>
17 #include <vector>
18 
19 /*!
20  * \brief QWidget for displaying frequency domain (PSD) plots.
21  * \ingroup qtgui_blk
22  */
24 {
25  Q_OBJECT
26 
27  Q_PROPERTY(QColor min_fft_color READ getMinFFTColor WRITE setMinFFTColor)
28  Q_PROPERTY(QColor max_fft_color READ getMaxFFTColor WRITE setMaxFFTColor)
39  Q_PROPERTY(QColor marker_peak_amplitude_color READ getMarkerPeakAmplitudeColor WRITE
41  Q_PROPERTY(
44  Q_PROPERTY(
47  Q_PROPERTY(QColor marker_CF_color READ getMarkerCFColor WRITE setMarkerCFColor)
48 
49 public:
50  FrequencyDisplayPlot(int nplots, QWidget*);
51  ~FrequencyDisplayPlot() override;
52 
53  void setFrequencyRange(const double,
54  const double,
55  const double units = 1000.0,
56  const std::string& strunits = "kHz");
57  double getStartFrequency() const;
58  double getStopFrequency() const;
59 
60  void plotNewData(const std::vector<double*> dataPoints,
61  const int64_t numDataPoints,
62  const double noiseFloorAmplitude,
63  const double peakFrequency,
64  const double peakAmplitude,
65  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,
71  const double peakFrequency,
72  const double peakAmplitude,
73  const double timeInterval);
74 
75  void replot() override;
76 
77  void setYaxis(double min, double max) override;
78  double getYMin() const;
79  double getYMax() const;
80 
81  void setTraceColour(QColor);
82  void setBGColour(QColor c);
83  void showCFMarker(const bool);
84 
85  const bool getMaxFFTVisible() const;
86  const bool getMinFFTVisible() const;
87  const QColor getMinFFTColor() const;
88  const QColor getMaxFFTColor() const;
89  const QColor getMarkerLowerIntensityColor() const;
90  const bool getMarkerLowerIntensityVisible() const;
91  const QColor getMarkerUpperIntensityColor() const;
92  const bool getMarkerUpperIntensityVisible() const;
93  const QColor getMarkerPeakAmplitudeColor() const;
94  const bool getMarkerNoiseFloorAmplitudeVisible() const;
95  const QColor getMarkerNoiseFloorAmplitudeColor() const;
96  const QColor getMarkerCFColor() const;
97 
98 public slots:
99  void setMaxFFTVisible(const bool);
100  void setMinFFTVisible(const bool);
101  void setMinFFTColor(QColor c);
102  void setMaxFFTColor(QColor c);
103  void setMarkerLowerIntensityColor(QColor c);
104  void setMarkerLowerIntensityVisible(bool visible);
105  void setMarkerUpperIntensityColor(QColor c);
106  void setMarkerUpperIntensityVisible(bool visible);
107  void setMarkerPeakAmplitudeColor(QColor c);
108  void setMarkerNoiseFloorAmplitudeVisible(bool visible);
109  void setMarkerNoiseFloorAmplitudeColor(QColor c);
110  void setMarkerCFColor(QColor c);
111 
112  void setLowerIntensityLevel(const double);
113  void setUpperIntensityLevel(const double);
114 
115  void onPickerPointSelected(const QwtDoublePoint& p);
116  void onPickerPointSelected6(const QPointF& p);
117 
118  void setAutoScale(bool state);
119  void setAutoScaleShot();
120 
121  void setPlotPosHalf(bool half);
122 
123  void setYLabel(const std::string& label, const std::string& unit);
124 
125  void clearMaxData();
126  void clearMinData();
127 
128  void attachTriggerLine(bool en);
129  void setTriggerLine(double value);
130 
131 private:
132  void _resetXAxisPoints();
133  void _autoScale(double bottom, double top);
134 
135  std::vector<double*> d_ydata;
136 
137  QwtPlotCurve* d_min_fft_plot_curve;
138  QwtPlotCurve* d_max_fft_plot_curve;
139  QColor d_min_fft_color;
140  bool d_min_fft_visible;
141  QColor d_max_fft_color;
142  bool d_max_fft_visible;
143  QColor d_marker_lower_intensity_color;
144  bool d_marker_lower_intensity_visible;
145  QColor d_marker_upper_intensity_color;
146  bool d_marker_upper_intensity_visible;
147  QColor d_marker_peak_amplitude_color;
148  QColor d_marker_noise_floor_amplitude_color;
149  bool d_marker_noise_floor_amplitude_visible;
150  QColor d_marker_cf_color;
151 
152  double d_start_frequency;
153  double d_stop_frequency;
154  double d_center_frequency;
155  double d_ymax;
156  double d_ymin;
157  bool d_half_freq;
158 
159  QwtPlotMarker* d_lower_intensity_marker;
160  QwtPlotMarker* d_upper_intensity_marker;
161 
162  QwtPlotMarker* d_marker_peak_amplitude;
163  QwtPlotMarker* d_marker_noise_floor_amplitude;
164  QwtPlotMarker* d_marker_cf;
165 
166  double* d_xdata;
167  int d_xdata_multiplier;
168 
169  double* d_min_fft_data;
170  double* d_max_fft_data;
171 
172  double d_peak_frequency;
173  double d_peak_amplitude;
174 
175  double d_noise_floor_amplitude;
176 
177  bool d_autoscale_shot;
178 
179  QwtPlotMarker* d_trigger_line;
180 };
181 
182 #endif /* FREQUENCY_DISPLAY_PLOT_HPP */
FrequencyDisplayPlot::setMarkerNoiseFloorAmplitudeColor
void setMarkerNoiseFloorAmplitudeColor(QColor c)
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:32
FrequencyDisplayPlot::setLowerIntensityLevel
void setLowerIntensityLevel(const double)
DisplayPlot.h
FrequencyDisplayPlot::max_fft_visible
bool max_fft_visible
Definition: FrequencyDisplayPlot.h:30
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:23
FrequencyDisplayPlot::min_fft_color
QColor min_fft_color
Definition: FrequencyDisplayPlot.h:27
FrequencyDisplayPlot::setMinFFTColor
void setMinFFTColor(QColor c)
FrequencyDisplayPlot::marker_upper_intensity_color
QColor marker_upper_intensity_color
Definition: FrequencyDisplayPlot.h:36
FrequencyDisplayPlot::marker_CF_color
QColor marker_CF_color
Definition: FrequencyDisplayPlot.h:47
FrequencyDisplayPlot::setMarkerCFColor
void setMarkerCFColor(QColor c)
FrequencyDisplayPlot::replot
void replot() override
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:29
FrequencyDisplayPlot::marker_peak_amplitude_color
QColor marker_peak_amplitude_color
Definition: FrequencyDisplayPlot.h:40
DisplayPlot
QWidget base plot to build QTGUI plotting tools.
Definition: DisplayPlot.h:49
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:28
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::setYaxis
void setYaxis(double min, double max) override
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:38
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:43
FrequencyDisplayPlot::marker_lower_intensity_visible
bool marker_lower_intensity_visible
Definition: FrequencyDisplayPlot.h:34
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:46
FrequencyDisplayPlot::setAutoScaleShot
void setAutoScaleShot()
FrequencyDisplayPlot::setMaxFFTColor
void setMaxFFTColor(QColor c)
FrequencyDisplayPlot::attachTriggerLine
void attachTriggerLine(bool en)