CTL  0.6.1
Computed Tomography Library
datamodelviewer.h
1 #ifndef CTL_DATAMODELVIEWER_H
2 #define CTL_DATAMODELVIEWER_H
3 
4 #include <QWidget>
6 #include "models/intervaldataseries.h"
7 #include "models/xydataseries.h"
8 
9 namespace Ui {
10 class DataModelViewer;
11 }
12 
13 class QGridLayout;
14 
15 namespace CTL {
16 namespace gui {
17 
18 class LineSeriesView;
19 class IntervalSeriesView;
20 
93 class DataModelViewer : public QWidget
94 {
95  Q_OBJECT
96 
97 public:
98  explicit DataModelViewer(QWidget *parent = nullptr);
100 
103  void setData(std::shared_ptr<AbstractDataModel> model);
104  void setData(const AbstractDataModel& model);
105 
106  static void plot(std::shared_ptr<AbstractDataModel> model,
107  const QString& labelX = "x", const QString& labelY = "y");
108  static void plot(const AbstractDataModel& model,
109  const QString& labelX = "x", const QString& labelY = "y");
110 
111 public Q_SLOTS:
113  void hideParameterGUI(bool hide = true);
114  void reduceSamplingDensity();
115  void setLabelX(const QString& label);
116  void setLabelY(const QString& label);
117  void setNumberOfSamples(int nbSamples);
118  void setSamplingRange(float from, float to);
119  void toggleLogY();
120 
121 protected:
122  void keyPressEvent(QKeyEvent *event) override;
123 
124 private:
125  LineSeriesView* _lineView;
126  IntervalSeriesView* _intervalView;
127  Ui::DataModelViewer *ui;
128 
129  std::unique_ptr<AbstractDataModel> _model;
130 
131  void setModelParameter(QVariant parameter);
132 
133 private Q_SLOTS:
134  void updatePlot();
135 };
136 
137 
138 // free function plot()
139 inline void plot(std::shared_ptr<AbstractDataModel> model,
140  const QString& labelX = "x", const QString& labelY = "y")
141 { DataModelViewer::plot(std::move(model),labelX, labelY); }
142 
143 inline void plot(const AbstractDataModel& model,
144  const QString& labelX = "x", const QString& labelY = "y")
145 { DataModelViewer::plot(model, labelX, labelY); }
146 
147 } // namespace gui
148 } // namespace CTL
149 
150 #endif // CTL_DATAMODELVIEWER_H
void reduceSamplingDensity()
Definition: datamodelviewer.cpp:223
void increaseSamplingDensity()
Definition: datamodelviewer.cpp:207
void toggleLogY()
Definition: datamodelviewer.cpp:266
void hideParameterGUI(bool hide=true)
Definition: datamodelviewer.cpp:215
void setLabelY(const QString &label)
Definition: datamodelviewer.cpp:240
void updatePlot()
Definition: datamodelviewer.cpp:285
void setNumberOfSamples(int nbSamples)
Definition: datamodelviewer.cpp:249
~DataModelViewer()
Definition: datamodelviewer.cpp:46
The LineSeriesView class provides basic visualization of XYDataSeries data.
Definition: lineseriesview.h:67
The AbstractDataModel class is the base class for basic data models.
Definition: abstractdatamodel.h:55
The IntervalSeriesView class provides basic visualization of IntervalDataSeries data.
Definition: intervalseriesview.h:63
static void plot(std::shared_ptr< AbstractDataModel > model, const QString &labelX="x", const QString &labelY="y")
Creates a DataModelViewer for model and shows the window.
Definition: datamodelviewer.cpp:74
void setSamplingRange(float from, float to)
Definition: datamodelviewer.cpp:257
void setLabelX(const QString &label)
Definition: datamodelviewer.cpp:231
The DataModelViewer class provides a visualization tool for data model types.
Definition: datamodelviewer.h:93
DataModelViewer(QWidget *parent=nullptr)
Definition: datamodelviewer.cpp:16
void setData(std::shared_ptr< AbstractDataModel > model)
Sets the data model visualized by this instance to model.
Definition: datamodelviewer.cpp:168
IntervalSeriesView * dataViewBinIntegrals() const
Definition: datamodelviewer.cpp:157
LineSeriesView * dataViewValues() const
Definition: datamodelviewer.cpp:137