| 11 | } |
| 12 | |
| 13 | void RouteSegmentsFrom(std::vector<Segment> const & segments, std::vector<m2::PointD> const & path, |
| 14 | std::vector<turns::TurnItem> const & turns, |
| 15 | std::vector<RouteSegment::RoadNameInfo> const & names, std::vector<RouteSegment> & routeSegments) |
| 16 | { |
| 17 | size_t size = segments.size(); |
| 18 | if (size == 0) |
| 19 | size = turns.size(); |
| 20 | if (size == 0) |
| 21 | size = names.size(); |
| 22 | if (size == 0) |
| 23 | size = path.size() - 1; |
| 24 | |
| 25 | ASSERT(segments.empty() || segments.size() == size, ()); |
| 26 | ASSERT(turns.empty() || turns.size() == size, ()); |
| 27 | ASSERT(names.empty() || names.size() == size, ()); |
| 28 | ASSERT(path.empty() || path.size() - 1 == size, ()); |
| 29 | |
| 30 | for (size_t i = 0; i < size; ++i) |
| 31 | { |
| 32 | geometry::PointWithAltitude point; |
| 33 | if (path.size() > 0) |
| 34 | point = geometry::PointWithAltitude(path[i + 1], geometry::kDefaultAltitudeMeters); |
| 35 | Segment segment({0, 0, 0, true}); |
| 36 | if (segments.size() > 0) |
| 37 | segment = segments[i]; |
| 38 | turns::TurnItem turn; |
| 39 | if (turns.size() > 0) |
| 40 | { |
| 41 | turn = turns[i]; |
| 42 | ASSERT(turn.m_index == i + 1, ()); |
| 43 | } |
| 44 | RouteSegment::RoadNameInfo name; |
| 45 | if (names.size() > 0) |
| 46 | name = names[i]; |
| 47 | routeSegments.emplace_back(segment, turn, point, name); |
| 48 | } |
| 49 | } |
| 50 | } // namespace routing |