static void FillLastUsedList(WaypointSelectInfoVector &list, const std::list<unsigned int> &last_used_ids, const Waypoints &waypoints, const GeoPoint location) { list.clear(); if (last_used_ids.empty()) return; for (auto it = last_used_ids.rbegin(); it != last_used_ids.rend(); it++) { const Waypoint* waypoint = waypoints.LookupId(*it); if (waypoint == NULL) continue; list.push_back(*waypoint, location); } }
static void FillList(WaypointSelectInfoVector &dest, const Waypoints &src, GeoPoint location, Angle heading, const WayPointFilterData &filter) { dest.clear(); if (!filter.defined() && src.size() >= 500) return; FilterWaypointVisitor visitor(filter, location, heading, dest); if (filter.distance_index > 0) src.visit_within_radius(location, Units::ToSysDistance( DistanceFilter[filter.distance_index]), visitor); else src.visit_name_prefix(filter.name, visitor); if (filter.distance_index > 0 || filter.direction_index > 0) std::sort(dest.begin(), dest.end(), WaypointDistanceCompare); }
static void FillList(WaypointSelectInfoVector &list, const Waypoints &src, GeoPoint location, Angle heading, const WaypointFilterData &filter) { list.clear(); if (!filter.IsDefined() && src.size() >= 500) return; FilterWaypointVisitor visitor(filter, location, heading, list); if (filter.distance_index > 0) src.VisitWithinRange(location, Units::ToSysDistance( distance_filter_items[filter.distance_index]), visitor); else src.VisitNamePrefix(filter.name, visitor); if (filter.distance_index > 0 || filter.direction_index > 0) std::sort(list.begin(), list.end(), WaypointDistanceCompare); }