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
diff options
context:
space:
mode:
-rw-r--r--drape_frontend/drape_engine.cpp1
-rw-r--r--drape_frontend/user_mark_shapes.cpp2
-rw-r--r--drape_frontend/user_mark_shapes.hpp2
-rw-r--r--drape_frontend/user_marks_provider.hpp1
-rw-r--r--map/routing_mark.hpp4
-rw-r--r--map/user_mark.hpp8
6 files changed, 14 insertions, 4 deletions
diff --git a/drape_frontend/drape_engine.cpp b/drape_frontend/drape_engine.cpp
index e160a79c73..b44f493de3 100644
--- a/drape_frontend/drape_engine.cpp
+++ b/drape_frontend/drape_engine.cpp
@@ -853,6 +853,7 @@ drape_ptr<UserMarkRenderParams> DrapeEngine::GenerateMarkRenderInfo(UserPointMar
renderInfo->m_minZoom = mark->GetMinZoom();
renderInfo->m_minTitleZoom = mark->GetMinTitleZoom();
renderInfo->m_isVisible = mark->IsVisible();
+ renderInfo->m_autoVisibleMinZoom = mark->GetAutoVisibleMinZoom();
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 2d15ead4c0..ada8a24dc3 100644
--- a/drape_frontend/user_mark_shapes.cpp
+++ b/drape_frontend/user_mark_shapes.cpp
@@ -349,7 +349,7 @@ void CacheUserMarks(ref_ptr<dp::GraphicsContext> context, TileKey const & tileKe
continue;
UserMarkRenderParams & renderInfo = *it->second;
- if (!renderInfo.m_isVisible)
+ if (!renderInfo.m_isVisible && renderInfo.m_autoVisibleMinZoom > tileKey.m_zoomLevel)
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 51534d8a08..38ca36b7e1 100644
--- a/drape_frontend/user_mark_shapes.hpp
+++ b/drape_frontend/user_mark_shapes.hpp
@@ -8,6 +8,7 @@
#include "geometry/spline.hpp"
+#include <limits>
#include <memory>
#include <unordered_map>
@@ -38,6 +39,7 @@ struct UserMarkRenderParams
bool m_hasCreationAnimation = false;
bool m_justCreated = false;
bool m_isVisible = true;
+ int m_autoVisibleMinZoom = std::numeric_limits<int>::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 bd2487088d..9fa4f6fba6 100644
--- a/drape_frontend/user_marks_provider.hpp
+++ b/drape_frontend/user_marks_provider.hpp
@@ -64,6 +64,7 @@ public:
virtual float GetDepth() const = 0;
virtual DepthLayer GetDepthLayer() const = 0;
virtual bool IsVisible() const = 0;
+ virtual int GetAutoVisibleMinZoom() const = 0;
virtual drape_ptr<TitlesInfo> GetTitleDecl() const = 0;
virtual drape_ptr<SymbolNameZoomInfo> GetSymbolNames() const = 0;
virtual drape_ptr<SymbolNameZoomInfo> GetBadgeNames() const = 0;
diff --git a/map/routing_mark.hpp b/map/routing_mark.hpp
index 0471394dff..0b2ee3d85d 100644
--- a/map/routing_mark.hpp
+++ b/map/routing_mark.hpp
@@ -205,6 +205,8 @@ enum class RoadWarningMarkType : uint8_t
class RoadWarningMark : public UserMark
{
+ int const kAutoVisibleMinZoom = 13;
+
public:
explicit RoadWarningMark(m2::PointD const & ptOrg);
@@ -227,6 +229,8 @@ public:
drape_ptr<SymbolNameZoomInfo> GetSymbolNames() const override;
+ int GetAutoVisibleMinZoom() const override { return kAutoVisibleMinZoom; }
+
static std::string GetLocalizedRoadWarningType(RoadWarningMarkType type);
private:
diff --git a/map/user_mark.hpp b/map/user_mark.hpp
index dc70dfa827..7f4785c08b 100644
--- a/map/user_mark.hpp
+++ b/map/user_mark.hpp
@@ -9,9 +9,10 @@
#include "base/macros.hpp"
-#include "std/string.hpp"
-#include "std/unique_ptr.hpp"
-#include "std/utility.hpp"
+#include <limits>
+#include <memory>
+#include <string>
+#include <utility>
class UserMark : public df::UserPointMark
{
@@ -59,6 +60,7 @@ public:
bool IsDirty() const override { return m_isDirty; }
void ResetChanges() const override { m_isDirty = false; }
bool IsVisible() const override { return true; }
+ int GetAutoVisibleMinZoom() const override { return std::numeric_limits<int>::max(); }
m2::PointD const & GetPivot() const override;
m2::PointD GetPixelOffset() const override { return {}; }
dp::Anchor GetAnchor() const override { return dp::Center; }