25 std::string category =
"Contour File";
42 std::vector<itk::SmartPointer<mitk::BaseData>> result;
50 TiXmlDocument doc(location.c_str());
51 bool loadOkay = doc.LoadFile();
54 TiXmlHandle docHandle(&doc);
57 for (TiXmlElement *currentContourElement = docHandle.FirstChildElement(
"contourModel").ToElement();
58 currentContourElement !=
nullptr;
59 currentContourElement = currentContourElement->NextSiblingElement())
62 if (currentContourElement->FirstChildElement(
"data")->FirstChildElement(
"timestep") !=
nullptr)
70 for (TiXmlElement *currentTimeSeries =
71 currentContourElement->FirstChildElement(
"data")->FirstChildElement(
"timestep")->ToElement();
72 currentTimeSeries !=
nullptr;
73 currentTimeSeries = currentTimeSeries->NextSiblingElement())
75 unsigned int currentTimeStep(0);
77 currentTimeStep = atoi(currentTimeSeries->Attribute(
"n"));
79 this->
ReadPoints(newContourModel, currentTimeSeries, currentTimeStep);
82 currentTimeSeries->QueryIntAttribute(
"isClosed", &isClosed);
85 newContourModel->Close(currentTimeStep);
96 newContourModel->UpdateOutputInformation();
97 result.push_back(dynamic_cast<mitk::BaseData *>(newContourModel.GetPointer()));
120 TiXmlElement *currentTimeSeries,
121 unsigned int currentTimeStep)
124 if (currentTimeStep != newContourModel->GetTimeSteps())
126 newContourModel->Expand(currentTimeStep + 1);
130 if (currentTimeSeries->FirstChildElement(
"controlPoints")->FirstChildElement(
"point") !=
nullptr)
132 for (TiXmlElement *currentPoint =
133 currentTimeSeries->FirstChildElement(
"controlPoints")->FirstChildElement(
"point")->ToElement();
134 currentPoint !=
nullptr;
135 currentPoint = currentPoint->NextSiblingElement())
141 x = atof(currentPoint->FirstChildElement(
"x")->GetText());
142 y = atof(currentPoint->FirstChildElement(
"y")->GetText());
143 z = atof(currentPoint->FirstChildElement(
"z")->GetText());
146 currentPoint->QueryIntAttribute(
"isActive", &isActivePoint);
150 newContourModel->AddVertex(point, isActivePoint, currentTimeStep);
DataCollection - Class to facilitate loading/accessing structured data.
std::vector< itk::SmartPointer< BaseData > > Read() override
Reads a path or stream and creates a list of BaseData objects.
void FillVector3D(Tout &out, mitk::ScalarType x, mitk::ScalarType y, mitk::ScalarType z)
void SetMimeType(const CustomMimeType &mimeType)
The CustomMimeType class represents a custom mime-type which may be registered as a service object...
us::ServiceRegistration< IFileReader > RegisterService(us::ModuleContext *context=us::GetModuleContext())
Convenience class to temporarily change the current locale.
virtual void ReadPoints(mitk::ContourModel::Pointer newContourModel, TiXmlElement *currentTimeSeries, unsigned int currentTimeStep)
void SetDescription(const std::string &description)
void AddExtension(const std::string &extension)
void SetCategory(const std::string &category)
Base class for creating mitk::BaseData objects from files or streams.
std::string GetInputLocation() const override
Get the current input location.
~ContourModelReader() override