diff --git a/drape_frontend/drape_engine.cpp b/drape_frontend/drape_engine.cpp index 23c2a573fd..635d5b9308 100644 --- a/drape_frontend/drape_engine.cpp +++ b/drape_frontend/drape_engine.cpp @@ -862,7 +862,6 @@ drape_ptr DrapeEngine::GenerateMarkRenderInfo(UserPointMar renderInfo->m_minZoom = mark->GetMinZoom(); renderInfo->m_minTitleZoom = mark->GetMinTitleZoom(); renderInfo->m_isVisible = mark->IsVisible(); - renderInfo->m_alwaysVisibleMinZoom = mark->GetAlwaysVisibleMinZoom(); renderInfo->m_pivot = mark->GetPivot(); renderInfo->m_pixelOffset = mark->GetPixelOffset(); renderInfo->m_titleDecl = mark->GetTitleDecl(); diff --git a/drape_frontend/user_mark_shapes.cpp b/drape_frontend/user_mark_shapes.cpp index e45fff5d84..188e99ba00 100644 --- a/drape_frontend/user_mark_shapes.cpp +++ b/drape_frontend/user_mark_shapes.cpp @@ -362,7 +362,7 @@ void CacheUserMarks(ref_ptr context, TileKey const & tileKe continue; UserMarkRenderParams & renderInfo = *it->second; - if (!renderInfo.m_isVisible && renderInfo.m_alwaysVisibleMinZoom > tileKey.m_zoomLevel) + if (!renderInfo.m_isVisible) continue; m2::PointD const tileCenter = tileKey.GetGlobalRect().Center(); diff --git a/drape_frontend/user_mark_shapes.hpp b/drape_frontend/user_mark_shapes.hpp index fab562887b..37b2ed1287 100644 --- a/drape_frontend/user_mark_shapes.hpp +++ b/drape_frontend/user_mark_shapes.hpp @@ -39,7 +39,6 @@ struct UserMarkRenderParams bool m_hasCreationAnimation = false; bool m_justCreated = false; bool m_isVisible = true; - int m_alwaysVisibleMinZoom = std::numeric_limits::max(); FeatureID m_featureId; bool m_isMarkAboveText = false; }; diff --git a/drape_frontend/user_marks_provider.hpp b/drape_frontend/user_marks_provider.hpp index 5f6d729716..951f76cce7 100644 --- a/drape_frontend/user_marks_provider.hpp +++ b/drape_frontend/user_marks_provider.hpp @@ -65,7 +65,6 @@ public: virtual float GetDepth() const = 0; virtual DepthLayer GetDepthLayer() const = 0; virtual bool IsVisible() const = 0; - virtual int GetAlwaysVisibleMinZoom() const = 0; virtual drape_ptr GetTitleDecl() const = 0; virtual drape_ptr GetSymbolNames() const = 0; virtual drape_ptr GetBadgeNames() const = 0; diff --git a/map/framework.cpp b/map/framework.cpp index 802e24cb83..a1bd3b1e74 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -2303,8 +2303,6 @@ void Framework::ActivateMapSelection(bool needAnimation, df::SelectionShape::ESe SetDisplacementMode(DisplacementModeManager::SLOT_MAP_SELECTION, ftypes::IsHotelChecker::Instance()(info.GetTypes()) /* show */); - m_routingManager.UpdateRouteMarksVisibility(info.IsRoadType() ? info.GetRoadType() : RoadWarningMarkType::Count); - if (m_activateMapSelectionFn) m_activateMapSelectionFn(info); else @@ -2319,8 +2317,6 @@ void Framework::DeactivateMapSelection(bool notifyUI) if (notifyUI && m_deactivateMapSelectionFn) m_deactivateMapSelectionFn(!somethingWasAlreadySelected); - m_routingManager.UpdateRouteMarksVisibility(RoadWarningMarkType::Count); - if (somethingWasAlreadySelected && m_drapeEngine != nullptr) m_drapeEngine->DeselectObject(); @@ -2545,12 +2541,7 @@ UserMark const * Framework::FindUserMarkInTapPosition(df::TapInfo const & tapInf return tapInfo.GetRoutingPointSearchRect(m_currentModelView); return tapInfo.GetDefaultSearchRect(m_currentModelView); }, - [this](UserMark::Type type) - { - if (type == UserMark::Type::ROAD_WARNING) - return GetDrawScale() < RoadWarningMark::kAlwaysVisibleMinZoom; - return false; - }); + [](UserMark::Type type) { return false; }); return mark; } diff --git a/map/routing_manager.cpp b/map/routing_manager.cpp index cf6b33ae05..c64162471a 100644 --- a/map/routing_manager.cpp +++ b/map/routing_manager.cpp @@ -590,7 +590,6 @@ void RoutingManager::CreateRoadWarningMarks(RoadWarningsCollection && roadWarnin auto const & routeInfo = typeInfo.second[i]; auto mark = es.CreateUserMark(routeInfo.m_startPoint); mark->SetIndex(static_cast(i)); - mark->SetIsVisible(i == 0); mark->SetRoadWarningType(type); mark->SetFeatureId(routeInfo.m_featureId); std::string distanceStr; @@ -1495,18 +1494,3 @@ bool RoutingManager::IsSpeedLimitExceeded() const { return m_routingSession.IsSpeedLimitExceeded(); } - -void RoutingManager::UpdateRouteMarksVisibility(RoadWarningMarkType selectedType) -{ - auto const markIds = m_bmManager->GetUserMarkIds(UserMark::Type::ROAD_WARNING); - if (markIds.empty()) - return; - - auto es = m_bmManager->GetEditSession(); - for (auto id : markIds) - { - auto mark = es.GetMarkForEdit(id); - auto const isVisible = mark->GetIndex() == 0 || selectedType == mark->GetRoadWarningType(); - mark->SetIsVisible(isVisible); - } -} diff --git a/map/routing_manager.hpp b/map/routing_manager.hpp index 20c4f543cd..efa6870d79 100644 --- a/map/routing_manager.hpp +++ b/map/routing_manager.hpp @@ -286,8 +286,6 @@ public: /// \brief It deletes file with saved route points if it exists. void DeleteSavedRoutePoints(); - void UpdateRouteMarksVisibility(RoadWarningMarkType selectedType); - void UpdatePreviewMode(); void CancelPreviewMode(); diff --git a/map/routing_mark.cpp b/map/routing_mark.cpp index f7f39841b5..9a94bb23ff 100644 --- a/map/routing_mark.cpp +++ b/map/routing_mark.cpp @@ -621,18 +621,27 @@ RoadWarningMark::RoadWarningMark(m2::PointD const & ptOrg) : UserMark(ptOrg, Type::ROAD_WARNING) {} +uint16_t RoadWarningMark::GetPriority() const +{ + if (m_index == 0) + { + switch (m_type) + { + case RoadWarningMarkType::Toll: return static_cast(Priority::RoadWarningFirstToll); + case RoadWarningMarkType::Ferry: return static_cast(Priority::RoadWarningFirstFerry); + case RoadWarningMarkType::Dirty: return static_cast(Priority::RoadWarningFirstDirty); + case RoadWarningMarkType::Count: CHECK(false, ()); break; + } + } + return static_cast(Priority::RoadWarning); +} + void RoadWarningMark::SetIndex(uint32_t index) { SetDirty(); m_index = index; } -void RoadWarningMark::SetIsVisible(bool isVisible) -{ - SetDirty(); - m_isVisible = isVisible; -} - void RoadWarningMark::SetRoadWarningType(RoadWarningMarkType type) { SetDirty(); @@ -666,13 +675,6 @@ drape_ptr RoadWarningMark::GetSymbolNames return symbol; } -drape_ptr RoadWarningMark::GetColoredSymbols() const -{ - auto coloredSymbol = make_unique_dp(); - coloredSymbol->m_isSymbolStub = true; - return coloredSymbol; -} - // static std::string RoadWarningMark::GetLocalizedRoadWarningType(RoadWarningMarkType type) { diff --git a/map/routing_mark.hpp b/map/routing_mark.hpp index 8745e0e3b1..7899776bba 100644 --- a/map/routing_mark.hpp +++ b/map/routing_mark.hpp @@ -207,21 +207,17 @@ enum class RoadWarningMarkType : uint8_t class RoadWarningMark : public UserMark { public: - static int constexpr kAlwaysVisibleMinZoom = 13; - explicit RoadWarningMark(m2::PointD const & ptOrg); + bool SymbolIsPOI() const override { return true; } dp::Anchor GetAnchor() const override { return dp::Anchor::Bottom; } df::DepthLayer GetDepthLayer() const override { return df::DepthLayer::RoutingBottomMarkLayer; } - uint16_t GetPriority() const override { return static_cast(Priority::RoadWarning); } + uint16_t GetPriority() const override; df::SpecialDisplacement GetDisplacement() const override { return df::SpecialDisplacement::SpecialModeUserMark; } void SetIndex(uint32_t index); uint32_t GetIndex() const override { return m_index; } - void SetIsVisible(bool isVisible); - bool IsVisible() const override { return m_isVisible; } - void SetRoadWarningType(RoadWarningMarkType type); RoadWarningMarkType GetRoadWarningType() const { return m_type; } @@ -233,10 +229,6 @@ public: drape_ptr GetSymbolNames() const override; - drape_ptr GetColoredSymbols() const override; - - int GetAlwaysVisibleMinZoom() const override { return kAlwaysVisibleMinZoom; } - static std::string GetLocalizedRoadWarningType(RoadWarningMarkType type); private: @@ -244,7 +236,6 @@ private: FeatureID m_featureId; uint32_t m_index = 0; std::string m_distance; - bool m_isVisible = true; }; std::string DebugPrint(RoadWarningMarkType type); diff --git a/map/user_mark.hpp b/map/user_mark.hpp index 48149f7dca..0081e64f4f 100644 --- a/map/user_mark.hpp +++ b/map/user_mark.hpp @@ -31,6 +31,9 @@ public: TransitKeyStop, SpeedCamera, RoadWarning, + RoadWarningFirstFerry, + RoadWarningFirstDirty, + RoadWarningFirstToll, }; enum Type : uint32_t @@ -62,7 +65,6 @@ public: bool IsDirty() const override { return m_isDirty; } void ResetChanges() const override { m_isDirty = false; } bool IsVisible() const override { return true; } - int GetAlwaysVisibleMinZoom() const override { return std::numeric_limits::max(); } m2::PointD const & GetPivot() const override; m2::PointD GetPixelOffset() const override { return {}; } dp::Anchor GetAnchor() const override { return dp::Center; }