------------------------------------------------------------------------------
| 67 | |
| 68 | //------------------------------------------------------------------------------ |
| 69 | void vtkExtractBlock::CopySubTree(vtkDataObjectTreeIterator* loc, vtkDataObjectTree* output, |
| 70 | vtkDataObjectTree* input, vtkSet& activeIndices) |
| 71 | { |
| 72 | vtkDataObject* inputNode = input->GetDataSet(loc); |
| 73 | if (auto cinput = vtkDataObjectTree::SafeDownCast(inputNode)) |
| 74 | { |
| 75 | auto coutput = vtkDataObjectTree::SafeDownCast(output->GetDataSet(loc)); |
| 76 | auto iter = cinput->NewIterator(); |
| 77 | for (iter->InitTraversal(); !iter->IsDoneWithTraversal(); iter->GoToNextItem()) |
| 78 | { |
| 79 | auto curNode = iter->GetCurrentDataObject(); |
| 80 | auto clone = curNode->NewInstance(); |
| 81 | clone->ShallowCopy(curNode); |
| 82 | coutput->SetDataSet(iter, clone); |
| 83 | clone->FastDelete(); |
| 84 | activeIndices.erase(loc->GetCurrentFlatIndex() + iter->GetCurrentFlatIndex()); |
| 85 | } |
| 86 | iter->Delete(); |
| 87 | } |
| 88 | else if (inputNode) |
| 89 | { |
| 90 | vtkDataObject* clone = inputNode->NewInstance(); |
| 91 | clone->ShallowCopy(inputNode); |
| 92 | output->SetDataSet(loc, clone); |
| 93 | clone->FastDelete(); |
| 94 | } |
| 95 | } |
| 96 | |
| 97 | //------------------------------------------------------------------------------ |
| 98 | int vtkExtractBlock::RequestData(vtkInformation* vtkNotUsed(request), |
no test coverage detected