diff --git a/Modules/IGT/DataManagement/mitkNavigationDataSet.cpp b/Modules/IGT/DataManagement/mitkNavigationDataSet.cpp index 5989528496..98f5ea909d 100644 --- a/Modules/IGT/DataManagement/mitkNavigationDataSet.cpp +++ b/Modules/IGT/DataManagement/mitkNavigationDataSet.cpp @@ -1,144 +1,157 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #include "mitkNavigationDataSet.h" mitk::NavigationDataSet::NavigationDataSet( unsigned int numTools ) : m_NavigationDataVectors(std::vector >(numTools, std::vector())) { - } mitk::NavigationDataSet::~NavigationDataSet( ) { } -bool mitk::NavigationDataSet::InsertNavigationData( unsigned int toolIndex, mitk::NavigationData::Pointer navigationData ) +bool mitk::NavigationDataSet::AddNavigationDatas( std::vector navigationDatas ) { - // test if tool with given index exist - if ( toolIndex >= m_NavigationDataVectors.size() ) - { - MITK_WARN("NavigationDataSet") << "There is no tool with index "< 0 && - navigationData->GetIGTTimeStamp() <= (*(m_NavigationDataVectors.at(toolIndex).end()-1))->GetIGTTimeStamp()) - { - MITK_WARN("NavigationDataSet") << "IGTTimeStamp of new NavigationData should be greater then timestamp of last NavigationData."; - return false; - } - - m_NavigationDataVectors.at(toolIndex).push_back(navigationData); + //// test if tool with given index exist + //if ( toolIndex >= m_NavigationDataVectors.size() ) + //{ + // MITK_WARN("NavigationDataSet") << "There is no tool with index " << toolIndex << "."; + // return false; + //} + + //// test for consistent timestamp + //if ( m_NavigationDataVectors.at(toolIndex).size() > 0 && + // navigationData->GetIGTTimeStamp() <= (*(m_NavigationDataVectors.at(toolIndex).end()-1))->GetIGTTimeStamp()) + //{ + // MITK_WARN("NavigationDataSet") << "IGTTimeStamp of new NavigationData should be greater then timestamp of last NavigationData."; + // return false; + //} + + //m_NavigationDataVectors.at(toolIndex).push_back(navigationData); return true; } -mitk::NavigationData::Pointer mitk::NavigationDataSet::GetNavigationDataForIndex( unsigned int toolIndex, unsigned int index ) const +mitk::NavigationData::Pointer mitk::NavigationDataSet::GetNavigationDataForIndex( unsigned int index, unsigned int toolIndex ) const { if ( toolIndex >= m_NavigationDataVectors.size() ) { - MITK_WARN("NavigationDataSet") << "There is no tool with index "<= m_NavigationDataVectors.at(toolIndex).size() ) { - MITK_WARN("NavigationDataSet") << "There is no mitk::Navigation with index "<= m_NavigationDataVectors.size() ) { - MITK_WARN("NavigationDataSet") << "There is no tool with index "<::const_iterator it; // iterate through all NavigationData objects of the given tool index // till the timestamp of the NavigationData is greater then the given timestamp for (it = m_NavigationDataVectors.at(toolIndex).begin(); - it != m_NavigationDataVectors.at(toolIndex).end(); ++it) + it != m_NavigationDataVectors.at(toolIndex).end(); ++it) { if ( (*it)->GetIGTTimeStamp() > timestamp) { break; } } // first element was greater than timestamp -> return null if ( it == m_NavigationDataVectors.at(toolIndex).begin() ) { MITK_WARN("NavigationDataSet") << "No NavigationData was recorded before given timestamp."; return NULL; } // return last element smaller than the given timestamp return *(it-1); } unsigned int mitk::NavigationDataSet::GetNumberOfTools() { return m_NavigationDataVectors.size(); } unsigned int mitk::NavigationDataSet::GetNumberOfNavigationDatas(bool check) { if (this->GetNumberOfTools() == 0) { return 0; }; unsigned int number = m_NavigationDataVectors.at(0).size();; if (check) { - for (std::vector >::iterator it = m_NavigationDataVectors.begin()+1; - it != m_NavigationDataVectors.end(); ++it) + it != m_NavigationDataVectors.end(); ++it) { if (it->size() != number) { MITK_WARN << "Number of NavigationData objects differs for different tools."; return -1; } } } return number; } // ---> methods necessary for BaseData void mitk::NavigationDataSet::SetRequestedRegionToLargestPossibleRegion() { } bool mitk::NavigationDataSet::RequestedRegionIsOutsideOfTheBufferedRegion() { - return false; + return false; } bool mitk::NavigationDataSet::VerifyRequestedRegion() { - return true; + return true; } void mitk::NavigationDataSet::SetRequestedRegion(const DataObject * ) { } // <--- methods necessary for BaseData + +// <--- methods for Iterators + +std::vector< mitk::NavigationData::Pointer >::iterator mitk::NavigationDataSet::begin() +{ + //TODO default implementation + std::vector< mitk::NavigationData::Pointer >::iterator result; + return result; +} + +std::vector< mitk::NavigationData::Pointer >::iterator mitk::NavigationDataSet::end() +{ + //TODO default implementation + std::vector< mitk::NavigationData::Pointer >::iterator result; + return result; +} diff --git a/Modules/IGT/DataManagement/mitkNavigationDataSet.h b/Modules/IGT/DataManagement/mitkNavigationDataSet.h index 5a3b98cd96..a6e9a6afcc 100644 --- a/Modules/IGT/DataManagement/mitkNavigationDataSet.h +++ b/Modules/IGT/DataManagement/mitkNavigationDataSet.h @@ -1,89 +1,94 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef MITKNAVIGATIONDATASET_H_HEADER_INCLUDED_ #define MITKNAVIGATIONDATASET_H_HEADER_INCLUDED_ #include #include "mitkBaseData.h" #include "mitkNavigationData.h" namespace mitk { - /** - * \brief Data structure which stores sets of mitk::NavigationData for - * multiple tools. - * - * - */ + * \brief Data structure which stores sets of mitk::NavigationData for + * multiple tools. + * + * + */ class MitkIGT_EXPORT NavigationDataSet : public BaseData { public: mitkClassMacro(NavigationDataSet, BaseData); mitkNewMacro1Param(Self, unsigned int); /** - * \brief Add mitk::NavigationData of the given tool to the Set. - * - * @param toolIndex Index of the tool for which mitk::NavigationData should be added. - * @param navigationData mitk::NavigationData object to be added. - * @return true if object could be added to the set, false otherwise (e.g. tool with given index not existing) - */ - bool InsertNavigationData( unsigned int toolIndex, NavigationData::Pointer navigationData ); + * \brief Add mitk::NavigationData of the given tool to the Set. + * + * @param toolIndex Index of the tool for which mitk::NavigationData should be added. + * @param navigationData mitk::NavigationData object to be added. + * @return true if object could be added to the set, false otherwise (e.g. tool with given index not existing) + */ + bool AddNavigationDatas( std::vector navigationDatas ); /** - * \brief Get mitk::NavigationData from the given tool at given index. - * - * @param toolIndex Index of the tool from which mitk::NavigationData should be returned. - * @param index Index of the mitk::NavigationData object that should be returned. - * @return mitk::NavigationData at the specified indices, 0 if there is no object at the indices. - */ - NavigationData::Pointer GetNavigationDataForIndex( unsigned int toolIndex, unsigned int index ) const; + * \brief Get mitk::NavigationData from the given tool at given index. + * + * @param toolIndex Index of the tool from which mitk::NavigationData should be returned. + * @param index Index of the mitk::NavigationData object that should be returned. + * @return mitk::NavigationData at the specified indices, 0 if there is no object at the indices. + */ + NavigationData::Pointer GetNavigationDataForIndex( unsigned int index, unsigned int toolIndex ) const; /** - * \brief Get last mitk::Navigation object for given tool whose timestamp is less than the given timestamp. - * @param toolIndex Index of the tool from which mitk::NavigationData should be returned. - * @param timestamp Timestamp for selecting last object before. - * @return Last mitk::NavigationData with timestamp less than given timestamp, 0 if there is no adequate object. - */ - NavigationData::Pointer GetNavigationDataBeforeTimestamp( unsigned int toolIndex, mitk::NavigationData::TimeStampType timestamp ) const; + * \brief Get last mitk::Navigation object for given tool whose timestamp is less than the given timestamp. + * @param toolIndex Index of the tool from which mitk::NavigationData should be returned. + * @param timestamp Timestamp for selecting last object before. + * @return Last mitk::NavigationData with timestamp less than given timestamp, 0 if there is no adequate object. + */ + NavigationData::Pointer GetNavigationDataBeforeTimestamp( mitk::NavigationData::TimeStampType timestamp , unsigned int toolIndex ) const; unsigned int GetNumberOfTools(); unsigned int GetNumberOfNavigationDatas(bool check = true); + virtual std::vector< mitk::NavigationData::Pointer >::iterator begin(); + virtual std::vector< mitk::NavigationData::Pointer >::iterator end(); + // virtual methods, that need to be implemented, but aren't reasonable for NavigationData virtual void SetRequestedRegionToLargestPossibleRegion( ); virtual bool RequestedRegionIsOutsideOfTheBufferedRegion( ); virtual bool VerifyRequestedRegion( ); virtual void SetRequestedRegion( const itk::DataObject *data ); protected: /** - * \brief Constructs set with fixed number of tools. - * @param numTools How many tools are used with this mitk::NavigationDataSet. - */ + * \brief Constructs set with fixed number of tools. + * @param numTools How many tools are used with this mitk::NavigationDataSet. + */ NavigationDataSet( unsigned int numTools ); virtual ~NavigationDataSet( ); /** - * \brief Holds all the mitk::NavigationData objects managed by this class. - */ + * \brief Holds all the mitk::NavigationData objects managed by this class. + * + * The first dimension is the index of the navigation data, the second is the + * tool to which this data belongs. i.e. the first dimension is usually the longer one. + */ std::vector > m_NavigationDataVectors; }; } #endif // MITKNAVIGATIONDATASET_H_HEADER_INCLUDED_