Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorr.kuznetsov <r.kuznetsov@corp.mail.ru>2016-01-29 14:06:10 +0300
committerSergey Yershov <yershov@corp.mail.ru>2016-03-23 16:20:41 +0300
commitf4de5841f7bbfa1773ecd824d366a8bea49515a9 (patch)
tree16ee18c3f36b549e15fbf25c3e2cdfb2b5628b00 /drape/overlay_tree.hpp
parent2317f55b5a9460654f0916f6b85d7fa23837d3be (diff)
Improved displacement algorithm and overlays rendering
Diffstat (limited to 'drape/overlay_tree.hpp')
-rw-r--r--drape/overlay_tree.hpp38
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