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

Method ReadTrees_0

IO/XML/vtkXMLHyperTreeGridReader.cxx:482–644  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

480
481//------------------------------------------------------------------------------
482void vtkXMLHyperTreeGridReader::ReadTrees_0(vtkXMLDataElement* elem)
483{
484 vtkHyperTreeGrid* output = vtkHyperTreeGrid::SafeDownCast(this->GetCurrentOutput());
485 vtkNew<vtkHyperTreeGridNonOrientedCursor> treeCursor;
486
487 // Number of trees in this hypertree grid file
488 int numberOfTrees = elem->GetNumberOfNestedElements();
489
490 // Hypertree grid mask collected while processing hypertrees
491 vtkNew<vtkBitArray> htgMask;
492 htgMask->SetNumberOfTuples(this->NumberOfPoints);
493 bool hasMaskData = false;
494
495 for (int treeIndx = 0; treeIndx < numberOfTrees; treeIndx++)
496 {
497 // Nested elements within Trees is Tree
498 vtkXMLDataElement* eTree = elem->GetNestedElement(treeIndx);
499 vtkIdType treeId;
500 vtkIdType globalOffset;
501 vtkIdType numberOfVertices;
502 eTree->GetScalarAttribute("Index", treeId);
503 eTree->GetScalarAttribute("GlobalOffset", globalOffset);
504 eTree->GetScalarAttribute("NumberOfVertices", numberOfVertices);
505
506 // Descriptor for hypertree
507 vtkXMLDataElement* desc_e =
508 eTree->FindNestedElementWithNameAndAttribute("DataArray", "Name", "Descriptor");
509 vtkAbstractArray* desc_a = this->CreateArray(desc_e);
510 auto desc_d = vtkArrayDownCast<vtkDataArray>(desc_a);
511 if (!desc_d)
512 {
513 if (desc_a)
514 {
515 desc_a->Delete();
516 }
517 return;
518 }
519 vtkIdType numberOfNodes = 0;
520 if (!desc_e->GetScalarAttribute("NumberOfTuples", numberOfNodes))
521 {
522 desc_d->Delete();
523 return;
524 }
525 desc_d->SetNumberOfTuples(numberOfNodes);
526 if (!this->ReadArrayValues(desc_e, 0, desc_d, 0, numberOfNodes))
527 {
528 desc_d->Delete();
529 return;
530 }
531 auto desc = vtkArrayDownCast<vtkBitArray>(desc_d);
532 if (!desc)
533 {
534 vtkErrorMacro(
535 "Cannot convert vtkDataArray of type " << desc_d->GetDataType() << " to vtkBitArray.");
536 desc_d->Delete();
537 return;
538 }
539

Callers 1

ReadXMLDataMethod · 0.95

Calls 15

GetCurrentOutputMethod · 0.80
GetNestedElementMethod · 0.80
GetScalarAttributeMethod · 0.80
ReadArrayValuesMethod · 0.80
LookupElementWithNameMethod · 0.80
DeleteMethod · 0.65
SetNumberOfTuplesMethod · 0.45
CreateArrayMethod · 0.45

Tested by

no test coverage detected