Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
QmitkSliceBasedInterpolatorWidget.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef QmitkSliceBasedInterpolatorWidget_h_Included
14 #define QmitkSliceBasedInterpolatorWidget_h_Included
15 
17 #include "mitkDataStorage.h"
19 
20 #include <map>
21 
22 #include <QWidget>
23 
24 #include "ui_QmitkSliceBasedInterpolatorWidgetGUIControls.h"
25 
26 namespace mitk
27 {
28  class PlaneGeometry;
29  class SliceNavigationController;
30  class LabelSetImage;
31  class ToolManager;
32  class DiffSliceOperation;
33 }
34 
56 {
57  Q_OBJECT
58 
59 public:
60  QmitkSliceBasedInterpolatorWidget(QWidget *parent = nullptr, const char *name = nullptr);
62 
63  void SetDataStorage(mitk::DataStorage &storage);
64 
68  void SetSliceNavigationControllers(const QList<mitk::SliceNavigationController *> &controllers);
69 
70  void OnToolManagerWorkingDataModified();
71 
72  void OnTimeChanged(itk::Object *sender, const itk::EventObject &);
73 
74  void OnSliceChanged(itk::Object *sender, const itk::EventObject &);
75 
76  void OnSliceNavigationControllerDeleted(const itk::Object *sender, const itk::EventObject &);
77 
81  void OnSliceInterpolationInfoChanged(const itk::EventObject &);
82 
83  Ui::QmitkSliceBasedInterpolatorWidgetGUIControls m_Controls;
84 
85 signals:
86 
87  void signalSliceBasedInterpolationEnabled(bool);
88 
89 public slots:
90 
94  void OnToggleWidgetActivation(bool);
95 
96 protected slots:
97 
101  void OnAcceptInterpolationClicked();
102 
103  /*
104  \brief Reaction to "Accept All Slices" button click.
105  Opens popup to ask about which orientation should be interpolated
106  */
107  void OnAcceptAllInterpolationsClicked();
108 
109  /*
110  \brief Called from popup menu of OnAcceptAllInterpolationsClicked()
111  Will trigger interpolation for all slices in given orientation
112  */
113  void OnAcceptAllPopupActivated(QAction *action);
114 
115 protected:
116  typedef std::map<QAction *, mitk::SliceNavigationController *> ActionToSliceDimensionMapType;
117 
118  const ActionToSliceDimensionMapType CreateActionToSliceDimension();
119 
120  ActionToSliceDimensionMapType m_ActionToSliceDimensionMap;
121 
122  void AcceptAllInterpolations(mitk::SliceNavigationController *slicer);
123 
124  void WaitCursorOn();
125 
126  void WaitCursorOff();
127 
128  void RestoreOverrideCursor();
129 
135  mitk::Image::Pointer GetWorkingSlice(const mitk::PlaneGeometry *planeGeometry);
136 
145  void TranslateAndInterpolateChangedSlice(const itk::EventObject &e, mitk::SliceNavigationController *slicer);
146 
152  void Interpolate(mitk::PlaneGeometry *plane, unsigned int timeStep, mitk::SliceNavigationController *slicer);
153 
158  void UpdateVisibleSuggestion();
159 
160 private:
161  mitk::SliceBasedInterpolationController::Pointer m_SliceInterpolatorController;
162 
163  mitk::ToolManager *m_ToolManager;
164 
165  bool m_Activated;
166 
167  template <typename TPixel, unsigned int VImageDimension>
168  void WritePreviewOnWorkingImage(itk::Image<TPixel, VImageDimension> *target,
169  const mitk::Image *source,
170  int overwritevalue);
171 
172  QHash<mitk::SliceNavigationController *, int> m_ControllerToTimeObserverTag;
173  QHash<mitk::SliceNavigationController *, int> m_ControllerToSliceObserverTag;
174  QHash<mitk::SliceNavigationController *, int> m_ControllerToDeleteObserverTag;
175 
176  unsigned int m_InterpolationInfoChangedObserverTag;
177 
178  mitk::DiffSliceOperation *m_doOperation;
179  mitk::DiffSliceOperation *m_undoOperation;
180 
181  mitk::DataNode::Pointer m_PreviewNode;
182  mitk::Image::Pointer m_PreviewImage;
183 
184  mitk::LabelSetImage::Pointer m_WorkingImage;
185 
186  QHash<mitk::SliceNavigationController *, unsigned int> m_TimeStep;
187 
189 
191 
192  unsigned int m_LastSliceIndex;
193 };
194 
195 #endif
Ui::QmitkSliceBasedInterpolatorWidgetGUIControls m_Controls
Data management class that handles &#39;was created by&#39; relations.
DataCollection - Class to facilitate loading/accessing structured data.
An Operation for applying an edited slice to the volume.
Controls the selection of the slice the associated BaseRenderer will display.
mitk::DataStorage::Pointer m_DataStorage
Image class for storing images.
Definition: mitkImage.h:72
ActionToSliceDimensionMapType m_ActionToSliceDimensionMap
Describes a two-dimensional, rectangular plane.
std::map< QAction *, mitk::SliceNavigationController * > ActionToSliceDimensionMapType
#define MITKSEGMENTATIONUI_EXPORT
Manages and coordinates instances of mitk::Tool.