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

Method BuildTree

Infovis/Core/vtkExtractSelectedTree.cxx:62–107  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

60
61//------------------------------------------------------------------------------
62int vtkExtractSelectedTree::BuildTree(
63 vtkTree* inputTree, vtkIdTypeArray* selectedVerticesList, vtkMutableDirectedGraph* builder)
64{
65 // Get the input and builder vertex and edge data.
66 vtkDataSetAttributes* inputVertexData = inputTree->GetVertexData();
67 vtkDataSetAttributes* inputEdgeData = inputTree->GetEdgeData();
68
69 vtkDataSetAttributes* builderVertexData = builder->GetVertexData();
70 vtkDataSetAttributes* builderEdgeData = builder->GetEdgeData();
71 builderVertexData->CopyAllocate(inputVertexData);
72 builderEdgeData->CopyAllocate(inputEdgeData);
73
74 // Add selected vertices and set up a map between the input tree vertex id
75 // and the output tree vertex id
76 std::map<vtkIdType, vtkIdType> vertexMap;
77 for (vtkIdType j = 0; j < selectedVerticesList->GetNumberOfTuples(); j++)
78 {
79 vtkIdType inVert = selectedVerticesList->GetValue(j);
80 vtkIdType outVert = builder->AddVertex();
81
82 builderVertexData->CopyData(inputVertexData, inVert, outVert);
83 vertexMap[inVert] = outVert;
84 }
85
86 // Add edges connecting selected vertices
87 vtkSmartPointer<vtkEdgeListIterator> edges = vtkSmartPointer<vtkEdgeListIterator>::New();
88 inputTree->GetEdges(edges);
89 while (edges->HasNext())
90 {
91 vtkEdgeType e = edges->Next();
92 if (vertexMap.find(e.Source) != vertexMap.end() && vertexMap.find(e.Target) != vertexMap.end())
93 {
94 vtkIdType source = vertexMap[e.Source];
95 vtkIdType target = vertexMap[e.Target];
96 vtkEdgeType f = builder->AddEdge(source, target);
97 builderEdgeData->CopyData(inputEdgeData, e.Id, f.Id);
98
99 vtkIdType npts;
100 double* pts;
101 inputTree->GetEdgePoints(e.Id, npts, pts);
102 builder->SetEdgePoints(f.Id, npts, pts);
103 }
104 }
105
106 return 1;
107}
108
109int vtkExtractSelectedTree::RequestData(vtkInformation* vtkNotUsed(request),
110 vtkInformationVector** inputVector, vtkInformationVector* outputVector)

Callers 1

RequestDataMethod · 0.95

Calls 15

GetVertexDataMethod · 0.80
GetEdgeDataMethod · 0.80
SetEdgePointsMethod · 0.80
NewFunction · 0.50
CopyAllocateMethod · 0.45
GetNumberOfTuplesMethod · 0.45
GetValueMethod · 0.45
AddVertexMethod · 0.45
CopyDataMethod · 0.45
GetEdgesMethod · 0.45
HasNextMethod · 0.45
NextMethod · 0.45

Tested by

no test coverage detected