mitk::NavigationDataSet::Pointer mitk::NavigationDataReaderXML::Read(std::istream* stream)
{
  //save old locale
  char * oldLocale;
  oldLocale = setlocale( LC_ALL, 0 );

  //define own locale
  std::locale C("C");
  setlocale( LC_ALL, "C" );

  // first get the file version
  m_FileVersion = this->GetFileVersion(stream);

  // check if we have a valid version: m_FileVersion has to be always bigger than 1 for playing
  if (m_FileVersion < 1)
  {
    StreamInvalid("Playing not possible. Invalid file version!");
    return 0;
  }

  m_NumberOfOutputs = this->GetNumberOfNavigationDatas(stream);
  if (m_NumberOfOutputs == 0) { return 0; }

  mitk::NavigationDataSet::Pointer dataSet = this->ReadNavigationDataSet();

  //switch back to old locale
  setlocale( LC_ALL, oldLocale );

  return dataSet;
}
Exemple #2
0
void mitk::NavigationDataPlayer::InitPlayer()
{
  if (m_Stream == NULL)
  {
    StreamInvalid("Playing not possible. Wrong file name or path?");
    return;
  }

  if (!m_Stream->good())
  {
    StreamInvalid("Playing not possible. Stream is not good!");
    return;
  }

  //first get the file version
  m_FileVersion = GetFileVersion(m_Stream);

  //check if we have a valid version: m_FileVersion has to be always bigger than 1 for playing
  if (m_FileVersion < 1)
  {
    StreamInvalid("Playing not possible. Invalid file version!");
    return;
  }

  if(m_NumberOfOutputs == 0) {m_NumberOfOutputs = GetNumberOfNavigationDatas(m_Stream);}

  //with the information about the tracked tool number we can generate the output
  if (m_NumberOfOutputs > 0)
  {
    //Generate the output only if there are changes to the amount of outputs
    //This happens when the player is stopped and start again with different file
    if (this->GetNumberOfOutputs() != m_NumberOfOutputs) {SetNumberOfOutputs(m_NumberOfOutputs);}
    //initialize the player with first data
    GetFirstData();
    //set stream valid
    m_ErrorMessage = "";
    m_StreamValid = true;
  }
  else
  {
    StreamInvalid("The input stream seems to have NavigationData incompatible format");
    return;
  }

}