[GRASS-SVN] r72914 - grass/trunk/raster/r.colors

svn_grass at osgeo.org svn_grass at osgeo.org
Tue Jun 26 05:43:13 PDT 2018


Author: mmetz
Date: 2018-06-26 05:43:13 -0700 (Tue, 26 Jun 2018)
New Revision: 72914

Modified:
   grass/trunk/raster/r.colors/edit_colors.c
Log:
r.colors: use new G_list_color_rules_description_type()

Modified: grass/trunk/raster/r.colors/edit_colors.c
===================================================================
--- grass/trunk/raster/r.colors/edit_colors.c	2018-06-26 12:42:20 UTC (rev 72913)
+++ grass/trunk/raster/r.colors/edit_colors.c	2018-06-26 12:43:13 UTC (rev 72914)
@@ -183,161 +183,13 @@
 
     if (flag.l->answer) {
 	G_list_color_rules(stdout);
+
         return EXIT_SUCCESS;
     }
 
     if (flag.d->answer) {
-	char path[GPATH_MAX];
-	FILE *fp;
-	int ncolors;
-	struct colordesc *colordesc;
-	char **cnames;
+	G_list_color_rules_description_type(stdout, opt.colr->answer);
 
-	/* load color rules */
-	G_snprintf(path, GPATH_MAX, "%s/etc/colors", G_gisbase());
-
-	ncolors = 0;
-	cnames = G_ls2(path, &ncolors);
-	colordesc = G_malloc(ncolors * sizeof(struct colordesc));
-	for (i = 0; i < ncolors; i++) {
-	    char buf[1024];
-	    double rmin, rmax;
-	    int first;
-	    int cisperc;
-
-	    colordesc[i].name = G_store(cnames[i]);
-	    colordesc[i].desc = NULL;
-	    
-	    /* open color rule file */
-	    G_snprintf(path, GPATH_MAX, "%s/etc/colors/%s", G_gisbase(),
-	               colordesc[i].name);
-	    fp = fopen(path, "r");
-	    if (!fp)
-		G_fatal_error(_("Unable to open color rule"));
-	    
-	    /* scan all lines */
-	    first = 1;
-	    rmin = rmax = 0;
-	    cisperc = 0;
-	    while (G_getl2(buf, sizeof(buf), fp)) {
-		char value[80], color[80];
-		double x;
-		char c;
-
-		G_strip(buf);
-
-		if (*buf == '\0')
-		    continue;
-		if (*buf == '#')
-		    continue;
-
-		if (sscanf(buf, "%s %[^\n]", value, color) != 2)
-		    continue;
-
-		if (G_strcasecmp(value, "default") == 0) {
-		    continue;
-		}
-
-		if (G_strcasecmp(value, "nv") == 0) {
-		    continue;
-		}
-
-		if (sscanf(value, "%lf%c", &x, &c) == 2 && c == '%') {
-		    cisperc = 1;
-		    break;
-		}
-		if (sscanf(value, "%lf", &x) == 1) {
-		    if (first) {
-			first = 0;
-			rmin = rmax = x;
-		    }
-		    else {
-			if (rmin > x)
-			    rmin = x;
-			if (rmax < x)
-			    rmax = x;
-		    }
-		}
-	    }
-	    fclose(fp);
-
-	    if (cisperc)
-		colordesc[i].type = G_store(_("relative, percent of map range"));
-	    else {
-		G_snprintf(buf, sizeof(buf) - 1, _("absolute, %g to %g"), rmin, rmax);
-		colordesc[i].type = G_store(buf);
-	    }
-	}
-	
-	qsort(colordesc, ncolors, sizeof(struct colordesc), cmp_clrname);
-
-	/* load color descriptions */
-	G_snprintf(path, GPATH_MAX, "%s/etc/colors.desc", G_gisbase());
-	fp = fopen(path, "r");
-	if (!fp)
-	    G_fatal_error(_("Unable to open color descriptions"));
-
-	for (;;) {
-	    char buf[1024];
-            char tok_buf[1024];
-	    char *cname, *cdesc;
-            int ntokens;
-            char **tokens;
-	    struct colordesc csearch, *cfound;
-
-	    if (!G_getl2(buf, sizeof(buf), fp))
-		break;
-            strcpy(tok_buf, buf);
-            tokens = G_tokenize(tok_buf, ":");
-            ntokens = G_number_of_tokens(tokens);
-	    if (ntokens != 2)
-		continue;
-
-	    cname = G_chop(tokens[0]);
-	    cdesc = G_chop(tokens[1]);
-	    
-	    csearch.name = cname;
-	    cfound = bsearch(&csearch, colordesc, ncolors,
-	                     sizeof(struct colordesc), cmp_clrname);
-
-	    if (cfound) {
-		cfound->desc = G_store(cdesc);
-	    }
-	    G_free_tokens(tokens);
-	}
-	fclose(fp);
-
-	if (opt.colr->answer) {
-	    struct colordesc csearch, *cfound;
-
-	    csearch.name = opt.colr->answer;
-	    cfound = bsearch(&csearch, colordesc, ncolors,
-	                     sizeof(struct colordesc), cmp_clrname);
-
-	    if (cfound) {
-		if (cfound->desc) {
-		    fprintf(stdout, "%s: %s (%s)\n", cfound->name,
-			    cfound->desc, cfound->type);
-		}
-		else {
-		    fprintf(stdout, "%s: (%s)\n", cfound->name,
-			    cfound->type);
-		}
-	    }
-	}
-	else {
-	    for (i = 0; i < ncolors; i++) {
-		if (colordesc[i].desc) {
-		    fprintf(stdout, "%s: %s (%s)\n", colordesc[i].name,
-			    colordesc[i].desc, colordesc[i].type);
-		}
-		else {
-		    fprintf(stdout, "%s: (%s)\n", colordesc[i].name,
-			    colordesc[i].type);
-		}
-	    }
-	}
-
         return EXIT_SUCCESS;
     }
 



More information about the grass-commit mailing list