Exemple #1
0
static void
garmin_txt_write(void)
{
    char *grid_str, *c;
    const char *datum_str;

    grid_str = xstrdup(gt_get_mps_grid_longname(grid_index, MYNAME));
    while ((c = strchr(grid_str, '*'))) *c = 0xB0;	/* degree sign */
    cet_gbfprintf(fout, &cet_cs_vec_cp1252, "Grid\t%s\r\n", grid_str);
    xfree(grid_str);

    datum_str = gt_get_mps_datum_name(datum_index);
    gbfprintf(fout, "Datum\t%s\r\n\r\n", datum_str);

    waypoints = 0;
    gtxt_flags.enum_waypoints = 1;			/* enum all waypoints */
    waypt_disp_all(enum_waypt_cb);
    route_disp_all(NULL, NULL, enum_waypt_cb);
    gtxt_flags.enum_waypoints = 0;

    if (waypoints > 0) {
        int i;

        wpt_a_ct = 0;
        wpt_a = (waypoint **)xcalloc(waypoints, sizeof(*wpt_a));
        waypt_disp_all(enum_waypt_cb);
        route_disp_all(NULL, NULL, enum_waypt_cb);
        qsort(wpt_a, waypoints, sizeof(*wpt_a), sort_waypt_cb);

        gbfprintf(fout, "Header\t%s\r\n\r\n", headers[waypt_header]);
        for (i = 0; i < waypoints; i++)
        {
            waypoint *wpt = wpt_a[i];
            write_waypt(wpt);
        }
        xfree(wpt_a);

        route_idx = 0;
        route_info = xcalloc(route_count(), sizeof(struct info_s));
        routepoints = 0;
        route_disp_all(prework_hdr_cb, prework_tlr_cb, prework_wpt_cb);
        if (routepoints > 0)
        {
            route_idx = 0;
            route_disp_all(route_disp_hdr_cb, route_disp_tlr_cb, route_disp_wpt_cb);
        }
        xfree(route_info);
    }

    route_idx = 0;
    route_info = xcalloc(track_count(), sizeof(struct info_s));
    routepoints = 0;
    track_disp_all(prework_hdr_cb, prework_tlr_cb, prework_wpt_cb);

    if (routepoints > 0) {
        route_idx = 0;
        track_disp_all(track_disp_hdr_cb, track_disp_tlr_cb, track_disp_wpt_cb);
    }
    xfree(route_info);
}
Exemple #2
0
static void
nmn4_write_data(void)
{
	
	target_rte_num = 1;
	
	if (index_opt != NULL)
	{
		target_rte_num = atoi(index_opt);
		is_fatal(((target_rte_num > (int) route_count()) || (target_rte_num < 1)),
			MYNAME ": invalid route number %d (1..%d))!\n", target_rte_num, route_count());
	}
	
	curr_rte_num = 0;
	route_disp_all(nmn4_route_hdr, nmn4_route_tlr, nmn4_write_waypt);
}
static void
data_write(void)
{
	short int NumWaypoints, MajorVersion, MinorVersion, NumRoutes, NumTrails, NumIcons;
	setshort_length(mkshort_handle, 15);
	MajorVersion = writing_version;
	MinorVersion = 0;

	NumWaypoints = waypt_count();

	gbfputint16(MajorVersion, file_out);
	gbfputint16(MinorVersion, file_out);

	if (global_opts.debug_level >= 1)
		printf(MYNAME " data_write: Num waypoints = %d\n", NumWaypoints);

	if (writeasicons) {
		short zero = 0;
		gbfputint16(zero, file_out);
	} else {
		gbfputint16(NumWaypoints, file_out);
		waypt_disp_all(lowranceusr_waypt_pr);
	}

	/* Route support added 6/21/05 */
	NumRoutes = route_count();
	gbfputint16(NumRoutes, file_out);

	if (global_opts.debug_level >= 1)
		printf(MYNAME " data_write: Num routes = %d\n", NumRoutes);

	if (NumRoutes)
	{
		lowrance_route_count=0;
		route_disp_all(lowranceusr_route_hdr, NULL, lowranceusr_waypt_disp);
	}

	if (NumWaypoints && writeasicons) {
		gbfputint16(NumWaypoints, file_out);
		waypt_disp_all(lowranceusr_write_icon);
	} else {
		NumIcons = 0;
		gbfputint16(NumIcons, file_out);
	}
	
	/* Track support added 6/21/05 */
	NumTrails = track_count();

	if (NumTrails && merge)
	{
		NumTrails = 1;
		gbfputint16(NumTrails, file_out);
		trail_point_count = 0;
		trail_count = 0;
		/* count the number of total track points */
		track_disp_all(lowranceusr_merge_track_hdr, lowranceusr_merge_track_tlr, NULL);
		/* write out the new track header */
		trail_point_count = 0;
		track_disp_all(lowranceusr_merge_track_hdr_2, NULL, lowranceusr_track_disp);

	}
	else
	{
	
		gbfputint16(NumTrails, file_out);

		if (global_opts.debug_level >= 1)
			printf(MYNAME " data_write: Num tracks = %d\n", NumTrails);

		if (NumTrails)
		{
			trail_count=0;
			track_disp_all(lowranceusr_track_hdr, NULL, lowranceusr_track_disp);
		}
	}
}