Index: mitkPointSetReader.cpp =================================================================== --- mitkPointSetReader.cpp (revision 21795) +++ mitkPointSetReader.cpp (working copy) @@ -17,10 +17,11 @@ #include "mitkPointSetReader.h" -#include "vtkPointSetXMLParser.h" -#include "vtkSmartPointer.h" +//#include "vtkPointSetXMLParser.h" +//#include "vtkSmartPointer.h" #include #include +#include mitk::PointSetReader::PointSetReader() { @@ -46,27 +47,71 @@ return ; } - vtkSmartPointer< vtkPointSetXMLParser > parser = vtkPointSetXMLParser::New(); - parser->SetFileName( m_FileName.c_str() ); + TiXmlDocument doc(m_FileName.c_str()); + bool loadOkay = doc.LoadFile(); + if (loadOkay) + { + mitk::PointSet::Pointer newPointSet = mitk::PointSet::New(); + + TiXmlHandle docHandle( &doc ); - if ( parser->Parse() == 0 ) //Parse returns zero as error indicator - { - itkWarningMacro( << "Sorry, an error occurred during parsing!" ); - return ; - } - mitk::vtkPointSetXMLParser::PointSetList pointSetList = parser->GetParsedPointSets(); - this->ResizeOutputs( pointSetList.size() ); + unsigned int pointSetCounter(0); + for( TiXmlElement* currentPointSetElement = docHandle.FirstChildElement("point_set_file").FirstChildElement( "point_set" ).ToElement(); + currentPointSetElement != NULL; currentPointSetElement = currentPointSetElement->NextSiblingElement()) + { + mitk::PointSet::Pointer newPointSet = mitk::PointSet::New(); - unsigned int i = 0; - for ( mitk::vtkPointSetXMLParser::PointSetList::iterator it = pointSetList.begin(); it != pointSetList.end(); ++it, ++i ) - { - this->SetNthOutput( i, *it ); - } + for( TiXmlElement* currentTimeSeries = currentPointSetElement->FirstChildElement("time_series")->ToElement(); + currentTimeSeries != NULL; currentTimeSeries = currentTimeSeries->NextSiblingElement()) + { + unsigned int currentTimeStep(0); + TiXmlElement* currentTimeSeriesID = currentTimeSeries->FirstChildElement("time_series_id"); + currentTimeStep = atoi(currentTimeSeriesID->GetText()); + + for( TiXmlElement* currentPoint = currentTimeSeries->FirstChildElement("point")->ToElement(); + currentPoint != NULL; currentPoint = currentPoint->NextSiblingElement()) + { + unsigned int id(0); + mitk::PointSpecificationType spec; + int x(0); + int y(0); + int z(0); + id = atoi(currentPoint->FirstChildElement("id")->GetText()); + spec = (mitk::PointSpecificationType) atoi(currentPoint->FirstChildElement("specification")->GetText()); + x = atoi(currentPoint->FirstChildElement("x")->GetText()); + y = atoi(currentPoint->FirstChildElement("y")->GetText()); + z = atoi(currentPoint->FirstChildElement("z")->GetText()); + + mitk::Point3D point; + mitk::FillVector3D(point, x, y, z); + + newPointSet->SetPoint(id, point, spec, currentTimeStep); + MITK_INFO << "PointSet " << id << " " << x << " " << y << " " << currentTimeStep; + } + } + + this->SetNthOutput( pointSetCounter, newPointSet ); + pointSetCounter++; + } + + } + else + { + MITK_WARN << "Cannot load XML file!"; + } + + //this->ResizeOutputs( pointSetList.size() ); + + //unsigned int i = 0; + //for ( mitk::vtkPointSetXMLParser::PointSetList::iterator it = pointSetList.begin(); it != pointSetList.end(); ++it, ++i ) + //{ + // this->SetNthOutput( i, *it ); + //} + m_Success = true; } - void mitk::PointSetReader::GenerateOutputInformation() { } Index: mitkPointSetWriter.cpp =================================================================== --- mitkPointSetWriter.cpp (revision 21795) +++ mitkPointSetWriter.cpp (working copy) @@ -32,10 +32,16 @@ const char* mitk::PointSetWriter::XML_POINT_SET = "point_set" ; +const char* mitk::PointSetWriter::XML_TIME_SERIES = "time_series"; + +const char* mitk::PointSetWriter::XML_TIME_SERIES_ID = "time_series_id"; + const char* mitk::PointSetWriter::XML_POINT = "point" ; const char* mitk::PointSetWriter::XML_ID = "id" ; +const char* mitk::PointSetWriter::XML_SPEC = "specification" ; + const char* mitk::PointSetWriter::XML_X = "x" ; const char* mitk::PointSetWriter::XML_Y = "y" ; @@ -134,30 +140,46 @@ WriteStartElement( XML_POINT_SET, out ); mitk::PointSet::PointsContainer* pointsContainer = pointSet->GetPointSet()->GetPoints(); mitk::PointSet::PointsContainer::Iterator it; - for ( it = pointsContainer->Begin(); it != pointsContainer->End(); ++it ) + + for(unsigned int i=0; i< pointSet->GetTimeSteps(); i++) { - WriteStartElement( XML_POINT, out ); + WriteStartElement( XML_TIME_SERIES, out ); + + WriteStartElement( XML_TIME_SERIES_ID, out ); + WriteCharacterData( ConvertToString( i ).c_str() , out ); + WriteEndElement( XML_TIME_SERIES_ID, out, false ); - WriteStartElement( XML_ID, out ); - WriteCharacterData( ConvertToString( it->Index() ).c_str() , out ); - WriteEndElement( XML_ID, out, false ); + for ( it = pointsContainer->Begin(); it != pointsContainer->End(); ++it ) + { + WriteStartElement( XML_POINT, out ); - mitk::PointSet::PointType point = it->Value(); + WriteStartElement( XML_ID, out ); + WriteCharacterData( ConvertToString( it->Index() ).c_str() , out ); + WriteEndElement( XML_ID, out, false ); - WriteStartElement( XML_X, out ); - WriteCharacterData( ConvertToString( point[ 0 ] ).c_str(), out ); - WriteEndElement( XML_X, out, false ); + mitk::PointSet::PointType point = it->Value(); - WriteStartElement( XML_Y, out ); - WriteCharacterData( ConvertToString( point[ 1 ] ).c_str(), out ); - WriteEndElement( XML_Y, out, false ); + WriteStartElement( XML_SPEC, out ); + WriteCharacterData( ConvertToString( pointSet->GetSpecificationTypeInfo(it->Index(), i) ).c_str() , out ); + WriteEndElement( XML_SPEC, out, false ); - WriteStartElement( XML_Z, out ); - WriteCharacterData( ConvertToString( point[ 2 ] ).c_str(), out ); - WriteEndElement( XML_Z, out, false ); + WriteStartElement( XML_X, out ); + WriteCharacterData( ConvertToString( point[ 0 ] ).c_str(), out ); + WriteEndElement( XML_X, out, false ); - WriteEndElement( XML_POINT, out ); + WriteStartElement( XML_Y, out ); + WriteCharacterData( ConvertToString( point[ 1 ] ).c_str(), out ); + WriteEndElement( XML_Y, out, false ); + + WriteStartElement( XML_Z, out ); + WriteCharacterData( ConvertToString( point[ 2 ] ).c_str(), out ); + WriteEndElement( XML_Z, out, false ); + + WriteEndElement( XML_POINT, out ); + } + WriteEndElement( XML_TIME_SERIES, out, false ); } + WriteEndElement( XML_POINT_SET, out ); } Index: mitkPointSetWriter.h =================================================================== --- mitkPointSetWriter.h (revision 21795) +++ mitkPointSetWriter.h (working copy) @@ -233,12 +233,18 @@ static const char* XML_POINT_SET; + static const char* XML_TIME_SERIES; + + static const char* XML_TIME_SERIES_ID; + static const char* XML_POINT_SET_FILE; static const char* XML_FILE_VERSION; static const char* XML_POINT; + static const char* XML_SPEC; + static const char* XML_ID; static const char* XML_X;