|
Packit Service |
2781ba |
#include <stdlib.h>
|
|
Packit Service |
2781ba |
#include <gegl.h>
|
|
Packit Service |
2781ba |
#include <string.h>
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
gint
|
|
Packit Service |
2781ba |
main (gint argc,
|
|
Packit Service |
2781ba |
gchar **argv)
|
|
Packit Service |
2781ba |
{
|
|
Packit Service |
2781ba |
gchar *rules;
|
|
Packit Service |
2781ba |
GeglNode *gegl,
|
|
Packit Service |
2781ba |
*load_file,
|
|
Packit Service |
2781ba |
*crop,
|
|
Packit Service |
2781ba |
*save_file;
|
|
Packit Service |
2781ba |
GError *error = NULL;
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
gegl_init (&argc, &argv);
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
if (argv[1]==NULL ||
|
|
Packit Service |
2781ba |
argv[2]==NULL)
|
|
Packit Service |
2781ba |
{
|
|
Packit Service |
2781ba |
g_print ("\nusage: %s <inputimage> <slicefile> [pathprefix]\n\n"
|
|
Packit Service |
2781ba |
" inputimage: the .png, .jpg, .svg or similar image to load\n"
|
|
Packit Service |
2781ba |
" slicefile: a text file with rule lines like (x,y widthxheight slice1.png)\n"
|
|
Packit Service |
2781ba |
" pathprefix: a string to preprend to the names of slices in theslicefile\n", strrchr (argv[0], '/')+1);
|
|
Packit Service |
2781ba |
exit (-1);
|
|
Packit Service |
2781ba |
}
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
gegl = gegl_node_new ();
|
|
Packit Service |
2781ba |
load_file = gegl_node_new_child (gegl,
|
|
Packit Service |
2781ba |
"operation", "gegl:load",
|
|
Packit Service |
2781ba |
"path", argv[1],
|
|
Packit Service |
2781ba |
NULL);
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
crop = gegl_node_new_child (gegl,
|
|
Packit Service |
2781ba |
"operation", "gegl:crop",
|
|
Packit Service |
2781ba |
NULL);
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
save_file = gegl_node_new_child (gegl,
|
|
Packit Service |
2781ba |
"operation", "gegl:png-save",
|
|
Packit Service |
2781ba |
"compression", 9,
|
|
Packit Service |
2781ba |
"bitdepth", 8,
|
|
Packit Service |
2781ba |
NULL);
|
|
Packit Service |
2781ba |
gegl_node_link_many (load_file, crop, save_file, NULL);
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
if (g_file_get_contents (argv[2], &rules, NULL, &error))
|
|
Packit Service |
2781ba |
{
|
|
Packit Service |
2781ba |
gchar *line;
|
|
Packit Service |
2781ba |
gchar *next_line = NULL;
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
for (line = rules;line; line = next_line)
|
|
Packit Service |
2781ba |
{
|
|
Packit Service |
2781ba |
gchar *next_new_line;
|
|
Packit Service |
2781ba |
next_new_line = strchr (line, '\n');
|
|
Packit Service |
2781ba |
if (next_new_line)
|
|
Packit Service |
2781ba |
{
|
|
Packit Service |
2781ba |
next_line = next_new_line + 1;
|
|
Packit Service |
2781ba |
*next_new_line = '\0';
|
|
Packit Service |
2781ba |
}
|
|
Packit Service |
2781ba |
else
|
|
Packit Service |
2781ba |
{
|
|
Packit Service |
2781ba |
next_line = NULL;
|
|
Packit Service |
2781ba |
}
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
while (*line == ' ')line++;
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
if (line[0]!='#' && line[0]!='\0')
|
|
Packit Service |
2781ba |
{
|
|
Packit Service |
2781ba |
gint x, y, width, height;
|
|
Packit Service |
2781ba |
x = strtol (line, &line, 10);
|
|
Packit Service |
2781ba |
while (*line == ' ' || *line == ',')line++;
|
|
Packit Service |
2781ba |
y = strtol (line, &line, 10);
|
|
Packit Service |
2781ba |
while (*line == ' ' || *line == ',')line++;
|
|
Packit Service |
2781ba |
width = strtol (line, &line, 10);
|
|
Packit Service |
2781ba |
while (*line == ' ' || *line == 'x')line++;
|
|
Packit Service |
2781ba |
height = strtol (line, &line, 10);
|
|
Packit Service |
2781ba |
while (*line == ' ')line++;
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
{
|
|
Packit Service |
2781ba |
GString *str = g_string_new ("");
|
|
Packit Service |
2781ba |
if (argv[3])
|
|
Packit Service |
2781ba |
{
|
|
Packit Service |
2781ba |
g_string_append (str, argv[3]);
|
|
Packit Service |
2781ba |
}
|
|
Packit Service |
2781ba |
g_string_append (str, line);
|
|
Packit Service |
2781ba |
gegl_node_set (save_file, "path", str->str, NULL);
|
|
Packit Service |
2781ba |
gegl_node_set (crop, "x", x*1.0,
|
|
Packit Service |
2781ba |
"y", y*1.0,
|
|
Packit Service |
2781ba |
"width", width*1.0,
|
|
Packit Service |
2781ba |
"height", height * 1.0,
|
|
Packit Service |
2781ba |
NULL);
|
|
Packit Service |
2781ba |
g_print ("%s (%i,%i %ix%i)\n", str->str, x, y, width, height);
|
|
Packit Service |
2781ba |
g_string_free (str, TRUE);
|
|
Packit Service |
2781ba |
}
|
|
Packit Service |
2781ba |
gegl_node_process (save_file);
|
|
Packit Service |
2781ba |
}
|
|
Packit Service |
2781ba |
}
|
|
Packit Service |
2781ba |
g_free (rules);
|
|
Packit Service |
2781ba |
}
|
|
Packit Service |
2781ba |
return 0;
|
|
Packit Service |
2781ba |
}
|