NorMIT-nav  2023.01.05-dev+develop.0da12
An IGT application
cxRegistrationTransform.h
Go to the documentation of this file.
1 /*=========================================================================
2 This file is part of CustusX, an Image Guided Therapy Application.
3 
4 Copyright (c) SINTEF Department of Medical Technology.
5 All rights reserved.
6 
7 CustusX is released under a BSD 3-Clause license.
8 
9 See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details.
10 =========================================================================*/
11 
12 
13 #ifndef CXREGISTRATIONTRANSFORM_H_
14 #define CXREGISTRATIONTRANSFORM_H_
15 
16 #include "cxResourceExport.h"
17 #include "cxPrecompiledHeader.h"
18 
19 #include <string>
20 #include <vector>
21 #include <boost/shared_ptr.hpp>
22 #include <QObject>
23 #include <QDateTime>
24 
25 #include "cxTransform3D.h"
26 
27 class QDomNode;
28 
29 namespace cx
30 {
31 
39 class cxResource_EXPORT RegistrationTransform
40 {
41 public:
43  QDateTime mTimestamp;
44  QString mType;
45 
46  QString mFixed;
47  QString mMoving;
48  bool mTemp;
49 
51  explicit RegistrationTransform(const Transform3D& value, const QDateTime& timestamp = QDateTime(),
52  const QString& type = "", bool tempTransform = false);
53  void addXml(QDomNode& parentNode) const;
54  void parseXml(QDomNode& dataNode);
55 };
56 
57 cxResource_EXPORT bool operator<(const RegistrationTransform& lhs, const RegistrationTransform& rhs);
58 cxResource_EXPORT bool operator==(const RegistrationTransform& lhs, const RegistrationTransform& rhs);
59 
69 class cxResource_EXPORT ParentSpace
70 {
71 public:
72  QString mUid;
73  QDateTime mTimestamp;
74  QString mType;
75 
76  ParentSpace();
77  explicit
78  ParentSpace(const QString& parentFrame, const QDateTime& timestamp = QDateTime(), const QString& type = "");
79  void addXml(QDomNode& parentNode) const;
80  void parseXml(QDomNode& dataNode);
81 };
82 
83 cxResource_EXPORT bool operator<(const ParentSpace& lhs, const ParentSpace& rhs);
84 cxResource_EXPORT bool operator==(const ParentSpace& lhs, const ParentSpace& rhs);
85 
86 typedef boost::shared_ptr<class RegistrationHistory> RegistrationHistoryPtr;
87 
96 class cxResource_EXPORT RegistrationHistory: public QObject
97 {
98 Q_OBJECT
99 public:
100  virtual void addXml(QDomNode& parentNode) const;
101  virtual void parseXml(QDomNode& dataNode);
102 
103  virtual void setRegistration(const Transform3D& transform);
104  virtual void addOrUpdateRegistration(const QDateTime& oldTime, const RegistrationTransform& newTransform);
105 
106  virtual void setParentSpace(const QString& newParent);
107  virtual void addParentSpace(const QString& newParent);
108  virtual void updateParentSpace(const QDateTime& oldTime, const ParentSpace& newParent);
109 
110  virtual std::vector<RegistrationTransform> getData() const;
111  virtual std::vector<ParentSpace> getParentSpaces() const;
112  virtual void removeNewerThan(const QDateTime& timestamp);
113  virtual void setActiveTime(const QDateTime& timestamp);
114  virtual QDateTime getActiveTime() const;
115  virtual RegistrationTransform getCurrentRegistration() const;
116  virtual ParentSpace getCurrentParentSpace();
117  virtual void clear();
118 
119  virtual bool isNull() const
120  {
121  return false;
122  }
123  static RegistrationHistoryPtr getNullObject();
124 
125 signals:
126  void currentChanged();
127 private:
128  virtual void addParentSpace(const ParentSpace& newParent);
129  virtual void addRegistrationInternal(const RegistrationTransform& transform);
130  void setCache(const RegistrationTransform& val, const ParentSpace& parent, const QDateTime& timestamp);
131  static RegistrationHistoryPtr mNull;
132  std::vector<RegistrationTransform> mData;
133  std::vector<ParentSpace> mParentSpaces;
134  QDateTime mCurrentTime;
135  RegistrationTransform mTransformCache;
136  ParentSpace mParentSpaceCache;
137 };
138 
139 } // end namespace cx
140 
141 #endif /*CXREGISTRATIONTRANSFORM_H_*/
cx::ParentSpace::mTimestamp
QDateTime mTimestamp
time the transform was registrated.
Definition: cxRegistrationTransform.h:73
cx::RegistrationHistory
A history of registration events.
Definition: cxRegistrationTransform.h:96
cx
Namespace for all CustusX production code.
Definition: cx_dev_group_definitions.h:13
cxPrecompiledHeader.h
cx::operator<
bool operator<(const Landmark &lhs, const Landmark &rhs)
Definition: cxLandmark.cpp:73
cx::RegistrationTransform::mFixed
QString mFixed
Definition: cxRegistrationTransform.h:46
cx::ParentSpace::mType
QString mType
description of the kind if registration (manual, patient, landmark, coregistration etc)
Definition: cxRegistrationTransform.h:74
cx::ParentSpace::mUid
QString mUid
parent frame uid
Definition: cxRegistrationTransform.h:72
cx::Transform3D
Transform3D Transform3D
Transform3D is a representation of an affine 3D transform.
Definition: cxLandmarkPatientRegistrationWidget.h:33
cx::RegistrationTransform::mTimestamp
QDateTime mTimestamp
time the transform was registrated.
Definition: cxRegistrationTransform.h:43
cx::RegistrationHistoryPtr
boost::shared_ptr< class RegistrationHistory > RegistrationHistoryPtr
Definition: cxDataManager.h:37
cx::RegistrationTransform::mType
QString mType
description of the kind if registration (manual, patient, landmark, coregistration etc)
Definition: cxRegistrationTransform.h:44
cx::RegistrationTransform::mValue
Transform3D mValue
value of transform
Definition: cxRegistrationTransform.h:42
cx::RegistrationTransform::mTemp
bool mTemp
Definition: cxRegistrationTransform.h:48
cx::RegistrationTransform::mMoving
QString mMoving
Definition: cxRegistrationTransform.h:47
cx::RegistrationTransform
A registration event and its transform.
Definition: cxRegistrationTransform.h:39
cx::operator==
bool operator==(const RegistrationTransform &lhs, const RegistrationTransform &rhs)
Definition: cxRegistrationTransform.cpp:151
cx::transform
DoubleBoundingBox3D transform(const Transform3D &m, const DoubleBoundingBox3D &bb)
Definition: cxTransform3D.cpp:150
cxTransform3D.h
cx::ParentSpace
Definition of a parent space event.
Definition: cxRegistrationTransform.h:69
cx::RegistrationHistory::isNull
virtual bool isNull() const
Definition: cxRegistrationTransform.h:119