diff --git a/drape_frontend/colored_symbol_shape.cpp b/drape_frontend/colored_symbol_shape.cpp index ae816e1caf..d45913bc6b 100644 --- a/drape_frontend/colored_symbol_shape.cpp +++ b/drape_frontend/colored_symbol_shape.cpp @@ -293,7 +293,7 @@ void ColoredSymbolShape::Draw(ref_ptr context, ref_ptrSetSpecialLayerOverlay(true); } @@ -314,7 +314,7 @@ uint64_t ColoredSymbolShape::GetOverlayPriority() const { // Special displacement mode. if (m_params.m_specialDisplacement == SpecialDisplacement::SpecialMode || - m_params.m_specialDisplacement == SpecialDisplacement::TransitScheme) + m_params.m_specialDisplacement == SpecialDisplacement::SpecialModeUserMark) { return dp::CalculateSpecialModePriority(m_params.m_specialPriority); } diff --git a/drape_frontend/drape_engine.cpp b/drape_frontend/drape_engine.cpp index c52ef805bd..7f39627f7b 100644 --- a/drape_frontend/drape_engine.cpp +++ b/drape_frontend/drape_engine.cpp @@ -858,6 +858,7 @@ drape_ptr DrapeEngine::GenerateMarkRenderInfo(UserPointMar renderInfo->m_hasSymbolShapes = mark->HasSymbolShapes(); renderInfo->m_hasTitlePriority = mark->HasTitlePriority(); renderInfo->m_priority = mark->GetPriority(); + renderInfo->m_displacement = mark->GetDisplacement(); renderInfo->m_index = mark->GetIndex(); renderInfo->m_featureId = mark->GetFeatureID(); renderInfo->m_hasCreationAnimation = mark->HasCreationAnimation(); diff --git a/drape_frontend/poi_symbol_shape.cpp b/drape_frontend/poi_symbol_shape.cpp index e2a6384c9b..cc117549f9 100644 --- a/drape_frontend/poi_symbol_shape.cpp +++ b/drape_frontend/poi_symbol_shape.cpp @@ -165,7 +165,7 @@ drape_ptr PoiSymbolShape::CreateOverlayHandle(m2::PointF cons handle->SetPivotZ(m_params.m_posZ); handle->SetExtendingSize(m_params.m_extendingSize); if (m_params.m_specialDisplacement == SpecialDisplacement::UserMark || - m_params.m_specialDisplacement == SpecialDisplacement::TransitScheme) + m_params.m_specialDisplacement == SpecialDisplacement::SpecialModeUserMark) { handle->SetSpecialLayerOverlay(true); } @@ -181,7 +181,7 @@ uint64_t PoiSymbolShape::GetOverlayPriority() const // Special displacement mode. if (m_params.m_specialDisplacement == SpecialDisplacement::SpecialMode || - m_params.m_specialDisplacement == SpecialDisplacement::TransitScheme) + m_params.m_specialDisplacement == SpecialDisplacement::SpecialModeUserMark) { return dp::CalculateSpecialModePriority(m_params.m_specialPriority); } diff --git a/drape_frontend/shape_view_params.hpp b/drape_frontend/shape_view_params.hpp index 77db25a0df..b548d3defe 100644 --- a/drape_frontend/shape_view_params.hpp +++ b/drape_frontend/shape_view_params.hpp @@ -29,13 +29,13 @@ struct CommonViewParams m2::PointD m_tileCenter; }; -enum class SpecialDisplacement +enum class SpecialDisplacement : uint8_t { None, SpecialMode, UserMark, + SpecialModeUserMark, HouseNumber, - TransitScheme }; struct CommonOverlayViewParams : public CommonViewParams diff --git a/drape_frontend/text_shape.cpp b/drape_frontend/text_shape.cpp index 6fc2b7464c..3f78b6acc4 100644 --- a/drape_frontend/text_shape.cpp +++ b/drape_frontend/text_shape.cpp @@ -354,7 +354,7 @@ void TextShape::DrawSubStringPlain(ref_ptr context, handle->SetExtendingSize(m_params.m_extendingSize); if (m_params.m_specialDisplacement == SpecialDisplacement::UserMark || - m_params.m_specialDisplacement == SpecialDisplacement::TransitScheme) + m_params.m_specialDisplacement == SpecialDisplacement::SpecialModeUserMark) { handle->SetSpecialLayerOverlay(true); } @@ -417,7 +417,7 @@ void TextShape::DrawSubStringOutlined(ref_ptr context, handle->SetExtendingSize(m_params.m_extendingSize); if (m_params.m_specialDisplacement == SpecialDisplacement::UserMark || - m_params.m_specialDisplacement == SpecialDisplacement::TransitScheme) + m_params.m_specialDisplacement == SpecialDisplacement::SpecialModeUserMark) { handle->SetSpecialLayerOverlay(true); } @@ -437,7 +437,7 @@ uint64_t TextShape::GetOverlayPriority() const // Special displacement mode. if (m_params.m_specialDisplacement == SpecialDisplacement::SpecialMode || - m_params.m_specialDisplacement == SpecialDisplacement::TransitScheme) + m_params.m_specialDisplacement == SpecialDisplacement::SpecialModeUserMark) { return dp::CalculateSpecialModePriority(m_params.m_specialPriority); } diff --git a/drape_frontend/transit_scheme_builder.cpp b/drape_frontend/transit_scheme_builder.cpp index 6da0e315f6..a545329eee 100644 --- a/drape_frontend/transit_scheme_builder.cpp +++ b/drape_frontend/transit_scheme_builder.cpp @@ -746,7 +746,7 @@ void TransitSchemeBuilder::GenerateTitles(ref_ptr context, textParams.m_titleDecl.m_anchor = title.m_anchor; textParams.m_depthTestEnabled = false; textParams.m_depthLayer = DepthLayer::TransitSchemeLayer; - textParams.m_specialDisplacement = SpecialDisplacement::TransitScheme; + textParams.m_specialDisplacement = SpecialDisplacement::SpecialModeUserMark; textParams.m_specialPriority = priority; textParams.m_startOverlayRank = dp::OverlayRank0; textParams.m_minVisibleScale = minVisibleScale; @@ -762,7 +762,7 @@ void TransitSchemeBuilder::GenerateTitles(ref_ptr context, colorParams.m_tileCenter = pivot; colorParams.m_depthTestEnabled = false; colorParams.m_depthLayer = DepthLayer::TransitSchemeLayer; - colorParams.m_specialDisplacement = SpecialDisplacement::TransitScheme; + colorParams.m_specialDisplacement = SpecialDisplacement::SpecialModeUserMark; colorParams.m_specialPriority = static_cast(Priority::Stub); colorParams.m_startOverlayRank = dp::OverlayRank0; diff --git a/drape_frontend/user_mark_shapes.cpp b/drape_frontend/user_mark_shapes.cpp index 8340553094..2d15ead4c0 100644 --- a/drape_frontend/user_mark_shapes.cpp +++ b/drape_frontend/user_mark_shapes.cpp @@ -170,7 +170,7 @@ void GenerateColoredSymbolShapes(ref_ptr context, params.m_depth = renderInfo.m_depth; params.m_depthLayer = renderInfo.m_depthLayer; params.m_minVisibleScale = renderInfo.m_minZoom; - params.m_specialDisplacement = SpecialDisplacement::UserMark; + params.m_specialDisplacement = renderInfo.m_displacement; params.m_specialPriority = renderInfo.m_priority; params.m_offset += offset; if (renderInfo.m_symbolSizes != nullptr) @@ -203,7 +203,7 @@ void GeneratePoiSymbolShape(ref_ptr context, params.m_depth = renderInfo.m_depth; params.m_depthLayer = renderInfo.m_depthLayer; params.m_minVisibleScale = renderInfo.m_minZoom; - params.m_specialDisplacement = SpecialDisplacement::UserMark; + params.m_specialDisplacement = renderInfo.m_displacement; params.m_specialPriority = renderInfo.m_priority; params.m_symbolName = symbolName; params.m_anchor = renderInfo.m_anchor; @@ -267,7 +267,7 @@ void GenerateTextShapes(ref_ptr context, uint32_t const overlayIndex = kStartUserMarkOverlayIndex + renderInfo.m_index; if (renderInfo.m_hasTitlePriority) { - params.m_specialDisplacement = SpecialDisplacement::UserMark; + params.m_specialDisplacement = renderInfo.m_displacement; params.m_specialPriority = renderInfo.m_priority; params.m_startOverlayRank = dp::OverlayRank0; if (renderInfo.m_hasSymbolShapes) diff --git a/drape_frontend/user_mark_shapes.hpp b/drape_frontend/user_mark_shapes.hpp index 432942fda9..51534d8a08 100644 --- a/drape_frontend/user_mark_shapes.hpp +++ b/drape_frontend/user_mark_shapes.hpp @@ -30,6 +30,7 @@ struct UserMarkRenderParams bool m_hasSymbolShapes = false; bool m_hasTitlePriority = false; uint16_t m_priority = 0; + SpecialDisplacement m_displacement = SpecialDisplacement::UserMark; uint32_t m_index = 0; bool m_depthTestEnabled = true; float m_depth = 0.0; diff --git a/drape_frontend/user_marks_provider.hpp b/drape_frontend/user_marks_provider.hpp index edc5866ef7..bd2487088d 100644 --- a/drape_frontend/user_marks_provider.hpp +++ b/drape_frontend/user_marks_provider.hpp @@ -71,6 +71,7 @@ public: virtual drape_ptr GetSymbolSizes() const = 0; virtual drape_ptr GetSymbolOffsets() const = 0; virtual uint16_t GetPriority() const = 0; + virtual df::SpecialDisplacement GetDisplacement() const = 0; virtual uint32_t GetIndex() const = 0; virtual bool HasSymbolShapes() const = 0; virtual bool HasTitlePriority() const = 0; diff --git a/map/routing_mark.hpp b/map/routing_mark.hpp index 2b0791e775..1a45ab9abd 100644 --- a/map/routing_mark.hpp +++ b/map/routing_mark.hpp @@ -64,6 +64,7 @@ public: bool HasSymbolShapes() const override { return false; } bool HasTitlePriority() const override { return true; } + df::SpecialDisplacement GetDisplacement() const override { return df::SpecialDisplacement::SpecialModeUserMark; } void SetFollowingMode(bool enabled); @@ -111,6 +112,7 @@ public: bool HasSymbolShapes() const override { return !m_symbolNames.empty() || !m_coloredSymbols.m_zoomInfo.empty(); } bool HasTitlePriority() const override { return true; } + df::SpecialDisplacement GetDisplacement() const override { return df::SpecialDisplacement::SpecialModeUserMark; } void SetAnchor(dp::Anchor anchor); dp::Anchor GetAnchor() const override; @@ -174,6 +176,7 @@ public: bool HasSymbolShapes() const override { return true; } bool HasTitlePriority() const override { return true; } uint16_t GetPriority() const override { return static_cast(Priority::SpeedCamera); } + df::SpecialDisplacement GetDisplacement() const override { return df::SpecialDisplacement::SpecialModeUserMark; } drape_ptr GetSymbolNames() const override; drape_ptr GetTitleDecl() const override; diff --git a/map/user_mark.cpp b/map/user_mark.cpp index 0e8784dd9d..cd077ea8ce 100644 --- a/map/user_mark.cpp +++ b/map/user_mark.cpp @@ -30,21 +30,6 @@ m2::PointD const & UserMark::GetPivot() const return m_ptOrg; } -m2::PointD UserMark::GetPixelOffset() const -{ - return {}; -} - -dp::Anchor UserMark::GetAnchor() const -{ - return dp::Center; -} - -df::DepthLayer UserMark::GetDepthLayer() const -{ - return df::DepthLayer::UserMarkLayer; -} - ms::LatLon UserMark::GetLatLon() const { return MercatorBounds::ToLatLon(m_ptOrg); diff --git a/map/user_mark.hpp b/map/user_mark.hpp index 4ca1194117..87bd503bad 100644 --- a/map/user_mark.hpp +++ b/map/user_mark.hpp @@ -59,17 +59,18 @@ public: void ResetChanges() const override { m_isDirty = false; } bool IsVisible() const override { return true; } m2::PointD const & GetPivot() const override; - m2::PointD GetPixelOffset() const override; - dp::Anchor GetAnchor() const override; + m2::PointD GetPixelOffset() const override { return {}; } + dp::Anchor GetAnchor() const override { return dp::Center; } bool GetDepthTestEnabled() const override { return true; } float GetDepth() const override { return 0.0f; } - df::DepthLayer GetDepthLayer() const override; + df::DepthLayer GetDepthLayer() const override { return df::DepthLayer::UserMarkLayer; } drape_ptr GetTitleDecl() const override { return nullptr; } drape_ptr GetColoredSymbols() const override { return nullptr; } drape_ptr GetBadgeNames() const override { return nullptr; } drape_ptr GetSymbolSizes() const override { return nullptr; } drape_ptr GetSymbolOffsets() const override { return nullptr; } uint16_t GetPriority() const override { return static_cast(Priority::Default); } + df::SpecialDisplacement GetDisplacement() const override { return df::SpecialDisplacement::UserMark; } uint32_t GetIndex() const override { return 0; } bool HasSymbolShapes() const override { return false; } bool HasTitlePriority() const override { return false; }