From 438b3ec082eda0c3ccc83d34b1768f7f94a63c82 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Wed, 11 Jun 2003 09:30:28 +0000 Subject: [PATCH] parsing much nicer.. in fact starting to actually compile! :) SVN revision: 7010 --- legacy/edje/configure.in | 5 +++ legacy/edje/src/bin/Makefile.am | 14 ++++-- legacy/edje/src/bin/edje_cc.c | 77 ++++++++++++++++++++++++++++----- 3 files changed, 81 insertions(+), 15 deletions(-) diff --git a/legacy/edje/configure.in b/legacy/edje/configure.in index f3498b30b9..ab61568d23 100644 --- a/legacy/edje/configure.in +++ b/legacy/edje/configure.in @@ -74,6 +74,11 @@ my_libs=`eet-config --libs`" "`evas-config --libs`" "`ecore-config --libs` AC_SUBST(my_includes) AC_SUBST(my_libs) +imlib2_includes=`imlib2-config --cflags` +imlib2_libs=`imlib2-config --libs` +AC_SUBST(imlib2_includes) +AC_SUBST(imlib2_libs) + AC_OUTPUT([ Makefile src/Makefile diff --git a/legacy/edje/src/bin/Makefile.am b/legacy/edje/src/bin/Makefile.am index a4ff837c17..aedaa7aa74 100644 --- a/legacy/edje/src/bin/Makefile.am +++ b/legacy/edje/src/bin/Makefile.am @@ -9,7 +9,8 @@ INCLUDES = \ -I$(top_srcdir)/lib \ -I$(top_builddir)/lib \ -I/usr/local/include \ -@my_includes@ +@my_includes@ \ +@imlib2_includes@ bin_PROGRAMS = edje edje_cc @@ -17,7 +18,10 @@ edje_SOURCES = \ edje_main.c edje_LDADD = \ -$(top_builddir)/src/lib/libedje.la +$(top_builddir)/src/lib/libedje.la \ +@imlib2_libs@ + +edje_LDFLAGS = edje_DEPENDENCIES = $(top_builddir)/src/lib/libedje.la @@ -25,6 +29,10 @@ edje_cc_SOURCES = \ edje_cc.c edje_cc_LDADD = \ -$(top_builddir)/src/lib/libedje.la +$(top_builddir)/src/lib/libedje.la \ +@imlib2_libs@ + +edje_cc_LDFLAGS = + edje_cc_DEPENDENCIES = $(top_builddir)/src/lib/libedje.la diff --git a/legacy/edje/src/bin/edje_cc.c b/legacy/edje/src/bin/edje_cc.c index 3d0c67ba8d..7932a32619 100644 --- a/legacy/edje/src/bin/edje_cc.c +++ b/legacy/edje/src/bin/edje_cc.c @@ -1,4 +1,8 @@ #include "edje.h" +/* Imlib2 stuff for loading up input images */ +#define X_DISPLAY_MISSING +#include +/* done Imlib2 stuff */ #include #include @@ -211,10 +215,48 @@ data_write(void) img = l->data; if (img->source_type != EDJE_IMAGE_SOURCE_TYPE_EXTERNAL) { - if (img->source_type == EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT) - printf("FIXME: should inline image %s lossless, compression: %i\n", img->entry, img->source_param); + Imlib_Image im; + Evas_List *l; + + im = NULL; + for (l = img_dirs; l; l = l->next) + { + char buf[4096]; + + snprintf(buf, sizeof(buf), "%s/%s", l->data, img->entry); + im = imlib_load_image(buf); + if (im) break; + } + if (!im) im = imlib_load_image(img->entry); + if (im) + { + 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(); + snprintf(buf, sizeof(buf), "/images/%i", img->id); + if (img->source_type == EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT) + eet_data_image_write(ef, buf, + im_data, im_w, im_h, im_alpha, + img->source_param, 0, 0); + else + eet_data_image_write(ef, buf, + im_data, im_w, im_h, im_alpha, + 0, img->source_param, 1); + imlib_image_put_back_data(im_data); + imlib_free_image(); + } else - printf("FIXME: should inline image %s lossy, quality: %i%%\n", img->entry, img->source_param); + { + fprintf(stderr, "%s: Warning. unable to open image %s for inclusion in output\n", + progname, img->entry); + } } } eet_close(ef); @@ -469,17 +511,28 @@ parse(char *data, off_t size) } else if (!strcmp(token, ";")) { - - do_params = 0; - new_statement(); - /* clear out params */ - while (params) + if (do_params) { - free(params->data); - params = evas_list_remove(params, params->data); + do_params = 0; + new_statement(); + /* clear out params */ + while (params) + { + free(params->data); + params = evas_list_remove(params, params->data); + } + /* remove top from stack */ + stack_chop_top(); + } + } + else if (!strcmp(token, "{")) + { + if (do_params) + { + fprintf(stderr, "%s: Error. parse error %s:%i. { marker before ; marker\n", + progname, file_in, line); + exit(-1); } - /* remove top from stack */ - stack_chop_top(); } free(token); }