| 34 | {} |
| 35 | |
| 36 | CBV PivotRectsCache::Get(MwmContext const & context, m2::RectD const & rect, int scale) |
| 37 | { |
| 38 | auto p = FindOrCreateEntry(context.GetId(), [&rect, &scale](Entry const & entry) |
| 39 | { |
| 40 | return scale == entry.m_scale && |
| 41 | (entry.m_rect.IsRectInside(rect) || IsEqualMercator(rect, entry.m_rect, kMwmPointAccuracy)); |
| 42 | }); |
| 43 | auto & entry = p.first; |
| 44 | if (p.second) |
| 45 | { |
| 46 | m2::RectD normRect = mercator::RectByCenterXYAndSizeInMeters(rect.Center(), m_maxRadiusMeters); |
| 47 | if (!normRect.IsRectInside(rect)) |
| 48 | normRect = rect; |
| 49 | InitEntry(context, normRect, scale, entry); |
| 50 | } |
| 51 | return entry.m_cbv; |
| 52 | } |
| 53 | |
| 54 | // LocalityRectsCache ------------------------------------------------------------------------------ |
| 55 | LocalityRectsCache::LocalityRectsCache(size_t maxNumEntries, base::Cancellable const & cancellable) |