commit 40cfab3fd2be2973867eb55a3b10f3ad637233de
parent e937d7aad5af1b9c9b7cbf0ed5ec97167b6c4098
Author: Wilson Gheen <wilson@wilsonrgheen.com>
Date: Tue, 27 Dec 2022 16:56:14 -0600
Add width/length options for relevant procedures
Diffstat:
1 file changed, 21 insertions(+), 10 deletions(-)
diff --git a/photomosaics.c b/photomosaics.c
@@ -21,7 +21,7 @@ static bool parse_float(char *str, float *out) {
setlocale(LC_ALL, old_locale);
return strncmp(str, endptr, strlen(str));
}
-static bool parse_l(char *str, long *out) {
+static bool parse_long(char *str, long *out) {
char *endptr;
const char *old_locale = setlocale(LC_ALL, NULL);
setlocale(LC_ALL|~LC_NUMERIC, "");
@@ -29,11 +29,11 @@ static bool parse_l(char *str, long *out) {
setlocale(LC_ALL, old_locale);
return strncmp(str, endptr, strlen(str));
}
-static bool parse_ll(char *str, long long *out) {
+static bool parse_ulong(char *str, unsigned long *out) {
char *endptr;
const char *old_locale = setlocale(LC_ALL, NULL);
setlocale(LC_ALL|~LC_NUMERIC, "");
- *out = strtoll(str, &endptr, 10);
+ *out = strtoul(str, &endptr, 10);
setlocale(LC_ALL, old_locale);
return strncmp(str, endptr, strlen(str));
}
@@ -153,9 +153,10 @@ int main(int argc, char **argv) {
bool resize = false;
bool splotch = false;
ssize_t x = 0, y = 0;
+ size_t length = 1, width = 1;
int opt;
- while((opt=getopt(argc, argv, "ahi:l:no:r:sx:y:")) > -1) {
+ while((opt=getopt(argc, argv, "adhi:l:no:r:sw:x:y:")) > -1) {
switch(opt) {
case 'a':
prn_avg_color = true;
@@ -169,6 +170,10 @@ int main(int argc, char **argv) {
case 'i':
strcpy(input_img_filename, optarg);
break;
+ case 'l':
+ if(!parse_ulong(optarg, &length))
+ DIE(2, "FATAL: Argument \"%s\" to option -l could not be parsed to a long long int.\n", optarg);
+ break;
case 'n':
prn_pixel_info = true;
break;
@@ -186,12 +191,16 @@ int main(int argc, char **argv) {
case 's':
splotch = true;
break;
+ case 'w':
+ if(!parse_ulong(optarg, &width))
+ DIE(2, "FATAL: Argument \"%s\" to option -w could not be parsed to a long long int.\n", optarg);
+ break;
case 'x':
- if(!parse_l(optarg, &x))
+ if(!parse_long(optarg, &x))
DIE(2, "FATAL: Argument \"%s\" to option -x could not be parsed to a long int.\n", optarg);
break;
case 'y':
- if(!parse_l(optarg, &y))
+ if(!parse_long(optarg, &y))
DIE(2, "FATAL: Argument \"%s\" to option -x could not be parsed to a long int.\n", optarg);
break;
}
@@ -203,8 +212,10 @@ int main(int argc, char **argv) {
DIE(2, "FATAL: no input image specified.\n");
if((resize || splotch) && strnlen(output_img_filename, 400) < 1)
DIE(2, "FATAL: Must specify output image to resize or splotch.\n");
- if((prn_pixel_info || prn_avg_color))
+ if(prn_pixel_info || prn_avg_color)
fprintf(stderr, "point: %zu, %zu\n", x, y);
+ if(prn_avg_color || dumb_shrink || splotch)
+ fprintf(stderr, "dimensions: %zu x %zu\n", width, length);
MagickCoreGenesis(*argv, MagickTrue);
exception = AcquireExceptionInfo();
@@ -221,11 +232,11 @@ int main(int argc, char **argv) {
else if(prn_pixel_info)
print_pixel_info(input_img, x, y, exception);
else if(prn_avg_color)
- print_avg_color(input_img, x, y, 100, 100, exception);
+ print_avg_color(input_img, x, y, width, length, exception);
else if(dumb_shrink)
- output_img = make_img_avg_colors(input_img, 0, 0, 6, 5, exception);
+ output_img = make_img_avg_colors(input_img, 0, 0, width, length, exception);
else if(splotch)
- output_img = splotch_img(input_img, 100, 100, exception);
+ output_img = splotch_img(input_img, width, length, exception);
if(exception->severity != UndefinedException)
CatchException(exception);