| 584 | } |
| 585 | |
| 586 | void FeatureType::ParseTriangles(int scale) |
| 587 | { |
| 588 | if (!m_parsed.m_triangles) |
| 589 | { |
| 590 | ParseHeader2(); |
| 591 | |
| 592 | auto const headerGeomType = static_cast<HeaderGeomType>(Header(m_data) & HEADER_MASK_GEOMTYPE); |
| 593 | if (headerGeomType == HeaderGeomType::Area) |
| 594 | { |
| 595 | if (m_triangles.empty()) |
| 596 | { |
| 597 | int const ind = GetScaleIndex(*m_loadInfo, scale, m_offsets.m_trg); |
| 598 | if (ind != -1) |
| 599 | { |
| 600 | ReaderSource<FilesContainerR::TReader> src(m_loadInfo->GetTrianglesReader(ind)); |
| 601 | src.Skip(m_offsets.m_trg[ind]); |
| 602 | serial::LoadOuterTriangles(src, m_loadInfo->GetGeometryCodingParams(ind), m_triangles); |
| 603 | } |
| 604 | } |
| 605 | |
| 606 | CalcRect(m_triangles, m_limitRect); |
| 607 | } |
| 608 | m_parsed.m_triangles = true; |
| 609 | } |
| 610 | } |
| 611 | |
| 612 | FeatureType::GeomStat FeatureType::GetOuterTrianglesStats() |
| 613 | { |