imlib2_conv: Enable passing attached data to saver
Mostly for testing savers.
This commit is contained in:
parent
0a77e35f9c
commit
3f1fe6222e
|
@ -13,13 +13,22 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#define DEBUG 0
|
||||||
|
#if DEBUG
|
||||||
|
#define Dprintf(fmt...) printf(fmt)
|
||||||
|
#else
|
||||||
|
#define Dprintf(fmt...)
|
||||||
|
#endif
|
||||||
|
|
||||||
#define HELP \
|
#define HELP \
|
||||||
"Usage:\n" \
|
"Usage:\n" \
|
||||||
" imlib2_conv [OPTIONS] [ input-file output-file[.fmt] ]\n" \
|
" imlib2_conv [OPTIONS] [ input-file output-file[.fmt] ]\n" \
|
||||||
" <fmt> defaults to jpg if not provided.\n" \
|
" <fmt> defaults to jpg if not provided.\n" \
|
||||||
"\n" \
|
"\n" \
|
||||||
"OPTIONS:\n" \
|
"OPTIONS:\n" \
|
||||||
" -h : Show this help\n"
|
" -h : Show this help\n" \
|
||||||
|
" -i key=value : Attach tag with integer value for saver\n" \
|
||||||
|
" -j key=string : Attach tag with string value for saver\n"
|
||||||
|
|
||||||
static void
|
static void
|
||||||
usage(void)
|
usage(void)
|
||||||
|
@ -27,6 +36,43 @@ usage(void)
|
||||||
printf(HELP);
|
printf(HELP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
data_free_cb(void *im, void *data)
|
||||||
|
{
|
||||||
|
Dprintf("%s: im=%p data=%p\n", __func__, im, data);
|
||||||
|
free(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Attach tag = key/value pair to current image
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
data_attach(int type, char *arg)
|
||||||
|
{
|
||||||
|
char *p;
|
||||||
|
|
||||||
|
p = strchr(arg, '=');
|
||||||
|
if (!p)
|
||||||
|
return; /* No value - just ignore */
|
||||||
|
|
||||||
|
*p++ = '\0';
|
||||||
|
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
break; /* Should not be possible - ignore */
|
||||||
|
case 'i': /* Integer parameter */
|
||||||
|
Dprintf("%s: Set '%s' = %d\n", __func__, arg, atoi(p));
|
||||||
|
imlib_image_attach_data_value(arg, NULL, atoi(p), NULL);
|
||||||
|
break;
|
||||||
|
case 'j': /* String parameter */
|
||||||
|
p = strdup(p);
|
||||||
|
Dprintf("%s: Set '%s' = '%s' (%p)\n", __func__, arg, p, p);
|
||||||
|
imlib_image_attach_data_value(arg, p, 0, data_free_cb);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
@ -35,7 +81,7 @@ main(int argc, char **argv)
|
||||||
char *dot;
|
char *dot;
|
||||||
Imlib_Image im;
|
Imlib_Image im;
|
||||||
|
|
||||||
while ((opt = getopt(argc, argv, "h")) != -1)
|
while ((opt = getopt(argc, argv, "hi:j:")) != -1)
|
||||||
{
|
{
|
||||||
switch (opt)
|
switch (opt)
|
||||||
{
|
{
|
||||||
|
@ -43,6 +89,9 @@ main(int argc, char **argv)
|
||||||
case 'h':
|
case 'h':
|
||||||
usage();
|
usage();
|
||||||
exit(0);
|
exit(0);
|
||||||
|
case 'i':
|
||||||
|
case 'j':
|
||||||
|
break; /* Ignore this time around */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,9 +112,24 @@ main(int argc, char **argv)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* we only care what format the export format is. */
|
Dprintf("%s: im=%p\n", __func__, im);
|
||||||
imlib_context_set_image(im);
|
imlib_context_set_image(im);
|
||||||
|
|
||||||
|
/* Re-parse options to attach parameters to be used by savers */
|
||||||
|
optind = 1;
|
||||||
|
while ((opt = getopt(argc, argv, "hi:j:")) != -1)
|
||||||
|
{
|
||||||
|
switch (opt)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
case 'i': /* Attach integer parameter */
|
||||||
|
case 'j': /* Attach string parameter */
|
||||||
|
data_attach(opt, optarg);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* hopefully the last one will be the one we want.. */
|
/* hopefully the last one will be the one we want.. */
|
||||||
dot = strrchr(fout, '.');
|
dot = strrchr(fout, '.');
|
||||||
|
|
||||||
|
@ -80,5 +144,9 @@ main(int argc, char **argv)
|
||||||
fprintf(stderr, "*** Error %d:'%s' saving image: '%s'\n",
|
fprintf(stderr, "*** Error %d:'%s' saving image: '%s'\n",
|
||||||
err, imlib_strerror(err), fout);
|
err, imlib_strerror(err), fout);
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
imlib_free_image_and_decache();
|
||||||
|
#endif
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue