ddt 1.1.0
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:
91 virtual void CreateDialog() override;
92 virtual void RetranslateUi();
93
94 void changeEvent(QEvent *event) override;
95 void focusInEvent(QFocusEvent *event) override;
96 void closeEvent(QCloseEvent *event) override;
97
98 private:
99 QVBoxLayout *vertical_layout;
100 QHBoxLayout *horizontal_layout;
101 QGridLayout *chart_layout;
102 QLabel *label_note;
103 QLabel *label_low;
104 QLineEdit *line_edit_low;
105 QLabel *label_high;
106 QLineEdit *line_edit_high;
107 QPushButton *push_button_auto;
108 QLabel *label_x;
109 InactiveLineEdit *line_edit_x;
110 QLabel *label_value;
111 InactiveLineEdit *line_edit_value;
112 QLabel *label_smooth;
113 QComboBox *combo_box_interpolation;
114
115 QDialogButtonBox *push_buttons_box;
116 QPushButton *push_button_cancel;
117
118 QString current_interpolation;
119
120 double range_min;
121 double range_max;
122 double value_min;
123 double value_max;
124 double chart_min;
125 double chart_max;
126 double intensity_low;
127 double intensity_high;
128 bool auto_mode;
129 QList<QVariant> spectrum_vals;
130
131 QLabel *label_chart;
132 QLabel *label_xaxis;
133 QLabel *label_yaxis;
134 QLabel *label_fill;
135
136 std::unique_ptr<QPainterPath> line_path;
137 std::unique_ptr<QGraphicsPathItem> line_path_item;
138
139 QList<QPointF> point_list;
140
141 void CreateLayouts();
142 void CreateWidgets();
143 void CreateLineEditWidgets(const QFont font);
144 void CreateLabelWidgets(const QFont font);
145 void CreateButtonWidgets();
146 void ClearEditWidgets();
147 void CreateChart();
148 void CreateComboBox();
149
150 void SetRangeValues(const QList<QVariant> range_values);
151 void SetSpectrum(const QList<QVariant> spectrum_values);
152
153 void ShowSpectrum();
154 void DrawScaleX(const double min_value, const double max_value,
155 QPainter &painter) const;
156 void DrawScaleY(const double min_value, const double max_value,
157 double *chart_min_value, double *chart_max_value,
158 QPainter &painter) const;
159 double CalculateTickPositionLinear(const double tick, const double min_value,
160 const double width,
161 const double maxsize) const;
162 void SetXAxis(const int tickstep_ratio);
163 void SetYAxis(const int tickstep_ratio);
164
165 void FindRangeMinMax();
166 void FindValueMinMax();
167
171 void FillPointList(const double xfactor, const double yfactor,
172 const int height);
173
177 void AddIntermediatePoints(const double xfactor, const double yfactor,
178 const int height);
182 void AddStepPoints(const double xfactor, const double yfactor,
183 const int height);
187 void AddQuadraticPoints(const double xfactor, const double yfactor,
188 const int height);
193 void AddNaturalPoints(const double xfactor, const double yfactor,
194 const int height);
195
196 public slots:
200 virtual void CurrentIndexChanged(const QString &text);
201
205 virtual void AutoPressed();
206
211 virtual void QuitPressed() override;
212
217
218 private slots:
222 void ChartPoint(const double chart_x, const double chart_y);
223
224 signals:
228 void ParameterChanged(const QString dialog_id, const QString param_id,
229 const QVariant parameter);
230};
231
232#endif // DDT_DATAVISUALISATION_DDTDIALOGS_REFERENCELINE_HPP
233
Definition: ddtDialog.hpp:27
virtual void SetChangedParameter(const QString param_id, const QVariant parameter)
Definition: ddtDialog.cpp:74
Definition: ddtReferenceLineDialog.hpp:41
QString GetDialogName() override
Definition: ddtReferenceLineDialog.cpp:38
void closeEvent(QCloseEvent *event) override
Definition: ddtReferenceLineDialog.cpp:825
void changeEvent(QEvent *event) override
Definition: ddtReferenceLineDialog.cpp:811
virtual void AutoPressed()
Definition: ddtReferenceLineDialog.cpp:879
void focusInEvent(QFocusEvent *event) override
Definition: ddtReferenceLineDialog.cpp:819
virtual void QuitPressed() override
Definition: ddtReferenceLineDialog.cpp:887
bool eventFilter(QObject *obj, QEvent *event) override
Definition: ddtReferenceLineDialog.cpp:750
virtual ~DdtReferenceLineDialog()=default
void SetInitialParameter(const QString parameter_id, const QVariant parameter) override
Definition: ddtReferenceLineDialog.cpp:832
virtual void CreateDialog() override
Definition: ddtReferenceLineDialog.cpp:42
virtual void CurrentIndexChanged(const QString &text)
Definition: ddtReferenceLineDialog.cpp:894
void ParameterChanged(const QString dialog_id, const QString param_id, const QVariant parameter)
virtual void RetranslateUi()
Definition: ddtReferenceLineDialog.cpp:772
void UpdateIntensityValues()
Definition: ddtReferenceLineDialog.cpp:900
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.