2003-06-11 06:20:48 -07:00
|
|
|
#include "edje_cc.h"
|
|
|
|
|
2003-06-13 20:06:36 -07:00
|
|
|
typedef struct _Part_Lookup Part_Lookup;
|
2003-06-16 06:55:13 -07:00
|
|
|
typedef struct _Program_Lookup Program_Lookup;
|
2003-06-13 20:06:36 -07:00
|
|
|
typedef struct _Image_Lookup Image_Lookup;
|
|
|
|
|
|
|
|
struct _Part_Lookup
|
|
|
|
{
|
|
|
|
Edje_Part_Collection *pc;
|
|
|
|
char *name;
|
|
|
|
int *dest;
|
|
|
|
};
|
|
|
|
|
2003-06-16 06:55:13 -07:00
|
|
|
struct _Program_Lookup
|
|
|
|
{
|
|
|
|
Edje_Part_Collection *pc;
|
|
|
|
char *name;
|
|
|
|
int *dest;
|
|
|
|
};
|
|
|
|
|
2003-06-13 20:06:36 -07:00
|
|
|
struct _Image_Lookup
|
|
|
|
{
|
|
|
|
char *name;
|
|
|
|
int *dest;
|
|
|
|
};
|
|
|
|
|
2003-06-11 06:20:48 -07:00
|
|
|
Edje_File *edje_file = NULL;
|
2003-06-16 06:55:13 -07:00
|
|
|
Evas_List *edje_collections = NULL;
|
2004-01-22 18:13:42 -08:00
|
|
|
Evas_List *fonts = NULL;
|
2003-06-11 06:20:48 -07:00
|
|
|
|
2003-06-13 20:06:36 -07:00
|
|
|
static Eet_Data_Descriptor *edd_edje_file = NULL;
|
|
|
|
static Eet_Data_Descriptor *edd_edje_image_directory = NULL;
|
|
|
|
static Eet_Data_Descriptor *edd_edje_image_directory_entry = NULL;
|
2003-06-16 06:55:13 -07:00
|
|
|
static Eet_Data_Descriptor *edd_edje_program = NULL;
|
|
|
|
static Eet_Data_Descriptor *edd_edje_program_target = NULL;
|
|
|
|
static Eet_Data_Descriptor *edd_edje_part_collection_directory = NULL;
|
|
|
|
static Eet_Data_Descriptor *edd_edje_part_collection_directory_entry = NULL;
|
|
|
|
static Eet_Data_Descriptor *edd_edje_part_collection = NULL;
|
|
|
|
static Eet_Data_Descriptor *edd_edje_part = NULL;
|
|
|
|
static Eet_Data_Descriptor *edd_edje_part_description = NULL;
|
|
|
|
static Eet_Data_Descriptor *edd_edje_part_image_id = NULL;
|
2003-06-13 20:06:36 -07:00
|
|
|
|
|
|
|
static Evas_List *part_lookups = NULL;
|
2003-06-16 06:55:13 -07:00
|
|
|
static Evas_List *program_lookups = NULL;
|
2003-06-13 20:06:36 -07:00
|
|
|
static Evas_List *image_lookups = NULL;
|
2003-06-11 06:20:48 -07:00
|
|
|
|
2004-03-06 02:21:15 -08:00
|
|
|
#define ABORT_WRITE(eet_file, file) \
|
|
|
|
eet_close(eet_file); \
|
|
|
|
unlink(file); \
|
|
|
|
exit(-1);
|
|
|
|
|
2003-06-11 06:20:48 -07:00
|
|
|
void
|
|
|
|
data_setup(void)
|
|
|
|
{
|
2003-06-17 01:15:06 -07:00
|
|
|
edd_edje_file = _edje_edd_edje_file;
|
|
|
|
edd_edje_image_directory = _edje_edd_edje_image_directory;
|
|
|
|
edd_edje_image_directory_entry = _edje_edd_edje_image_directory_entry;
|
|
|
|
edd_edje_program = _edje_edd_edje_program;
|
|
|
|
edd_edje_program_target = _edje_edd_edje_program_target;
|
|
|
|
edd_edje_part_collection_directory = _edje_edd_edje_part_collection_directory;
|
|
|
|
edd_edje_part_collection_directory_entry = _edje_edd_edje_part_collection_directory_entry;
|
|
|
|
edd_edje_part_collection = _edje_edd_edje_part_collection;
|
|
|
|
edd_edje_part = _edje_edd_edje_part;
|
|
|
|
edd_edje_part_description = _edje_edd_edje_part_description;
|
|
|
|
edd_edje_part_image_id = _edje_edd_edje_part_image_id;
|
2003-06-11 06:20:48 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
data_write(void)
|
|
|
|
{
|
|
|
|
Eet_File *ef;
|
|
|
|
Evas_List *l;
|
2003-06-16 06:55:13 -07:00
|
|
|
int bytes;
|
2003-07-10 18:47:42 -07:00
|
|
|
int input_bytes;
|
|
|
|
int total_bytes;
|
|
|
|
int input_raw_bytes;
|
|
|
|
int image_num;
|
2004-01-22 18:13:42 -08:00
|
|
|
int font_num;
|
2003-07-10 18:47:42 -07:00
|
|
|
int collection_num;
|
2003-06-11 06:20:48 -07:00
|
|
|
|
2003-10-18 19:11:06 -07:00
|
|
|
bytes = 0;
|
2003-07-10 18:47:42 -07:00
|
|
|
input_bytes = 0;
|
|
|
|
total_bytes = 0;
|
|
|
|
input_raw_bytes = 0;
|
|
|
|
image_num = 0;
|
2004-01-22 18:13:42 -08:00
|
|
|
font_num = 0;
|
2003-07-10 18:47:42 -07:00
|
|
|
collection_num = 0;
|
2003-06-11 06:20:48 -07:00
|
|
|
ef = eet_open(file_out, EET_FILE_MODE_WRITE);
|
|
|
|
if (!ef)
|
|
|
|
{
|
2003-06-16 06:55:13 -07:00
|
|
|
fprintf(stderr, "%s: Error. unable to open \"%s\" for writing output\n",
|
2003-06-11 06:20:48 -07:00
|
|
|
progname, file_out);
|
|
|
|
exit(-1);
|
|
|
|
}
|
2003-10-18 19:11:06 -07:00
|
|
|
if (edje_file)
|
2003-06-16 06:55:13 -07:00
|
|
|
{
|
2003-10-18 19:11:06 -07:00
|
|
|
bytes = eet_data_write(ef, edd_edje_file, "edje_file", edje_file, 1);
|
|
|
|
if (bytes <= 0)
|
|
|
|
{
|
|
|
|
fprintf(stderr, "%s: Error. unable to write \"edje_file\" entry to \"%s\" \n",
|
|
|
|
progname, file_out);
|
2004-03-06 02:21:15 -08:00
|
|
|
ABORT_WRITE(ef, file_out);
|
2003-10-18 19:11:06 -07:00
|
|
|
}
|
|
|
|
else
|
|
|
|
total_bytes += bytes;
|
2003-06-16 06:55:13 -07:00
|
|
|
}
|
|
|
|
if (verbose)
|
|
|
|
{
|
|
|
|
printf("%s: Wrote %9i bytes (%4iKb) for \"edje_file\" header\n",
|
|
|
|
progname, bytes, (bytes + 512) / 1024);
|
|
|
|
}
|
2004-01-22 18:13:42 -08:00
|
|
|
for (l = fonts; l; l = l->next)
|
|
|
|
{
|
|
|
|
Font *fn;
|
|
|
|
void *fdata = NULL;
|
|
|
|
int fsize = 0;
|
|
|
|
Evas_List *ll;
|
|
|
|
FILE *f;
|
|
|
|
|
|
|
|
fn = l->data;
|
|
|
|
f = fopen(fn->file, "rb");
|
|
|
|
if (f)
|
|
|
|
{
|
|
|
|
long pos;
|
|
|
|
|
|
|
|
fseek(f, 0, SEEK_END);
|
|
|
|
pos = ftell(f);
|
|
|
|
rewind(f);
|
|
|
|
fdata = malloc(pos);
|
|
|
|
if (fdata)
|
|
|
|
{
|
|
|
|
if (fread(fdata, pos, 1, f) != 1)
|
|
|
|
{
|
|
|
|
fprintf(stderr, "%s: Error. unable to read all of font file \"%s\"\n",
|
|
|
|
progname, fn->file);
|
2004-03-06 02:21:15 -08:00
|
|
|
ABORT_WRITE(ef, file_out);
|
2004-01-22 18:13:42 -08:00
|
|
|
}
|
|
|
|
fsize = pos;
|
|
|
|
}
|
|
|
|
fclose(f);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
for (ll = fnt_dirs; ll; ll = ll->next)
|
|
|
|
{
|
|
|
|
char buf[4096];
|
|
|
|
|
|
|
|
snprintf(buf, sizeof(buf), "%s/%s", (char *)(ll->data), fn->file);
|
|
|
|
f = fopen(buf, "rb");
|
|
|
|
if (f)
|
|
|
|
{
|
|
|
|
long pos;
|
|
|
|
|
|
|
|
fseek(f, 0, SEEK_END);
|
|
|
|
pos = ftell(f);
|
|
|
|
rewind(f);
|
|
|
|
fdata = malloc(pos);
|
|
|
|
printf("%i\n", (int)pos);
|
|
|
|
if (fdata)
|
|
|
|
{
|
|
|
|
if (fread(fdata, pos, 1, f) != 1)
|
|
|
|
{
|
|
|
|
fprintf(stderr, "%s: Error. unable to read all of font file \"%s\"\n",
|
|
|
|
progname, buf);
|
2004-03-06 02:21:15 -08:00
|
|
|
ABORT_WRITE(ef, file_out);
|
2004-01-22 18:13:42 -08:00
|
|
|
}
|
|
|
|
fsize = pos;
|
|
|
|
}
|
|
|
|
fclose(f);
|
|
|
|
if (fdata) break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!fdata)
|
|
|
|
{
|
|
|
|
fprintf(stderr, "%s: Error. unable to write font part \"%s\" entry to %s \n",
|
|
|
|
progname, fn->file, file_out);
|
2004-03-06 02:21:15 -08:00
|
|
|
ABORT_WRITE(ef, file_out);
|
2004-01-22 18:13:42 -08:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
char buf[4096];
|
|
|
|
|
|
|
|
snprintf(buf, sizeof(buf), "fonts/%s", fn->name);
|
|
|
|
bytes = eet_write(ef, buf, fdata, fsize, 1);
|
|
|
|
if (bytes <= 0)
|
|
|
|
{
|
|
|
|
fprintf(stderr, "%s: Error. unable to write font part \"%s\" as \"%s\" part entry to %s \n",
|
|
|
|
progname, fn->file, buf, file_out);
|
2004-03-06 02:21:15 -08:00
|
|
|
ABORT_WRITE(ef, file_out);
|
2004-01-22 18:13:42 -08:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
font_num++;
|
|
|
|
total_bytes += bytes;
|
|
|
|
input_bytes += fsize;
|
|
|
|
input_raw_bytes += fsize;
|
|
|
|
}
|
|
|
|
if (verbose)
|
|
|
|
{
|
|
|
|
printf("%s: Wrote %9i bytes (%4iKb) for \"%s\" font entry \"%s\" compress: [real: %2.1f%%]\n",
|
|
|
|
progname, bytes, (bytes + 512) / 1024, buf, fn->file,
|
|
|
|
100 - (100 * (double)bytes) / ((double)(fsize))
|
|
|
|
);
|
|
|
|
}
|
|
|
|
free(fdata);
|
|
|
|
}
|
|
|
|
}
|
2003-10-18 19:11:06 -07:00
|
|
|
if ((edje_file) && (edje_file->image_dir))
|
2003-06-11 06:20:48 -07:00
|
|
|
{
|
2003-10-18 19:11:06 -07:00
|
|
|
for (l = edje_file->image_dir->entries; l; l = l->next)
|
2003-06-11 06:20:48 -07:00
|
|
|
{
|
2003-10-18 19:11:06 -07:00
|
|
|
Edje_Image_Directory_Entry *img;
|
|
|
|
|
|
|
|
img = l->data;
|
|
|
|
if (img->source_type != EDJE_IMAGE_SOURCE_TYPE_EXTERNAL)
|
2003-06-11 06:20:48 -07:00
|
|
|
{
|
2003-10-18 19:11:06 -07:00
|
|
|
Imlib_Image im;
|
|
|
|
Evas_List *l;
|
2003-06-11 06:20:48 -07:00
|
|
|
|
2003-10-18 19:11:06 -07:00
|
|
|
im = NULL;
|
|
|
|
imlib_set_cache_size(0);
|
|
|
|
for (l = img_dirs; l; l = l->next)
|
2003-06-16 06:55:13 -07:00
|
|
|
{
|
2003-10-18 19:11:06 -07:00
|
|
|
char buf[4096];
|
|
|
|
|
|
|
|
snprintf(buf, sizeof(buf), "%s/%s",
|
|
|
|
(char *)(l->data), img->entry);
|
|
|
|
im = imlib_load_image(buf);
|
|
|
|
if (im) break;
|
2003-06-16 06:55:13 -07:00
|
|
|
}
|
2003-10-18 19:11:06 -07:00
|
|
|
if (!im) im = imlib_load_image(img->entry);
|
|
|
|
if (im)
|
2003-07-10 18:47:42 -07:00
|
|
|
{
|
2003-10-18 19:11:06 -07:00
|
|
|
DATA32 *im_data;
|
|
|
|
int im_w, im_h;
|
|
|
|
int im_alpha;
|
|
|
|
char buf[256];
|
|
|
|
|
|
|
|
imlib_context_set_image(im);
|
|
|
|
im_w = imlib_image_get_width();
|
|
|
|
im_h = imlib_image_get_height();
|
|
|
|
im_alpha = imlib_image_has_alpha();
|
|
|
|
im_data = imlib_image_get_data_for_reading_only();
|
|
|
|
if ((im_data) && (im_w > 0) && (im_h > 0))
|
|
|
|
{
|
|
|
|
snprintf(buf, sizeof(buf), "images/%i", img->id);
|
|
|
|
if (img->source_type == EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT)
|
|
|
|
bytes = eet_data_image_write(ef, buf,
|
|
|
|
im_data, im_w, im_h,
|
|
|
|
im_alpha,
|
|
|
|
img->source_param, 0, 0);
|
|
|
|
else
|
|
|
|
bytes = eet_data_image_write(ef, buf,
|
|
|
|
im_data, im_w, im_h,
|
|
|
|
im_alpha,
|
|
|
|
0, img->source_param, 1);
|
|
|
|
if (bytes <= 0)
|
|
|
|
{
|
|
|
|
fprintf(stderr, "%s: Error. unable to write image part \"%s\" as \"%s\" part entry to %s \n",
|
|
|
|
progname, img->entry, buf, file_out);
|
2004-03-06 02:21:15 -08:00
|
|
|
ABORT_WRITE(ef, file_out);
|
2003-10-18 19:11:06 -07:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
image_num++;
|
|
|
|
total_bytes += bytes;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2004-03-26 01:10:05 -08:00
|
|
|
fprintf(stderr, "%s: Error. unable to load image for image part \"%s\" as \"%s\" part entry to %s \n",
|
2003-10-18 19:11:06 -07:00
|
|
|
progname, img->entry, buf, file_out);
|
2004-03-06 02:21:15 -08:00
|
|
|
ABORT_WRITE(ef, file_out);
|
2003-10-18 19:11:06 -07:00
|
|
|
}
|
|
|
|
if (verbose)
|
|
|
|
{
|
|
|
|
struct stat st;
|
|
|
|
|
|
|
|
if (stat(imlib_image_get_filename(), &st) != 0)
|
|
|
|
st.st_size = 0;
|
|
|
|
input_bytes += st.st_size;
|
|
|
|
input_raw_bytes += im_w * im_h * 4;
|
|
|
|
printf("%s: Wrote %9i bytes (%4iKb) for \"%s\" image entry \"%s\" compress: [raw: %2.1f%%] [real: %2.1f%%]\n",
|
|
|
|
progname, bytes, (bytes + 512) / 1024, buf, img->entry,
|
|
|
|
100 - (100 * (double)bytes) / ((double)(im_w * im_h * 4)),
|
|
|
|
100 - (100 * (double)bytes) / ((double)(st.st_size))
|
|
|
|
);
|
|
|
|
}
|
|
|
|
if (im_data) imlib_image_put_back_data(im_data);
|
|
|
|
imlib_free_image();
|
2003-07-10 18:47:42 -07:00
|
|
|
}
|
2003-10-18 19:11:06 -07:00
|
|
|
else
|
2003-06-16 06:55:13 -07:00
|
|
|
{
|
2003-10-18 19:11:06 -07:00
|
|
|
fprintf(stderr, "%s: Warning. unable to open image \"%s\" for inclusion in output\n",
|
|
|
|
progname, img->entry);
|
2003-06-16 06:55:13 -07:00
|
|
|
}
|
2003-06-11 06:20:48 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2003-06-16 06:55:13 -07:00
|
|
|
for (l = edje_collections; l; l = l->next)
|
|
|
|
{
|
|
|
|
Edje_Part_Collection *pc;
|
2004-01-22 18:13:42 -08:00
|
|
|
Evas_List *ll;
|
|
|
|
|
|
|
|
pc = l->data;
|
|
|
|
for (ll = pc->parts; ll; ll = ll->next)
|
|
|
|
{
|
|
|
|
Edje_Part *ep;
|
|
|
|
Evas_List *l3;
|
|
|
|
Edje_Part_Description *epd;
|
|
|
|
|
|
|
|
ep = ll->data;
|
|
|
|
epd = ep->default_desc;
|
2004-03-06 02:21:15 -08:00
|
|
|
|
|
|
|
if (!epd)
|
|
|
|
{
|
|
|
|
fprintf(stderr, "%s: Error. description missing for part \"%s\"\n",
|
|
|
|
progname, ep->name);
|
|
|
|
ABORT_WRITE(ef, file_out);
|
|
|
|
}
|
|
|
|
|
2004-01-22 18:13:42 -08:00
|
|
|
if (epd->text.font)
|
|
|
|
{
|
|
|
|
Evas_List *lll;
|
|
|
|
|
|
|
|
for (lll = fonts; lll; lll = lll->next)
|
|
|
|
{
|
|
|
|
Font *fn;
|
|
|
|
|
|
|
|
fn = lll->data;
|
|
|
|
if (!strcmp(fn->name, epd->text.font))
|
|
|
|
{
|
|
|
|
char *s;
|
|
|
|
|
|
|
|
s = malloc(strlen(epd->text.font) + strlen("fonts/") + 1);
|
|
|
|
strcpy(s, "fonts/");
|
|
|
|
strcat(s, epd->text.font);
|
|
|
|
free(epd->text.font);
|
|
|
|
epd->text.font = s;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for (l3 = ep->other_desc; l3; l3 = l3->next)
|
|
|
|
{
|
|
|
|
epd = l3->data;
|
|
|
|
if (epd->text.font)
|
|
|
|
{
|
|
|
|
Evas_List *lll;
|
|
|
|
|
|
|
|
for (lll = fonts; lll; lll = lll->next)
|
|
|
|
{
|
|
|
|
Font *fn;
|
|
|
|
|
|
|
|
fn = lll->data;
|
|
|
|
if (!strcmp(fn->name, epd->text.font))
|
|
|
|
{
|
|
|
|
char *s;
|
|
|
|
|
|
|
|
s = malloc(strlen(epd->text.font) + strlen("fonts/") + 1);
|
|
|
|
strcpy(s, "fonts/");
|
|
|
|
strcat(s, epd->text.font);
|
|
|
|
free(epd->text.font);
|
|
|
|
epd->text.font = s;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for (l = edje_collections; l; l = l->next)
|
|
|
|
{
|
|
|
|
Edje_Part_Collection *pc;
|
|
|
|
char buf[4096];
|
2003-06-16 06:55:13 -07:00
|
|
|
|
|
|
|
pc = l->data;
|
2004-03-26 01:10:05 -08:00
|
|
|
|
|
|
|
/* FIXME: hack!!!! */
|
|
|
|
{
|
|
|
|
FILE *f;
|
|
|
|
|
|
|
|
f = fopen("test.amx", "r");
|
|
|
|
if (f)
|
|
|
|
{
|
|
|
|
int size;
|
|
|
|
void *data;
|
|
|
|
|
|
|
|
fseek(f, 0, SEEK_END);
|
|
|
|
size = ftell(f);
|
|
|
|
rewind(f);
|
|
|
|
if (size > 0)
|
|
|
|
{
|
|
|
|
int bt;
|
|
|
|
|
|
|
|
data = malloc(size);
|
|
|
|
if (data)
|
|
|
|
{
|
|
|
|
fread(data, size, 1, f);
|
|
|
|
snprintf(buf, sizeof(buf), "scripts/%i", pc->id);
|
|
|
|
bt = eet_write(ef, buf, data, size, 1);
|
|
|
|
free(data);
|
|
|
|
printf("WROTE %i bytes of AMX!\n", bt);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
fclose(f);
|
|
|
|
}
|
|
|
|
}
|
2003-06-16 06:55:13 -07:00
|
|
|
snprintf(buf, sizeof(buf), "collections/%i", pc->id);
|
|
|
|
bytes = eet_data_write(ef, edd_edje_part_collection, buf, pc, 1);
|
|
|
|
if (bytes <= 0)
|
|
|
|
{
|
|
|
|
fprintf(stderr, "%s: Error. unable to write \"%s\" part entry to %s \n",
|
|
|
|
progname, buf, file_out);
|
2004-03-06 02:21:15 -08:00
|
|
|
ABORT_WRITE(ef, file_out);
|
2003-06-16 06:55:13 -07:00
|
|
|
}
|
2003-07-10 18:47:42 -07:00
|
|
|
else
|
|
|
|
{
|
|
|
|
collection_num++;
|
|
|
|
total_bytes += bytes;
|
|
|
|
}
|
2003-06-16 06:55:13 -07:00
|
|
|
if (verbose)
|
|
|
|
{
|
|
|
|
printf("%s: Wrote %9i bytes (%4iKb) for \"%s\" collection entry\n",
|
|
|
|
progname, bytes, (bytes + 512) / 1024, buf);
|
|
|
|
}
|
|
|
|
}
|
2003-06-11 06:20:48 -07:00
|
|
|
eet_close(ef);
|
2003-07-10 18:47:42 -07:00
|
|
|
if (verbose)
|
|
|
|
{
|
|
|
|
struct stat st;
|
|
|
|
|
|
|
|
if (stat(file_in, &st) != 0)
|
|
|
|
st.st_size = 0;
|
|
|
|
input_bytes += st.st_size;
|
|
|
|
input_raw_bytes += st.st_size;
|
|
|
|
printf("Summary:\n"
|
|
|
|
" Wrote %i collections\n"
|
|
|
|
" Wrote %i images\n"
|
2004-01-22 18:13:42 -08:00
|
|
|
" Wrote %i fonts\n"
|
2003-07-10 18:47:42 -07:00
|
|
|
"Conservative compression summary:\n"
|
|
|
|
" Wrote total %i bytes (%iKb) from %i (%iKb) input data\n"
|
|
|
|
" Output file is %3.1f%% the size of the input data\n"
|
|
|
|
" Saved %i bytes (%iKb)\n"
|
|
|
|
"Raw compression summary:\n"
|
|
|
|
" Wrote total %i bytes (%iKb) from %i (%iKb) raw input data\n"
|
|
|
|
" Output file is %3.1f%% the size of the raw input data\n"
|
|
|
|
" Saved %i bytes (%iKb)\n"
|
|
|
|
,
|
|
|
|
collection_num,
|
|
|
|
image_num,
|
2004-01-22 18:13:42 -08:00
|
|
|
font_num,
|
2003-07-10 18:47:42 -07:00
|
|
|
total_bytes, (total_bytes + 512) / 1024,
|
|
|
|
input_bytes, (input_bytes + 512) / 1024,
|
|
|
|
(100.0 * (double)total_bytes) / (double)input_bytes,
|
|
|
|
input_bytes - total_bytes,
|
|
|
|
(input_bytes - total_bytes + 512) / 1024,
|
|
|
|
total_bytes, (total_bytes + 512) / 1024,
|
|
|
|
input_raw_bytes, (input_raw_bytes + 512) / 1024,
|
|
|
|
(100.0 * (double)total_bytes) / (double)input_raw_bytes,
|
|
|
|
input_raw_bytes - total_bytes,
|
|
|
|
(input_raw_bytes - total_bytes + 512) / 1024);
|
|
|
|
}
|
2003-06-11 06:20:48 -07:00
|
|
|
}
|
2003-06-13 20:06:36 -07:00
|
|
|
|
|
|
|
void
|
|
|
|
data_queue_part_lookup(Edje_Part_Collection *pc, char *name, int *dest)
|
|
|
|
{
|
|
|
|
Part_Lookup *pl;
|
|
|
|
|
|
|
|
pl = mem_alloc(SZ(Part_Lookup));
|
|
|
|
part_lookups = evas_list_append(part_lookups, pl);
|
|
|
|
pl->pc = pc;
|
|
|
|
pl->name = mem_strdup(name);
|
|
|
|
pl->dest = dest;
|
|
|
|
}
|
|
|
|
|
2003-06-16 06:55:13 -07:00
|
|
|
void
|
|
|
|
data_queue_program_lookup(Edje_Part_Collection *pc, char *name, int *dest)
|
|
|
|
{
|
|
|
|
Program_Lookup *pl;
|
|
|
|
|
|
|
|
pl = mem_alloc(SZ(Program_Lookup));
|
|
|
|
program_lookups = evas_list_append(program_lookups, pl);
|
|
|
|
pl->pc = pc;
|
|
|
|
pl->name = mem_strdup(name);
|
|
|
|
pl->dest = dest;
|
|
|
|
}
|
|
|
|
|
2003-06-13 20:06:36 -07:00
|
|
|
void
|
|
|
|
data_queue_image_lookup(char *name, int *dest)
|
|
|
|
{
|
|
|
|
Image_Lookup *il;
|
|
|
|
|
|
|
|
il = mem_alloc(SZ(Image_Lookup));
|
|
|
|
image_lookups = evas_list_append(image_lookups, il);
|
|
|
|
il->name = mem_strdup(name);
|
|
|
|
il->dest = dest;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
data_process_lookups(void)
|
|
|
|
{
|
|
|
|
Evas_List *l;
|
|
|
|
|
|
|
|
while (part_lookups)
|
|
|
|
{
|
|
|
|
Part_Lookup *pl;
|
|
|
|
|
|
|
|
pl = part_lookups->data;
|
|
|
|
|
|
|
|
for (l = pl->pc->parts; l; l = l->next)
|
|
|
|
{
|
|
|
|
Edje_Part *ep;
|
|
|
|
|
|
|
|
ep = l->data;
|
|
|
|
if ((ep->name) && (!strcmp(ep->name, pl->name)))
|
|
|
|
{
|
|
|
|
*(pl->dest) = ep->id;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!l)
|
|
|
|
{
|
|
|
|
fprintf(stderr, "%s: Error. unable find part name %s\n",
|
|
|
|
progname, pl->name);
|
|
|
|
exit(-1);
|
|
|
|
}
|
|
|
|
part_lookups = evas_list_remove(part_lookups, pl);
|
|
|
|
free(pl->name);
|
|
|
|
free(pl);
|
|
|
|
}
|
|
|
|
|
2003-06-16 06:55:13 -07:00
|
|
|
while (program_lookups)
|
|
|
|
{
|
|
|
|
Program_Lookup *pl;
|
|
|
|
|
|
|
|
pl = program_lookups->data;
|
|
|
|
|
|
|
|
for (l = pl->pc->programs; l; l = l->next)
|
|
|
|
{
|
|
|
|
Edje_Program *ep;
|
|
|
|
|
|
|
|
ep = l->data;
|
|
|
|
if ((ep->name) && (!strcmp(ep->name, pl->name)))
|
|
|
|
{
|
|
|
|
*(pl->dest) = ep->id;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!l)
|
|
|
|
{
|
|
|
|
fprintf(stderr, "%s: Error. unable find program name %s\n",
|
|
|
|
progname, pl->name);
|
|
|
|
exit(-1);
|
|
|
|
}
|
|
|
|
program_lookups = evas_list_remove(program_lookups, pl);
|
|
|
|
free(pl->name);
|
|
|
|
free(pl);
|
|
|
|
}
|
|
|
|
|
2003-06-13 20:06:36 -07:00
|
|
|
while (image_lookups)
|
|
|
|
{
|
|
|
|
Image_Lookup *il;
|
|
|
|
|
|
|
|
il = image_lookups->data;
|
|
|
|
|
|
|
|
for (l = edje_file->image_dir->entries; l; l = l->next)
|
|
|
|
{
|
|
|
|
Edje_Image_Directory_Entry *de;
|
|
|
|
|
|
|
|
de = l->data;
|
|
|
|
if ((de->entry) && (!strcmp(de->entry, il->name)))
|
|
|
|
{
|
|
|
|
*(il->dest) = de->id;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!l)
|
|
|
|
{
|
|
|
|
fprintf(stderr, "%s: Error. unable find image name %s\n",
|
|
|
|
progname, il->name);
|
|
|
|
exit(-1);
|
|
|
|
}
|
|
|
|
image_lookups = evas_list_remove(image_lookups, il);
|
|
|
|
free(il->name);
|
|
|
|
free(il);
|
|
|
|
}
|
|
|
|
}
|