diff options
author | Daria Volvenkova <d.volvenkova@corp.mail.ru> | 2016-09-05 13:17:07 +0300 |
---|---|---|
committer | Daria Volvenkova <d.volvenkova@corp.mail.ru> | 2016-09-26 17:26:00 +0300 |
commit | 24834ce40c571ef6021991350bc0863279f71497 (patch) | |
tree | 96d0d4c8f9b8f36aa50f76442eef29a2cae4813c /drape | |
parent | 12be223279b3e84da9d58e0143793f854d5761e3 (diff) |
Positioning in 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 |