CustusX  2023.01.05-dev+develop.0da12
An IGT application
cxSpaceProvider.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 #ifndef CXSPACEPROVIDER_H
12 #define CXSPACEPROVIDER_H
13 
14 #include "cxResourceExport.h"
15 
16 #include "cxTransform3D.h"
18 #include <QObject>
19 
20 namespace cx
21 {
22 typedef boost::shared_ptr<class SpaceListener> SpaceListenerPtr;
23 typedef boost::shared_ptr<class SpaceProvider> SpaceProviderPtr;
24 
32 class cxResource_EXPORT SpaceProvider : public QObject
33 {
34  Q_OBJECT
35 public:
36  virtual ~SpaceProvider() {}
37 
38  virtual Transform3D get_toMfrom(CoordinateSystem from, CoordinateSystem to) = 0;
39  virtual std::vector<CoordinateSystem> getSpacesToPresentInGUI() = 0;
40  virtual std::map<QString, QString> getDisplayNamesForCoordRefObjects() = 0;
41  virtual SpaceListenerPtr createListener() = 0;
42 
43  virtual Vector3D getActiveToolTipPoint(CoordinateSystem to, bool useOffset = false) = 0;
44  virtual Transform3D getActiveToolTipTransform(CoordinateSystem to, bool useOffset = false) = 0;
45  virtual Transform3D get_rMpr() = 0;
46 
47  virtual CoordinateSystem getS(ToolPtr tool) = 0;
48  virtual CoordinateSystem getT(ToolPtr tool) = 0;
49  virtual CoordinateSystem getTO(ToolPtr tool) = 0;
50  virtual CoordinateSystem getD(DataPtr data) = 0;
51  virtual CoordinateSystem getPr() = 0;
52  virtual CoordinateSystem getR() = 0;
53  virtual CoordinateSystem convertToSpecific(CoordinateSystem space) = 0;
54 
55  static SpaceProviderPtr getNullObject();
56 
57 signals:
58  void spaceAddedOrRemoved();
59 };
60 
61 } // namespace cx
62 
63 #endif // CXSPACEPROVIDER_H
boost::shared_ptr< class SpaceProvider > SpaceProviderPtr
Transform3D Transform3D
Transform3D is a representation of an affine 3D transform.
boost::shared_ptr< class Data > DataPtr
virtual ~SpaceProvider()
Identification of a Coordinate system.
Eigen::Vector3d Vector3D
Vector3D is a representation of a point or vector in 3D.
Definition: cxVector3D.h:42
boost::shared_ptr< class SpaceListener > SpaceListenerPtr
Namespace for all CustusX production code.
boost::shared_ptr< class Tool > ToolPtr