Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
QmitkRegistrationManipulationWidget.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 
14 #ifndef __Q_MITK_REGISTRATION_MANIPULATION_WIDGET_H
15 #define __Q_MITK_REGISTRATION_MANIPULATION_WIDGET_H
16 
17 
18 #include <itkEuler3DTransform.h>
19 #include "mapRegistration.h"
20 #include "mapContinuous.h"
21 
22 #include <mitkPoint.h>
23 
24 #include <QWidget>
25 
27 
28 #include "ui_QmitkRegistrationManipulationWidget.h"
29 
30 
39 class MITKMATCHPOINTREGISTRATIONUI_EXPORT QmitkRegistrationManipulationWidget : public QWidget, private Ui::QmitkRegistrationManipulationWidget
40 {
41  Q_OBJECT
42 
43 public:
44  QmitkRegistrationManipulationWidget(QWidget *parent = nullptr);
45 
47 
49  typedef map::core::Registration<3, 3> MAPRegistrationType;
50 
52  void Initialize();
53 
55  void Initialize(MAPRegistrationType* precedingRegistration);
56 
58  void Initialize(const mitk::Point3D& movingReference, const mitk::Point3D& targetReference);
59 
62  map::core::RegistrationBase* GetInterimRegistration() const;
63 
66  map::core::RegistrationBase::Pointer GenerateRegistration()const ;
67 
68 public Q_SLOTS:
69  void SetCenterOfRotation(const mitk::Point3D& center);
70 
72  void SetCenterOfRotationIsRelativeToTarget(bool targetRelative);
73 
74 signals:
75  void RegistrationChanged(map::core::RegistrationBase *registration);
76 
77 protected slots:
78 
79  void OnRotXChanged(double);
80  void OnRotYChanged(double);
81  void OnRotZChanged(double);
82 
83  void OnTransXChanged(double);
84  void OnTransYChanged(double);
85  void OnTransZChanged(double);
86 
87  void OnRotXSlideChanged(int);
88  void OnRotYSlideChanged(int);
89  void OnRotZSlideChanged(int);
90 
91  void OnTransXSlideChanged(int);
92  void OnTransYSlideChanged(int);
93  void OnTransZSlideChanged(int);
94 
95 private:
96 
98  void ResetTransforms();
100  void InitControls();
101 
104  void UpdateTransformWidgets();
105 
108  void UpdateTransform(bool updateRotation = false);
109 
110  void ConfigureTransformCenter();
111 
112  MAPRegistrationType::Pointer m_PreRegistration;
113 
114  using TransformType = itk::Euler3DTransform<::map::core::continuous::ScalarType>;
115  TransformType::Pointer m_InverseCurrentTransform;
116  TransformType::Pointer m_DirectCurrentTransform;
117 
118  MAPRegistrationType::Pointer m_CurrentRegistration;
119  mitk::Point3D m_CenterOfRotation;
123  bool m_CenterOfRotationIsRelativeToTarget;
124 
125  bool m_internalUpdate;
126 };
127 
128 #endif // MatchPoint_h
129 
QmitkMatchPointRegistrationManipulator.
#define MITKMATCHPOINTREGISTRATIONUI_EXPORT