GNU Radio Manual and C++ API Reference  3.10.9.2
The Free & Open Software Radio Ecosystem
VectorDisplayPlot.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2014 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 VECTOR_DISPLAY_PLOT_HPP
12 #define VECTOR_DISPLAY_PLOT_HPP
13 
15 #include <cstdint>
16 #include <cstdio>
17 #include <vector>
18 
19 /*!
20  * \brief QWidget for displaying 1D-vector plots.
21  * \ingroup qtgui_blk
22  */
24 {
25  Q_OBJECT
26 
27  Q_PROPERTY(QColor min_vec_color READ getMinVecColor WRITE setMinVecColor)
28  Q_PROPERTY(QColor max_vec_color READ getMaxVecColor WRITE setMaxVecColor)
39  Q_PROPERTY(QColor marker_ref_level_color READ getMarkerRefLevelAmplitudeColor WRITE
43 
44 public:
45  VectorDisplayPlot(int nplots, QWidget*);
46  ~VectorDisplayPlot() override;
47 
48  // Disable move/copy because of raw QT pointers.
49  VectorDisplayPlot(const VectorDisplayPlot&) = delete;
51  VectorDisplayPlot& operator=(const VectorDisplayPlot&) = delete;
52  VectorDisplayPlot& operator=(VectorDisplayPlot&&) = delete;
53 
54  void setXAxisValues(const double start, const double step = 1.0);
55 
56  void plotNewData(const std::vector<double*> dataPoints,
57  const int64_t numDataPoints,
58  const double refLevel,
59  const double timeInterval);
60 
61  void clearMaxData();
62  void clearMinData();
63 
64  void replot() override;
65 
66  void setYaxis(double min, double max) override;
67  double getYMin() const;
68  double getYMax() const;
69 
70  void setXAxisLabel(const QString& label);
71  void setYAxisLabel(const QString& label);
72 
73  void setXAxisUnit(const QString& unit);
74  void setYAxisUnit(const QString& unit);
75 
76  void setTraceColour(QColor);
77  void setBGColour(QColor c);
78 
79  const bool getMaxVecVisible() const;
80  const bool getMinVecVisible() const;
81  const QColor getMinVecColor() const;
82  const QColor getMaxVecColor() const;
83  const QColor getMarkerLowerIntensityColor() const;
84  const bool getMarkerLowerIntensityVisible() const;
85  const QColor getMarkerUpperIntensityColor() const;
86  const bool getMarkerUpperIntensityVisible() const;
87  const bool getMarkerRefLevelAmplitudeVisible() const;
88  const QColor getMarkerRefLevelAmplitudeColor() const;
89 
90 public slots:
91  void setMaxVecVisible(const bool);
92  void setMinVecVisible(const bool);
93  void setMinVecColor(QColor c);
94  void setMaxVecColor(QColor c);
95  void setMarkerLowerIntensityColor(QColor c);
96  void setMarkerLowerIntensityVisible(bool visible);
97  void setMarkerUpperIntensityColor(QColor c);
98  void setMarkerUpperIntensityVisible(bool visible);
99  void setMarkerRefLevelAmplitudeVisible(bool visible);
100  void setMarkerRefLevelAmplitudeColor(QColor c);
101 
102  void setLowerIntensityLevel(const double);
103  void setUpperIntensityLevel(const double);
104 
105  void onPickerPointSelected(const QPointF& p);
106 
107  void setAutoScale(bool state);
108 
109 private:
110  void _resetXAxisPoints();
111  void _autoScale(double bottom, double top);
112 
113  std::vector<std::vector<double>> d_ydata;
114 
115  QwtPlotCurve* d_min_vec_plot_curve;
116  QwtPlotCurve* d_max_vec_plot_curve;
117  QColor d_min_vec_color;
118  bool d_min_vec_visible;
119  QColor d_max_vec_color;
120  bool d_max_vec_visible;
121  QColor d_marker_lower_intensity_color;
122  bool d_marker_lower_intensity_visible;
123  QColor d_marker_upper_intensity_color;
124  bool d_marker_upper_intensity_visible;
125  QColor d_marker_ref_level_color;
126  bool d_marker_ref_level_visible;
127 
128  double d_x_axis_start = 0;
129  double d_x_axis_step = 1.0;
130 
131  double d_ymax = 10;
132  double d_ymin = -10;
133 
134  QwtPlotMarker* d_lower_intensity_marker;
135  QwtPlotMarker* d_upper_intensity_marker;
136 
137  QwtPlotMarker* d_marker_ref_level;
138 
139  std::vector<double> d_xdata;
140 
141  QString d_x_axis_label;
142  QString d_y_axis_label;
143 
144  std::vector<double> d_min_vec_data;
145  std::vector<double> d_max_vec_data;
146 
147  double d_ref_level;
148 };
149 
150 #endif /* VECTOR_DISPLAY_PLOT_HPP */
QWidget for displaying 1D-vector plots.
Definition: VectorDisplayPlot.h:23
void setMinVecVisible(const bool)
bool marker_upper_intensity_visible
Definition: VectorDisplayPlot.h:38
void setMinVecColor(QColor c)
void setMarkerUpperIntensityVisible(bool visible)
void replot() override
void setLowerIntensityLevel(const double)
QWidget base plot to build QTGUI plotting tools.
Definition: DisplayPlot.h:41
void setMarkerUpperIntensityColor(QColor c)
QColor min_vec_color
Definition: VectorDisplayPlot.h:27
float min(float a, float b)
void setYAxisLabel(const QString &label)
QColor marker_lower_intensity_color
Definition: VectorDisplayPlot.h:32
const QColor getMarkerLowerIntensityColor() const
const bool getMaxVecVisible() const
void setUpperIntensityLevel(const double)
void setMarkerRefLevelAmplitudeVisible(bool visible)
bool marker_ref_level_visible
Definition: VectorDisplayPlot.h:42
void setMarkerRefLevelAmplitudeColor(QColor c)
STL namespace.
void setYaxis(double min, double max) override
bool min_vec_visible
Definition: VectorDisplayPlot.h:29
const bool getMarkerLowerIntensityVisible() const
const QColor getMarkerRefLevelAmplitudeColor() const
void setXAxisUnit(const QString &unit)
const QColor getMinVecColor() const
QColor marker_upper_intensity_color
Definition: VectorDisplayPlot.h:36
QColor max_vec_color
Definition: VectorDisplayPlot.h:28
double getYMax() const
const bool getMinVecVisible() const
QColor marker_ref_level_color
Definition: VectorDisplayPlot.h:40
void setMarkerLowerIntensityVisible(bool visible)
void setAutoScale(bool state)
double getYMin() const
void setYAxisUnit(const QString &unit)
const bool getMarkerRefLevelAmplitudeVisible() const
void setBGColour(QColor c)
void setXAxisLabel(const QString &label)
void setMaxVecColor(QColor c)
const QColor getMarkerUpperIntensityColor() const
bool max_vec_visible
Definition: VectorDisplayPlot.h:30
void setMarkerLowerIntensityColor(QColor c)
const bool getMarkerUpperIntensityVisible() const
bool marker_lower_intensity_visible
Definition: VectorDisplayPlot.h:34
void plotNewData(const std::vector< double *> dataPoints, const int64_t numDataPoints, const double refLevel, const double timeInterval)
void setMaxVecVisible(const bool)
const QColor getMaxVecColor() const
void setTraceColour(QColor)
void onPickerPointSelected(const QPointF &p)
void setXAxisValues(const double start, const double step=1.0)