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:
authorDaria Volvenkova <d.volvenkova@corp.mail.ru>2016-06-21 17:07:46 +0300
committerVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-06-24 16:02:06 +0300
commit6d433ff0cafe85066601bea7dd7b82400d71a51a (patch)
tree472152f737314f702eb89a9826e60fe0cb3e4e00 /drape
parent99ebfac3a1a4e7a0bd77e5c155f62fb9545732bb (diff)
Selected feature's overlays can't be displaced.
Diffstat (limited to 'drape')
-rw-r--r--drape/overlay_tree.cpp94
-rw-r--r--drape/overlay_tree.hpp4
2 files changed, 56 insertions, 42 deletions
diff --git a/drape/overlay_tree.cpp b/drape/overlay_tree.cpp
index 3376218ad9..84a31866f5 100644
--- a/drape/overlay_tree.cpp
+++ b/drape/overlay_tree.cpp
@@ -199,48 +199,53 @@ void OverlayTree::InsertHandle(ref_ptr<OverlayHandle> handle,
if (boundToParent)
handleToCompare = parentOverlay;
- // In this loop we decide which element must be visible.
- // If input element "handle" more priority than all "Intersected elements"
- // than we remove all "Intersected elements" and insert input element "handle".
- // But if some of already inserted elements more priority than we don't insert "handle".
- for (auto const & rivalHandle : rivals)
+ bool const selected = m_selectedFeatureID.IsValid() && (handleToCompare->GetFeatureID() == m_selectedFeatureID);
+
+ if (!selected)
{
- bool rejectByDepth = false;
- if (modelView.isPerspective())
+ // In this loop we decide which element must be visible.
+ // If input element "handle" has more priority than all "Intersected elements",
+ // then we remove all "Intersected elements" and insert input element "handle".
+ // But if some of already inserted elements have more priority, then we don't insert "handle".
+ for (auto const & rivalHandle : rivals)
{
- bool const pathTextComparation = handle->HasDynamicAttributes() || rivalHandle->HasDynamicAttributes();
- rejectByDepth = !pathTextComparation &&
- handleToCompare->GetPivot(modelView, true).y > rivalHandle->GetPivot(modelView, true).y;
- }
+ bool rejectByDepth = false;
+ if (modelView.isPerspective())
+ {
+ bool const pathTextComparation = handle->HasDynamicAttributes() || rivalHandle->HasDynamicAttributes();
+ rejectByDepth = !pathTextComparation &&
+ handleToCompare->GetPivot(modelView, true).y > rivalHandle->GetPivot(modelView, true).y;
+ }
- if (rejectByDepth || comparator.IsGreater(rivalHandle, handleToCompare))
- {
- // Handle is displaced and bound to its parent, parent will be displaced too.
- if (boundToParent)
+ if (rejectByDepth || comparator.IsGreater(rivalHandle, handleToCompare))
{
- DeleteHandle(parentOverlay);
+ // Handle is displaced and bound to its parent, parent will be displaced too.
+ if (boundToParent)
+ {
+ DeleteHandle(parentOverlay);
- #ifdef DEBUG_OVERLAYS_OUTPUT
- LOG(LINFO, ("Displace (0):", handle->GetOverlayDebugInfo(), "->", parentOverlay->GetOverlayDebugInfo()));
- #endif
+#ifdef DEBUG_OVERLAYS_OUTPUT
+ LOG(LINFO, ("Displace (0):", handle->GetOverlayDebugInfo(), "->", parentOverlay->GetOverlayDebugInfo()));
+#endif
- #ifdef COLLECT_DISPLACEMENT_INFO
- m_displacementInfo.emplace_back(DisplacementData(handle->GetExtendedPixelRect(modelView).Center(),
- parentOverlay->GetExtendedPixelRect(modelView).Center(),
- dp::Color(0, 255, 0, 255)));
- #endif
- }
+#ifdef COLLECT_DISPLACEMENT_INFO
+ m_displacementInfo.emplace_back(DisplacementData(handle->GetExtendedPixelRect(modelView).Center(),
+ parentOverlay->GetExtendedPixelRect(modelView).Center(),
+ dp::Color(0, 255, 0, 255)));
+#endif
+ }
- #ifdef DEBUG_OVERLAYS_OUTPUT
- LOG(LINFO, ("Displace (1):", rivalHandle->GetOverlayDebugInfo(), "->", handle->GetOverlayDebugInfo()));
- #endif
+#ifdef DEBUG_OVERLAYS_OUTPUT
+ LOG(LINFO, ("Displace (1):", rivalHandle->GetOverlayDebugInfo(), "->", handle->GetOverlayDebugInfo()));
+#endif
- #ifdef COLLECT_DISPLACEMENT_INFO
- m_displacementInfo.emplace_back(DisplacementData(rivalHandle->GetExtendedPixelRect(modelView).Center(),
- handle->GetExtendedPixelRect(modelView).Center(),
- dp::Color(0, 0, 255, 255)));
- #endif
- return;
+#ifdef COLLECT_DISPLACEMENT_INFO
+ m_displacementInfo.emplace_back(DisplacementData(rivalHandle->GetExtendedPixelRect(modelView).Center(),
+ handle->GetExtendedPixelRect(modelView).Center(),
+ dp::Color(0, 0, 255, 255)));
+#endif
+ return;
+ }
}
}
@@ -256,15 +261,15 @@ void OverlayTree::InsertHandle(ref_ptr<OverlayHandle> handle,
{
Erase(*it);
- #ifdef DEBUG_OVERLAYS_OUTPUT
+#ifdef DEBUG_OVERLAYS_OUTPUT
LOG(LINFO, ("Displace (2):", handle->GetOverlayDebugInfo(), "->", (*it)->GetOverlayDebugInfo()));
- #endif
+#endif
- #ifdef COLLECT_DISPLACEMENT_INFO
+#ifdef COLLECT_DISPLACEMENT_INFO
m_displacementInfo.emplace_back(DisplacementData(handle->GetExtendedPixelRect(modelView).Center(),
(*it)->GetExtendedPixelRect(modelView).Center(),
dp::Color(0, 0, 255, 255)));
- #endif
+#endif
it = m_handlesCache.erase(it);
}
@@ -278,15 +283,15 @@ void OverlayTree::InsertHandle(ref_ptr<OverlayHandle> handle,
{
DeleteHandle(rivalHandle);
- #ifdef DEBUG_OVERLAYS_OUTPUT
+#ifdef DEBUG_OVERLAYS_OUTPUT
LOG(LINFO, ("Displace (3):", handle->GetOverlayDebugInfo(), "->", rivalHandle->GetOverlayDebugInfo()));
- #endif
+#endif
- #ifdef COLLECT_DISPLACEMENT_INFO
+#ifdef COLLECT_DISPLACEMENT_INFO
m_displacementInfo.emplace_back(DisplacementData(handle->GetExtendedPixelRect(modelView).Center(),
rivalHandle->GetExtendedPixelRect(modelView).Center(),
dp::Color(0, 0, 255, 255)));
- #endif
+#endif
}
}
@@ -415,6 +420,11 @@ void OverlayTree::SetDisplacementMode(int displacementMode)
m_frameCounter = kInvalidFrame;
}
+void OverlayTree::SetSelectedFeature(FeatureID const & featureID)
+{
+ m_selectedFeatureID = featureID;
+}
+
#ifdef COLLECT_DISPLACEMENT_INFO
OverlayTree::TDisplacementInfo const & OverlayTree::GetDisplacementInfo() const
diff --git a/drape/overlay_tree.hpp b/drape/overlay_tree.hpp
index bf13ae88b5..8a65e18afb 100644
--- a/drape/overlay_tree.hpp
+++ b/drape/overlay_tree.hpp
@@ -65,6 +65,8 @@ public:
void SetDisplacementEnabled(bool enabled);
void SetDisplacementMode(int displacementMode);
+ void SetSelectedFeature(FeatureID const & featureID);
+
#ifdef COLLECT_DISPLACEMENT_INFO
struct DisplacementData
{
@@ -95,6 +97,8 @@ private:
bool m_isDisplacementEnabled;
int m_displacementMode;
+ FeatureID m_selectedFeatureID;
+
#ifdef COLLECT_DISPLACEMENT_INFO
TDisplacementInfo m_displacementInfo;
#endif