diff options
author | Roman Kuznetsov <r.kuznetsow@gmail.com> | 2016-09-27 12:00:52 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-27 12:00:52 +0300 |
commit | e13e69a51baef38cbe68cd4a9897b05fca1244bc (patch) | |
tree | 0dce2e26e91bbcbd582068389c62c66f41dd4236 /drape | |
parent | d2a4077545d50abe4305a63713b93fe0926db272 (diff) | |
parent | 28f41e9792827508f63027415d48ce2fa9c0e5e8 (diff) |
Merge pull request #4385 from darina/visible-viewport
Visible viewport
Diffstat (limited to 'drape')
-rw-r--r-- | drape/overlay_tree.cpp | 17 | ||||
-rw-r--r-- | drape/overlay_tree.hpp | 1 |
2 files changed, 18 insertions, 0 deletions
diff --git a/drape/overlay_tree.cpp b/drape/overlay_tree.cpp index 9daf1e229a..275df08525 100644 --- a/drape/overlay_tree.cpp +++ b/drape/overlay_tree.cpp @@ -367,6 +367,23 @@ void OverlayTree::DeleteHandle(ref_ptr<OverlayHandle> const & handle) Erase(handle); } +bool OverlayTree::GetSelectedFeatureRect(ScreenBase const & screen, m2::RectD & featureRect) +{ + if (!m_selectedFeatureID.IsValid()) + return false; + + featureRect.MakeEmpty(); + for (auto const & handle : m_handlesCache) + { + if (handle->IsVisible() && handle->GetFeatureID() == m_selectedFeatureID) + { + m2::RectD rect = handle->GetPixelRect(screen, screen.isPerspective()); + featureRect.Add(rect); + } + } + return true; +} + void OverlayTree::Select(m2::PointD const & glbPoint, TOverlayContainer & result) const { ScreenBase const & screen = m_traits.m_modelView; diff --git a/drape/overlay_tree.hpp b/drape/overlay_tree.hpp index 8a65e18afb..ef669d1a7b 100644 --- a/drape/overlay_tree.hpp +++ b/drape/overlay_tree.hpp @@ -66,6 +66,7 @@ public: void SetDisplacementMode(int displacementMode); void SetSelectedFeature(FeatureID const & featureID); + bool GetSelectedFeatureRect(ScreenBase const & screen, m2::RectD & featureRect); #ifdef COLLECT_DISPLACEMENT_INFO struct DisplacementData |