#ifndef NAVIT_ROUTE_H
#define NAVIT_ROUTE_H
+enum route_status {
+ route_status_no_destination=0,
+ route_status_not_found=1|2,
+ route_status_building_path=1|4,
+ route_status_building_graph=1|4|8,
+ route_status_path_done_new=1|16,
+ route_status_path_done_incremental=1|32,
+};
+
struct route_crossing {
long segid;
int dir;
struct transformation;
struct route *route_new(struct attr *parent, struct attr **attrs);
void route_set_mapset(struct route *this, struct mapset *ms);
+void route_set_profile(struct route *this, struct vehicleprofile *prof);
struct mapset *route_get_mapset(struct route *this);
struct route_info *route_get_pos(struct route *this);
struct route_info *route_get_dst(struct route *this);
int route_set_speed(struct route *this, enum item_type type, int value);
int route_contains(struct route *this, struct item *item);
void route_set_position(struct route *this, struct pcoord *pos);
-void route_set_position_from_tracking(struct route *this, struct tracking *tracking);
+void route_set_position_from_tracking(struct route *this, struct tracking *tracking, enum projection pro);
struct map_selection *route_rect(int order, struct coord *c1, struct coord *c2, int rel, int abs);
-void route_set_destination(struct route *this, struct pcoord *dst);
+void route_set_destination(struct route *this, struct pcoord *dst, int async);
struct route_path_handle *route_path_open(struct route *this);
struct route_path_segment *route_path_get_segment(struct route_path_handle *h);
struct coord *route_path_segment_get_start(struct route_path_segment *s);
void route_draw(struct route *this, struct transformation *t, struct displaylist *dsp);
struct map *route_get_map(struct route *route);
struct map *route_get_graph_map(struct route *route);
-void route_toggle_routegraph_display(struct route *route);
void route_set_projection(struct route *this_, enum projection pro);
int route_destination_reached(struct route *this);
-void route_add_callback(struct route *this_, struct callback *cb);
-void route_remove_callback(struct route *this_, struct callback *cb);
+int route_set_attr(struct route *this_, struct attr *attr);
+int route_add_attr(struct route *this_, struct attr *attr);
+int route_remove_attr(struct route *this_, struct attr *attr);
+int route_get_attr(struct route *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter);
void route_init(void);
int route_pos_contains(struct route *this, struct item *item);
struct coord route_get_coord_dist(struct route *this_, int dist);