CTL  0.6.1
Computed Tomography Library
projectionviewer.h
1 #ifndef CTL_PROJECTIONVIEWER_H
2 #define CTL_PROJECTIONVIEWER_H
3 
4 #include <QWidget>
5 
6 #include "img/projectiondata.h"
7 
8 namespace Ui {
9 class ProjectionViewer;
10 }
11 
12 namespace CTL {
13 namespace gui {
14 
15 class Chunk2DView;
16 
115 class ProjectionViewer : public QWidget
116 {
117  Q_OBJECT
118 
119 public:
120  explicit ProjectionViewer(QWidget *parent = nullptr);
121  ProjectionViewer(ProjectionData projections, QWidget *parent = nullptr);
123 
124  static void plot(ProjectionData projections, const ModuleLayout& layout = {});
125 
126  const ProjectionData& data() const;
127  Chunk2DView* dataView() const;
128  void setData(ProjectionData projections);
129  void setModuleLayout(const ModuleLayout& layout);
130  void setWindowPresets(QPair<QString, QPair<double, double>> preset1,
131  QPair<QString, QPair<double, double>> preset2);
132 
133  int currentView() const;
134 
135 public Q_SLOTS:
136  void autoResize();
138  void showView(int view);
139 
140 protected:
141  void keyPressEvent(QKeyEvent *event) override;
142 
143 private:
144  Ui::ProjectionViewer *ui;
145 
146  ProjectionData _data = ProjectionData(0,0,0);
147  ModuleLayout _modLayout;
148 
149 private Q_SLOTS:
150  void changeView(int requestedChange);
151  void updateSliderRange();
152  void updatePixelInfo(int x, int y, float value);
153  void windowingUpdate();
154 };
155 
156 
157 // free function plot()
158 inline void plot(ProjectionData projections, const ModuleLayout& layout = {})
159 { ProjectionViewer::plot(std::move(projections), layout); }
160 
161 } // namespace gui
162 } // namespace CTL
163 
164 #endif // CTL_PROJECTIONVIEWER_H
Simple class that holds the layout of a multi module detector.
Definition: modulelayout.h:32
ProjectionViewer(QWidget *parent=nullptr)
Definition: projectionviewer.cpp:16
Chunk2DView * dataView() const
Definition: projectionviewer.cpp:97
void setAutoMouseWindowScaling()
Definition: projectionviewer.cpp:185
void setModuleLayout(const ModuleLayout &layout)
Definition: projectionviewer.cpp:123
The ProjectionData class is the container class used to store all projections from all views.
Definition: projectiondata.h:19
The ProjectionViewer class provides a tool for visualization of ProjectionData.
Definition: projectionviewer.h:115
void showView(int view)
Definition: projectionviewer.cpp:194
void autoResize()
Definition: projectionviewer.cpp:170
void setWindowPresets(QPair< QString, QPair< double, double >> preset1, QPair< QString, QPair< double, double >> preset2)
Definition: projectionviewer.cpp:152
~ProjectionViewer()
Definition: projectionviewer.cpp:59
static void plot(ProjectionData projections, const ModuleLayout &layout={})
Definition: projectionviewer.cpp:75
int currentView() const
Definition: projectionviewer.cpp:161
The Chunk2DView class provides basic visualization of Chunk2D data.
Definition: chunk2dview.h:87
void setData(ProjectionData projections)
Definition: projectionviewer.cpp:106
const ProjectionData & data() const
Definition: projectionviewer.cpp:89