diff options
author | r.kuznetsov <r.kuznetsov@corp.mail.ru> | 2017-06-29 14:57:21 +0300 |
---|---|---|
committer | Daria Volvenkova <d.volvenkova@corp.mail.ru> | 2017-06-30 16:18:55 +0300 |
commit | 91f2d144825639a99c9338bc86fc0c0c72d97dfd (patch) | |
tree | b36dc34925d86e364aa67fbd4c5bc20904009642 /drape | |
parent | 2b99ccc9534100a016bbe698ca704237cb79a3ac (diff) |
Moved speed cameras to own layer
Diffstat (limited to 'drape')
-rw-r--r-- | drape/glstate.hpp | 1 | ||||
-rw-r--r-- | drape/overlay_handle.cpp | 31 | ||||
-rw-r--r-- | drape/overlay_handle.hpp | 25 | ||||
-rw-r--r-- | drape/overlay_tree.cpp | 22 | ||||
-rw-r--r-- | drape/overlay_tree.hpp | 2 | ||||
-rw-r--r-- | drape/render_bucket.cpp | 5 | ||||
-rw-r--r-- | drape/render_bucket.hpp | 1 |
7 files changed, 41 insertions, 46 deletions
diff --git a/drape/glstate.hpp b/drape/glstate.hpp index 33e06bc0fb..9800b9c91e 100644 --- a/drape/glstate.hpp +++ b/drape/glstate.hpp @@ -40,6 +40,7 @@ public: GeometryLayer, OverlayLayer, UserMarkLayer, + NavigationLayer, Gui }; diff --git a/drape/overlay_handle.cpp b/drape/overlay_handle.cpp index 8ca15e7591..83874428d1 100644 --- a/drape/overlay_handle.cpp +++ b/drape/overlay_handle.cpp @@ -7,9 +7,11 @@ #include "base/internal/message.hpp" #include "base/logging.hpp" +#include <algorithm> +#include <sstream> + namespace dp { - struct OverlayHandle::OffsetNodeFinder { public: @@ -89,10 +91,13 @@ bool OverlayHandle::IsIntersect(ScreenBase const & screen, ref_ptr<OverlayHandle Rects const & ar2 = h->GetExtendedPixelShape(screen); for (size_t i = 0; i < ar1.size(); ++i) + { for (size_t j = 0; j < ar2.size(); ++j) + { if (ar1[i].IsIntersect(ar2[j])) return true; - + } + } return false; } @@ -121,8 +126,9 @@ bool OverlayHandle::HasDynamicAttributes() const void OverlayHandle::AddDynamicAttribute(BindingInfo const & binding, uint32_t offset, uint32_t count) { ASSERT(binding.IsDynamic(), ()); - ASSERT(find_if(m_offsets.begin(), m_offsets.end(), OffsetNodeFinder(binding.GetID())) == m_offsets.end(), ()); - m_offsets.insert(make_pair(binding, MutateRegion(offset, count))); + ASSERT(std::find_if(m_offsets.begin(), m_offsets.end(), + OffsetNodeFinder(binding.GetID())) == m_offsets.end(), ()); + m_offsets.insert(std::make_pair(binding, MutateRegion(offset, count))); } OverlayID const & OverlayHandle::GetOverlayID() const @@ -137,7 +143,7 @@ uint64_t const & OverlayHandle::GetPriority() const OverlayHandle::TOffsetNode const & OverlayHandle::GetOffsetNode(uint8_t bufferID) const { - set<TOffsetNode>::const_iterator it = find_if(m_offsets.begin(), m_offsets.end(), OffsetNodeFinder(bufferID)); + auto const it = std::find_if(m_offsets.begin(), m_offsets.end(), OffsetNodeFinder(bufferID)); ASSERT(it != m_offsets.end(), ()); return *it; } @@ -194,13 +200,9 @@ m2::RectD OverlayHandle::GetPixelRectPerspective(ScreenBase const & screen) cons return GetPerspectiveRect(GetPixelRect(screen, false), screen); } -uint64_t OverlayHandle::GetPriorityInFollowingMode() const -{ - return GetPriority(); -} SquareHandle::SquareHandle(OverlayID const & id, dp::Anchor anchor, m2::PointD const & gbPivot, m2::PointD const & pxSize, m2::PointD const & pxOffset, - uint64_t priority, bool isBound, string const & debugStr, + uint64_t priority, bool isBound, std::string const & debugStr, bool isBillboard) : TBase(id, anchor, priority, isBillboard) , m_gbPivot(gbPivot) @@ -242,9 +244,9 @@ void SquareHandle::GetPixelShape(ScreenBase const & screen, bool perspective, Re bool SquareHandle::IsBound() const { return m_isBound; } #ifdef DEBUG_OVERLAYS_OUTPUT -string SquareHandle::GetOverlayDebugInfo() +std::string SquareHandle::GetOverlayDebugInfo() { - ostringstream out; + std::ostringstream out; out << "POI Priority(" << GetPriority() << ") " << GetOverlayID().m_featureId.m_index << "-" << GetOverlayID().m_index << " " << m_debugStr; @@ -259,7 +261,7 @@ uint64_t CalculateOverlayPriority(int minZoomLevel, uint8_t rank, float depth) // - Manual priority from styles (equals to the depth); // - Rank of the feature (the more the better); // [1 byte - zoom][4 bytes - priority][1 byte - rank][1 byte - reserved][1 byte - reserved]. - uint8_t const minZoom = 0xFF - static_cast<uint8_t>(max(minZoomLevel, 0)); + uint8_t const minZoom = 0xFF - static_cast<uint8_t>(std::max(minZoomLevel, 0)); float const kMinDepth = -100000.0f; float const kMaxDepth = 100000.0f; @@ -280,5 +282,4 @@ uint64_t CalculateSpecialModePriority(int specialPriority) priority |= specialPriority; return priority; } - -} // namespace dp +} // namespace dp diff --git a/drape/overlay_handle.hpp b/drape/overlay_handle.hpp index 17f5b604a7..bc0a9fb573 100644 --- a/drape/overlay_handle.hpp +++ b/drape/overlay_handle.hpp @@ -15,11 +15,13 @@ #include "base/buffer_vector.hpp" -#include "std/set.hpp" +#include <set> +#include <string> +#include <utility> +#include <vector> namespace dp { - enum OverlayRank { OverlayRank0 = 0, @@ -35,7 +37,6 @@ uint64_t constexpr kPriorityMaskRank = 0x0000000000FFFFFF; uint64_t constexpr kPriorityMaskAll = kPriorityMaskZoomLevel | kPriorityMaskManual | kPriorityMaskRank; - struct OverlayID { FeatureID m_featureId; @@ -88,7 +89,7 @@ struct OverlayID class OverlayHandle { public: - typedef vector<m2::RectF> Rects; + using Rects = std::vector<m2::RectF>; OverlayHandle(OverlayID const & id, dp::Anchor anchor, uint64_t priority, bool isBillboard); @@ -129,7 +130,6 @@ public: uint64_t const & GetPriority() const; virtual uint64_t GetPriorityMask() const { return kPriorityMaskAll; } - virtual uint64_t GetPriorityInFollowingMode() const; virtual bool IsBound() const { return false; } virtual bool HasLinearFeatureShape() const { return false; } @@ -145,7 +145,7 @@ public: bool IsReady() const { return m_isReady; } #ifdef DEBUG_OVERLAYS_OUTPUT - virtual string GetOverlayDebugInfo() { return ""; } + virtual std::string GetOverlayDebugInfo() { return ""; } #endif protected: @@ -157,7 +157,7 @@ protected: double m_extendingSize; double m_pivotZ; - typedef pair<BindingInfo, MutateRegion> TOffsetNode; + using TOffsetNode = std::pair<BindingInfo, MutateRegion>; TOffsetNode const & GetOffsetNode(uint8_t bufferID) const; m2::RectD GetPerspectiveRect(m2::RectD const & pixelRect, ScreenBase const & screen) const; @@ -178,7 +178,7 @@ private: struct OffsetNodeFinder; - set<TOffsetNode, LessOffsetNode> m_offsets; + std::set<TOffsetNode, LessOffsetNode> m_offsets; bool m_enableCaching; mutable Rects m_extendedShapeCache; @@ -196,7 +196,7 @@ class SquareHandle : public OverlayHandle public: SquareHandle(OverlayID const & id, dp::Anchor anchor, m2::PointD const & gbPivot, m2::PointD const & pxSize, m2::PointD const & pxOffset, - uint64_t priority, bool isBound, string const & debugStr, + uint64_t priority, bool isBound, std::string const & debugStr, bool isBillboard = false); m2::RectD GetPixelRect(ScreenBase const & screen, bool perspective) const override; @@ -204,7 +204,7 @@ public: bool IsBound() const override; #ifdef DEBUG_OVERLAYS_OUTPUT - virtual string GetOverlayDebugInfo() override; + virtual std::string GetOverlayDebugInfo() override; #endif private: @@ -214,11 +214,10 @@ private: bool m_isBound; #ifdef DEBUG_OVERLAYS_OUTPUT - string m_debugStr; + std::string m_debugStr; #endif }; uint64_t CalculateOverlayPriority(int minZoomLevel, uint8_t rank, float depth); uint64_t CalculateSpecialModePriority(int specialPriority); - -} // namespace dp +} // namespace dp diff --git a/drape/overlay_tree.cpp b/drape/overlay_tree.cpp index ff822bf11c..d4f791b2b4 100644 --- a/drape/overlay_tree.cpp +++ b/drape/overlay_tree.cpp @@ -17,9 +17,8 @@ namespace class HandleComparator { public: - HandleComparator(bool enableMask, bool followingMode) - : m_followingMode(followingMode) - , m_enableMask(enableMask) + HandleComparator(bool enableMask) + : m_enableMask(enableMask) {} bool operator()(ref_ptr<OverlayHandle> const & l, ref_ptr<OverlayHandle> const & r) const @@ -31,10 +30,8 @@ public: { uint64_t const mask = m_enableMask ? l->GetPriorityMask() & r->GetPriorityMask() : dp::kPriorityMaskAll; - uint64_t const priorityLeft = (m_followingMode ? l->GetPriorityInFollowingMode() : - l->GetPriority()) & mask; - uint64_t const priorityRight = (m_followingMode ? r->GetPriorityInFollowingMode() : - r->GetPriority()) & mask; + uint64_t const priorityLeft = l->GetPriority() & mask; + uint64_t const priorityRight = r->GetPriority() & mask; if (priorityLeft > priorityRight) return true; @@ -54,7 +51,6 @@ public: } private: - bool m_followingMode; bool m_enableMask; }; @@ -80,7 +76,6 @@ void StoreDisplacementInfo(ScreenBase const & modelView, int caseIndex, OverlayTree::OverlayTree() : m_frameCounter(kInvalidFrame) - , m_followingMode(false) , m_isDisplacementEnabled(true) { for (size_t i = 0; i < m_handles.size(); i++) @@ -206,7 +201,7 @@ void OverlayTree::InsertHandle(ref_ptr<OverlayHandle> handle, int currentRank, } TOverlayContainer rivals; - HandleComparator comparator(true /* enableMask */, m_followingMode); + HandleComparator comparator(true /* enableMask */); // Find elements that already on OverlayTree and it's pixel rect // intersect with handle pixel rect ("Intersected elements"). @@ -300,7 +295,7 @@ void OverlayTree::EndOverlayPlacing() LOG(LINFO, ("- BEGIN OVERLAYS PLACING")); #endif - HandleComparator comparator(false /* enableMask */, m_followingMode); + HandleComparator comparator(false /* enableMask */); for (int rank = 0; rank < dp::OverlayRanksCount; rank++) { @@ -427,11 +422,6 @@ void OverlayTree::Select(m2::RectD const & rect, TOverlayContainer & result) con }); } -void OverlayTree::SetFollowingMode(bool mode) -{ - m_followingMode = mode; -} - void OverlayTree::SetDisplacementEnabled(bool enabled) { m_isDisplacementEnabled = enabled; diff --git a/drape/overlay_tree.hpp b/drape/overlay_tree.hpp index 209774beae..42348a491c 100644 --- a/drape/overlay_tree.hpp +++ b/drape/overlay_tree.hpp @@ -62,7 +62,6 @@ public: void Select(m2::RectD const & rect, TOverlayContainer & result) const; void Select(m2::PointD const & glbPoint, TOverlayContainer & result) const; - void SetFollowingMode(bool mode); void SetDisplacementEnabled(bool enabled); void SetSelectedFeature(FeatureID const & featureID); @@ -95,7 +94,6 @@ private: int m_frameCounter; array<vector<ref_ptr<OverlayHandle>>, dp::OverlayRanksCount> m_handles; HandlesCache m_handlesCache; - bool m_followingMode; bool m_isDisplacementEnabled; diff --git a/drape/render_bucket.cpp b/drape/render_bucket.cpp index fbcf3c1df2..fb6a70f7d0 100644 --- a/drape/render_bucket.cpp +++ b/drape/render_bucket.cpp @@ -71,6 +71,11 @@ void RenderBucket::CollectOverlayHandles(ref_ptr<OverlayTree> tree) tree->Add(make_ref(overlayHandle)); } +bool RenderBucket::HasOverlayHandles() const +{ + return !m_overlay.empty(); +} + void RenderBucket::RemoveOverlayHandles(ref_ptr<OverlayTree> tree) { for (drape_ptr<OverlayHandle> const & overlayHandle : m_overlay) diff --git a/drape/render_bucket.hpp b/drape/render_bucket.hpp index 6253a8c9db..05efe6ef3f 100644 --- a/drape/render_bucket.hpp +++ b/drape/render_bucket.hpp @@ -37,6 +37,7 @@ public: void Update(ScreenBase const & modelView); void CollectOverlayHandles(ref_ptr<OverlayTree> tree); + bool HasOverlayHandles() const; void RemoveOverlayHandles(ref_ptr<OverlayTree> tree); void Render(bool drawAsLine); |