MCPcopy Create free account
hub / github.com/MITK/MITK / DoRead

Method DoRead

Modules/Core/src/IO/mitkPointSetReaderService.cpp:36–112  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

34}
35
36std::vector<itk::SmartPointer<mitk::BaseData>> mitk::PointSetReaderService::DoRead()
37{
38 // Switch the current locale to "C"
39 LocaleSwitch localeSwitch("C");
40
41 std::vector<itk::SmartPointer<mitk::BaseData>> result;
42
43 InputStream stream(this);
44
45 std::string s(std::istreambuf_iterator<char>{stream.rdbuf()}, std::istreambuf_iterator<char>());
46 tinyxml2::XMLDocument doc;
47 doc.Parse(s.c_str(), s.size());
48 if (!doc.Error())
49 {
50 tinyxml2::XMLHandle docHandle(&doc);
51 // unsigned int pointSetCounter(0);
52 for (auto *currentPointSetElement =
53 docHandle.FirstChildElement("point_set_file").FirstChildElement("point_set").ToElement();
54 currentPointSetElement != nullptr;
55 currentPointSetElement = currentPointSetElement->NextSiblingElement())
56 {
57 mitk::PointSet::Pointer newPointSet = mitk::PointSet::New();
58
59 // time geometry assembled for addition after all points
60 // else the SetPoint method would already transform the points that we provide it
61 mitk::ProportionalTimeGeometry::Pointer timeGeometry = mitk::ProportionalTimeGeometry::New();
62
63 if (currentPointSetElement->FirstChildElement("time_series") != nullptr)
64 {
65 for (auto *currentTimeSeries = currentPointSetElement->FirstChildElement("time_series")->ToElement();
66 currentTimeSeries != nullptr;
67 currentTimeSeries = currentTimeSeries->NextSiblingElement())
68 {
69 unsigned int currentTimeStep(0);
70 auto *currentTimeSeriesID = currentTimeSeries->FirstChildElement("time_series_id");
71
72 currentTimeStep = atoi(currentTimeSeriesID->GetText());
73
74 timeGeometry->Expand(currentTimeStep + 1); // expand (default to identity) in any case
75 auto *geometryElem = currentTimeSeries->FirstChildElement("Geometry3D");
76 if (geometryElem)
77 {
78 Geometry3D::Pointer geometry = Geometry3DToXML::FromXML(geometryElem);
79 if (geometry.IsNotNull())
80 {
81 timeGeometry->SetTimeStepGeometry(geometry, currentTimeStep);
82 }
83 else
84 {
85 MITK_ERROR << "Could not deserialize Geometry3D element.";
86 }
87 }
88 else
89 {
90 MITK_WARN << "Fallback to legacy behavior: defining PointSet geometry as identity";
91 }
92
93 newPointSet = this->ReadPoints(newPointSet, currentTimeSeries, currentTimeStep);

Callers

nothing calls this directly

Calls 11

ReadPointsMethod · 0.95
IsNotNullMethod · 0.80
SetTimeGeometryMethod · 0.80
GetPointerMethod · 0.80
NewFunction · 0.50
ParseMethod · 0.45
sizeMethod · 0.45
ErrorMethod · 0.45
GetTextMethod · 0.45
ExpandMethod · 0.45
SetTimeStepGeometryMethod · 0.45

Tested by

no test coverage detected