#include #include static int show (CELL,CELL, int *,DCELL,DCELL, RASTER_MAP_TYPE,int); int long_list ( struct Cell_stats *statf, DCELL dmin,DCELL dmax, char *no_data_str, RASTER_MAP_TYPE map_type, int nsteps) { CELL cat; long count; /* not used, but required by cell stats call */ G_get_stats_for_null_value(&count, statf); if (count != 0) fprintf (stdout, "%s\n", no_data_str); while (G_next_cell_stat (&cat, &count, statf)) { if (map_type !=CELL_TYPE) fprintf (stdout, "%f-%f\n", dmin + (double) (cat-1) * (dmax-dmin)/nsteps, dmin + (double) cat * (dmax-dmin)/nsteps); else fprintf (stdout, "%ld\n", (long) cat); } return(0) ; } int compact_list ( struct Cell_stats *statf, DCELL dmin,DCELL dmax, char *no_data_str, RASTER_MAP_TYPE map_type, int nsteps) { CELL cat1,cat2,temp; int len; long count; /* not used, but required by cell stats call */ len = 0; G_get_stats_for_null_value(&count, statf); if (count != 0) fprintf (stdout, "%s ", no_data_str); if(!G_next_cell_stat (&cat1, &count, statf)) /* map doesn't contain any non-null data */ return 1; cat2 = cat1; while (G_next_cell_stat (&temp, &count, statf)) { if (temp != cat2+(CELL) 1) { show (cat1, cat2, &len, dmin, dmax, map_type, nsteps) ; cat1 = temp; } cat2 = temp; } show (cat1, cat2, &len, dmin, dmax, map_type, nsteps); fprintf (stdout, "\n"); return(0) ; } static int show ( CELL low,CELL high, int *len, DCELL dmin,DCELL dmax, RASTER_MAP_TYPE map_type,int nsteps) { char text[100]; char xlen; if (low+1 == high) { show (low, low, len, dmin, dmax, map_type, nsteps); show (high, high, len, dmin, dmax, map_type, nsteps); return 0; } if (map_type !=CELL_TYPE) { sprintf (text, "%f%s%f ", dmin + (low-1) * (dmax-dmin)/nsteps, dmin<0?" thru ":"-", dmin + high * (dmax-dmin)/nsteps); } else { if (low == high) sprintf (text, "%ld ", (long) low); else sprintf (text, "%ld%s%ld ", (long) low, low<0 ? " thru " : "-", (long) high); } xlen = strlen (text); if (xlen + *len > 78) { fprintf (stdout, "\n"); *len = 0; } fprintf (stdout, "%s", text); *len += xlen; return(0) ; } int compact_range_list ( CELL negmin,CELL negmax,CELL zero,CELL posmin,CELL posmax,CELL null, char *no_data_str) { if (negmin) { fprintf (stdout, "%ld", (long)negmin); if (negmin!=negmax) fprintf (stdout, " thru %ld", (long) negmax); fprintf (stdout, "\n"); } if (zero) fprintf (stdout, "0\n"); if (posmin) { fprintf (stdout, "%ld", (long)posmin); if (posmin!=posmax) fprintf (stdout, " thru %ld", (long)posmax); fprintf (stdout, "\n"); } if (null) fprintf (stdout, "%s\n", no_data_str); return(0) ; } int range_list ( CELL negmin,CELL negmax,CELL zero,CELL posmin,CELL posmax,CELL null, char *no_data_str) { if (negmin) { fprintf (stdout, "%ld\n",(long)negmin); if (negmin != negmax) fprintf (stdout, "%ld\n",(long)negmax); } if (zero) fprintf (stdout, "0\n"); if (posmin) { fprintf (stdout, "%ld\n",(long)posmin); if (posmin != posmax) fprintf (stdout, "%ld\n",(long)posmax); } if (null) fprintf (stdout, "%s\n", no_data_str); return(0) ; }