1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| void plane_constructor(s_plane *plane, int nb_fixes, ...) {
/* ----construction route --- nb paramètres inconnus = nb_fixes = 5 ici ----*/
(*plane).route = malloc(nb_fixes*sizeof(*(*plane).route));
int i=0, j=0;
va_list ap;
va_start(ap, nb_fixes);
for( i=0 ; i<nb_fixes ; i++) {
strcpy((*plane).route[i].wp_nom, va_arg(ap, char *));
for (j=0; j<nb_wp; j++) {
if (strcmp((*plane).route[i].wp_nom, waypoints[j].wp_nom) == 0) {
(*plane).route[i].wp_x = waypoints[j].wp_x;
(*plane).route[i].wp_y = waypoints[j].wp_y;
(*plane).route[i].wp_cercle = NULL;
(*plane).route[i].wp_label = NULL;
break;
}
}
}
va_end(ap);
(*plane).x = (*plane).route[0].wp_x;
(*plane).y = (*plane).route[0].wp_y;
(*plane).inclinaisonStd = 30.0;
(*plane).currentSegment = 0;
(*plane).turnDirection = 1;
(*plane).turn = FALSE;
(*plane).onHdg = FALSE;
(*plane).hdg = (*plane).route[0].wp_nom;
(*plane).heading = trueRoute((*plane).x, (*plane).y, (*plane).route[1].wp_x, (*plane).route[1].wp_y);
(*plane).plot = goo_canvas_ellipse_new (root, (*plane).x, (*plane).y, 3.0, 3.0,
"stroke-color", "white",
"line-width", 2.0,
"fill-color", "white",
NULL);
(*plane).labelx = (*plane).x + 20.0;
(*plane).labely = (*plane).y + 20.0;
(*plane).label = goo_canvas_text_new (root, (*plane).callsign, (*plane).labelx, (*plane).labely, 100.0, GOO_CANVAS_ANCHOR_SW,
"fill-color", "white", "font", "Arial 12px",
NULL);
coord.x = (*plane).x;
coord.y = (*plane).y;
g_signal_connect (G_OBJECT ((*plane).label), "button-press-event", G_CALLBACK (on_button_press_event_cb), NULL);
g_signal_connect (G_OBJECT ((*plane).label), "button-release-event", G_CALLBACK (on_button_release_event_cb), NULL);
g_signal_connect (G_OBJECT ((*plane).label), "motion-notify-event", G_CALLBACK (on_motion_notify_event_cb), plane);
GooCanvasBounds label_bounds;
goo_canvas_item_get_bounds((*plane).label, &label_bounds);
(*plane).connection = goo_canvas_polyline_new_line(root, (*plane).x, (*plane).y, label_bounds.x1, label_bounds.y1,
"line-width", 1.0, "stroke-color", "white", NULL);
} |
Partager