#include <unistd.h>\r
#include <fcntl.h>\r
#include <ctype.h>\r
+#include <Ecore_Getopt.h>\r
\r
#ifdef HAVE_EVIL\r
# include <Evil.h>\r
#include "edje_cc.h"\r
#include "edje_private.h"\r
\r
+#define EDJE_PICK_HELP_STRING \\r
+"\nEdje Pick - the \"edj\" merging tool.\n\\r
+===================================\n\n\\r
+Use Edje Pick to compose a single edj file \\r
+by selecting groups from edj files.\n\n\\r
+Use Edje Pick as follows:\n\\r
+Include files with \'--include\' file-name\n\\r
+Follow the included file-name by names of selected groups from this file.\n\\r
+To select a group use: \'--group\' group-name.\n\n\\r
+You must specify merged file name with \'--output\' file-name.\n\\r
+Use '--verbose' switch to get detailed log.\n\n\\r
+To produce 3rd file \'out.edj\' that composed of:\n\\r
+Group \'test\' from \'ex1.edj\' and \'test2\', \'test3\', from \'ex2.edj\'\n\\r
+edje_pick -i ex1.edj -g test -i ex2.edj -g test2 -g test3 -o out.edj\n\n\\r
+By using \'--append\' whole file content is selected.\n\\r
+No need to specify selected groups with this switch.\n\\r
+Note that selected group with will override group with the same name\n\\r
+from appended-file when using \'--append\' switch.\n\n\\r
+Example, the command:\n\\r
+edje_pick -a theme1.edj -i default.edj -g elm/button/base/default \\r
+-g elm/check/base/default -o hybrid.edj\n\n\\r
+will produce a 3rd theme file \'hybrid.edj\',\n\\r
+composed of all theme1.edj components.\n\\r
+Replacing the button and check with widgets taken from default theme.\n\\r
+(Given that theme1.edj button, check group-name are as in default.edj)\n"\r
+\r
struct _Edje_Pick_Id\r
{\r
int old_id;\r
Eina_List *scriptlist;\r
Eina_List *luascriptlist;\r
Eina_List *imagelist;\r
+ Eina_List *imagesetlist; /* List of IDs (Edje_Pick_Data) for image sets */\r
Eina_List *samplelist;\r
Eina_List *tonelist;\r
};\r
\r
struct _Edje_Pick_Data\r
{\r
- const char *filename; /* Image, Sample File Name */\r
- void *entry ; /* used to build output file dir */\r
+ const char *filename; /* Image, Sample File Name */\r
+ void *entry ; /* used to build output file dir FIXME: REMOVE THIS */\r
void *data; /* Data as taken from input file */\r
\r
int size;\r
\r
static Edje_Pick context = { EINA_FALSE, NULL, NULL };\r
\r
-/* FIXME: Use Eina_Log */\r
#define VERBOSE(COMMAND) if (context.v) { COMMAND; }\r
\r
enum _Edje_Pick_Status\r
{\r
EDJE_PICK_NO_ERROR,\r
- EDJE_PICK_NO_INPUT_FILES_DEFINED,\r
- EDJE_PICK_INCOMPLETE_STRUCT,\r
- EDJE_PICK_INP_NAME_MISSING,\r
- EDJE_PICK_DUP_FILENAME,\r
- EDJE_PICK_DUP_OUT_FILENAME,\r
EDJE_PICK_OUT_FILENAME_MISSING,\r
EDJE_PICK_FAILED_OPEN_INP,\r
EDJE_PICK_FAILED_READ_INP,\r
EDJE_PICK_GROUP_NOT_FOUND,\r
EDJE_PICK_IMAGE_NOT_FOUND,\r
EDJE_PICK_SAMPLE_NOT_FOUND,\r
+ EDJE_PICK_INCLUDE_MISSING,\r
+ EDJE_PICK_GROUP_MISSING,\r
+ EDJE_PICK_PARSE_FAILED,\r
+ EDJE_PICK_HELP_SHOWN,\r
EDJE_PICK_DUP_GROUP\r
};\r
typedef enum _Edje_Pick_Status Edje_Pick_Status;\r
\r
-enum _Edje_Pick_Parse_Mode\r
- { /* Command-line parse modes */\r
- EDJE_PICK_UNDEFINED,\r
- EDJE_PICK_GET_FILENAME,\r
- EDJE_PICK_GET_GROUPS,\r
- EDJE_PICK_GET_OUTPUT_FILENAME\r
- };\r
-typedef enum _Edje_Pick_Parse_Mode Edje_Pick_Parse_Mode;\r
-\r
static void\r
_edje_pick_args_show(Eina_List *ifs, char *out)\r
{ /* Print command-line arguments after parsing phase */\r
Eina_List *l;\r
char *g;\r
\r
- printf("Got args for <%d> input files.\n", eina_list_count(ifs));\r
+ EINA_LOG_INFO("Got args for <%d> input files.\n", eina_list_count(ifs));\r
\r
EINA_LIST_FOREACH(ifs, l, p)\r
{\r
Eina_List *ll;\r
\r
- printf("\nFile name: %s\n\tGroups:\n", p->name);\r
- EINA_LIST_FOREACH(p->groups, ll, g)\r
- printf("\t\t%s\n", g);\r
+ if (p->append)\r
+ printf("\nFile name: %s\n\tGroups: ALL (append mode)\n", p->name);\r
+ else\r
+ {\r
+ printf("\nFile name: %s\n\tGroups:\n", p->name);\r
+ EINA_LIST_FOREACH(p->groups, ll, g)\r
+ printf("\t\t%s\n", g);\r
+ }\r
}\r
\r
- printf("\nOutput file name was <%s>\n", out);\r
+ EINA_LOG_INFO("\nOutput file name was <%s>\n", out);\r
}\r
\r
static void\r
}\r
}\r
\r
+static void\r
+_edje_pick_out_file_free(Edje_File *out_file)\r
+{\r
+ if (out_file)\r
+ {\r
+ /* Free output file memory allocation */\r
+ if (out_file->ef)\r
+ eet_close(out_file->ef);\r
+\r
+ if (out_file->external_dir)\r
+ {\r
+ if (out_file->external_dir->entries)\r
+ free(out_file->external_dir->entries);\r
+\r
+ free(out_file->external_dir);\r
+ }\r
+\r
+ if (out_file->image_dir)\r
+ {\r
+ if (out_file->image_dir->entries)\r
+ free(out_file->image_dir->entries);\r
+\r
+ free(out_file->image_dir);\r
+ }\r
+\r
+ if (out_file->sound_dir)\r
+ {\r
+ if (out_file->sound_dir->samples)\r
+ free(out_file->sound_dir->samples);\r
+\r
+ if (out_file->sound_dir->tones)\r
+ free(out_file->sound_dir->tones);\r
+\r
+ free(out_file->sound_dir);\r
+ }\r
+\r
+ eina_list_free(out_file->color_classes);\r
+ eina_hash_free_cb_set(out_file->collection, free);\r
+ eina_hash_free(out_file->collection);\r
+ eina_stringshare_del(out_file->compiler);\r
+\r
+ free(out_file);\r
+ }\r
+}\r
+\r
static int\r
-_edje_pick_cleanup(Eina_List *ifs, Edje_Pick_Status s)\r
+_edje_pick_cleanup(Eina_List *ifs, Edje_File *out_file, Edje_Pick_Status s)\r
{\r
Edje_Pick_File_Params *p;\r
Edje_Pick_Font *ft;\r
void *n;\r
\r
+ _edje_pick_out_file_free(out_file);\r
+\r
EINA_LIST_FREE(ifs, p)\r
{\r
EINA_LIST_FREE(p->groups, n)\r
_edje_pick_data_free(p->imagelist);\r
p->imagelist = NULL;\r
\r
+ _edje_pick_data_free(p->imagesetlist);\r
+ p->imagesetlist = NULL;\r
+\r
_edje_pick_data_free(p->samplelist);\r
\r
EINA_LIST_FREE(p->tonelist, n)\r
free(n);\r
\r
if (p->edf)\r
- free(p->edf);\r
+ _edje_cache_file_unref(p->edf);\r
\r
free(p);\r
}\r
\r
switch (s)\r
{\r
- case EDJE_PICK_NO_INPUT_FILES_DEFINED:\r
- printf("No input files defined.\n");\r
- break;\r
- case EDJE_PICK_INCOMPLETE_STRUCT:\r
- printf("Missing name, groups or both for input file.\n");\r
- break;\r
- case EDJE_PICK_INP_NAME_MISSING:\r
- printf("Missing name for input file.\n");\r
- break;\r
- case EDJE_PICK_DUP_FILENAME:\r
- printf("Input file appears twice.\n");\r
- break;\r
- case EDJE_PICK_DUP_OUT_FILENAME:\r
- printf("Output file appears twice.\n");\r
- break;\r
case EDJE_PICK_OUT_FILENAME_MISSING:\r
- printf("Output file name missing.\n");\r
+ EINA_LOG_ERR("Output file name missing.\n");\r
break;\r
case EDJE_PICK_FAILED_OPEN_INP:\r
- printf("Failed to open input file.\n");\r
+ EINA_LOG_ERR("Failed to open input file.\n");\r
break;\r
case EDJE_PICK_FAILED_READ_INP:\r
- printf("Failed to read input file.\n");\r
+ EINA_LOG_ERR("Failed to read input file.\n");\r
break;\r
case EDJE_PICK_DUP_GROUP:\r
- printf("Can't fetch groups with identical name from various files.\n");\r
+ EINA_LOG_ERR("Can't fetch groups with identical name from various files.\n");\r
+ break;\r
+ case EDJE_PICK_INCLUDE_MISSING:\r
+ EINA_LOG_ERR("Cannot select groups when no input file included.\n");\r
+ break;\r
+ case EDJE_PICK_GROUP_MISSING:\r
+ EINA_LOG_ERR("Group name missing for include file.\n");\r
+ break;\r
+ case EDJE_PICK_PARSE_FAILED:\r
+ EINA_LOG_ERR("Command parsing failed.\n");\r
break;\r
default:\r
return s;\r
_edje_pick_command_line_parse(int argc, char **argv,\r
Eina_List **ifs, char **ofn)\r
{ /* On return ifs is Input Files List, ofn is Output File Name */\r
+ Eina_List *gpf = NULL; /* List including counters of groups-per-file */\r
+ Eina_List *a_files = NULL;\r
+ Eina_List *i_files = NULL;\r
+ Eina_List *l;\r
+ Eina_List *ll;\r
+ Eina_List *cg;\r
+ Eina_List *groups = NULL;\r
char *output_filename = NULL;\r
- Edje_Pick_Parse_Mode pm = EDJE_PICK_UNDEFINED;\r
Edje_Pick_File_Params *current_inp = NULL;\r
Eina_List *files = NULL; /* List of input files */\r
+ int *c = NULL;\r
+ char *str = NULL;\r
int k;\r
+ Eina_Bool show_help = EINA_FALSE;\r
+\r
+ /* Define args syntax */\r
+#define IS_GROUP(x) ((!strcmp(x, "-g")) || (!strcmp(x, "--group")))\r
+#define IS_INCLUDE(x) ((!strcmp(x, "-i")) || (!strcmp(x, "--include")))\r
+#define IS_HELP(x) ((!strcmp(x, "-h")) || (!strcmp(x, "--help")))\r
+ static const Ecore_Getopt optdesc = {\r
+ "edje_pick",\r
+ NULL,\r
+ "0.0",\r
+ "(C) 2012 Enlightenment",\r
+ "Public domain?",\r
+ "Edje Pick - the \"edj\" merging tool.",\r
+\r
+ EINA_TRUE,\r
+ {\r
+ ECORE_GETOPT_STORE_TRUE('v', "verbose", "Verbose"),\r
+ ECORE_GETOPT_STORE('o', "output", "Output File",\r
+ ECORE_GETOPT_TYPE_STR),\r
+ ECORE_GETOPT_APPEND_METAVAR('a', "append", "Append File",\r
+ "STRING", ECORE_GETOPT_TYPE_STR),\r
+ ECORE_GETOPT_APPEND_METAVAR('i', "include", "Include File",\r
+ "STRING", ECORE_GETOPT_TYPE_STR),\r
+ ECORE_GETOPT_APPEND_METAVAR('g', "group", "Add Group",\r
+ "STRING", ECORE_GETOPT_TYPE_STR),\r
+ ECORE_GETOPT_HELP('h', "help"),\r
+ ECORE_GETOPT_SENTINEL\r
+ }\r
+ };\r
+\r
+ Ecore_Getopt_Value values[] = {\r
+ ECORE_GETOPT_VALUE_BOOL(context.v),\r
+ ECORE_GETOPT_VALUE_STR(output_filename),\r
+ ECORE_GETOPT_VALUE_LIST(a_files),\r
+ ECORE_GETOPT_VALUE_LIST(i_files),\r
+ ECORE_GETOPT_VALUE_LIST(groups),\r
+ ECORE_GETOPT_VALUE_NONE\r
+ };\r
\r
/* START - Read command line args */\r
+ c = NULL;\r
for(k = 1; k < argc; k++)\r
- {\r
- /* START - parse command line */\r
- if (strcmp(argv[k], "-a") == 0)\r
+ { /* Run through args, count how many groups per file */\r
+ if(IS_GROUP(argv[k]))\r
{\r
- /* Switch mode to get file name */\r
- if (current_inp &&\r
- ((!current_inp->name) ||\r
- ((!current_inp->append) && !current_inp->groups)))\r
- return _edje_pick_cleanup(files, EDJE_PICK_INCOMPLETE_STRUCT);\r
-\r
- current_inp = calloc(1, sizeof(*current_inp));\r
- current_inp->append = EINA_TRUE;\r
- files = eina_list_append(files, current_inp);\r
- pm = EDJE_PICK_GET_FILENAME;\r
+ if (!c)\r
+ return _edje_pick_cleanup(files, NULL,\r
+ EDJE_PICK_INCLUDE_MISSING);\r
+\r
+ (*c)++;\r
continue;\r
}\r
\r
- if (strcmp(argv[k], "-i") == 0)\r
+ if(IS_INCLUDE(argv[k]))\r
{\r
- /* Switch mode to get file name */\r
- if (current_inp &&\r
- ((!current_inp->name) ||\r
- ((!current_inp->append) && !current_inp->groups)))\r
- return _edje_pick_cleanup(files, EDJE_PICK_INCOMPLETE_STRUCT);\r
-\r
- current_inp = calloc(1, sizeof(*current_inp));\r
- files = eina_list_append(files, current_inp);\r
- pm = EDJE_PICK_GET_FILENAME;\r
+ c = calloc(1, sizeof(int));\r
+ gpf = eina_list_append(gpf, c);\r
continue;\r
}\r
\r
- if (strcmp(argv[k], "-g") == 0)\r
- {\r
- /* Switch mode to get groups names for current file */\r
- if (current_inp && (!current_inp->name))\r
- return _edje_pick_cleanup(files, EDJE_PICK_INP_NAME_MISSING);\r
+ show_help |= IS_HELP(argv[k]);\r
+ }\r
\r
- pm = EDJE_PICK_GET_GROUPS;\r
- continue;\r
- }\r
+ if (show_help)\r
+ puts(EDJE_PICK_HELP_STRING);\r
\r
- if (strcmp(argv[k], "-o") == 0)\r
- {\r
- /* Switch to get output file name */\r
- if (current_inp &&\r
- ((!current_inp->name) ||\r
- ((!current_inp->append) && !current_inp->groups)))\r
- return _edje_pick_cleanup(files, EDJE_PICK_INCOMPLETE_STRUCT);\r
+ if (ecore_getopt_parse(&optdesc, values, argc, argv) < 0)\r
+ {\r
+ EINA_LIST_FREE(gpf, c)\r
+ free(c);\r
\r
- pm = EDJE_PICK_GET_OUTPUT_FILENAME;\r
- continue;\r
- }\r
+ return _edje_pick_cleanup(files, NULL, EDJE_PICK_PARSE_FAILED);\r
+ }\r
\r
- if (strcmp(argv[k], "-v") == 0)\r
- {\r
- context.v = EINA_TRUE; /* Verbose mode on */\r
- continue;\r
- }\r
+ if (show_help)\r
+ {\r
+ EINA_LIST_FREE(gpf, c)\r
+ free(c);\r
+\r
+ ecore_getopt_list_free(i_files);\r
+ ecore_getopt_list_free(groups);\r
+ return _edje_pick_cleanup(files, NULL, EDJE_PICK_HELP_SHOWN);\r
+ }\r
\r
- switch (pm)\r
+ if (context.v) /* Changed to INFO if verbose */\r
+ eina_log_level_set(EINA_LOG_LEVEL_INFO);\r
+\r
+ EINA_LIST_FOREACH(a_files, l, str)\r
+ {\r
+ current_inp = calloc(1, sizeof(*current_inp));\r
+ current_inp->append = EINA_TRUE;\r
+ current_inp->name = eina_stringshare_add(str);\r
+ files = eina_list_append(files, current_inp);\r
+ }\r
+ ecore_getopt_list_free(a_files);\r
+\r
+ ll = gpf;\r
+ cg = groups;\r
+ EINA_LIST_FOREACH(i_files, l, str)\r
+ { /* Now match groups from groups-list with included files */\r
+ current_inp = calloc(1, sizeof(*current_inp));\r
+ current_inp->name = eina_stringshare_add(str);\r
+ files = eina_list_append(files, current_inp);\r
+ c = eina_list_data_get(ll);\r
+ if (c)\r
{\r
- case EDJE_PICK_GET_FILENAME:\r
- if (current_inp->name)\r
- return _edje_pick_cleanup(files, EDJE_PICK_DUP_FILENAME);\r
- else\r
- current_inp->name = argv[k];\r
- break;\r
-\r
- case EDJE_PICK_GET_GROUPS:\r
- if (!current_inp)\r
- return _edje_pick_cleanup(files, EDJE_PICK_INCOMPLETE_STRUCT);\r
-\r
- if (_group_name_in_other_file(files, current_inp, argv[k]))\r
- return _edje_pick_cleanup(files, EDJE_PICK_DUP_GROUP);\r
-\r
- if (!eina_list_search_unsorted(current_inp->groups,\r
- (Eina_Compare_Cb) strcmp,\r
- argv[k]))\r
- current_inp->groups = eina_list_append(current_inp->groups,\r
- eina_stringshare_add(argv[k]));\r
- break;\r
-\r
- case EDJE_PICK_GET_OUTPUT_FILENAME:\r
- if (output_filename)\r
- return _edje_pick_cleanup(files, EDJE_PICK_DUP_OUT_FILENAME);\r
-\r
- output_filename = argv[k];\r
- break;\r
- default: ;\r
+ while(*c)\r
+ {\r
+ char *g_name;\r
+ if (!cg)\r
+ {\r
+ EINA_LIST_FREE(gpf, c)\r
+ free(c);\r
+\r
+ ecore_getopt_list_free(i_files);\r
+ ecore_getopt_list_free(groups);\r
+ return _edje_pick_cleanup(files, NULL,\r
+ EDJE_PICK_GROUP_MISSING);\r
+ }\r
+\r
+\r
+ g_name = eina_list_data_get(cg);\r
+ if (_group_name_in_other_file(files, current_inp, g_name))\r
+ return _edje_pick_cleanup(files, NULL, EDJE_PICK_DUP_GROUP);\r
+\r
+ if (!eina_list_search_unsorted(current_inp->groups,\r
+ (Eina_Compare_Cb) strcmp, g_name))\r
+ current_inp->groups = eina_list_append(\r
+ current_inp->groups, eina_stringshare_add(g_name));\r
+\r
+ cg = eina_list_next(cg);\r
+ (*c)--;\r
+ }\r
}\r
- } /* END - parse command line */\r
+ ll = eina_list_next(ll);\r
+ }\r
\r
- if (!files)\r
- return _edje_pick_cleanup(files, EDJE_PICK_NO_INPUT_FILES_DEFINED);\r
+ EINA_LIST_FREE(gpf, c)\r
+ free(c);\r
+\r
+ ecore_getopt_list_free(i_files);\r
+ ecore_getopt_list_free(groups);\r
\r
- if (current_inp &&\r
- ((!current_inp->name) ||\r
- ((!current_inp->append) && !current_inp->groups)))\r
- return _edje_pick_cleanup(files, EDJE_PICK_INCOMPLETE_STRUCT);\r
\r
if (!output_filename)\r
- return _edje_pick_cleanup(files, EDJE_PICK_OUT_FILENAME_MISSING);\r
+ return _edje_pick_cleanup(files, NULL, EDJE_PICK_OUT_FILENAME_MISSING);\r
/* END - Read command line args */\r
\r
/* Set output params, return OK */\r
{\r
if (o->version != edf->version)\r
{\r
- printf("Warning: Merging files of various version.\n");\r
+ EINA_LOG_WARN("Warning: Merging files of various version.\n");\r
if (o->version < edf->version)\r
o->version = edf->version;\r
}\r
\r
if (o->minor != edf->minor)\r
{\r
- printf("Warning: Merging files of various minor.\n");\r
+ EINA_LOG_WARN("Warning: Merging files of various minor.\n");\r
if (o->minor < edf->minor)\r
o->minor = edf->minor;\r
}\r
\r
if (o->feature_ver != edf->feature_ver)\r
{\r
- printf("Warning: Merging files of various feature_ver.\n");\r
+ EINA_LOG_WARN("Warning: Merging files of various feature_ver.\n");\r
if (o->feature_ver < edf->feature_ver)\r
o->feature_ver = edf->feature_ver;\r
}\r
static int current_group_id = 0;\r
Edje_Part_Collection_Directory_Entry *ce;\r
Eina_Bool status = EDJE_PICK_NO_ERROR;\r
- Eina_List *l, *lst = NULL;\r
-\r
- Eina_Iterator *i;\r
- const char *key;\r
+ Eina_List *l;\r
char *name1 = NULL;\r
\r
- i = eina_hash_iterator_key_new(edf->collection);\r
-\r
- /* FIXME: Don't build a list, use iterator and hash where relevant */\r
- EINA_ITERATOR_FOREACH(i, key) /* Make list of all keys */\r
- lst = eina_list_append(lst, eina_stringshare_add(key));\r
-\r
- eina_iterator_free(i);\r
\r
_edje_cache_file_unref(edf);\r
\r
/* Build file header */\r
if (context.current_file->append)\r
{\r
- EINA_LIST_FOREACH(lst, l, name1)\r
+ Eina_Iterator *i;\r
+ i = eina_hash_iterator_key_new(edf->collection);\r
+ EINA_ITERATOR_FOREACH(i, name1) /* Run through all keys */\r
{\r
Edje_Part_Collection_Directory_Entry *ce_out;\r
\r
/* Use ALL groups from this file */\r
/* Test that no duplicate-group name for files in append mode */\r
- /* Here because we don't read EDC before parse cmd line */\r
+ /* Done here because we don't read EDC before parse cmd line */\r
+ /* We SKIP group of file in append-mode if we got this group */\r
+ /* from file in include mode. */\r
if (_group_name_in_other_file(ifs, context.current_file, name1))\r
- return EDJE_PICK_DUP_GROUP;\r
+ continue; /* Skip group of file in append mode */\r
\r
ce = eina_hash_find(edf->collection, name1);\r
ce_out = malloc(sizeof(*ce_out));\r
memcpy(ce_out, ce, sizeof(*ce_out));\r
\r
ce_out->id = current_group_id;\r
- printf("Changing ID of group <%d> to <%d>\n",ce->id, ce_out->id);\r
+ EINA_LOG_INFO("Changing ID of group <%d> to <%d>\n",\r
+ ce->id, ce_out->id);\r
current_group_id++;\r
\r
eina_hash_direct_add(out_file->collection, ce_out->entry, ce_out);\r
\r
/* Add this group to groups to handle for this file */\r
- context.current_file->groups = eina_list_append(context.current_file->groups,\r
- eina_stringshare_add(name1));\r
+ context.current_file->groups = eina_list_append(\r
+ context.current_file->groups, eina_stringshare_add(name1));\r
}\r
+\r
+ eina_iterator_free(i);\r
}\r
else\r
{\r
EINA_LIST_FOREACH(context.current_file->groups, l , name1)\r
{\r
/* Verify group found then add to ouput file header */\r
- char *name2 = eina_list_search_unsorted(lst,\r
- (Eina_Compare_Cb) strcmp,\r
- name1);\r
+ ce = eina_hash_find(edf->collection, name1);\r
\r
- if (!name2)\r
+ if (!ce)\r
{\r
- printf("Group <%s> was not found in <%s> file.\n",\r
+ EINA_LOG_ERR("Group <%s> was not found in <%s> file.\n",\r
name1, context.current_file->name);\r
status = EDJE_PICK_GROUP_NOT_FOUND;\r
}\r
Edje_Part_Collection_Directory_Entry *ce_out;\r
\r
/* Add this groups to hash, with filname pefix for entries */\r
- ce = eina_hash_find(edf->collection, name2);\r
ce_out = malloc(sizeof(*ce_out));\r
\r
memcpy(ce_out, ce, sizeof(*ce_out));\r
\r
ce_out->id = current_group_id;\r
- printf("Changing ID of group <%d> to <%d>\n",ce->id, ce_out->id);\r
+ EINA_LOG_INFO("Changing ID of group <%d> to <%d>\n",\r
+ ce->id, ce_out->id);\r
current_group_id++;\r
\r
- eina_hash_direct_add(out_file->collection,ce_out->entry,ce_out);\r
+ eina_hash_direct_add(out_file->collection,ce_out->entry,\r
+ ce_out);\r
}\r
}\r
}\r
\r
- EINA_LIST_FREE(lst, key)\r
- eina_stringshare_del(key);\r
-\r
return status;\r
}\r
\r
}\r
\r
static int\r
-_edje_pick_images_add(Edje_File *edf)\r
+_edje_pick_images_add(Edje_File *edf, Edje_File *o)\r
{\r
char buf[1024];\r
- int size, k;\r
+ int size;\r
+ unsigned int k;\r
void *data;\r
Eina_Bool status = EDJE_PICK_NO_ERROR;\r
static int current_img_id = 0;\r
\r
- if (edf->image_dir) /* Copy Images */\r
- for (k = 0; k < (int) edf->image_dir->entries_count; k++)\r
- {\r
- Edje_Image_Directory_Entry *img = &edf->image_dir->entries[k];\r
-\r
- snprintf(buf, sizeof(buf), "edje/images/%i", img->id);\r
- VERBOSE(printf("Trying to read <%s>\n", img->entry));\r
- data = eet_read(edf->ef, buf, &size);\r
- if (size)\r
- { /* Advance image ID and register this in imagelist */\r
- Edje_Pick_Data *image = malloc(sizeof(*image));\r
-\r
- image->filename = eina_stringshare_add(img->entry);\r
- image->data = data;\r
- image->size = size;\r
- image->entry = (void *) img; /* for output file image dir */\r
- image->id.old_id = img->id;\r
- img->id = image->id.new_id = current_img_id;\r
- image->id.used = EINA_FALSE;\r
-\r
- VERBOSE(printf("Read image <%s> data <%p> size <%d>\n",\r
- buf, image->data, image->size));\r
-\r
- current_img_id++;\r
- context.current_file->imagelist = eina_list_append(context.current_file->imagelist,\r
- image);\r
- }\r
- else\r
- {\r
- printf("Image <%s> was not found in <%s> file.\n",\r
- img->entry , context.current_file->name);\r
- status = EDJE_PICK_IMAGE_NOT_FOUND;\r
- }\r
- }\r
+ if (edf->image_dir)\r
+ {\r
+ if (!o->image_dir) /* First time only */\r
+ o->image_dir = calloc(1, sizeof(*(o->image_dir)));\r
+\r
+ for (k = 0; k < edf->image_dir->entries_count; k++)\r
+ { /* Copy Images */\r
+ Edje_Image_Directory_Entry *img = &edf->image_dir->entries[k];\r
+\r
+ snprintf(buf, sizeof(buf), "edje/images/%i", img->id);\r
+ VERBOSE(EINA_LOG_INFO("Trying to read <%s>\n", img->entry));\r
+ data = eet_read(edf->ef, buf, &size);\r
+ if (size)\r
+ { /* Advance image ID and register this in imagelist */\r
+ Edje_Pick_Data *image = malloc(sizeof(*image));\r
+\r
+ image->filename = eina_stringshare_add(img->entry);\r
+ image->data = data;\r
+ image->size = size;\r
+ image->entry = (void *) img; /* for output file image dir */\r
+ image->id.old_id = img->id;\r
+ img->id = image->id.new_id = current_img_id;\r
+ image->id.used = EINA_FALSE;\r
+\r
+ VERBOSE(EINA_LOG_INFO("Read image <%s> data <%p> size <%d>\n",\r
+ buf, image->data, image->size));\r
+\r
+ current_img_id++;\r
+ context.current_file->imagelist = eina_list_append(\r
+ context.current_file->imagelist, image);\r
+ }\r
+ else\r
+ {\r
+ if (img->entry)\r
+ {\r
+ EINA_LOG_ERR("Image <%s> was not found in <%s> file.\n",\r
+ img->entry , context.current_file->name);\r
+ status = EDJE_PICK_IMAGE_NOT_FOUND;\r
+ }\r
+ else\r
+ {\r
+ EINA_LOG_ERR("Image entry <%s> was not found in <%s> file.\n", buf , context.current_file->name);\r
+ status = EDJE_PICK_IMAGE_NOT_FOUND;\r
+ }\r
+ }\r
+ }\r
+\r
+ if (edf->image_dir->entries)\r
+ { /* Copy image dir entries of current file */\r
+ k = o->image_dir->entries_count; /* save current entries count */\r
+ o->image_dir->entries_count += edf->image_dir->entries_count;\r
+\r
+ /* alloc mem first time or re-allocate again (bigger array) */\r
+ o->image_dir->entries = realloc(o->image_dir->entries,\r
+ o->image_dir->entries_count *\r
+ sizeof(Edje_Image_Directory_Entry));\r
+\r
+ /* Concatinate current file entries to re-allocaed array */\r
+ memcpy(&o->image_dir->entries[k], edf->image_dir->entries,\r
+ edf->image_dir->entries_count *\r
+ sizeof(Edje_Image_Directory_Entry));\r
+ }\r
+\r
+ if (edf->image_dir->sets)\r
+ { /* Copy image dir sets of current file */\r
+ k = o->image_dir->sets_count; /* save current sets count */\r
+ o->image_dir->sets_count += edf->image_dir->sets_count;\r
+ /* alloc mem first time or re-allocate again (bigger array) */\r
+ o->image_dir->sets = realloc(o->image_dir->sets,\r
+ o->image_dir->sets_count *\r
+ sizeof(Edje_Image_Directory_Set_Entry));\r
+\r
+ /* Concatinate current file sets to re-allocaed array */\r
+ memcpy(&o->image_dir->sets[k], edf->image_dir->sets,\r
+ edf->image_dir->sets_count *\r
+ sizeof(Edje_Image_Directory_Set_Entry));\r
+\r
+ for (; k < o->image_dir->sets_count; k++)\r
+ { /* Fix IDs in sets to new assigned IDs of entries */\r
+ Eina_List *l;\r
+ Edje_Image_Directory_Set_Entry *e;\r
+ Edje_Pick_Data *set = calloc(1, sizeof(*set));\r
+ set->id.old_id = o->image_dir->sets[k].id;\r
+ set->id.new_id = k;\r
+\r
+ /* Save IDs in set-list, used in Desc update later */\r
+ context.current_file->imagesetlist = eina_list_append(\r
+ context.current_file->imagesetlist, set);\r
+\r
+ o->image_dir->sets[k].id = k; /* Fix new sets IDs */\r
+ EINA_LIST_FOREACH(o->image_dir->sets[k].entries, l, e)\r
+ e->id = _edje_pick_new_id_get(\r
+ context.current_file->imagelist,\r
+ e->id, EINA_FALSE);\r
+ }\r
+ }\r
+ }\r
\r
return status;\r
}\r
Edje_Sound_Sample *sample = &edf->sound_dir->samples[k];\r
\r
snprintf(buf, sizeof(buf), "edje/sounds/%i", sample->id);\r
- VERBOSE(printf("Trying to read <%s>\n", sample->name));\r
+ VERBOSE(EINA_LOG_INFO("Trying to read <%s>\n", sample->name));\r
\r
data = eet_read(edf->ef, buf, &size);\r
if (size)\r
sample->id = smpl->id.new_id = current_sample_id;\r
smpl->id.used = EINA_FALSE;\r
\r
- VERBOSE(printf("Read <%s> sample data <%p> size <%d>\n",\r
+ VERBOSE(EINA_LOG_INFO("Read <%s> sample data <%p> size <%d>\n",\r
buf, smpl->data, smpl->size));\r
\r
current_sample_id++;\r
}\r
else\r
{\r
- printf("Sample <%s> was not found in <%s> file.\n",\r
+ EINA_LOG_ERR("Sample <%s> was not found in <%s> file.\n",\r
sample->name, context.current_file->name);\r
status = EDJE_PICK_SAMPLE_NOT_FOUND;\r
}\r
static int\r
_Edje_Pick_Fonts_add(Edje_File *edf)\r
{\r
- /* FIXME: share code with other bin */\r
Eet_Data_Descriptor *_font_list_edd = NULL;\r
Eet_Data_Descriptor *_font_edd;\r
- Eet_Data_Descriptor_Class eddc;\r
Font_List *fl;\r
Font *f;\r
Eina_List *l;\r
\r
- eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc),\r
- "font", sizeof (Font));\r
- _font_edd = eet_data_descriptor_stream_new(&eddc);\r
- EET_DATA_DESCRIPTOR_ADD_BASIC(_font_edd, Font,\r
- "file", file, EET_T_INLINED_STRING);\r
- EET_DATA_DESCRIPTOR_ADD_BASIC(_font_edd, Font,\r
- "name", name, EET_T_INLINED_STRING);\r
-\r
- eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc),\r
- "font_list", sizeof (Font_List));\r
- _font_list_edd = eet_data_descriptor_stream_new(&eddc);\r
- EET_DATA_DESCRIPTOR_ADD_LIST(_font_list_edd, Font_List,\r
- "list", list, _font_edd);\r
+ _edje_data_font_list_desc_make(&_font_list_edd, &_font_edd);\r
fl = eet_data_read(edf->ef, _font_list_edd, "edje_source_fontmap");\r
\r
EINA_LIST_FOREACH(fl->list, l, f)\r
s->id.new_id = new_id;\r
s->id.used = EINA_TRUE;\r
\r
- VERBOSE(printf("Read embryo script <%s> data <%p> size <%d>\n",\r
+ VERBOSE(EINA_LOG_INFO("Read embryo script <%s> data <%p> size <%d>\n",\r
buf, s->data, s->size));\r
context.current_file->scriptlist = eina_list_append(context.current_file->scriptlist, s);\r
}\r
s->id.new_id = new_id;\r
s->id.used = EINA_TRUE;\r
\r
- VERBOSE(printf("Read lua script <%s> data <%p> size <%d>\n",\r
+ VERBOSE(EINA_LOG_INFO("Read lua script <%s> data <%p> size <%d>\n",\r
buf, s->data, s->size));\r
context.current_file->luascriptlist = eina_list_append(context.current_file->luascriptlist, s);\r
}\r
if (desc)\r
{\r
unsigned int k;\r
+ int new_id = (desc->image.set) ?\r
+ _edje_pick_new_id_get(context.current_file->imagesetlist,\r
+ desc->image.id,\r
+ EINA_TRUE) :\r
+ _edje_pick_new_id_get(context.current_file->imagelist,\r
+ desc->image.id,\r
+ EINA_TRUE);\r
\r
- desc->image.id = _edje_pick_new_id_get(context.current_file->imagelist,\r
- desc->image.id,\r
- EINA_TRUE);\r
+ desc->image.id = new_id;\r
\r
for (k = 0; k < desc->image.tweens_count; k++)\r
- desc->image.tweens[k]->id = _edje_pick_new_id_get(context.current_file->imagelist,\r
- desc->image.tweens[k]->id ,\r
- EINA_TRUE);\r
+ {\r
+ new_id = (desc->image.set) ?\r
+ _edje_pick_new_id_get(context.current_file->imagesetlist,\r
+ desc->image.tweens[k]->id ,\r
+ EINA_TRUE) :\r
+ _edje_pick_new_id_get(context.current_file->imagelist,\r
+ desc->image.tweens[k]->id ,\r
+ EINA_TRUE);\r
+\r
+ desc->image.tweens[k]->id = new_id;\r
+ }\r
}\r
}\r
\r
}\r
\r
static void\r
-_edje_pick_image_dir_compose(Eina_List *images,\r
- Edje_Image_Directory_Set *sets,\r
- unsigned int sets_count,\r
- Edje_File *o)\r
-{\r
- /* Compose image_dir array from all used images */\r
- if (images)\r
- {\r
- Edje_Image_Directory_Entry *entry;\r
- Edje_Image_Directory_Entry *p;\r
- Eina_List *l;\r
-\r
- o->image_dir = calloc(1, sizeof(*(o->image_dir)));\r
-\r
- o->image_dir->entries = malloc(eina_list_count(images) *\r
- sizeof(Edje_Image_Directory_Entry));\r
-\r
- p = o->image_dir->entries;\r
- EINA_LIST_FOREACH(images, l, entry)\r
- {\r
- memcpy(p, entry, sizeof(Edje_Image_Directory_Entry));\r
- p++;\r
- }\r
-\r
- o->image_dir->entries_count = eina_list_count(images);\r
-\r
- o->image_dir->sets = sets;\r
- o->image_dir->sets_count = sets_count;\r
- }\r
-}\r
-\r
-static void\r
_edje_pick_sound_dir_compose(Eina_List *samples, Eina_List *tones, Edje_File *o)\r
{ /* Compose sound_dir array from all used samples, tones */\r
if (samples)\r
}\r
}\r
\r
-int \r
+int\r
main(int argc, char **argv)\r
{\r
char *name1, *output_filename = NULL;\r
Eina_List *samples = NULL;\r
Eina_List *tones = NULL;\r
Edje_Image_Directory_Set *sets = NULL; /* ALL files sets composed here */\r
- unsigned int sets_count = 0; /* ALL files sets-count accumolated here */\r
\r
Edje_Part_Collection *edc;\r
Edje_Part_Collection_Directory_Entry *ce;\r
void *n;\r
int k, bytes;\r
\r
- if (argc < 4)\r
- {\r
- /* FIXME: display a proper help with information */\r
- printf("%s -i|-a input-file.edj -g group1 [group2 ...] [-i input_file2.edj -g ...] -o output-file.edj\n", argv[0]);\r
-\r
- return -1;\r
- }\r
-\r
eina_init();\r
eet_init();\r
+ ecore_init();\r
_edje_edd_init();\r
+ eina_log_level_set(EINA_LOG_LEVEL_WARN); /* Changed to INFO if verbose */\r
\r
- /* FIXME: use Ecore_Getopt */\r
k = _edje_pick_command_line_parse(argc, argv, &inp_files, &output_filename);\r
if ( k != EDJE_PICK_NO_ERROR)\r
return k;\r
\r
ef = eet_open(context.current_file->name, EET_FILE_MODE_READ);\r
if (!ef)\r
- return _edje_pick_cleanup(inp_files, EDJE_PICK_FAILED_OPEN_INP);\r
+ return _edje_pick_cleanup(inp_files, out_file,\r
+ EDJE_PICK_FAILED_OPEN_INP);\r
\r
edf = eet_data_read(ef, _edje_edd_edje_file, "edje/file");\r
if (!edf)\r
- return _edje_pick_cleanup(inp_files, EDJE_PICK_FAILED_READ_INP);\r
+ return _edje_pick_cleanup(inp_files, out_file,\r
+ EDJE_PICK_FAILED_READ_INP);\r
\r
context.current_file->edf = edf;\r
edf->ef = ef;\r
if (k != EDJE_PICK_NO_ERROR)\r
{\r
eet_close(ef);\r
- eet_close(out_file->ef);\r
- return _edje_pick_cleanup(inp_files, k);\r
+ return _edje_pick_cleanup(inp_files, out_file, k);\r
}\r
\r
/* Build lists of all images, samples and fonts of input files */\r
- _edje_pick_images_add(edf); /* Add Images to imagelist */\r
+ _edje_pick_images_add(edf, out_file); /* Add Images to imagelist */\r
_edje_pick_sounds_add(edf); /* Add Sounds to samplelist */\r
_Edje_Pick_Fonts_add(edf); /* Add fonts from file to fonts list */\r
\r
ce = eina_hash_find(edf->collection, name1);\r
if (!ce || (ce->id < 0))\r
{\r
- printf("Failed to find group <%s> id\n", name1);\r
- return _edje_pick_cleanup(inp_files,\r
+ EINA_LOG_ERR("Failed to find group <%s> id\n", name1);\r
+ return _edje_pick_cleanup(inp_files, out_file,\r
EDJE_PICK_GROUP_NOT_FOUND);\r
}\r
\r
- VERBOSE(printf("Copy group: <%s>\n", name1));\r
-\r
- /* FIXME: share code with edje_cache.c */\r
- { /** MEMPOOL ALLOC START *****************/\r
- char *buffer;\r
-#define INIT_EMP(Tp, Sz, Ce) \\r
- buffer = alloca(strlen(ce->entry) + strlen(#Tp) + 2); \\r
- sprintf(buffer, "%s/%s", ce->entry, #Tp); \\r
- Ce->mp.Tp = eina_mempool_add("one_big", buffer, NULL, sizeof (Sz), Ce->count.Tp); \\r
- _emp_##Tp = Ce->mp.Tp;\r
-\r
-#define INIT_EMP_BOTH(Tp, Sz, Ce) \\r
- INIT_EMP(Tp, Sz, Ce)\r
-\r
- INIT_EMP_BOTH(RECTANGLE, Edje_Part_Description_Common, ce);\r
- INIT_EMP_BOTH(TEXT, Edje_Part_Description_Text, ce);\r
- INIT_EMP_BOTH(IMAGE, Edje_Part_Description_Image, ce);\r
- INIT_EMP_BOTH(PROXY, Edje_Part_Description_Proxy, ce);\r
- INIT_EMP_BOTH(SWALLOW, Edje_Part_Description_Common, ce);\r
- INIT_EMP_BOTH(TEXTBLOCK, Edje_Part_Description_Text, ce);\r
- INIT_EMP_BOTH(GROUP, Edje_Part_Description_Common, ce);\r
- INIT_EMP_BOTH(BOX, Edje_Part_Description_Box, ce);\r
- INIT_EMP_BOTH(TABLE, Edje_Part_Description_Table, ce);\r
- INIT_EMP_BOTH(EXTERNAL, Edje_Part_Description_External, ce);\r
- INIT_EMP_BOTH(SPACER, Edje_Part_Description_Common, ce);\r
- INIT_EMP(part, Edje_Part, ce);\r
- } /** MEMPOOL ALLOC END *******************/\r
+ VERBOSE(EINA_LOG_INFO("Copy group: <%s>\n", name1));\r
+\r
+ edje_cache_emp_alloc(ce);\r
\r
snprintf(buf, sizeof(buf), "edje/collections/%i", ce->id);\r
- printf("Trying to read group <%s>\n", buf);\r
+ EINA_LOG_INFO("Trying to read group <%s>\n", buf);\r
edc = eet_data_read(edf->ef, _edje_edd_edje_part_collection, buf);\r
if (!edc)\r
{\r
- printf("Failed to read group <%s> id <%d>\n", name1, ce->id);\r
- return _edje_pick_cleanup(inp_files,\r
+ EINA_LOG_ERR("Failed to read group <%s> id <%d>\n", name1, ce->id);\r
+ return _edje_pick_cleanup(inp_files, out_file,\r
EDJE_PICK_GROUP_NOT_FOUND);\r
}\r
\r
bytes = eet_data_write(out_file->ef,\r
_edje_edd_edje_part_collection,\r
buf, edc, comp_mode);\r
- printf("Wrote <%d> bytes for group <%s>\n", bytes,buf);\r
+ EINA_LOG_INFO("Wrote <%d> bytes for group <%s>\n", bytes,buf);\r
}\r
\r
free(edc);\r
+ edje_cache_emp_free(ce);\r
eet_close(ef);\r
}\r
\r
/* Write Scripts */\r
snprintf(buf, sizeof(buf),\r
"edje/scripts/embryo/compiled/%i", s->id.new_id);\r
- VERBOSE(printf("wrote embryo scr <%s> data <%p> size <%d>\n",\r
+ VERBOSE(EINA_LOG_INFO("wrote embryo scr <%s> data <%p> size <%d>\n",\r
buf, s->data, s->size));\r
eet_write(out_file->ef, buf, s->data, s->size, comp_mode);\r
}\r
/* Write Lua Scripts */\r
snprintf(buf, sizeof(buf),\r
"edje/scripts/lua/%i", s->id.new_id);\r
- VERBOSE(printf("wrote lua scr <%s> data <%p> size <%d>\n",\r
+ VERBOSE(EINA_LOG_INFO("wrote lua scr <%s> data <%p> size <%d>\n",\r
buf, s->data, s->size));\r
eet_write(out_file->ef, buf, s->data, s->size, comp_mode);\r
}\r
{\r
if (context.current_file->append || s->id.used)\r
{\r
- images = eina_list_append(images, s->entry);\r
-\r
-\r
snprintf(buf, sizeof(buf), "edje/images/%i", s->id.new_id);\r
eet_write(out_file->ef, buf, s->data, s->size, EINA_TRUE);\r
- VERBOSE(printf("Wrote <%s> image data <%p> size <%d>\n",\r
- buf, s->data, s->size));\r
+ VERBOSE(EINA_LOG_INFO("Wrote <%s> image data <%p> size <%d>\n", buf, s->data, s->size));\r
}\r
}\r
\r
- if (edf->image_dir && edf->image_dir->sets_count)\r
- {\r
- /* Update sets from current file sets */\r
- sets = realloc(sets,\r
- (edf->image_dir->sets_count + sets_count)\r
- * sizeof(Edje_Image_Directory_Set));\r
-\r
- memcpy(&sets[sets_count],\r
- edf->image_dir->sets,\r
- edf->image_dir->sets_count *\r
- sizeof(Edje_Image_Directory_Set));\r
-\r
- sets_count += edf->image_dir->sets_count;\r
- }\r
-\r
EINA_LIST_FOREACH(context.current_file->samplelist, l, s)\r
{\r
if (context.current_file->append || s->id.used)\r
s->id.new_id);\r
eet_write(out_file->ef, buf,\r
s->data, s->size,EINA_TRUE);\r
- VERBOSE(printf("Wrote <%s> sample data <%p> size <%d>\n",\r
+ VERBOSE(EINA_LOG_INFO("Wrote <%s> sample data <%p> size <%d>\n",\r
buf, s->data, s->size));\r
}\r
}\r
}\r
}\r
\r
- /* Add all files images to out_file image_dir */\r
- _edje_pick_image_dir_compose(images, sets, sets_count, out_file);\r
_edje_pick_sound_dir_compose(samples, tones, out_file);\r
\r
- if (out_file->image_dir)\r
- {\r
- /* Fix sets IDs */\r
- unsigned int j, i;\r
- Edje_Image_Directory_Set *p;\r
-\r
- for (j = 0; j < out_file->image_dir->sets_count; ++j)\r
- {\r
- p = &out_file->image_dir->sets[k];\r
-\r
- for (i = 0; i < out_file->image_dir->entries_count; ++i)\r
- if (!strcmp(out_file->image_dir->entries[i].entry, p->name))\r
- {\r
- p->id = i;\r
- break;\r
- }\r
- }\r
-\r
- }\r
-\r
/* Write file header after processing all groups */\r
bytes = eet_data_write(out_file->ef, _edje_edd_edje_file, "edje/file",\r
out_file, comp_mode);\r
\r
- VERBOSE(printf("Wrote <%d> bytes for file header.\n", bytes));\r
+ VERBOSE(EINA_LOG_INFO("Wrote <%d> bytes for file header.\n", bytes));\r
\r
eina_list_free(images);\r
eina_list_free(samples);\r
}\r
\r
{\r
- /* FIXME: share code with other bin */\r
/* Write Fonts from all files */\r
- Eet_Data_Descriptor_Class eddc;\r
Eet_Data_Descriptor *_font_list_edd = NULL;\r
Eet_Data_Descriptor *_font_edd;\r
\r
- eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc),\r
- "font", sizeof (Font));\r
-\r
- _font_edd = eet_data_descriptor_stream_new(&eddc);\r
- EET_DATA_DESCRIPTOR_ADD_BASIC(_font_edd, Font,\r
- "file", file, EET_T_INLINED_STRING);\r
- EET_DATA_DESCRIPTOR_ADD_BASIC(_font_edd, Font,\r
- "name", name, EET_T_INLINED_STRING);\r
-\r
- eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc),\r
- "font_list", sizeof (Font_List));\r
- _font_list_edd = eet_data_descriptor_stream_new(&eddc);\r
- EET_DATA_DESCRIPTOR_ADD_LIST(_font_list_edd, Font_List,\r
- "list", list, _font_edd);\r
+ _edje_data_font_list_desc_make(&_font_list_edd, &_font_edd);\r
bytes = eet_data_write(out_file->ef, _font_list_edd,\r
"edje_source_fontmap", fl, comp_mode);\r
- VERBOSE(printf("Wrote <%d> bytes for fontmap.\n", bytes));\r
+ VERBOSE(EINA_LOG_INFO("Wrote <%d> bytes for fontmap.\n", bytes));\r
\r
eet_data_descriptor_free(_font_list_edd);\r
eet_data_descriptor_free(_font_edd);\r
free(sets);\r
\r
printf("Wrote <%s> output file.\n", output_filename);\r
- if (out_file)\r
- {\r
- /* Free output file memory allocation */\r
- if (out_file->ef)\r
- eet_close(out_file->ef);\r
-\r
- if (out_file->external_dir)\r
- {\r
- if (out_file->external_dir->entries)\r
- free(out_file->external_dir->entries);\r
-\r
- free(out_file->external_dir);\r
- }\r
-\r
- if (out_file->image_dir)\r
- {\r
- if (out_file->image_dir->entries)\r
- free(out_file->image_dir->entries);\r
-\r
- free(out_file->image_dir);\r
- }\r
-\r
- if (out_file->sound_dir)\r
- {\r
- if (out_file->sound_dir->samples)\r
- free(out_file->sound_dir->samples);\r
-\r
- if (out_file->sound_dir->tones)\r
- free(out_file->sound_dir->tones);\r
-\r
- free(out_file->sound_dir);\r
- }\r
-\r
- eina_list_free(out_file->color_classes);\r
- eina_hash_free_cb_set(out_file->collection, free);\r
- eina_hash_free(out_file->collection);\r
- eina_stringshare_del(out_file->compiler);\r
- free(out_file);\r
- }\r
\r
- return _edje_pick_cleanup(inp_files, EDJE_PICK_NO_ERROR);\r
+ return _edje_pick_cleanup(inp_files, out_file, EDJE_PICK_NO_ERROR);\r
}\r