From 1d9a6ea537bec486b17fbdec011604cf0d87cc1e Mon Sep 17 00:00:00 2001 From: Denis Koronchik Date: Sat, 19 Jun 2021 14:50:55 +0200 Subject: [PATCH] [drape] Add scale factor for POI extending Signed-off-by: Denis Koronchik --- drape_frontend/apply_feature_functors.cpp | 7 +++++-- drape_frontend/visual_params.cpp | 7 +++++++ drape_frontend/visual_params.hpp | 5 ++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/drape_frontend/apply_feature_functors.cpp b/drape_frontend/apply_feature_functors.cpp index 170d8744f2..eaa6823dfc 100644 --- a/drape_frontend/apply_feature_functors.cpp +++ b/drape_frontend/apply_feature_functors.cpp @@ -516,9 +516,12 @@ void ApplyPointFeature::Finish(ref_ptr texMng) } bool const hasPOI = m_symbolRule != nullptr; - double const mainScale = df::VisualParams::Instance().GetVisualScale(); + auto const & visualParams = df::VisualParams::Instance(); + double const mainScale = visualParams.GetVisualScale(); if (hasPOI) { + double const poiExtendScale = visualParams.GetPoiExtendScale(); + PoiSymbolViewParams params; params.m_featureId = m_id; params.m_tileCenter = m_tileRect.Center(); @@ -529,7 +532,7 @@ void ApplyPointFeature::Finish(ref_ptr texMng) params.m_minVisibleScale = m_minVisibleScale; params.m_rank = m_rank; params.m_symbolName = m_symbolRule->name(); - params.m_extendingSize = static_cast(mainScale * m_symbolRule->min_distance()); + params.m_extendingSize = static_cast(mainScale * m_symbolRule->min_distance() * poiExtendScale); params.m_posZ = m_posZ; params.m_hasArea = m_hasArea; params.m_prioritized = m_createdByEditor; diff --git a/drape_frontend/visual_params.cpp b/drape_frontend/visual_params.cpp index fad9450883..1966399c63 100644 --- a/drape_frontend/visual_params.cpp +++ b/drape_frontend/visual_params.cpp @@ -38,6 +38,7 @@ double const VisualParams::kXxxhdpiScale = 3.5; VisualParams::VisualParams() : m_tileSize(0) , m_visualScale(0.0) + , m_poiExtendScale(0.1) // found empirically , m_fontScale(1.0) {} @@ -140,6 +141,12 @@ double VisualParams::GetVisualScale() const return m_visualScale; } +double VisualParams::GetPoiExtendScale() const +{ + ASSERT_INITED; + return m_poiExtendScale; +} + uint32_t VisualParams::GetTileSize() const { ASSERT_INITED; diff --git a/drape_frontend/visual_params.hpp b/drape_frontend/visual_params.hpp index b0b26a4db3..844bcb8ebd 100644 --- a/drape_frontend/visual_params.hpp +++ b/drape_frontend/visual_params.hpp @@ -31,6 +31,8 @@ public: std::string const & GetResourcePostfix() const; double GetVisualScale() const; + /// This is a scale factor to decrease extending of bbox for POI icons. It could be removed with new style + double GetPoiExtendScale() const; uint32_t GetTileSize() const; /// How many pixels around touch point are used to get bookmark or POI in consideration of visual scale. @@ -64,6 +66,7 @@ private: uint32_t m_tileSize; double m_visualScale; + double m_poiExtendScale; GlyphVisualParams m_glyphVisualParams; std::atomic m_fontScale; @@ -99,7 +102,7 @@ uint32_t CalculateTileSize(uint32_t screenWidth, uint32_t screenHeight); void ExtractZoomFactors(ScreenBase const & s, double & zoom, int & index, float & lerpCoef); float InterpolateByZoomLevelsImpl(int index, float lerpCoef, float const * values, - size_t valuesSize); + size_t valuesSize); template inline float InterpolateByZoomLevels(int index, float lerpCoef, Array const & values) {