GNU Radio Manual and C++ API Reference  v3.9.2.0-89-gb7c7001e
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)
29  Q_PROPERTY(bool min_fft_visible READ getMinFFTVisible WRITE setMinFFTVisible)
30  Q_PROPERTY(bool max_fft_visible READ getMaxFFTVisible WRITE setMaxFFTVisible)
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*);
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;
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);
104  void setMarkerLowerIntensityVisible(bool visible);
106  void setMarkerUpperIntensityVisible(bool visible);
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);
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 */
QWidget base plot to build QTGUI plotting tools.
Definition: DisplayPlot.h:50
QWidget for displaying frequency domain (PSD) plots.
Definition: FrequencyDisplayPlot.h:24
double getYMax() const
void setMarkerLowerIntensityColor(QColor c)
void onPickerPointSelected6(const QPointF &p)
void showCFMarker(const bool)
~FrequencyDisplayPlot() override
QColor min_fft_color
Definition: FrequencyDisplayPlot.h:27
void setMarkerNoiseFloorAmplitudeVisible(bool visible)
void setMarkerCFColor(QColor c)
void setMinFFTColor(QColor c)
void setYLabel(const std::string &label, const std::string &unit)
QColor max_fft_color
Definition: FrequencyDisplayPlot.h:28
void setMarkerUpperIntensityColor(QColor c)
QColor marker_lower_intensity_color
Definition: FrequencyDisplayPlot.h:32
void setPlotPosHalf(bool half)
void setMarkerPeakAmplitudeColor(QColor c)
FrequencyDisplayPlot(int nplots, QWidget *)
void setMarkerNoiseFloorAmplitudeColor(QColor c)
void setMaxFFTVisible(const bool)
void setTriggerLine(double value)
const QColor getMaxFFTColor() const
QColor marker_CF_color
Definition: FrequencyDisplayPlot.h:47
double getStartFrequency() const
bool marker_lower_intensity_visible
Definition: FrequencyDisplayPlot.h:34
const bool getMarkerLowerIntensityVisible() const
const QColor getMarkerLowerIntensityColor() const
void setAutoScale(bool state)
void plotNewData(const double *dataPoints, const int64_t numDataPoints, const double noiseFloorAmplitude, const double peakFrequency, const double peakAmplitude, const double timeInterval)
void attachTriggerLine(bool en)
const bool getMarkerUpperIntensityVisible() const
const QColor getMarkerCFColor() const
bool marker_noise_floor_amplitude_visible
Definition: FrequencyDisplayPlot.h:46
QColor marker_peak_amplitude_color
Definition: FrequencyDisplayPlot.h:40
const QColor getMinFFTColor() const
void setMaxFFTColor(QColor c)
void setFrequencyRange(const double, const double, const double units=1000.0, const std::string &strunits="kHz")
void setBGColour(QColor c)
void setLowerIntensityLevel(const double)
const QColor getMarkerNoiseFloorAmplitudeColor() const
void setUpperIntensityLevel(const double)
void setTraceColour(QColor)
double getYMin() const
void setYaxis(double min, double max) override
void replot() override
void onPickerPointSelected(const QwtDoublePoint &p)
QColor marker_upper_intensity_color
Definition: FrequencyDisplayPlot.h:36
const QColor getMarkerUpperIntensityColor() const
void setMarkerLowerIntensityVisible(bool visible)
double getStopFrequency() const
const bool getMarkerNoiseFloorAmplitudeVisible() const
bool min_fft_visible
Definition: FrequencyDisplayPlot.h:29
void plotNewData(const std::vector< double * > dataPoints, const int64_t numDataPoints, const double noiseFloorAmplitude, const double peakFrequency, const double peakAmplitude, const double timeInterval)
void setMinFFTVisible(const bool)
const bool getMaxFFTVisible() const
const QColor getMarkerPeakAmplitudeColor() const
QColor marker_noise_floor_amplitude_color
Definition: FrequencyDisplayPlot.h:43
void setMarkerUpperIntensityVisible(bool visible)
bool max_fft_visible
Definition: FrequencyDisplayPlot.h:30
const bool getMinFFTVisible() const
bool marker_upper_intensity_visible
Definition: FrequencyDisplayPlot.h:38
float min(float a, float b)