MCPcopy Create free account
hub / github.com/Kitware/VTK / WriteComposite

Method WriteComposite

IO/XML/vtkXMLMultiBlockDataWriter.cxx:28–121  ·  view source on GitHub ↗

------------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

26
27//------------------------------------------------------------------------------
28int vtkXMLMultiBlockDataWriter::WriteComposite(
29 vtkCompositeDataSet* compositeData, vtkXMLDataElement* parent, int& writerIdx)
30{
31 if (!(compositeData->IsA("vtkMultiBlockDataSet") || compositeData->IsA("vtkMultiPieceDataSet")))
32 {
33 vtkErrorMacro("Unsupported composite dataset type: " << compositeData->GetClassName() << ".");
34 return 0;
35 }
36
37 // Write each input.
38 vtkSmartPointer<vtkDataObjectTreeIterator> iter;
39 iter.TakeReference(vtkDataObjectTree::SafeDownCast(compositeData)->NewTreeIterator());
40 iter->VisitOnlyLeavesOff();
41 iter->TraverseSubTreeOff();
42 iter->SkipEmptyNodesOff();
43 int toBeWritten = 0;
44 for (iter->InitTraversal(); !iter->IsDoneWithTraversal(); iter->GoToNextItem())
45 {
46 toBeWritten++;
47 }
48
49 if (toBeWritten == 0)
50 {
51 // No leaf, nothing to write but this is not an issue.
52 return 1;
53 }
54
55 float progressRange[2] = { 0.f, 0.f };
56 this->GetProgressRange(progressRange);
57
58 int index = 0;
59 int RetVal = 0;
60 for (iter->InitTraversal(); !iter->IsDoneWithTraversal(); iter->GoToNextItem(), index++)
61 {
62 vtkDataObject* curDO = iter->GetCurrentDataObject();
63 const char* name = nullptr;
64 if (iter->HasCurrentMetaData())
65 {
66 name = iter->GetCurrentMetaData()->Get(vtkCompositeDataSet::NAME());
67 }
68
69 if (curDO && curDO->IsA("vtkCompositeDataSet"))
70 // if node is a supported composite dataset
71 // note in structure file and recurse.
72 {
73 vtkXMLDataElement* tag = vtkXMLDataElement::New();
74 if (name)
75 {
76 tag->SetAttribute("name", name);
77 }
78
79 if (curDO->IsA("vtkMultiPieceDataSet"))
80 {
81 tag->SetName("Piece");
82 tag->SetIntAttribute("index", index);
83 }
84 else if (curDO->IsA("vtkMultiBlockDataSet"))
85 {

Callers 1

RequestDataMethod · 0.45

Calls 15

IsAMethod · 0.80
NewTreeIteratorMethod · 0.80
SetIntAttributeMethod · 0.80
AddNestedElementMethod · 0.80
WriteNonCompositeDataMethod · 0.80
DeleteMethod · 0.65
NewFunction · 0.50
GetClassNameMethod · 0.45
TakeReferenceMethod · 0.45
InitTraversalMethod · 0.45
IsDoneWithTraversalMethod · 0.45
GoToNextItemMethod · 0.45

Tested by

no test coverage detected