|
|
@@ -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; |
|
|
|