efl/src/bin/ecore_evas/ecore_evas_convert.c

116 lines
2.8 KiB
C
Raw Normal View History

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#ifdef HAVE_EVIL
# include <Evil.h>
#endif
#include <Eina.h>
#include <Evas.h>
#include <Ecore.h>
#include <Ecore_Getopt.h>
#include <Ecore_Evas.h>
#undef EINA_LOG_DOMAIN_DEFAULT
#define EINA_LOG_DOMAIN_DEFAULT _log_dom
static int _log_dom = -1;
const Ecore_Getopt optdesc = {
"ecore_evas_convert",
"%prog [options] <filename-source> <filename-destination>",
PACKAGE_VERSION,
"(C) 2014 Enlightenment",
"BSD with advertisement clause",
"Simple application to convert image.",
0,
{
ECORE_GETOPT_STORE_INT('q', "quality", "define encoding quality in percent."),
ECORE_GETOPT_STORE_TRUE('c', "compress", "define if data should be compressed."),
ECORE_GETOPT_LICENSE('L', "license"),
ECORE_GETOPT_COPYRIGHT('C', "copyright"),
ECORE_GETOPT_VERSION('V', "version"),
ECORE_GETOPT_HELP('h', "help"),
ECORE_GETOPT_SENTINEL
}
};
int
main(int argc, char *argv[])
{
char flags[128];
Ecore_Evas *ee;
Evas *e;
Evas_Object *im;
int arg_index;
int quality = 100;
int r = -1;
Eina_Bool compress = 1;
Eina_Bool quit_option = EINA_FALSE;
Ecore_Getopt_Value values[] = {
ECORE_GETOPT_VALUE_INT(quality),
ECORE_GETOPT_VALUE_BOOL(compress),
ECORE_GETOPT_VALUE_BOOL(quit_option),
ECORE_GETOPT_VALUE_BOOL(quit_option),
ECORE_GETOPT_VALUE_BOOL(quit_option),
ECORE_GETOPT_VALUE_BOOL(quit_option),
ECORE_GETOPT_VALUE_NONE
};
eina_init();
_log_dom = eina_log_domain_register(argv[0], EINA_COLOR_CYAN);
ecore_init();
ecore_evas_init();
arg_index = ecore_getopt_parse(&optdesc, values, argc, argv);
if (quit_option) goto end;
if (arg_index < 0)
{
EINA_LOG_ERR("Could not parse argument.");
goto end;
}
if (arg_index + 2 != argc)
{
EINA_LOG_ERR("File not correctly specified.");
goto end;
}
ee = ecore_evas_buffer_new(1, 1);
e = ecore_evas_get(ee);
if (!e)
{
EINA_LOG_ERR("Impossible to create a canvas to do the conversion.");
goto end;
}
snprintf(flags, sizeof (flags), "compress=%i quality=%i", compress, quality);
im = evas_object_image_add(e);
evas_object_image_file_set(im, argv[arg_index], NULL);
if (evas_object_image_load_error_get(im) != EVAS_LOAD_ERROR_NONE)
{
EINA_LOG_ERR("Could not open '%s'. Error was \"%s\".",
argv[arg_index],
evas_load_error_str(evas_object_image_load_error_get(im)));
goto end;
}
if (!evas_object_image_save(im, argv[arg_index + 1], NULL, flags))
{
EINA_LOG_ERR("Could not convert file to '%s'.", argv[arg_index + 1]);
goto end;
}
r = 0;
end:
ecore_evas_shutdown();
ecore_shutdown();
return r;
}