00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date: 2009-02-10 18:08:54 +0100 (Di, 10 Feb 2009) $ 00006 Version: $Revision: 16228 $ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or https://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 00019 #ifndef MITKNavigationDataPlayer_H_HEADER_INCLUDED_ 00020 #define MITKNavigationDataPlayer_H_HEADER_INCLUDED_ 00021 00022 #include <mitkNavigationDataSource.h> 00023 #include <mitkNavigationDataRecorder.h> //for the Recording Mode enum 00024 #include "mitkTrackingDevice.h" 00025 00026 #include <itkMultiThreader.h> 00027 00028 #include "tinyxml.h" 00029 #include <istream> 00030 00031 00032 namespace mitk { 00044 class MitkIGT_EXPORT NavigationDataPlayer : public NavigationDataSource 00045 { 00046 public: 00047 mitkClassMacro(NavigationDataPlayer, NavigationDataSource); 00048 itkNewMacro(Self); 00049 00053 itkSetStringMacro(FileName); 00054 00058 itkGetStringMacro(FileName); 00059 00063 virtual void UpdateOutputInformation(); 00064 00071 void StartPlaying(); 00072 00080 void StopPlaying(); 00081 00087 void Pause(); 00088 00094 void Resume(); 00095 00106 enum PlayerMode 00107 { 00108 NormalFile, 00109 ZipFile 00110 }; 00111 00116 void SetStream(PlayerMode mode); 00117 00122 void SetStream(std::istream* stream); 00123 00124 protected: 00125 NavigationDataPlayer(); 00126 virtual ~NavigationDataPlayer(); 00127 00128 typedef mitk::NavigationData::TimeStampType TimeStampType; 00129 00133 virtual void GenerateData(); 00134 00138 unsigned int GetFileVersion(std::istream* stream); 00139 00143 unsigned int GetNumberOfNavigationDatas(std::istream* stream); 00144 00148 void GetFirstData(); 00149 00154 mitk::NavigationData::Pointer ReadVersion1(); 00155 00159 void InitPlayer(); 00160 00161 std::istream* m_Stream; 00162 00163 PlayerMode m_PlayerMode; 00164 00165 std::string m_FileName; 00166 00167 unsigned int m_FileVersion; 00168 00169 bool m_Playing; 00170 00171 bool m_Pause; 00172 00173 unsigned int m_NumberOfOutputs; 00174 00175 TimeStampType m_StartPlayingTimeStamp; 00176 00177 TimeStampType m_PauseTimeStamp; 00178 00179 std::vector<NavigationData::Pointer> m_NextToPlayNavigationData; 00180 00181 std::vector<TimeStampType> m_StartTimeOfData; 00182 00183 TiXmlElement * m_parentElement; 00184 00185 TiXmlNode * m_currentNode; 00186 }; 00187 } // namespace mitk 00188 00189 #endif /* MITKNavigationDataPlayer_H_HEADER_INCLUDED_ */