Ticket #46: waypoints.diff

File waypoints.diff, 22.1 KB (added by heiko wegeler, 8 years ago)

patch from ticket 750 removed (home=/sdcard/navit)

  • home/navit/_navit_develop/work/navit_repo/navit/navit/attr_def.h

     
    234234ATTR(cache)
    235235ATTR(create)
    236236ATTR(persistent)
     237ATTR(waypoints_flag) /* toggle for "set as destination" to switch between start a new route or add */
    237238ATTR2(0x0002ffff,type_int_end)
    238239ATTR2(0x00030000,type_string_begin)
    239240ATTR(type)
  • home/navit/_navit_develop/work/navit_repo/navit/navit/bookmarks.c

     
    130130        return ret;
    131131}
    132132
     133int bookmarks_get_bookmark_count(struct bookmarks* this_) {
     134        int ret=0;
     135        bookmarks_item_rewind(this_);
     136        while (this_->current->iter!=NULL) {
     137                struct bookmark_item_priv* data=(struct bookmark_item_priv*)this_->current->iter->data;
     138                if (data->type == type_bookmark) {
     139                        ret++;
     140                }
     141                this_->current->iter=g_list_next(this_->current->iter);
     142        }
     143        return ret;
     144}
     145
    133146const char* bookmarks_item_cwd(struct bookmarks* this_) {
    134147        return this_->current->label;
    135148}
  • home/navit/_navit_develop/work/navit_repo/navit/navit/bookmarks.h

     
    4545int bookmarks_move_down(struct bookmarks *this_,const char* name);
    4646
    4747struct item* bookmarks_get_item(struct bookmarks* this_);
     48int bookmarks_get_bookmark_count(struct bookmarks* this_);
    4849void bookmarks_item_rewind(struct bookmarks* this_);
    4950const char* bookmarks_item_cwd(struct bookmarks* this_);
    5051
  • home/navit/_navit_develop/work/navit_repo/navit/navit/gui/internal/gui_internal.c

     
    24152415}
    24162416
    24172417static void
     2418gui_internal_cmd_delete_bookmark_folder(struct gui_priv *this, struct widget *wm, void *data)
     2419{
     2420        struct attr mattr;
     2421        GList *l;
     2422        navit_get_attr(this->nav, attr_bookmarks, &mattr, NULL);
     2423        bookmarks_move_up(mattr.u.bookmarks);
     2424        bookmarks_delete_bookmark(mattr.u.bookmarks,wm->prefix);
     2425        l=g_list_first(this->root.children);
     2426        gui_internal_prune_menu(this, l->data);
     2427}
     2428
     2429static void
     2430gui_internal_cmd_load_bookmarks_as_waypoints(struct gui_priv *this, struct widget *wm, void *data)
     2431{
     2432        struct attr mattr;
     2433        if(navit_get_attr(this->nav, attr_bookmarks, &mattr, NULL) ) {
     2434                struct attr attr;
     2435                struct item *item;
     2436                struct coord c;
     2437                struct pcoord *pc;
     2438                int i, bm_count;
     2439
     2440                navit_set_destination(this->nav, NULL, NULL, 0);
     2441
     2442                bm_count=bookmarks_get_bookmark_count(mattr.u.bookmarks);
     2443                pc=g_alloca(bm_count*sizeof(struct pcoord));
     2444                bookmarks_item_rewind(mattr.u.bookmarks);
     2445                i=0;
     2446                while ((item=bookmarks_get_item(mattr.u.bookmarks))) {
     2447                        if (!item_attr_get(item, attr_label, &attr)) continue;
     2448                        if (item->type == type_bookmark) {
     2449                                if (item_coord_get(item, &c, 1)) {
     2450                                        pc[i].x=c.x;
     2451                                        pc[i].y=c.y;
     2452                                        pc[i].pro=projection_mg; /* FIXME */
     2453                                        i++;
     2454                                }
     2455                        }
     2456                }
     2457
     2458                if (bm_count>0){
     2459                        navit_set_destinations(this->nav, pc, bm_count, wm->prefix, 1);
     2460                        if (this->flags & 512) {
     2461                                struct attr follow;
     2462                                follow.type=attr_follow;
     2463                                follow.u.num=180;
     2464                                navit_set_attr(this->nav, &this->osd_configuration);
     2465                                navit_set_attr(this->nav, &follow);
     2466                                navit_zoom_to_route(this->nav, 0);
     2467                        }
     2468                }
     2469        }
     2470
     2471        gui_internal_prune_menu(this, NULL);
     2472}
     2473
     2474static void
     2475gui_internal_cmd_replace_bookmarks_from_waypoints(struct gui_priv *this, struct widget *wm, void *data)
     2476{
     2477        struct attr mattr;
     2478        if(navit_get_attr(this->nav, attr_bookmarks, &mattr, NULL) ) {
     2479                struct attr attr;
     2480                char *desc=NULL;
     2481                struct pcoord *pc;
     2482                int i, bm_count;
     2483
     2484                if (bookmarks_get_bookmark_count(mattr.u.bookmarks)>0){
     2485                        struct item *item;
     2486                        bookmarks_item_rewind(mattr.u.bookmarks);
     2487                        while ((item=bookmarks_get_item(mattr.u.bookmarks))) {
     2488                                if (!item_attr_get(item, attr_label, &attr)) continue;
     2489                                if (item->type == type_bookmark) {
     2490                                        bookmarks_delete_bookmark(mattr.u.bookmarks,  attr.u.str);
     2491                                }
     2492                                bookmarks_move_down(mattr.u.bookmarks, wm->prefix);
     2493                        }
     2494                }
     2495                bookmarks_item_rewind(mattr.u.bookmarks);
     2496
     2497                bm_count=navit_get_destination_count(this->nav);
     2498                pc=g_alloca(bm_count*sizeof(struct pcoord));
     2499                navit_get_destinations(this->nav, pc, bm_count);
     2500
     2501                for (i=0; i<bm_count; i++){
     2502                        desc=g_strdup_printf("%s WP%d", navit_get_destination_description(this->nav, i), i+1);
     2503                        navit_get_attr(this->nav, attr_bookmarks, &attr, NULL);
     2504                        bookmarks_add_bookmark(attr.u.bookmarks, &pc[i], desc);
     2505                        bookmarks_move_down(mattr.u.bookmarks, wm->prefix);
     2506                        g_free(desc);
     2507                }
     2508        }
     2509
     2510        gui_internal_prune_menu(this, NULL);
     2511}
     2512
     2513static void
    24182514get_direction(char *buffer, int angle, int mode)
    24192515{
    24202516        angle=angle%360;
     
    39604056                                                gui_internal_cmd_bookmarks, NULL);
    39614057                                                wbm->prefix=g_strdup("..");
    39624058                                gui_internal_widget_append(w, wbm);
     4059
     4060                                // load bookmark folder as Waypoints, if any
     4061                                if (bookmarks_get_bookmark_count(mattr.u.bookmarks) > 0){
     4062                                        wbm=gui_internal_button_new_with_callback(this, _("Bookmarks as Waypoints"),
     4063                                                        image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
     4064                                                        gui_internal_cmd_load_bookmarks_as_waypoints, NULL);
     4065                                        wbm->prefix=g_strdup(prefix);
     4066                                        gui_internal_widget_append(w, wbm);
     4067                                }
     4068
     4069                                // save Waypoints in bookmark folder, if route exists
     4070                                if (navit_get_destination_count(this->nav) > 0){
     4071                                        if (bookmarks_get_bookmark_count(mattr.u.bookmarks)==0){
     4072                                                wbm=gui_internal_button_new_with_callback(this, _("Save Waypoints"),
     4073                                                                        image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
     4074                                                                        gui_internal_cmd_replace_bookmarks_from_waypoints, NULL);
     4075                                        }else{
     4076                                                wbm=gui_internal_button_new_with_callback(this, _("Replace Waypoints"),
     4077                                                                        image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
     4078                                                                        gui_internal_cmd_replace_bookmarks_from_waypoints, NULL);
     4079                                        }
     4080                                        wbm->prefix=g_strdup(prefix);
     4081                                        gui_internal_widget_append(w, wbm);
     4082                                }
     4083
     4084                                // delete empty folder
     4085                                if (bookmarks_get_bookmark_count(mattr.u.bookmarks)==0){
     4086                                        gui_internal_widget_append(w,
     4087                                                        wbm=gui_internal_button_new_with_callback(this, _("Delete Folder"),
     4088                                                        image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
     4089                                                        gui_internal_cmd_delete_bookmark_folder, NULL));
     4090                                        wbm->prefix=g_strdup(prefix);
     4091                                }
     4092
    39634093                        }
    39644094                }
    39654095               
     
    55985728        gui_internal_widget_append(w,
    55995729                gui_internal_button_navit_attr_new(this, _("Map follows Vehicle"), gravity_left_center|orientation_horizontal|flags_fill,
    56005730                        &on, &off));
     5731        on.u.num=1;
     5732        off.u.num=0;
     5733        on.type=off.type=attr_waypoints_flag;
     5734        gui_internal_widget_append(w,
     5735                        gui_internal_button_navit_attr_new(this, _("Plan with Waypoints"), gravity_left_center|orientation_horizontal|flags_fill,
     5736                                        &on, &off));
    56015737        gui_internal_menu_render(this);
    56025738}
    56035739
     
    75997735}
    76007736
    76017737static void
     7738gui_internal_cmd2_route_remove_last_waypoint(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
     7739{
     7740        navit_remove_nth_waypoint(this->nav, navit_get_destination_count(this->nav)-1);
     7741}
     7742
     7743static void
     7744gui_internal_cmd2_route_remove_next_waypoint(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
     7745{
     7746        navit_remove_waypoint(this->nav);
     7747}
     7748
     7749static void
    76027750gui_internal_cmd2_locale(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
    76037751{
    76047752        struct widget *menu,*wb,*w;
     
    79108058        {"pois",command_cast(gui_internal_cmd2_pois)},
    79118059        {"route_description",command_cast(gui_internal_cmd2_route_description)},
    79128060        {"route_height_profile",command_cast(gui_internal_cmd2_route_height_profile)},
     8061        {"route_remove_last_waypoint",command_cast(gui_internal_cmd2_route_remove_last_waypoint)},
     8062        {"route_remove_next_waypoint",command_cast(gui_internal_cmd2_route_remove_next_waypoint)},
    79138063        {"set",command_cast(gui_internal_cmd2_set)},
    79148064        {"setting_layout",command_cast(gui_internal_cmd2_setting_layout)},
    79158065        {"setting_maps",command_cast(gui_internal_cmd2_setting_maps)},
  • home/navit/_navit_develop/work/navit_repo/navit/navit/main.c

     
    8585        {"NAVIT_SHAREDIR",    ":",          ":/share/navit", ":",           ":/share"},
    8686        {"NAVIT_LOCALEDIR",   ":/../locale",":/share/locale",":\\locale",   ":/locale"},
    8787        {"NAVIT_USER_DATADIR",":",          "~/.navit",      ":\\data",     ":/home"},
     88
    8889#if 1
    8990        {"NAVIT_LOGFILE",     NULL,         NULL,            ":\\navit.log",NULL},
    9091#endif
  • home/navit/_navit_develop/work/navit_repo/navit/navit/navit.c

     
    163163                 /* 2=No gui ok */
    164164        int border;
    165165        int imperial;
     166        int waypoints_flag;
    166167        struct attr **attr_list;
    167168};
    168169
     
    11981199
    11991200
    12001201static void
     1202navit_cmd_route_remove_next_waypoint(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
     1203{
     1204        navit_remove_waypoint(this);
     1205}
     1206
     1207
     1208static void
     1209navit_cmd_route_remove_last_waypoint(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
     1210{
     1211        navit_remove_nth_waypoint(this, navit_get_destination_count(this)-1);
     1212}
     1213
     1214
     1215static void
    12011216navit_cmd_set_center(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
    12021217{
    12031218        struct pcoord pc;
     
    13361351        {"set_center",command_cast(navit_cmd_set_center)},
    13371352        {"set_center_cursor",command_cast(navit_cmd_set_center_cursor)},
    13381353        {"set_destination",command_cast(navit_cmd_set_destination)},
     1354        {"route_remove_next_waypoint",command_cast(navit_cmd_route_remove_next_waypoint)},
     1355        {"route_remove_last_waypoint",command_cast(navit_cmd_route_remove_last_waypoint)},
    13391356        {"set_position",command_cast(navit_cmd_set_position)},
    13401357        {"announcer_toggle",command_cast(navit_cmd_announcer_toggle)},
    13411358        {"fmt_coordinates",command_cast(navit_cmd_fmt_coordinates)},
     
    15111528}
    15121529
    15131530/**
    1514  * Start the route computing to a given set of coordinates
     1531 * Start or add a given set of coordinates for route computing
    15151532 *
    15161533 * @param navit The navit instance
    15171534 * @param c The coordinate to start routing to
     
    15361553        g_free(destination_file);
    15371554        callback_list_call_attr_0(this_->attr_cbl, attr_destination);
    15381555        if (this_->route) {
    1539                 route_set_destination(this_->route, c, async);
     1556                struct attr attr;
     1557                navit_get_attr(this_, attr_waypoints_flag, &attr, NULL);
     1558                if (this_->waypoints_flag==0 || route_get_destination_count(this_->route)==0){
     1559                        route_set_destination(this_->route, c, async);
     1560                }else{
     1561                        route_append_destination(this_->route, c, async);
     1562                }
    15401563
    15411564                if (this_->ready == 3)
    15421565                        navit_draw(this_);
     
    15731596        }
    15741597}
    15751598
     1599int
     1600navit_get_destinations(struct navit *this_, struct pcoord *pc, int count)
     1601{
     1602        return route_get_destinations(this_->route, pc, count);
     1603}
     1604
     1605int
     1606navit_get_destination_count(struct navit *this_)
     1607{
     1608        return route_get_destination_count(this_->route);
     1609}
     1610
     1611char*
     1612navit_get_destination_description(struct navit *this_, int n)
     1613{
     1614        return route_get_destination_description(this_->route, n);
     1615}
     1616
     1617void
     1618navit_remove_nth_waypoint(struct navit *this_, int n)
     1619{
     1620        if (route_get_destination_count(this_->route)>1){
     1621                route_remove_nth_waypoint(this_->route, n);
     1622        }else{
     1623                navit_set_destination(this_, NULL, NULL, 0);
     1624        }
     1625}
     1626
     1627void
     1628navit_remove_waypoint(struct navit *this_)
     1629{
     1630        if (route_get_destination_count(this_->route)>1){
     1631                route_remove_waypoint(this_->route);
     1632        }else{
     1633                navit_set_destination(this_, NULL, NULL, 0);
     1634        }
     1635}
     1636
    15761637/**
    15771638 * @brief Checks if a route is calculated
    15781639 *
     
    24472508                attr_updated=(this_->follow_cursor != !!attr->u.num);
    24482509                this_->follow_cursor=!!attr->u.num;
    24492510                break;
    2450         case attr_imperial:
    2451                 attr_updated=(this_->imperial != attr->u.num);
    2452                 this_->imperial=attr->u.num;
    2453                 break;
     2511        case attr_imperial:
     2512                attr_updated=(this_->imperial != attr->u.num);
     2513                this_->imperial=attr->u.num;
     2514                break;
     2515        case attr_waypoints_flag:
     2516                attr_updated=(this_->waypoints_flag != !!attr->u.num);
     2517                this_->waypoints_flag=!!attr->u.num;
     2518                break;
    24542519        default:
    24552520                return 0;
    24562521        }
     
    26382703        case attr_follow_cursor:
    26392704                attr->u.num=this_->follow_cursor;
    26402705                break;
     2706        case attr_waypoints_flag:
     2707                attr->u.num=this_->waypoints_flag;
     2708                break;
    26412709        default:
    26422710                return 0;
    26432711        }
     
    28272895        int (*get_attr)(void *, enum attr_type, struct attr *, struct attr_iter *);
    28282896        void *attr_object;
    28292897        char *destination_file;
     2898        char *description;
    28302899
    28312900        profile(0,NULL);
    28322901        if (this_->ready != 3) {
     
    28922961        if (this_->route) {
    28932962                switch(route_destination_reached(this_->route)) {
    28942963                case 1:
     2964                        description=route_get_destination_description(this_->route, 0);
    28952965                        route_remove_waypoint(this_->route);
    28962966                        count=route_get_destinations(this_->route, pc, 16);
    28972967                        destination_file = bookmarks_get_destination_file(TRUE);
    2898                         bookmarks_append_coord(this_->former_destination, destination_file, pc, type_former_itinerary_part, NULL, this_->recentdest_count);
     2968                        bookmarks_append_coord(this_->former_destination, destination_file, pc, type_former_itinerary_part, description, this_->recentdest_count);
     2969                        g_free(description);
    28992970                        break; 
    29002971                case 2:
     2972                        description=route_get_destination_description(this_->route, 0);
     2973                        count=route_get_destinations(this_->route, pc, 1);
     2974                        destination_file = bookmarks_get_destination_file(TRUE);
     2975                        bookmarks_append_coord(this_->former_destination, destination_file, pc, type_former_itinerary_part, description, this_->recentdest_count);
     2976                        g_free(description);
    29012977                        navit_set_destination(this_, NULL, NULL, 0);
    29022978                        break;
    29032979                }
  • home/navit/_navit_develop/work/navit_repo/navit/navit/navit.h

     
    5050struct transformation;
    5151struct vehicleprofile;
    5252struct command_table;
     53struct item;
    5354void navit_add_mapset(struct navit *this_, struct mapset *ms);
    5455struct mapset *navit_get_mapset(struct navit *this_);
    5556struct tracking *navit_get_tracking(struct navit *this_);
     
    7879GList *navit_get_vehicleprofiles(struct navit *this_);
    7980void navit_set_destination(struct navit *this_, struct pcoord *c, const char *description, int async);
    8081void navit_set_destinations(struct navit *this_, struct pcoord *c, int count, const char *description, int async);
     82int navit_get_destinations(struct navit *this_, struct pcoord *pc, int count);
     83int navit_get_destination_count(struct navit *this_);
     84char* navit_get_destination_description(struct navit *this_, int n);
     85void navit_remove_nth_waypoint(struct navit *this_, int n);
     86void navit_remove_waypoint(struct navit *this_);
     87char* navit_get_coord_description(struct navit *this_, struct pcoord *c);
    8188int navit_check_route(struct navit *this_);
    8289struct map* read_former_destinations_from_file(void);
    8390void navit_textfile_debug_log(struct navit *this_, const char *fmt, ...);
  • home/navit/_navit_develop/work/navit_repo/navit/navit/navit_shipped.xml

     
    8686                        <a name='Route'><text>Route</text>
    8787                                <img src='gui_actions' onclick='route_description()'><text>Description</text></img>
    8888                                <img src='gui_actions' onclick='route_height_profile()'><text>Height Profile</text></img>
     89                                <img cond='navit.route.route_status&amp;52' src='gui_stop' onclick='route_remove_last_waypoint()'><text>Drop last
     90Waypoint</text></img>
     91                                <img cond='navit.route.route_status&amp;52' src='gui_stop' onclick='route_remove_next_waypoint()'><text>Drop next
     92Waypoint</text></img>
    8993                        </a>
    9094                        </html>
    9195                ]]></gui>
  • home/navit/_navit_develop/work/navit_repo/navit/navit/route.c

     
    542542route_set_profile(struct route *this, struct vehicleprofile *prof)
    543543{
    544544        if (this->vehicleprofile != prof) {
    545                 this->vehicleprofile=prof;
    546                 route_path_update(this, 1, 1);
     545                this->vehicleprofile = prof;
     546                int dest_count = g_list_length(this->destinations);
     547                struct pcoord *pc;
     548                pc = g_alloca(dest_count*sizeof(struct pcoord));
     549                route_get_destinations(this, pc, dest_count);
     550                route_set_destinations(this, pc, dest_count, 1);
    547551        }
    548552}
    549553
     
    10541058        }
    10551059        return ret;
    10561060}
    1057  
     1061
     1062/**
     1063 * @brief Get the destinations count for the route
     1064 *
     1065 * @param this The route instance
     1066 * @return destination count for the route
     1067 */
     1068int
     1069route_get_destination_count(struct route *this)
     1070{
     1071        return g_list_length(this->destinations);
     1072}
     1073
     1074/**
     1075 * @brief Returns a description for a waypoint as (type or street_name_systematic) + (label or WayID[osm_wayid])
     1076 *
     1077 * @param this The route instance
     1078 * @param n The nth waypoint
     1079 * @return The description
     1080 */
     1081char*
     1082route_get_destination_description(struct route *this, int n)
     1083{
     1084        struct route_info *dst;
     1085        struct map_rect *mr=NULL;
     1086        struct item *item;
     1087        struct attr attr;
     1088        char *type=NULL;
     1089        char *label=NULL;
     1090        char *desc=NULL;
     1091
     1092        dst=g_list_nth_data(this->destinations,n);
     1093        mr=map_rect_new(dst->street->item.map, NULL);
     1094        item = map_rect_get_item_byid(mr, dst->street->item.id_hi, dst->street->item.id_lo);
     1095        type=item_to_name(dst->street->item.type);
     1096
     1097        while(item_attr_get(item, attr_any, &attr)) {
     1098                if (attr.type==attr_street_name_systematic){
     1099                        type=attr_to_text(&attr, item->map, 1);
     1100                }
     1101                if (attr.type==attr_label){
     1102                        char *attrtxt;
     1103                        g_free(label);
     1104                        label=g_strdup_printf("%s", attrtxt=attr_to_text(&attr, item->map, 1));
     1105                        g_free(attrtxt);
     1106                }else if (attr.type==attr_osm_wayid && label==NULL){
     1107                        char *attrtxt;
     1108                        label=g_strdup_printf("WayID %s", attrtxt=attr_to_text(&attr, item->map, 1));
     1109                        g_free(attrtxt);
     1110                }
     1111        }
     1112
     1113        if (type!=NULL && label!=NULL){
     1114                if (strcmp(type, label)==0){
     1115                        desc=g_strdup_printf("%s", type);
     1116                }else{
     1117                        desc=g_strdup_printf("%s %s", type, label);
     1118                }
     1119        }else{
     1120                desc="unknown way";
     1121        }
     1122
     1123        g_free(label);
     1124        if (mr!=NULL){
     1125                map_rect_destroy(mr);
     1126        }
     1127        return desc;
     1128}
     1129
     1130/**
     1131 * @brief Start a route given set of coordinates
     1132 *
     1133 * @param this The route instance
     1134 * @param c The coordinate to start routing to
     1135 * @param async 1 for async
     1136 * @return nothing
     1137 */
    10581138void
    10591139route_set_destination(struct route *this, struct pcoord *dst, int async)
    10601140{
     
    10611141        route_set_destinations(this, dst, dst?1:0, async);
    10621142}
    10631143
     1144/**
     1145 * @brief Append a given set of coordinates for route computing
     1146 *
     1147 * @param this The route instance
     1148 * @param c The coordinate to start routing to
     1149 * @param async 1 for async
     1150 * @return nothing
     1151 */
     1152void
     1153route_append_destination(struct route *this, struct pcoord *dst, int async)
     1154{
     1155        if (dst){
     1156                struct route_info *dsti;
     1157                dsti=route_find_nearest_street(this->vehicleprofile, this->ms, &dst[0]);
     1158                if(dsti) {
     1159                        route_info_distances(dsti, dst->pro);
     1160                        this->destinations=g_list_append(this->destinations, dsti);
     1161                }
     1162                /* The graph has to be destroyed and set to NULL, otherwise route_path_update() doesn't work */
     1163                route_graph_destroy(this->graph);
     1164                this->graph=NULL;
     1165                this->current_dst=route_get_dst(this);
     1166                route_path_update(this, 1, async);
     1167        }else{
     1168                route_set_destinations(this, NULL, 0, async);
     1169        }
     1170}
     1171
     1172/**
     1173 * @brief Remove the nth waypoint of the route
     1174 *
     1175 * @param this The route instance
     1176 * @param n The waypoint to remove
     1177 * @return nothing
     1178 */
     1179void
     1180route_remove_nth_waypoint(struct route *this, int n)
     1181{
     1182        this->destinations=g_list_remove(this->destinations,g_list_nth_data(this->destinations, n));
     1183        /* The graph has to be destroyed and set to NULL, otherwise route_path_update() doesn't work */
     1184        route_graph_destroy(this->graph);
     1185        this->graph=NULL;
     1186        this->current_dst=route_get_dst(this);
     1187        route_path_update(this, 1, 1);
     1188}
     1189
    10641190void
    10651191route_remove_waypoint(struct route *this)
    10661192{
  • home/navit/_navit_develop/work/navit_repo/navit/navit/route.h

     
    9595struct map_selection *route_rect(int order, struct coord *c1, struct coord *c2, int rel, int abs);
    9696void route_set_destinations(struct route *this_, struct pcoord *dst, int count, int async);
    9797int route_get_destinations(struct route *this_, struct pcoord *pc, int count);
     98int route_get_destination_count(struct route *this_);
    9899void route_set_destination(struct route *this_, struct pcoord *dst, int async);
     100void route_remove_nth_waypoint(struct route *this_, int n);
    99101void route_remove_waypoint(struct route *this_);
     102char* route_get_destination_description(struct route *this_, int n);
    100103struct coord route_get_coord_dist(struct route *this_, int dist);
    101104struct street_data *street_get_data(struct item *item);
    102105struct street_data *street_data_dup(struct street_data *orig);