CustusX  15.8
An IGT application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
cxToolProxy.cpp
Go to the documentation of this file.
1 #include "cxToolProxy.h"
2 #include "boost/bind.hpp"
3 #include "cxNullDeleter.h"
4 #include "cxTrackingService.h"
5 #include "cxTypeConversions.h"
6 
7 namespace cx
8 {
9 
10 ToolPtr ToolProxy::create(ToolPtr base, ctkPluginContext *pluginContext)
11 {
12  return boost::shared_ptr<ToolProxy>(new ToolProxy(base, pluginContext));
13 }
14 
15 ToolProxy::ToolProxy(ToolPtr base, ctkPluginContext *pluginContext)
16 {
17  mTool = base;
18  mPluginContext = pluginContext;
19  this->initServiceListener();
20 }
21 
22 void ToolProxy::initServiceListener()
23 {
24  mServiceListener.reset(new ServiceTrackerListener<TrackingService>(
25  mPluginContext,
26  boost::bind(&ToolProxy::onServiceAdded, this, _1),
27  boost::function<void (TrackingService*)>(),
28  boost::bind(&ToolProxy::onServiceRemoved, this, _1)
29  ));
30  mServiceListener->open();
31 }
32 
33 void ToolProxy::onServiceAdded(TrackingService* service)
34 {
35  mTrackingService.reset(service, null_deleter());
36 
37  connect(mTrackingService.get(), &TrackingService::stateChanged, this, &ToolProxy::onStateChanged);
38 
39  this->checkToolValidity();
40 }
41 
42 void ToolProxy::onServiceRemoved(TrackingService *service)
43 {
44  mTrackingService = TrackingService::getNullObject();
45  mTool = Tool::getNullObject();
46  // emit changed signals
47 }
48 
49 void ToolProxy::onStateChanged()
50 {
51  this->checkToolValidity();
52 }
53 
54 void ToolProxy::checkToolValidity()
55 {
56  if (mTool != mTrackingService->getTool(mTool->getUid()))
57  {
58  std::cout << "disabling tool reference for " << mTool->getUid() << ", [currently disabled]" << std::endl;
59  // enable this when tool manager is a first-class plugin
60 // mTool = Tool::getNullObject();
61  // emit changed signals
62  }
63 }
64 
65 std::set<Tool::Type> ToolProxy::getTypes() const
66 {
67  return mTool->getTypes();
68 }
69 
71 {
72  return mTool->getGraphicsPolyData();
73 }
74 
76 {
77  return mTool->getPositionHistory();
78 }
79 
81 {
82  return mTool->getVisible();
83 }
84 
86 {
87  return mTool->isInitialized();
88 }
89 
90 QString ToolProxy::getUid() const
91 {
92  return mTool->getUid();
93 }
94 
95 
96 QString ToolProxy::getName() const
97 {
98  return mTool->getName();
99 }
100 
102 {
103  return mTool->isCalibrated();
104 }
106 {
107  return mTool->getCalibration_sMt();
108 }
109 
111 {
112  mTool->setCalibration_sMt(calibration);
113 }
114 
116 {
117  return mTool->getProbe();
118 }
119 
121 {
122  return mTool->getTimestamp();
123 }
124 
125 void ToolProxy::printSelf(std::ostream &os, Indent indent)
126 {
127  mTool->printSelf(os, indent);
128 }
129 
131 {
132  return mTool->getTooltipOffset();
133 }
134 
136 {
137  mTool->setTooltipOffset(val);
138 }
139 
140 std::map<int, Vector3D> ToolProxy::getReferencePoints() const
141 {
142  return mTool->getReferencePoints();
143 }
144 
146 {
147  return mTool->hasReferencePointWithId(id);
148 }
149 
150 TimedTransformMap ToolProxy::getSessionHistory(double startTime, double stopTime)
151 {
152  return mTool->getSessionHistory(startTime, stopTime);
153 }
154 
156 {
157  return mTool->get_prMt();
158 }
159 
161 {
162  mTool->resetTrackingPositionFilter(filter);
163 }
164 
165 void ToolProxy::set_prMt(const Transform3D& prMt, double timestamp)
166 {
167  mTool->set_prMt(prMt, timestamp);
168 }
169 
170 void ToolProxy::setVisible(bool vis)
171 {
172  mTool->setVisible(vis);
173 }
174 
175 
177 {
178  return mTool->isNull();
179 }
180 
181 } // namespace cx
virtual void setCalibration_sMt(Transform3D calibration)
requests to use the calibration and replaces the tools calibration file
virtual Transform3D get_prMt() const
virtual double getTooltipOffset() const
get a virtual offset extending from the tool tip.
virtual TimedTransformMapPtr getPositionHistory()
get historical positions
Definition: cxToolProxy.cpp:75
virtual vtkPolyDataPtr getGraphicsPolyData() const
get geometric 3D description
Definition: cxToolProxy.cpp:70
Transform3D Transform3D
Transform3D is a representation of an affine 3D transform.
virtual void set_prMt(const Transform3D &prMt, double timestamp)
if available for this type, set pos, ts<0 means use current time
virtual void setVisible(bool vis)
if available for this type, set visibility
virtual bool getVisible() const
Definition: cxToolProxy.cpp:80
virtual TimedTransformMap getSessionHistory(double startTime, double stopTime)
virtual QString getUid() const
Definition: cxToolProxy.cpp:90
static ToolPtr getNullObject()
Definition: cxTool.cpp:46
virtual QString getName() const
Definition: cxToolProxy.cpp:96
static TrackingServicePtr getNullObject()
vtkSmartPointer< class vtkPolyData > vtkPolyDataPtr
Definition: cxProbeSector.h:47
virtual bool isNull()
boost::shared_ptr< Probe > ProbePtr
Definition: cxProbe.h:93
virtual std::set< Type > getTypes() const
Definition: cxToolProxy.cpp:65
boost::shared_ptr< TimedTransformMap > TimedTransformMapPtr
Definition: cxTool.h:54
virtual void resetTrackingPositionFilter(TrackingPositionFilterPtr filter)
Formatting class for debug printing of the ssc library.
Definition: cxIndent.h:49
virtual void setTooltipOffset(double val)
set a virtual offset extending from the tool tip.
virtual double getTimestamp() const
latest valid timestamp for the position matrix. 0 means indeterminate (for f.ex. manual tools) ...
virtual bool isInitialized() const
Definition: cxToolProxy.cpp:85
virtual Transform3D getCalibration_sMt() const
get the calibration transform from tool space to sensor space (where the spheres or similar live) ...
virtual ProbePtr getProbe() const
additional information if the tool represents an US Probe. Extends getProbeSector() ...
static ToolPtr create(ToolPtr base, ctkPluginContext *pluginContext)
Definition: cxToolProxy.cpp:10
boost::shared_ptr< class TrackingPositionFilter > TrackingPositionFilterPtr
Definition: cxTool.h:55
virtual void printSelf(std::ostream &os, Indent indent)
dump internal debug data
virtual bool hasReferencePointWithId(int id)
virtual bool isCalibrated() const
a tool may not be calibrated, then no tracking i allowed
std::map< double, Transform3D > TimedTransformMap
virtual std::map< int, Vector3D > getReferencePoints() const
Get the optional reference points from this tool.
boost::shared_ptr< class Tool > ToolPtr