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
path: root/drape
diff options
context:
space:
mode:
authorr.kuznetsov <r.kuznetsov@corp.mail.ru>2017-06-29 14:57:21 +0300
committerDaria Volvenkova <d.volvenkova@corp.mail.ru>2017-06-30 16:18:55 +0300
commit91f2d144825639a99c9338bc86fc0c0c72d97dfd (patch)
treeb36dc34925d86e364aa67fbd4c5bc20904009642 /drape
parent2b99ccc9534100a016bbe698ca704237cb79a3ac (diff)
Moved speed cameras to own layer
Diffstat (limited to 'drape')
-rw-r--r--drape/glstate.hpp1
-rw-r--r--drape/overlay_handle.cpp31
-rw-r--r--drape/overlay_handle.hpp25
-rw-r--r--drape/overlay_tree.cpp22
-rw-r--r--drape/overlay_tree.hpp2
-rw-r--r--drape/render_bucket.cpp5
-rw-r--r--drape/render_bucket.hpp1
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);