39 std::vector<itk::SmartPointer<BaseData>> result;
47 TiXmlHandle docHandle(&doc);
49 for (TiXmlElement *geomDataElement = docHandle.FirstChildElement(
"GeometryData").ToElement();
50 geomDataElement !=
nullptr;
51 geomDataElement = geomDataElement->NextSiblingElement())
53 for (TiXmlElement *currentElement = geomDataElement->FirstChildElement(); currentElement !=
nullptr;
54 currentElement = currentElement->NextSiblingElement())
58 std::string tagName = currentElement->Value();
59 if (tagName ==
"Geometry3D")
62 if (restoredGeometry.IsNotNull())
65 newGeometryData->SetGeometry(restoredGeometry);
66 result.push_back(newGeometryData.GetPointer());
70 MITK_ERROR <<
"Invalid <Geometry3D> tag encountered. Skipping.";
73 else if (tagName ==
"ProportionalTimeGeometry")
77 if (restoredTimeGeometry.IsNotNull())
80 newGeometryData->SetTimeGeometry(restoredTimeGeometry);
81 result.push_back(newGeometryData.GetPointer());
85 MITK_ERROR <<
"Invalid <ProportionalTimeGeometry> tag encountered. Skipping.";
93 mitkThrow() <<
"Parsing error at line " << doc.ErrorRow() <<
", col " << doc.ErrorCol() <<
": " << doc.ErrorDesc();
98 mitkThrow() <<
"Did not read a single GeometryData object from input.";
GeometryDataReaderService()
static Geometry3D::Pointer FromXML(TiXmlElement *node)
Create a Geometry3D from XML. Interprets only the format created by ToXML().
us::ServiceRegistration< IFileReader > RegisterService(us::ModuleContext *context=us::GetModuleContext())
Convenience class to temporarily change the current locale.
std::vector< itk::SmartPointer< BaseData > > Read() override
Reads a path or stream and creates a list of BaseData objects.
Base class for creating mitk::BaseData objects from files or streams.
static ProportionalTimeGeometry::Pointer FromXML(TiXmlElement *node)
Create a ProportionalTimeGeometry from XML. Interprets only the format created by ToXML()...
~GeometryDataReaderService() override