GNU Radio Manual and C++ API Reference  3.7.4
The Free & Open Software Radio Ecosystem
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 )
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)
bool min_fft_visible
Definition: FrequencyDisplayPlot.h:41
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)
QColor min_fft_color
Definition: FrequencyDisplayPlot.h:39
bool marker_lower_intensity_visible
Definition: FrequencyDisplayPlot.h:44
QColor marker_CF_color
Definition: FrequencyDisplayPlot.h:50
const bool getMinFFTVisible() const
QColor marker_noise_floor_amplitude_color
Definition: FrequencyDisplayPlot.h:48
const QColor getMarkerNoiseFloorAmplitudeColor() const
void showCFMarker(const bool)
void setLowerIntensityLevel(const double)
void onPickerPointSelected(const QwtDoublePoint &p)
bool max_fft_visible
Definition: FrequencyDisplayPlot.h:42
bool marker_upper_intensity_visible
Definition: FrequencyDisplayPlot.h:46
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)
void setTraceColour(QColor)
QColor marker_upper_intensity_color
Definition: FrequencyDisplayPlot.h:45
void setMarkerNoiseFloorAmplitudeColor(QColor c)
const QColor getMinFFTColor() const
void setBGColour(QColor c)
signed __int64 int64_t
Definition: stdint.h:89
QColor max_fft_color
Definition: FrequencyDisplayPlot.h:40
void setMinFFTColor(QColor c)
void setMarkerLowerIntensityColor(QColor c)
const QColor getMarkerCFColor() const
bool marker_noise_floor_amplitude_visible
Definition: FrequencyDisplayPlot.h:49
void setMaxFFTVisible(const bool)
void setMarkerUpperIntensityVisible(bool visible)
QColor marker_peak_amplitude_color
Definition: FrequencyDisplayPlot.h:47
QColor marker_lower_intensity_color
Definition: FrequencyDisplayPlot.h:43