MCPcopy Create free account
hub / github.com/comaps/comaps / DoReplace

Method DoReplace

tools/poly_borders/borders_data.cpp:386–434  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

384}
385
386void BordersData::DoReplace()
387{
388 LOG(LINFO, ("Start replacing intervals."));
389
390 std::vector<Polygon> newMwmsPolygons;
391
392 for (size_t borderId = 0; borderId < m_bordersPolygons.size(); ++borderId)
393 {
394 if (ShouldLog(borderId, m_bordersPolygons.size()))
395 LOG(LINFO, ("Replacing:", borderId + 1, "/", m_bordersPolygons.size()));
396
397 auto & polygon = m_bordersPolygons[borderId];
398
399 newMwmsPolygons.emplace_back();
400 auto & newPolygon = newMwmsPolygons.back();
401
402 for (size_t i = 0; i < polygon.m_points.size(); ++i)
403 {
404 auto const replaceDataIter = polygon.FindReplaceData(i);
405 bool const noReplaceData = replaceDataIter == polygon.m_replaceData.cend();
406 if (noReplaceData)
407 {
408 newPolygon.m_points.emplace_back(polygon.m_points[i].m_point);
409 continue;
410 }
411
412 auto const srcBorderId = replaceDataIter->m_srcBorderId;
413 size_t const srcFrom = replaceDataIter->m_srcReplaceFrom;
414 size_t const srcTo = replaceDataIter->m_srcReplaceTo;
415 size_t const nextI = replaceDataIter->m_dstTo;
416 bool const reversed = replaceDataIter->m_reversed;
417
418 CHECK_EQUAL(i, replaceDataIter->m_dstFrom, ());
419
420 auto const & srcPolygon = m_bordersPolygons[srcBorderId];
421
422 Append(srcFrom, srcTo, reversed, srcPolygon.m_points, newPolygon.m_points);
423
424 polygon.m_replaceData.erase(replaceDataIter);
425 i = nextI - 1;
426 }
427
428 newPolygon.m_rect = BoundingBox(newPolygon.m_points);
429 }
430
431 m_prevCopy = std::move(m_bordersPolygons);
432 m_bordersPolygons = std::move(newMwmsPolygons);
433 RemoveDuplicatePoints();
434}
435
436Polygon const & BordersData::GetBordersPolygonByName(std::string const & name) const
437{

Callers

nothing calls this directly

Calls 9

ShouldLogFunction · 0.85
backMethod · 0.80
FindReplaceDataMethod · 0.80
AppendFunction · 0.70
BoundingBoxFunction · 0.70
sizeMethod · 0.45
emplace_backMethod · 0.45
cendMethod · 0.45
eraseMethod · 0.45

Tested by

no test coverage detected