diff options
Diffstat (limited to 'drape/overlay_tree.hpp')
-rw-r--r-- | drape/overlay_tree.hpp | 38 |
1 files changed, 12 insertions, 26 deletions
diff --git a/drape/overlay_tree.hpp b/drape/overlay_tree.hpp index c1094b18ad..d56ef3b43f 100644 --- a/drape/overlay_tree.hpp +++ b/drape/overlay_tree.hpp @@ -18,36 +18,23 @@ namespace dp namespace detail { -struct OverlayInfo -{ - ref_ptr<OverlayHandle> m_handle; - - OverlayInfo() = default; - OverlayInfo(ref_ptr<OverlayHandle> handle) - : m_handle(handle) - {} - - bool operator==(OverlayInfo const & rhs) const - { - return m_handle == rhs.m_handle; - } -}; - struct OverlayTraits { ScreenBase m_modelView; - inline m2::RectD const LimitRect(OverlayInfo const & info) + inline m2::RectD const LimitRect(ref_ptr<OverlayHandle> const & handle) { - return info.m_handle->GetExtendedPixelRect(m_modelView); + return handle->GetExtendedPixelRect(m_modelView); } }; } -class OverlayTree : public m4::Tree<detail::OverlayInfo, detail::OverlayTraits> +using TOverlayContainer = buffer_vector<ref_ptr<OverlayHandle>, 8>; + +class OverlayTree : public m4::Tree<ref_ptr<OverlayHandle>, detail::OverlayTraits> { - using TBase = m4::Tree<detail::OverlayInfo, detail::OverlayTraits>; + using TBase = m4::Tree<ref_ptr<OverlayHandle>, detail::OverlayTraits>; public: OverlayTree(); @@ -60,9 +47,8 @@ public: void Add(ref_ptr<OverlayHandle> handle); void EndOverlayPlacing(); - using TSelectResult = buffer_vector<ref_ptr<OverlayHandle>, 8>; - void Select(m2::RectD const & rect, TSelectResult & result) const; - void Select(m2::PointD const & glbPoint, TSelectResult & result) const; + void Select(m2::RectD const & rect, TOverlayContainer & result) const; + void Select(m2::PointD const & glbPoint, TOverlayContainer & result) const; void SetFollowingMode(bool mode); @@ -83,14 +69,14 @@ public: private: ScreenBase const & GetModelView() const { return m_traits.m_modelView; } void InsertHandle(ref_ptr<OverlayHandle> handle, - detail::OverlayInfo const & parentOverlay); + ref_ptr<OverlayHandle> const & parentOverlay); bool CheckHandle(ref_ptr<OverlayHandle> handle, int currentRank, - detail::OverlayInfo & parentOverlay) const; - void AddHandleToDelete(detail::OverlayInfo const & overlay); + ref_ptr<OverlayHandle> & parentOverlay) const; + void AddHandleToDelete(ref_ptr<OverlayHandle> const & handle); int m_frameCounter; array<vector<ref_ptr<OverlayHandle>>, dp::OverlayRanksCount> m_handles; - vector<detail::OverlayInfo> m_handlesToDelete; + vector<ref_ptr<OverlayHandle>> m_handlesToDelete; bool m_followingMode; #ifdef COLLECT_DISPLACEMENT_INFO |