diff --git a/libs/map/bookmark_manager.cpp b/libs/map/bookmark_manager.cpp index 81ff5b556..30d54ef55 100644 --- a/libs/map/bookmark_manager.cpp +++ b/libs/map/bookmark_manager.cpp @@ -1163,32 +1163,25 @@ std::string BookmarkManager::GenerateSavedRouteName(std::string const & from, st return GenerateTrackRecordingName(); } -kml::TrackId BookmarkManager::SaveRoute(std::vector const & points, - std::string const & from, std::string const & to) +kml::TrackId BookmarkManager::SaveRoute(std::vector points, std::string const & from, + std::string const & to) { CHECK(!points.empty(), ("Route points should not be empty")); - kml::MultiGeometry geometry; - geometry.m_lines.emplace_back(); - geometry.m_timestamps.emplace_back(); - auto & line = geometry.m_lines.back(); - - for (auto const & pt : points) - line.emplace_back(pt); - kml::TrackData trackData; - trackData.m_geometry = std::move(geometry); + trackData.m_geometry.m_lines.push_back(std::move(points)); + trackData.m_geometry.m_timestamps.emplace_back(); - auto trackName = GenerateSavedRouteName(from, to); - kml::SetDefaultStr(trackData.m_name, trackName); + kml::SetDefaultStr(trackData.m_name, GenerateSavedRouteName(from, to)); kml::ColorData colorData; colorData.m_rgba = GenerateTrackRecordingColor().GetRGBA(); kml::TrackLayer layer; layer.m_color = colorData; - std::vector m_layers; - m_layers.emplace_back(layer); - trackData.m_layers = std::move(m_layers); + + std::vector layers; + layers.emplace_back(layer); + trackData.m_layers = std::move(layers); trackData.m_timestamp = kml::TimestampClock::now(); diff --git a/libs/map/bookmark_manager.hpp b/libs/map/bookmark_manager.hpp index cf5e663d0..d59774344 100644 --- a/libs/map/bookmark_manager.hpp +++ b/libs/map/bookmark_manager.hpp @@ -430,7 +430,7 @@ public: std::string GenerateTrackRecordingName() const; dp::Color GenerateTrackRecordingColor() const; - kml::TrackId SaveRoute(std::vector const & points, std::string const & from, + kml::TrackId SaveRoute(std::vector points, std::string const & from, std::string const & to); private: diff --git a/libs/map/routing_manager.cpp b/libs/map/routing_manager.cpp index beb7bc562..9fd6f2adf 100644 --- a/libs/map/routing_manager.cpp +++ b/libs/map/routing_manager.cpp @@ -1084,16 +1084,14 @@ kml::TrackId RoutingManager::SaveRoute() std::vector junctions; RoutingSession().GetRouteJunctionPoints(junctions); - junctions.erase(std::unique(junctions.begin(), junctions.end(), - [](geometry::PointWithAltitude const & p1, geometry::PointWithAltitude const & p2) - { return AlmostEqualAbs(p1, p2, kMwmPointAccuracy); }), - junctions.end()); + base::Unique(junctions, [](geometry::PointWithAltitude const & p1, geometry::PointWithAltitude const & p2) + { return AlmostEqualAbs(p1, p2, kMwmPointAccuracy); }); auto const routePoints = GetRoutePoints(); std::string const from = GetNameFromPoint(routePoints.front()); std::string const to = GetNameFromPoint(routePoints.back()); - return m_bmManager->SaveRoute(junctions, from, to); + return m_bmManager->SaveRoute(std::move(junctions), from, to); } bool RoutingManager::DisableFollowMode() diff --git a/libs/routing/routing_session.cpp b/libs/routing/routing_session.cpp index 2014ccc58..48bb2b9f8 100644 --- a/libs/routing/routing_session.cpp +++ b/libs/routing/routing_session.cpp @@ -1,8 +1,5 @@ #include "routing/routing_session.hpp" -#include "routing/routing_helpers.hpp" -#include "routing/speed_camera.hpp" - #include "platform/distance.hpp" #include "platform/location.hpp" #include "platform/measurement_utils.hpp" @@ -789,15 +786,12 @@ bool RoutingSession::GetRouteJunctionPoints(std::vectorGetRouteSegments(); + CHECK(!segments.empty(), ()); + routeJunctionPoints.reserve(segments.size()); + for (auto const & s : segments) + routeJunctionPoints.push_back(s.GetJunction()); - for (size_t i = 0; i < segments.size(); ++i) - { - auto const & junction = segments[i].GetJunction(); - routeJunctionPoints.push_back(junction); - } - - ASSERT_EQUAL(routeJunctionPoints.size(), routeJunctionPoints.size(), ()); return true; }