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