From 07f3985059df48a0d664f294aae3fc64e6e1a6de Mon Sep 17 00:00:00 2001 From: Johannes Löthberg Date: Tue, 11 Nov 2014 02:48:07 +0100 Subject: Add replacement for -addd using --add and --distance To overrife the nth distance you need n number of --distance flags, distance defaulting to 1 for each color. --- src/yawa.c | 16 +++++++++++++--- src/yawa.h | 11 +++++++---- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/yawa.c b/src/yawa.c index 453421a..9a78eea 100644 --- a/src/yawa.c +++ b/src/yawa.c @@ -46,6 +46,13 @@ parse_opt(signed key, char *arg, struct argp_state *state) num_add_colors += 1; break; + case 'D': + ; + signed distance = parse_int(arg, "add distance"); + arguments->distance[num_distances] = distance; + num_distances += 1; + break; + case 'g': arguments->gradient = true; arguments->angle = parse_int(arg, "gradient angle"); @@ -274,13 +281,17 @@ signed main(signed argc, char **argv) { struct arguments arguments = { - "", "", {{0}}, "", "", 0, 0, 0, 0, 0, 0, 0, + "", "", {{0}}, {0}, "", "", 0, 0, 0, 0, 0, 0, 0, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, }; + for(unsigned long i = 0; i < (sizeof arguments.distance)/(sizeof (signed)); i++) { + arguments.distance[i] = 1; + } + // Where the magic happens argp_parse(&argp, argc, argv, 0, 0, &arguments); @@ -353,7 +364,6 @@ main(signed argc, char **argv) imlib_free_color_range(); imlib_context_set_color_range(imlib_create_color_range()); } - // TODO: Add back -addd if (arguments.add) { for (i = 0; i < num_add_colors; i++) { Color c; @@ -362,7 +372,7 @@ main(signed argc, char **argv) exit(-2); } imlib_context_set_color(c.r, c.g, c.b, c.a); - imlib_add_color_to_color_range(1); + imlib_add_color_to_color_range(arguments.distance[i]); } } if (arguments.gradient) { diff --git a/src/yawa.h b/src/yawa.h index 458050b..9fe8cb2 100644 --- a/src/yawa.h +++ b/src/yawa.h @@ -27,12 +27,14 @@ load_image(ImageMode mode, const char *arg, signed rootW, signed rootH, /// Argument parsing -static signed num_add_colors; +static signed num_add_colors = 0; +static signed num_distances = 0; struct arguments { char *image; char *write_file; - char add_color[8][8]; + char add_color[8][8]; + signed distance[8]; char *solid_color; char *tint_color; @@ -73,8 +75,9 @@ struct arguments { // Order of fields: {NAME, KEY, ARG, FLAGS, DOC, GROUP}. static struct argp_option options[] = { {0, 0, 0, 0, "Gradients:", 1}, - {"add", 'a', "COLOR", 0, "Add color to range using distance 1", 1}, - // TODO: Figure out what to do about `-addd + {"add", 'a', "COLOR", 0, "Add color to range", 1}, + {"distance", 'D', "DISTANCE", 0, "Distance to use for adding color to range. " + "Defaults to 1 for each color", 1}, {"gradient", 'g', "ANGLE", 0, "Render gradient using specified angle", 1}, {"clear", 'c', 0, 0, "Clear the color range", 1}, -- cgit v1.2.3-54-g00ecf