ddt  0.1
ddtReferenceLineDialog.hpp
Go to the documentation of this file.
1 // @copyright
2 // (c) Copyright ESO 2020
3 // All Rights Reserved
4 // ESO (eso.org) is an Intergovernmental Organization, and therefore special
5 // legal conditions apply.
6 //
7 // @file ddtReferenceLineDialog.hpp
8 // @brief DDT Dialogs. Class for the reference line dialog
9 // A dialog to allow the user draw a reference line across
10 // the image and display the pixel distribution.
11 //
12 // Class for the DDT Reference Line Dialog
13 //
14 // @author Carsten Mannel, CGI
15 // @since 2020/11/13
16 //
17 
18 #ifndef DDT_DATAVISUALISATION_DDTDIALOGS_REFERENCELINE_HPP
19 #define DDT_DATAVISUALISATION_DDTDIALOGS_REFERENCELINE_HPP
20 
21 #include <QGraphicsPathItem>
22 #include <QtWidgets>
23 
27 
32  Q_OBJECT
33 
34  public:
39  explicit DdtReferenceLineDialog(QWidget *parent = nullptr);
43  virtual ~DdtReferenceLineDialog() = default;
44 
51  void SetInitialParameter(const QString parameter_id,
52  const QVariant parameter) override;
53 
59  void SetChangedParameter(const QString param_id,
60  const QVariant parameter) override;
61 
68  bool eventFilter(QObject *obj, QEvent *event) override;
69 
70  protected:
74  virtual void CreateDialog();
75  virtual void RetranslateUi();
76 
77  void changeEvent(QEvent *event) override;
78  void focusInEvent(QFocusEvent *event) override;
79  void closeEvent(QCloseEvent *event) override;
80 
81  private:
82  QVBoxLayout *verticalLayout;
83  QHBoxLayout *horizontalLayout;
84  QGridLayout *chartLayout;
85  QLabel *label_low;
86  QLineEdit *lineEdit_low;
87  QLabel *label_high;
88  QLineEdit *lineEdit_high;
89  QPushButton *pushButton_auto;
90  QLabel *label_x;
91  InactiveLineEdit *lineEdit_x;
92  QLabel *label_value;
93  InactiveLineEdit *lineEdit_value;
94  QLabel *label_smooth;
95  QComboBox *comboBox_interpolation;
96  QPushButton *pushButton_quit;
97 
98  QString currentInterpolation;
99 
100  int range_min;
101  int range_max;
102  double value_min;
103  double value_max;
104  double chart_min;
105  double chart_max;
106  double intensity_low;
107  double intensity_high;
108  bool auto_mode;
109  QList<QVariant> spectrum_vals;
110 
111  QLabel *label_chart;
112  QLabel *label_xaxis;
113  QLabel *label_yaxis;
114  QLabel *label_fill;
115 
116  QPainterPath *line_path;
117  QGraphicsPathItem *line_path_item;
118  QList<QPointF> point_list;
119 
120  void CreateLayouts();
121  void CreateWidgets();
122  void CreateLineEditWidgets(const QFont font);
123  void CreateLabelWidgets(const QFont font);
124  void CreateButtonWidgets();
125  void ClearEditWidgets();
126  void CreateChart();
127  void CreateComboBox();
128 
129  void SetRangeValues(const QList<QVariant> range_values);
130  void SetSpectrum(const QList<QVariant> spectrum_values);
131 
132  void ShowSpectrum();
133  void DrawScaleX(const double min_value, const double max_value,
134  QPainter &painter) const;
135  void DrawScaleY(const double min_value, const double max_value,
136  double *chart_min_value, double *chart_max_value,
137  QPainter &painter) const;
138  double CalculateTickPositionLinear(const double tick, const double min_value,
139  const double width,
140  const double maxsize) const;
141  void SetXAxis(const int tickstep_ratio);
142  void SetYAxis(const int tickstep_ratio);
143 
144  void FindRangeMinMax();
145  void FindValueMinMax();
146 
150  void FillPointList(const double xfactor, const double yfactor,
151  const int height);
152 
156  void AddIntermediatePoints(const double xfactor, const double yfactor,
157  const int height);
161  void AddStepPoints(const double xfactor, const double yfactor,
162  const int height);
166  void AddQuadraticPoints(const double xfactor, const double yfactor,
167  const int height);
172  void AddNaturalPoints(const double xfactor, const double yfactor,
173  const int height);
174 
175  public slots:
179  virtual void CurrentIndexChanged(const QString &text);
180 
184  virtual void AutoPressed();
185 
190  virtual void QuitPressed();
191 
195  void UpdateIntensityValues();
196 
197  private slots:
198 
202  void ChartPoint(const double chart_x, const double chart_y);
203 
204  signals:
208  void ParameterChanged(const QString dialog_id, const QString param_id,
209  const QVariant parameter);
210 };
211 
212 #endif // DDT_DATAVISUALISATION_DDTDIALOGS_REFERENCELINE_HPP
DdtReferenceLineDialog::UpdateIntensityValues
void UpdateIntensityValues()
Definition: ddtReferenceLineDialog.cpp:800
InactiveLineEdit
Definition: ddtDatavisualisationUtils.hpp:24
DdtReferenceLineDialog::closeEvent
void closeEvent(QCloseEvent *event) override
Definition: ddtReferenceLineDialog.cpp:728
DdtReferenceLineDialog::QuitPressed
virtual void QuitPressed()
Definition: ddtReferenceLineDialog.cpp:786
ddtDatavisualisationUtils.hpp
DdtReferenceLineDialog::SetChangedParameter
void SetChangedParameter(const QString param_id, const QVariant parameter) override
Definition: ddtReferenceLineDialog.cpp:757
DdtReferenceLineDialog::focusInEvent
void focusInEvent(QFocusEvent *event) override
Definition: ddtReferenceLineDialog.cpp:722
DdtReferenceLineDialog::changeEvent
void changeEvent(QEvent *event) override
Definition: ddtReferenceLineDialog.cpp:714
ddtDialog.hpp
DdtReferenceLineDialog::RetranslateUi
virtual void RetranslateUi()
Definition: ddtReferenceLineDialog.cpp:682
DdtReferenceLineDialog::SetInitialParameter
void SetInitialParameter(const QString parameter_id, const QVariant parameter) override
Definition: ddtReferenceLineDialog.cpp:736
DdtReferenceLineDialog::DdtReferenceLineDialog
DdtReferenceLineDialog(QWidget *parent=nullptr)
Definition: ddtReferenceLineDialog.cpp:24
DdtReferenceLineDialog::eventFilter
bool eventFilter(QObject *obj, QEvent *event) override
Definition: ddtReferenceLineDialog.cpp:663
ddtDialogIds.hpp
DdtReferenceLineDialog::CreateDialog
virtual void CreateDialog()
Definition: ddtReferenceLineDialog.cpp:30
DdtReferenceLineDialog::AutoPressed
virtual void AutoPressed()
Definition: ddtReferenceLineDialog.cpp:778
DdtDialog
Definition: ddtDialog.hpp:24
DdtReferenceLineDialog::CurrentIndexChanged
virtual void CurrentIndexChanged(const QString &text)
Definition: ddtReferenceLineDialog.cpp:794
DdtReferenceLineDialog
Definition: ddtReferenceLineDialog.hpp:31
DdtReferenceLineDialog::~DdtReferenceLineDialog
virtual ~DdtReferenceLineDialog()=default
DdtReferenceLineDialog::ParameterChanged
void ParameterChanged(const QString dialog_id, const QString param_id, const QVariant parameter)