From 3e73c24a90fc97b10135fcaf0bd681c7b29211b9 Mon Sep 17 00:00:00 2001 From: Daria Volvenkova Date: Thu, 21 Mar 2019 15:18:23 +0300 Subject: Review fixes. --- drape_frontend/drape_engine.cpp | 2 +- drape_frontend/user_mark_shapes.cpp | 2 +- drape_frontend/user_mark_shapes.hpp | 2 +- drape_frontend/user_marks_provider.hpp | 2 +- map/bookmark_manager.cpp | 4 ++-- map/framework.cpp | 2 +- map/place_page_info.cpp | 8 +++++--- map/routing_manager.cpp | 13 +++++++++---- map/routing_manager.hpp | 1 + map/routing_mark.cpp | 26 ++++++++++++++++++-------- map/routing_mark.hpp | 16 +++++++++------- map/user_mark.hpp | 2 +- 12 files changed, 50 insertions(+), 30 deletions(-) diff --git a/drape_frontend/drape_engine.cpp b/drape_frontend/drape_engine.cpp index 5f1b23e92c..d270f90e49 100644 --- a/drape_frontend/drape_engine.cpp +++ b/drape_frontend/drape_engine.cpp @@ -853,7 +853,7 @@ drape_ptr 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_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 8f2b075c83..89cbab0a60 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_autoVisibleMinZoom > tileKey.m_zoomLevel) + if (!renderInfo.m_isVisible && renderInfo.m_alwaysVisibleMinZoom > 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 184a52d52c..fab562887b 100644 --- a/drape_frontend/user_mark_shapes.hpp +++ b/drape_frontend/user_mark_shapes.hpp @@ -39,7 +39,7 @@ struct UserMarkRenderParams bool m_hasCreationAnimation = false; bool m_justCreated = false; bool m_isVisible = true; - int m_autoVisibleMinZoom = std::numeric_limits::max(); + 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 2740495bd9..5f6d729716 100644 --- a/drape_frontend/user_marks_provider.hpp +++ b/drape_frontend/user_marks_provider.hpp @@ -65,7 +65,7 @@ public: virtual float GetDepth() const = 0; virtual DepthLayer GetDepthLayer() const = 0; virtual bool IsVisible() const = 0; - virtual int GetAutoVisibleMinZoom() 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/bookmark_manager.cpp b/map/bookmark_manager.cpp index c0f8f6fc01..d64e7bee1e 100644 --- a/map/bookmark_manager.cpp +++ b/map/bookmark_manager.cpp @@ -1494,7 +1494,7 @@ private: UserMark const * BookmarkManager::FindNearestUserMark(m2::AnyRectD const & rect) const { CHECK_THREAD_CHECKER(m_threadChecker, ()); - return FindNearestUserMark([&rect](UserMark::Type) { return rect; }, [&rect](UserMark::Type) { return false; }); + return FindNearestUserMark([&rect](UserMark::Type) { return rect; }, [](UserMark::Type) { return false; }); } UserMark const * BookmarkManager::FindNearestUserMark(TTouchRectHolder const & holder, @@ -1508,7 +1508,7 @@ UserMark const * BookmarkManager::FindNearestUserMark(TTouchRectHolder const & h finder(UserMark::Type::API); if (!hasFound) { - for (auto & pair : m_categories) + for (auto const & pair : m_categories) finder(pair.first); } return finder.GetFoundMark(); diff --git a/map/framework.cpp b/map/framework.cpp index bbff55db6c..2fc7d57876 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -2527,7 +2527,7 @@ UserMark const * Framework::FindUserMarkInTapPosition(df::TapInfo const & tapInf [this](UserMark::Type type) { if (type == UserMark::Type::ROAD_WARNING) - return GetDrawScale() < RoadWarningMark::kAutoVisibleMinZoom; + return GetDrawScale() < RoadWarningMark::kAlwaysVisibleMinZoom; return false; }); return mark; diff --git a/map/place_page_info.cpp b/map/place_page_info.cpp index 53350d5735..01fee201c7 100644 --- a/map/place_page_info.cpp +++ b/map/place_page_info.cpp @@ -19,6 +19,8 @@ #include "platform/preferred_languages.hpp" #include "platform/settings.hpp" +#include "base/assert.hpp" + #include #include "private.h" @@ -336,11 +338,11 @@ void Info::SetPartnerIndex(int index) void Info::SetRoadType(FeatureType & ft, RoadWarningMarkType type, std::string const & localizedType, std::string const & distance) { - CHECK(type != RoadWarningMarkType::Count, ()); + CHECK_NOT_EQUAL(type, RoadWarningMarkType::Count, ()); m_roadType = type; std::vector subtitle; - if (type == RoadWarningMarkType::Paid) + if (type == RoadWarningMarkType::Toll) { std::vector title; auto shields = ftypes::GetRoadShields(ft); @@ -361,7 +363,7 @@ void Info::SetRoadType(FeatureType & ft, RoadWarningMarkType type, std::string c else subtitle.push_back(localizedType); } - else if (type == RoadWarningMarkType::Unpaved) + else if (type == RoadWarningMarkType::Dirty) { m_uiTitle = localizedType; subtitle.push_back(distance); diff --git a/map/routing_manager.cpp b/map/routing_manager.cpp index d6eabb19b3..cf6b33ae05 100644 --- a/map/routing_manager.cpp +++ b/map/routing_manager.cpp @@ -214,11 +214,12 @@ VehicleType GetVehicleType(RouterType routerType) RoadWarningMarkType GetRoadType(RoutingOptions::Road road) { if (road == RoutingOptions::Road::Toll) - return RoadWarningMarkType::Paid; + return RoadWarningMarkType::Toll; if (road == RoutingOptions::Road::Ferry) return RoadWarningMarkType::Ferry; if (road == RoutingOptions::Road::Dirty) - return RoadWarningMarkType::Unpaved; + return RoadWarningMarkType::Dirty; + CHECK(false, ("Invalid road type to avoid:", road)); return RoadWarningMarkType::Count; } @@ -241,6 +242,7 @@ drape_ptr CreateDrapeSubroute(vector const & segment points.push_back(startPt); for (auto const & s : segments) points.push_back(s.GetJunction().GetPoint()); + if (points.size() < 2) { LOG(LWARNING, ("Invalid subroute. Points number =", points.size())); @@ -532,7 +534,7 @@ void RoutingManager::RemoveRoute(bool deactivateFollowing) } } -void RoutingManager::CollectRoadWarnings(std::vector const & segments, +void RoutingManager::CollectRoadWarnings(vector const & segments, m2::PointD const & startPt, double baseDistance, GetMwmIdFn const & getMwmIdFn, RoadWarningsCollection & roadWarnings) { @@ -551,7 +553,10 @@ void RoutingManager::CollectRoadWarnings(std::vector cons if (currentType != lastType) { if (isWarnedType(lastType)) + { + ASSERT(!roadWarnings[lastType].empty(), ()); roadWarnings[lastType].back().m_distance = segments[i].GetDistFromBeginningMeters() - startDistance; + } if (isWarnedType(currentType)) { @@ -695,7 +700,7 @@ bool RoutingManager::InsertRoute(Route const & route) if (!roadWarnings.empty()) { - CreateRoadWarningMarks(std::move(roadWarnings)); + CreateRoadWarningMarks(move(roadWarnings)); return true; } return false; diff --git a/map/routing_manager.hpp b/map/routing_manager.hpp index 0641c7ea23..15ddc06558 100644 --- a/map/routing_manager.hpp +++ b/map/routing_manager.hpp @@ -291,6 +291,7 @@ public: void CancelPreviewMode(); private: + /// \returns true if the route has warnings. bool InsertRoute(routing::Route const & route); struct RoadInfo diff --git a/map/routing_mark.cpp b/map/routing_mark.cpp index 400d959be9..f7f39841b5 100644 --- a/map/routing_mark.cpp +++ b/map/routing_mark.cpp @@ -619,9 +619,7 @@ dp::Anchor SpeedCameraMark::GetAnchor() const RoadWarningMark::RoadWarningMark(m2::PointD const & ptOrg) : UserMark(ptOrg, Type::ROAD_WARNING) -{ - -} +{} void RoadWarningMark::SetIndex(uint32_t index) { @@ -658,9 +656,9 @@ drape_ptr RoadWarningMark::GetSymbolNames std::string symbolName; switch (m_type) { + case RoadWarningMarkType::Toll: symbolName = "paid_road"; break; case RoadWarningMarkType::Ferry: symbolName = "ferry"; break; - case RoadWarningMarkType::Paid: symbolName = "paid_road"; break; - case RoadWarningMarkType::Unpaved: symbolName = "unpaved_road"; break; + case RoadWarningMarkType::Dirty: symbolName = "unpaved_road"; break; case RoadWarningMarkType::Count: CHECK(false, ()); break; } auto symbol = make_unique_dp(); @@ -680,10 +678,22 @@ std::string RoadWarningMark::GetLocalizedRoadWarningType(RoadWarningMarkType typ { switch (type) { + case RoadWarningMarkType::Toll: return platform::GetLocalizedString("toll_road"); case RoadWarningMarkType::Ferry: return platform::GetLocalizedString("ferry_crossing"); - case RoadWarningMarkType::Paid: return platform::GetLocalizedString("toll_road"); - case RoadWarningMarkType::Unpaved: return platform::GetLocalizedString("unpaved_road"); - case RoadWarningMarkType::Count: CHECK(false, ()); break; + case RoadWarningMarkType::Dirty: return platform::GetLocalizedString("unpaved_road"); + case RoadWarningMarkType::Count: CHECK(false, ("Invalid road warning mark type", type)); break; } return {}; } + +std::string DebugPrint(RoadWarningMarkType type) +{ + switch (type) + { + case RoadWarningMarkType::Toll: return "Toll"; + case RoadWarningMarkType::Ferry: return "Ferry"; + case RoadWarningMarkType::Dirty: return "Dirty"; + case RoadWarningMarkType::Count: return "Count"; + } + UNREACHABLE(); +} diff --git a/map/routing_mark.hpp b/map/routing_mark.hpp index 8194bdc159..8745e0e3b1 100644 --- a/map/routing_mark.hpp +++ b/map/routing_mark.hpp @@ -197,17 +197,17 @@ private: enum class RoadWarningMarkType : uint8_t { - // Do not change the order! - Unpaved, - Paid, - Ferry, - Count + // Do not change the order, it uses in platforms. + Toll = 0, + Ferry = 1, + Dirty = 2, + Count = 3 }; class RoadWarningMark : public UserMark { public: - static int constexpr kAutoVisibleMinZoom = 13; + static int constexpr kAlwaysVisibleMinZoom = 13; explicit RoadWarningMark(m2::PointD const & ptOrg); @@ -235,7 +235,7 @@ public: drape_ptr GetColoredSymbols() const override; - int GetAutoVisibleMinZoom() const override { return kAutoVisibleMinZoom; } + int GetAlwaysVisibleMinZoom() const override { return kAlwaysVisibleMinZoom; } static std::string GetLocalizedRoadWarningType(RoadWarningMarkType type); @@ -246,3 +246,5 @@ private: 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 a20b8a44a5..8933e9e08a 100644 --- a/map/user_mark.hpp +++ b/map/user_mark.hpp @@ -61,7 +61,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::max(); } + 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; } -- cgit v1.2.3