ddt  0.1
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Macros Modules
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 
74  QString GetDialogName() override;
75 
76  protected:
80  virtual void CreateDialog();
81  virtual void RetranslateUi();
82 
83  void changeEvent(QEvent *event) override;
84  void focusInEvent(QFocusEvent *event) override;
85  void closeEvent(QCloseEvent *event) override;
86 
87  private:
88  QVBoxLayout *verticalLayout;
89  QHBoxLayout *horizontalLayout;
90  QGridLayout *chartLayout;
91  QLabel *label_low;
92  QLineEdit *lineEdit_low;
93  QLabel *label_high;
94  QLineEdit *lineEdit_high;
95  QPushButton *pushButton_auto;
96  QLabel *label_x;
97  InactiveLineEdit *lineEdit_x;
98  QLabel *label_value;
99  InactiveLineEdit *lineEdit_value;
100  QLabel *label_smooth;
101  QComboBox *comboBox_interpolation;
102  QPushButton *pushButton_quit;
103 
104  QString currentInterpolation;
105 
106  int range_min;
107  int range_max;
108  double value_min;
109  double value_max;
110  double chart_min;
111  double chart_max;
112  double intensity_low;
113  double intensity_high;
114  bool auto_mode;
115  QList<QVariant> spectrum_vals;
116 
117  QLabel *label_chart;
118  QLabel *label_xaxis;
119  QLabel *label_yaxis;
120  QLabel *label_fill;
121 
122  std::unique_ptr<QPainterPath> line_path;
123  std::unique_ptr<QGraphicsPathItem> line_path_item;
124 
125  QList<QPointF> point_list;
126 
127  void CreateLayouts();
128  void CreateWidgets();
129  void CreateLineEditWidgets(const QFont font);
130  void CreateLabelWidgets(const QFont font);
131  void CreateButtonWidgets();
132  void ClearEditWidgets();
133  void CreateChart();
134  void CreateComboBox();
135 
136  void SetRangeValues(const QList<QVariant> range_values);
137  void SetSpectrum(const QList<QVariant> spectrum_values);
138 
139  void ShowSpectrum();
140  void DrawScaleX(const double min_value, const double max_value,
141  QPainter &painter) const;
142  void DrawScaleY(const double min_value, const double max_value,
143  double *chart_min_value, double *chart_max_value,
144  QPainter &painter) const;
145  double CalculateTickPositionLinear(const double tick, const double min_value,
146  const double width,
147  const double maxsize) const;
148  void SetXAxis(const int tickstep_ratio);
149  void SetYAxis(const int tickstep_ratio);
150 
151  void FindRangeMinMax();
152  void FindValueMinMax();
153 
157  void FillPointList(const double xfactor, const double yfactor,
158  const int height);
159 
163  void AddIntermediatePoints(const double xfactor, const double yfactor,
164  const int height);
168  void AddStepPoints(const double xfactor, const double yfactor,
169  const int height);
173  void AddQuadraticPoints(const double xfactor, const double yfactor,
174  const int height);
179  void AddNaturalPoints(const double xfactor, const double yfactor,
180  const int height);
181 
182  public slots:
186  virtual void CurrentIndexChanged(const QString &text);
187 
191  virtual void AutoPressed();
192 
197  virtual void QuitPressed();
198 
202  void UpdateIntensityValues();
203 
204  private slots:
205 
209  void ChartPoint(const double chart_x, const double chart_y);
210 
211  signals:
215  void ParameterChanged(const QString dialog_id, const QString param_id,
216  const QVariant parameter);
217 };
218 
219 #endif // DDT_DATAVISUALISATION_DDTDIALOGS_REFERENCELINE_HPP
DdtReferenceLineDialog::UpdateIntensityValues
void UpdateIntensityValues()
Definition: ddtReferenceLineDialog.cpp:864
InactiveLineEdit
Definition: ddtDatavisualisationUtils.hpp:24
DdtReferenceLineDialog::closeEvent
void closeEvent(QCloseEvent *event) override
Definition: ddtReferenceLineDialog.cpp:792
DdtReferenceLineDialog::QuitPressed
virtual void QuitPressed()
Definition: ddtReferenceLineDialog.cpp:850
ddtDatavisualisationUtils.hpp
DdtReferenceLineDialog::SetChangedParameter
void SetChangedParameter(const QString param_id, const QVariant parameter) override
Definition: ddtReferenceLineDialog.cpp:821
DdtReferenceLineDialog::focusInEvent
void focusInEvent(QFocusEvent *event) override
Definition: ddtReferenceLineDialog.cpp:786
DdtReferenceLineDialog::changeEvent
void changeEvent(QEvent *event) override
Definition: ddtReferenceLineDialog.cpp:778
ddtDialog.hpp
DdtReferenceLineDialog::RetranslateUi
virtual void RetranslateUi()
Definition: ddtReferenceLineDialog.cpp:745
DdtReferenceLineDialog::SetInitialParameter
void SetInitialParameter(const QString parameter_id, const QVariant parameter) override
Definition: ddtReferenceLineDialog.cpp:800
DdtReferenceLineDialog::DdtReferenceLineDialog
DdtReferenceLineDialog(QWidget *parent=nullptr)
Definition: ddtReferenceLineDialog.cpp:34
DdtReferenceLineDialog::eventFilter
bool eventFilter(QObject *obj, QEvent *event) override
Definition: ddtReferenceLineDialog.cpp:723
DdtReferenceLineDialog::GetDialogName
QString GetDialogName() override
Definition: ddtReferenceLineDialog.cpp:40
ddtDialogIds.hpp
DdtReferenceLineDialog::CreateDialog
virtual void CreateDialog()
Definition: ddtReferenceLineDialog.cpp:44
DdtReferenceLineDialog::AutoPressed
virtual void AutoPressed()
Definition: ddtReferenceLineDialog.cpp:842
DdtDialog
Definition: ddtDialog.hpp:24
DdtReferenceLineDialog::CurrentIndexChanged
virtual void CurrentIndexChanged(const QString &text)
Definition: ddtReferenceLineDialog.cpp:858
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)