From edd4a03a1e675745a6e5bc1c561b12971b6d179a Mon Sep 17 00:00:00 2001 From: sam Date: Thu, 14 Aug 2008 18:34:51 +0000 Subject: [PATCH] * Add the --scale flag. Resizes the image like --geometry, except with relative parameters. git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2716 92316355-f0b4-4df1-b90c-862c8a59935f --- pipi/context.c | 25 +++++++++++++++++++++++++ src/pipi.c | 8 ++++++++ 2 files changed, 33 insertions(+) diff --git a/pipi/context.c b/pipi/context.c index 0cb0ad7..5d86be1 100644 --- a/pipi/context.c +++ b/pipi/context.c @@ -167,6 +167,31 @@ int pipi_command(pipi_context_t *ctx, char const *cmd, ...) pipi_free(src); ctx->images[ctx->nimages - 1] = dst; } + else if(!strcmp(cmd, "scale")) + { + pipi_image_t *src, *dst; + char const *arg; + va_list ap; + double scale; + int w, h; + + if(ctx->nimages < 1) + return -1; + src = ctx->images[ctx->nimages - 1]; + va_start(ap, cmd); + arg = va_arg(ap, char const *); + va_end(ap); + scale = atof(arg); + w = (int)(scale * src->w + 0.5); + h = (int)(scale * src->h + 0.5); + if(w <= 0 || h <= 0) + return -1; + dst = pipi_resize(src, w, h); + if(dst == NULL) + return -1; + pipi_free(src); + ctx->images[ctx->nimages - 1] = dst; + } else if(!strcmp(cmd, "mean")) { pipi_image_t *dst; diff --git a/src/pipi.c b/src/pipi.c index 75c552f..b4be763 100644 --- a/src/pipi.c +++ b/src/pipi.c @@ -25,6 +25,14 @@ int main(int argc, char *argv[]) if(pipi_command(ctx, "swap") != 0) return EXIT_FAILURE; } + else if(!strcmp(argv[0], "--scale")) + { + if(argv[1] == NULL) + return EXIT_FAILURE; + if(pipi_command(ctx, "scale", argv[1]) != 0) + return EXIT_FAILURE; + argv++; + } else if(!strcmp(argv[0], "--geometry")) { if(argv[1] == NULL)