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

Method UpdateViewport

libs/map/transit/transit_reader.cpp:319–401  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

317}
318
319void TransitReadManager::UpdateViewport(ScreenBase const & screen)
320{
321 m_currentModelView = {screen, true /* initialized */};
322
323 if (!m_isSchemeMode || m_isSchemeModeBlocked)
324 return;
325
326 if (df::GetDrawTileScale(screen) < kMinSchemeZoomLevel)
327 {
328 ChangeState(TransitSchemeState::Enabled);
329 return;
330 }
331
332 auto mwms = m_getMwmsByRectFn(screen.ClipRect());
333
334 m_lastActiveMwms.clear();
335 auto const currentTime = steady_clock::now();
336
337 TransitDisplayInfos newTransitData;
338 for (auto const & mwmId : mwms)
339 {
340 if (!mwmId.IsAlive())
341 continue;
342 m_lastActiveMwms.insert(mwmId);
343 auto it = m_mwmCache.find(mwmId);
344 if (it == m_mwmCache.end())
345 {
346 newTransitData[mwmId] = {};
347 m_mwmCache.insert(make_pair(mwmId, CacheEntry(currentTime)));
348 }
349 else
350 {
351 it->second.m_lastActiveTime = currentTime;
352 }
353 }
354
355 if (!newTransitData.empty())
356 {
357 GetTransitDisplayInfo(newTransitData);
358
359 TransitDisplayInfos validTransitData;
360 for (auto & [mwmId, transitInfo] : newTransitData)
361 {
362 if (!transitInfo)
363 continue;
364
365 if (transitInfo->m_transitVersion == ::transit::TransitVersion::OnlySubway && transitInfo->m_linesSubway.empty())
366 continue;
367
368 if (transitInfo->m_transitVersion == ::transit::TransitVersion::AllPublicTransport &&
369 transitInfo->m_linesPT.empty())
370 continue;
371
372 auto it = m_mwmCache.find(mwmId);
373
374 it->second.m_isLoaded = true;
375
376 auto const dataSize = CalculateCacheSize(*transitInfo);

Callers

nothing calls this directly

Calls 11

GetDrawTileScaleFunction · 0.85
CalculateCacheSizeFunction · 0.85
SafeCallMethod · 0.80
atMethod · 0.80
CacheEntryClass · 0.70
clearMethod · 0.45
IsAliveMethod · 0.45
insertMethod · 0.45
findMethod · 0.45
endMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected