ddt  1.0.0
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_low;
103  QLineEdit *line_edit_low;
104  QLabel *label_high;
105  QLineEdit *line_edit_high;
106  QPushButton *push_button_auto;
107  QLabel *label_x;
108  InactiveLineEdit *line_edit_x;
109  QLabel *label_value;
110  InactiveLineEdit *line_edit_value;
111  QLabel *label_smooth;
112  QComboBox *combo_box_interpolation;
113 
114  QDialogButtonBox *push_buttons_box;
115  QPushButton *push_button_cancel;
116 
117  QString current_interpolation;
118 
119  double range_min;
120  double range_max;
121  double value_min;
122  double value_max;
123  double chart_min;
124  double chart_max;
125  double intensity_low;
126  double intensity_high;
127  bool auto_mode;
128  QList<QVariant> spectrum_vals;
129 
130  QLabel *label_chart;
131  QLabel *label_xaxis;
132  QLabel *label_yaxis;
133  QLabel *label_fill;
134 
135  std::unique_ptr<QPainterPath> line_path;
136  std::unique_ptr<QGraphicsPathItem> line_path_item;
137 
138  QList<QPointF> point_list;
139 
140  void CreateLayouts();
141  void CreateWidgets();
142  void CreateLineEditWidgets(const QFont font);
143  void CreateLabelWidgets(const QFont font);
144  void CreateButtonWidgets();
145  void ClearEditWidgets();
146  void CreateChart();
147  void CreateComboBox();
148 
149  void SetRangeValues(const QList<QVariant> range_values);
150  void SetSpectrum(const QList<QVariant> spectrum_values);
151 
152  void ShowSpectrum();
153  void DrawScaleX(const double min_value, const double max_value,
154  QPainter &painter) const;
155  void DrawScaleY(const double min_value, const double max_value,
156  double *chart_min_value, double *chart_max_value,
157  QPainter &painter) const;
158  double CalculateTickPositionLinear(const double tick, const double min_value,
159  const double width,
160  const double maxsize) const;
161  void SetXAxis(const int tickstep_ratio);
162  void SetYAxis(const int tickstep_ratio);
163 
164  void FindRangeMinMax();
165  void FindValueMinMax();
166 
170  void FillPointList(const double xfactor, const double yfactor,
171  const int height);
172 
176  void AddIntermediatePoints(const double xfactor, const double yfactor,
177  const int height);
181  void AddStepPoints(const double xfactor, const double yfactor,
182  const int height);
186  void AddQuadraticPoints(const double xfactor, const double yfactor,
187  const int height);
192  void AddNaturalPoints(const double xfactor, const double yfactor,
193  const int height);
194 
195  public slots:
199  virtual void CurrentIndexChanged(const QString &text);
200 
204  virtual void AutoPressed();
205 
210  virtual void QuitPressed() override;
211 
215  void UpdateIntensityValues();
216 
217  private slots:
221  void ChartPoint(const double chart_x, const double chart_y);
222 
223  signals:
227  void ParameterChanged(const QString dialog_id, const QString param_id,
228  const QVariant parameter);
229 };
230 
231 #endif // DDT_DATAVISUALISATION_DDTDIALOGS_REFERENCELINE_HPP
232 
Definition: ddtDialog.hpp:27
Definition: ddtReferenceLineDialog.hpp:41
DdtReferenceLineDialog(QWidget *parent=nullptr)
Definition: ddtReferenceLineDialog.cpp:32
QString GetDialogName() override
Definition: ddtReferenceLineDialog.cpp:38
void closeEvent(QCloseEvent *event) override
Definition: ddtReferenceLineDialog.cpp:812
void changeEvent(QEvent *event) override
Definition: ddtReferenceLineDialog.cpp:798
void SetChangedParameter(const QString param_id, const QVariant parameter) override
Definition: ddtReferenceLineDialog.cpp:840
virtual void AutoPressed()
Definition: ddtReferenceLineDialog.cpp:866
void focusInEvent(QFocusEvent *event) override
Definition: ddtReferenceLineDialog.cpp:806
virtual void QuitPressed() override
Definition: ddtReferenceLineDialog.cpp:874
bool eventFilter(QObject *obj, QEvent *event) override
Definition: ddtReferenceLineDialog.cpp:743
virtual ~DdtReferenceLineDialog()=default
void SetInitialParameter(const QString parameter_id, const QVariant parameter) override
Definition: ddtReferenceLineDialog.cpp:819
virtual void CreateDialog() override
Definition: ddtReferenceLineDialog.cpp:42
virtual void CurrentIndexChanged(const QString &text)
Definition: ddtReferenceLineDialog.cpp:881
void ParameterChanged(const QString dialog_id, const QString param_id, const QVariant parameter)
virtual void RetranslateUi()
Definition: ddtReferenceLineDialog.cpp:765
void UpdateIntensityValues()
Definition: ddtReferenceLineDialog.cpp:887
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.