ddt 1.2.1
Loading...
Searching...
No Matches
ddtReferenceLineDialog.hpp
Go to the documentation of this file.
1
21#ifndef DDT_DATAVISUALISATION_DDTDIALOGS_REFERENCELINE_HPP
22#define DDT_DATAVISUALISATION_DDTDIALOGS_REFERENCELINE_HPP
23
24#include <QGraphicsPathItem>
25#include <QGraphicsRectItem>
26#include <QtWidgets>
27#pragma GCC diagnostic push
28#pragma GCC diagnostic ignored "-Wpedantic"
29#include <boost/math/interpolators/cardinal_cubic_b_spline.hpp>
30/* ignore this boost internal warning from the file above */
31#pragma GCC diagnostic pop
32#include <boost/math/special_functions/trunc.hpp>
33
37
42 Q_OBJECT
43
44 public:
49 explicit DdtReferenceLineDialog(QWidget *parent = nullptr);
50
54 virtual ~DdtReferenceLineDialog() = default;
55
62 void SetInitialParameter(const QString parameter_id,
63 const QVariant parameter) override;
64
70 void SetChangedParameter(const QString param_id,
71 const QVariant parameter) override;
72
79 bool eventFilter(QObject *obj, QEvent *event) override;
80
85 QString GetDialogName() override;
86
87 protected:
88 virtual void CreateDialog() override;
89 virtual void RetranslateUi();
90
91 void changeEvent(QEvent *event) override;
92 void focusInEvent(QFocusEvent *event) override;
93 void closeEvent(QCloseEvent *event) override;
94
95 private:
96 static const int DIALOG_WIDTH = 850;
97 static const int DIALOG_HEIGHT = 600;
98
99 static const int CHART_SIZE_X = 500;
100 static const int CHART_SIZE_Y = 300;
101 static const int AXIS_X_HEIGHT = 30;
102 static const int AXIS_Y_WIDTH = 100;
103
104 static const int LINE_EDIT_VALUE_WIDTH = 120;
105 static const int LINE_EDIT_VALUE_HEIGHT = 10;
106
107 QVBoxLayout* vertical_layout = nullptr;
108 QHBoxLayout* horizontal_layout_up = nullptr;
109 QHBoxLayout* horizontal_layout_down = nullptr;
110 QGridLayout* chart_layout = nullptr;
111 QLabel* label_low = nullptr;
112 QLineEdit* line_edit_low = nullptr;
113 QLabel* label_high = nullptr;
114 QLineEdit* line_edit_high = nullptr;
115 QPushButton* push_button_auto = nullptr;
116 QLabel* label_x = nullptr;
117 InactiveLineEdit* line_edit_x = nullptr;
118 QLabel* label_value = nullptr;
119 InactiveLineEdit* line_edit_value = nullptr;
120 QLabel* label_smooth = nullptr;
121 QComboBox* combo_box_interpolation = nullptr;
122 QLabel* label_scaling = nullptr;
123 QComboBox* checkbox_scaling_value = nullptr;
124 QDialogButtonBox* push_buttons_box = nullptr;
125 QPushButton* push_button_cancel = nullptr;
126 QLabel* label_chart = nullptr;
127 QLabel* label_xaxis = nullptr;
128 QLabel* label_yaxis = nullptr;
129 QLabel* label_fill = nullptr;
130 QPushButton* push_button_help = nullptr;
131
132 QList<QVariant> spectrum_values;
133
134 double current_range_min = 0.0;
135 double original_range_min = 0.0;
136
137 double current_range_max = 0.0;
138 double original_range_max = 0.0;
139
140 double current_value_min = 0.0;
141 double original_value_min = 0.0;
142
143 double current_value_max = 0.0;
144 double original_value_max = 0.0;
145
146 double chart_min = 0.0;
147 double chart_max = 0.0;
148
149 double intensity_low = 0.0;
150 double intensity_high = 0.0;
151
152 bool auto_mode = true;
153
154 double scaling_factor = 1.0;
155
156 QString current_interpolation;
157
158 QPointF mouse_start_pos;
159 QPointF mouse_delta_pos;
160 int x_axis_scalelines = 0;
161 int y_axis_scalelines = 0;
162 int x_axis_tickstep = 0;
163 int y_axis_tickstep = 0;
164 QPoint chart_movement;
165
166 std::unique_ptr<QPainterPath> line_path;
167 std::unique_ptr<QGraphicsPathItem> line_path_item;
168
169 QList<QPointF> point_list;
170
171 private:
172 void ClearEditWidgets();
173
174 void SetRangeValues(const QList<QVariant> range_values);
175 void SetSpectrum(const QList<QVariant> spectrum_values);
176
177 void ShowSpectrum();
178 void DrawScaleX(const double min_value, const double max_value,
179 QPainter &painter);
180 void DrawScaleY(const double min_value, const double max_value,
181 double *chart_min_value, double *chart_max_value,
182 QPainter &painter);
183 double CalculateTickPositionLinear(const double tick, const double min_value,
184 const double width,
185 const double maxsize) const;
186 void FindRangeMinMax();
187 void FindValueMinMax();
188
189 void FillPointList(const double xfactor, const double yfactor, const int height);
190 void AddIntermediatePoints(const double xfactor, const double yfactor, const int height);
191 void AddStepPoints(const double xfactor, const double yfactor, const int height);
192 void AddQuadraticPoints(const double xfactor, const double yfactor, const int height);
193 void AddNaturalPoints(const double xfactor, const double yfactor, const int height);
194
195 public slots:
199 void InterpolationChanged(const QString &text);
200
204 void AutoPressed();
205
210 void QuitPressed() override;
211
216
217 private slots:
218 void DisplayXYValuesUnderCursor(const double chart_x, const double chart_y);
219 void ScaleChanged(const QString &text);
220 void ShowHelp();
221
222 signals:
226 void ParameterChanged(const QString dialog_id, const QString param_id,
227 const QVariant parameter);
228};
229
230#endif // DDT_DATAVISUALISATION_DDTDIALOGS_REFERENCELINE_HPP
231
Definition ddtDialog.hpp:27
Definition ddtReferenceLineDialog.hpp:41
DdtReferenceLineDialog(QWidget *parent=nullptr)
Definition ddtReferenceLineDialog.cpp:36
QString GetDialogName() override
Definition ddtReferenceLineDialog.cpp:41
void closeEvent(QCloseEvent *event) override
Definition ddtReferenceLineDialog.cpp:839
void changeEvent(QEvent *event) override
Definition ddtReferenceLineDialog.cpp:825
void SetChangedParameter(const QString param_id, const QVariant parameter) override
Definition ddtReferenceLineDialog.cpp:867
void AutoPressed()
Definition ddtReferenceLineDialog.cpp:902
void focusInEvent(QFocusEvent *event) override
Definition ddtReferenceLineDialog.cpp:833
void QuitPressed() override
Definition ddtReferenceLineDialog.cpp:910
bool eventFilter(QObject *obj, QEvent *event) override
Definition ddtReferenceLineDialog.cpp:742
virtual ~DdtReferenceLineDialog()=default
void SetInitialParameter(const QString parameter_id, const QVariant parameter) override
Definition ddtReferenceLineDialog.cpp:846
virtual void CreateDialog() override
Definition ddtReferenceLineDialog.cpp:45
void ParameterChanged(const QString dialog_id, const QString param_id, const QVariant parameter)
virtual void RetranslateUi()
Definition ddtReferenceLineDialog.cpp:230
void UpdateIntensityValues()
Definition ddtReferenceLineDialog.cpp:936
void InterpolationChanged(const QString &text)
Definition ddtReferenceLineDialog.cpp:917
Definition ddtDatavisualisationUtils.hpp:27
DDT Utils. Helper classes for DDT Datavisualisation. Utilities for the DDT Datavisualisation.
DDT Dialog IDs. ID values for all used dialogs. IDs for the used dialogs.
DDT Dialogs. Base class for the DDT dialogs. Base class for the DDT dialogs.