#include #include #include "vizual.h" int viz_calc_tvals(cmndln_info * linefax, char **a_levels, char *a_min, char *a_max, char *a_step, char *a_tnum, int quiet) { double interval; /*increment tvalue for intervals */ float datarange; /*diff btwn min and max data tvalues */ float tval; /*the threshold value being computed */ float min, max; int ithresh; int do_interval = 0; int i; /*looping variable */ /* ** Note that the maximum number of thresholds ** that are computed is 127. This is to set a cap on the size of the ** display file that is created */ /* If levels are specified, only use those. Otherwise, if step is specified use that, otherwise use number of thresholds */ min = Headfax.min; max = Headfax.max; if (a_min) sscanf(a_min, "%f", &min); if (a_max) sscanf(a_max, "%f", &max); datarange = max - min; if (datarange <= 0.0) G_fatal_error("Range error: %f", datarange); if (a_levels) { for (i = 0; a_levels[i]; i++) { if (i == MAXTHRESH) { G_warning("Maximum no. of thresholds is %d", MAXTHRESH); break; } if (1 != sscanf(a_levels[i], "%f", &(linefax->tvalue[i]))) { G_usage(); exit(0); } } linefax->nthres = i; } else if (a_step) { sscanf(a_step, "%lf", &interval); do_interval = 1; } else if (a_tnum) { /* should already be default even if not specified */ sscanf(a_tnum, "%d", &ithresh); if (ithresh < 2) { ithresh = 2; G_warning("Minimum number of thresholds is 2"); } interval = datarange / (ithresh - 1); do_interval = 1; } else { /* should never get here */ G_usage(); exit(0); } if (do_interval) { for (i = 0, tval = min; tval <= max; i++, tval = min + (i * interval)) { if (i == MAXTHRESH) { G_warning("Maximum no. of thresholds is %d", MAXTHRESH); break; } linefax->tvalue[i] = tval; } linefax->nthres = i; } if (!quiet) { fprintf(stderr, "threshold values: "); for (i = 0; i < linefax->nthres; i++) fprintf(stderr, "%f ", linefax->tvalue[i]); G_message("No. of thresholds: %i", linefax->nthres + 1); } return (0); }