GNU Radio Manual and C++ API Reference  3.10.3.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<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 = -1;
153  double d_stop_frequency = 1;
154  double d_center_frequency;
155  double d_ymax = 10;
156  double d_ymin = -120;
157  bool d_half_freq = false;
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  std::vector<double> d_xdata;
167  int d_xdata_multiplier;
168 
169  std::vector<double> d_min_fft_data;
170  std::vector<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 = false;
178 
179  QwtPlotMarker* d_trigger_line;
180 };
181 
182 #endif /* FREQUENCY_DISPLAY_PLOT_HPP */
void setAutoScale(bool state)
void setMarkerLowerIntensityVisible(bool visible)
double getYMax() const
bool min_fft_visible
Definition: FrequencyDisplayPlot.h:29
const QColor getMinFFTColor() 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)
const bool getMaxFFTVisible() const
QWidget base plot to build QTGUI plotting tools.
Definition: DisplayPlot.h:52
float min(float a, float b)
void setYaxis(double min, double max) override
double getStopFrequency() const
void plotNewData(const std::vector< double *> dataPoints, const int64_t numDataPoints, const double noiseFloorAmplitude, const double peakFrequency, const double peakAmplitude, const double timeInterval)
void setUpperIntensityLevel(const double)
void setTriggerLine(double value)
STL namespace.
void setMaxFFTColor(QColor c)
void attachTriggerLine(bool en)
double getStartFrequency() const
const QColor getMarkerLowerIntensityColor() const
double getYMin() const
void setMarkerPeakAmplitudeColor(QColor c)
void setPlotPosHalf(bool half)
QColor min_fft_color
Definition: FrequencyDisplayPlot.h:27
bool marker_lower_intensity_visible
Definition: FrequencyDisplayPlot.h:34
QColor marker_CF_color
Definition: FrequencyDisplayPlot.h:47
QColor marker_noise_floor_amplitude_color
Definition: FrequencyDisplayPlot.h:43
void showCFMarker(const bool)
void setLowerIntensityLevel(const double)
const QColor getMarkerNoiseFloorAmplitudeColor() const
const QColor getMarkerUpperIntensityColor() const
void onPickerPointSelected(const QwtDoublePoint &p)
bool max_fft_visible
Definition: FrequencyDisplayPlot.h:30
bool marker_upper_intensity_visible
Definition: FrequencyDisplayPlot.h:38
QWidget for displaying frequency domain (PSD) plots.
Definition: FrequencyDisplayPlot.h:23
const bool getMarkerUpperIntensityVisible() const
void setMarkerNoiseFloorAmplitudeVisible(bool visible)
void setYLabel(const std::string &label, const std::string &unit)
void setMarkerUpperIntensityColor(QColor c)
void setMinFFTVisible(const bool)
void setTraceColour(QColor)
QColor marker_upper_intensity_color
Definition: FrequencyDisplayPlot.h:36
const QColor getMarkerPeakAmplitudeColor() const
const bool getMinFFTVisible() const
void setMarkerNoiseFloorAmplitudeColor(QColor c)
const QColor getMaxFFTColor() const
void setBGColour(QColor c)
const bool getMarkerLowerIntensityVisible() const
QColor max_fft_color
Definition: FrequencyDisplayPlot.h:28
void setMinFFTColor(QColor c)
void setMarkerLowerIntensityColor(QColor c)
const bool getMarkerNoiseFloorAmplitudeVisible() const
bool marker_noise_floor_amplitude_visible
Definition: FrequencyDisplayPlot.h:46
void setMaxFFTVisible(const bool)
void setMarkerUpperIntensityVisible(bool visible)
const QColor getMarkerCFColor() const
QColor marker_peak_amplitude_color
Definition: FrequencyDisplayPlot.h:40
void replot() override
QColor marker_lower_intensity_color
Definition: FrequencyDisplayPlot.h:32