14#include "mitkPointSet.h"
15#include "mitkBaseRenderer.h"
18 : m_NavigationDataVectors(std::vector<std::vector<
mitk::
NavigationData::Pointer> >()), m_NumberOfTools(numberOfTools)
29 if ( navigationDatas.size() != m_NumberOfTools )
31 MITK_WARN(
"NavigationDataSet") <<
"Tried to add too many or too few navigation Datas to NavigationDataSet. " << m_NumberOfTools <<
" required, tried to add " << navigationDatas.size() <<
".";
36 if ( m_NavigationDataVectors.size() > 0)
38 for (std::vector<mitk::NavigationData::Pointer>::size_type i = 0; i < navigationDatas.size(); i++)
39 if (navigationDatas[i]->GetIGTTimeStamp() <= m_NavigationDataVectors.back()[i]->GetIGTTimeStamp())
41 MITK_WARN(
"NavigationDataSet") <<
"IGTTimeStamp of new NavigationData should be newer than timestamp of last NavigationData.";
46 m_NavigationDataVectors.push_back(navigationDatas);
52 if ( index >= m_NavigationDataVectors.size() )
54 MITK_WARN(
"NavigationDataSet") <<
"There is no NavigationData available at index " << index <<
".";
58 if ( toolIndex >= m_NavigationDataVectors.at(index).size() )
60 MITK_WARN(
"NavigationDataSet") <<
"There is NavigatitionData available at index " << index <<
" for tool " << toolIndex <<
".";
64 return m_NavigationDataVectors.at(index).at(toolIndex);
100 if (toolIndex >= m_NumberOfTools )
102 MITK_WARN(
"NavigationDataSet") <<
"Invalid toolIndex: " << m_NumberOfTools <<
" Tools known, requested index " << toolIndex <<
"";
103 return std::vector<mitk::NavigationData::Pointer>();
106 std::vector< mitk::NavigationData::Pointer > result;
108 for(std::vector<std::vector<NavigationData::Pointer> >::size_type i = 0; i < m_NavigationDataVectors.size(); i++)
109 result.push_back(m_NavigationDataVectors[i][toolIndex]);
116 return m_NavigationDataVectors[index];
121 return m_NumberOfTools;
126 return m_NavigationDataVectors.size();
150 return (Size() == 0);
156 for (
unsigned int toolIndex = 0; toolIndex < this->GetNumberOfTools(); ++ toolIndex)
158 mitk::PointSet::Pointer _tempPointSet = mitk::PointSet::New();
160 for (
unsigned int time = 0; time < m_NavigationDataVectors.size(); time++)
162 _tempPointSet->InsertPoint(time,m_NavigationDataVectors[time][toolIndex]->GetPosition());
163 MITK_DEBUG << m_NavigationDataVectors[time][toolIndex]->GetPosition() <<
" --- " << _tempPointSet->GetPoint(time);
165 mitk::DataNode::Pointer dn = mitk::DataNode::New();
166 std::stringstream str;
167 str <<
"NavigationData Tool " << toolIndex;
168 dn->SetProperty(
"name", mitk::StringProperty::New(str.str()));
169 dn->SetData(_tempPointSet);
170 mitk::RenderingManager::GetInstance()->GetDataStorage()->Add(dn);
180 return m_NavigationDataVectors.cbegin();
185 return m_NavigationDataVectors.cend();
bool AddNavigationDatas(std::vector< mitk::NavigationData::Pointer > navigationDatas)
Add mitk::NavigationData of the given tool to the Set.
unsigned int Size() const
Returns the number of time steps stored in this NavigationDataSet.
virtual std::vector< mitk::NavigationData::Pointer > GetDataStreamForTool(unsigned int toolIndex)
Returns a vector that contains all tracking data for a given tool.
~NavigationDataSet() override
void SetRequestedRegion(const itk::DataObject *data) override
bool RequestedRegionIsOutsideOfTheBufferedRegion() override
virtual std::vector< mitk::NavigationData::Pointer > GetTimeStep(unsigned int index) const
Returns a vector that contains NavigationDatas for each tool for a given timestep.
void SetRequestedRegionToLargestPossibleRegion() override
unsigned int GetNumberOfTools() const
Returns the number of tools for which NavigationDatas are stored in this set.
std::vector< std::vector< mitk::NavigationData::Pointer > >::const_iterator NavigationDataSetConstIterator
This iterator iterates over the distinct time steps in this set. And is const.
bool VerifyRequestedRegion() override
bool IsEmpty() const override
This overrid is probably a little hacky. See Bug 19086.
NavigationData::Pointer GetNavigationDataForIndex(unsigned int index, unsigned int toolIndex) const
Get mitk::NavigationData from the given tool at given index.
NavigationDataSet(unsigned int numTools)
Constructs set with fixed number of tools.
void ConvertNavigationDataToPointSet() const
virtual NavigationDataSetConstIterator End() const
Returns an iterator pointing behind to the last TimeStep.
virtual NavigationDataSetConstIterator Begin() const
Returns an iterator pointing to the first TimeStep.