------------------------------------------------------------------------------
| 480 | |
| 481 | //------------------------------------------------------------------------------ |
| 482 | void 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 |
no test coverage detected