diff --git a/legacy/evas/README b/legacy/evas/README index eda10246e8..b82b4213cd 100644 --- a/legacy/evas/README +++ b/legacy/evas/README @@ -1,5 +1,5 @@ ------------------------------------------------------------------------------- - E V A S - 0.5.0 + E V A S - 0.6.0 ------------------------------------------------------------------------------- This is the ``E Canvas'' - a rip off of some of the other canvas's floating diff --git a/legacy/evas/configure.in b/legacy/evas/configure.in index 23d33412c8..6ec95eac82 100644 --- a/legacy/evas/configure.in +++ b/legacy/evas/configure.in @@ -1,7 +1,7 @@ # SETUP AC_INIT(src/Evas.h) AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(evas, 0.5.0) +AM_INIT_AUTOMAKE(evas, 0.6.0) IMLIB2_CONFIG_IN_PATH=xyes AC_PROGRAM_CHECK(IMLIB2_CONFIG_IN_PATH, imlib2-config, xyes, xno) diff --git a/legacy/evas/doc/Makefile.am b/legacy/evas/doc/Makefile.am index f1f7c13146..e0d0864d28 100644 --- a/legacy/evas/doc/Makefile.am +++ b/legacy/evas/doc/Makefile.am @@ -1,2 +1,5 @@ EXTRA_DIST = \ evas.sdw evas.pdf +evasdir = $(datadir)/evas/doc +evas_DATA = \ +evas.sdw evas.pdf diff --git a/legacy/evas/evas.spec b/legacy/evas/evas.spec index 30f7440484..16efd15cdd 100644 --- a/legacy/evas/evas.spec +++ b/legacy/evas/evas.spec @@ -1,6 +1,6 @@ # this is NOT relocatable, unless you alter the patch! %define name evas -%define ver 0.5.0 +%define ver 0.6.0 %define rel 1 %define prefix /usr @@ -19,7 +19,7 @@ Packager: Term Vendor: The Enlightenment Development Team Source: ftp://ftp.enlightenment.org/enlightenment/%{name}-%{ver}.tar.gz BuildRoot: /var/tmp/%{name}-root -Requires: imlib2 >= 1.0.3 +Requires: imlib2 >= 1.0.4 %description Evas is an advanced canvas library, providing three backends for @@ -67,7 +67,8 @@ rm -rf $RPM_BUILD_ROOT %defattr(-,root,root) %{prefix}/lib/libevas.so.* %{prefix}/bin/evas_* -%{prefix}/share/evas/* +%{prefix}/share/evas/fnt +%{prefix}/share/evas/img %files devel %defattr(-,root,root) @@ -75,3 +76,4 @@ rm -rf $RPM_BUILD_ROOT %{prefix}/lib/libevas.*a %{prefix}/include/Evas.h %{prefix}/bin/evas-config +%{prefix}/share/evas/doc diff --git a/legacy/evas/src/Makefile.am b/legacy/evas/src/Makefile.am index 7e4742bac6..7a896f4003 100644 --- a/legacy/evas/src/Makefile.am +++ b/legacy/evas/src/Makefile.am @@ -59,4 +59,4 @@ Evas_private.h libevas_la_LIBADD = $(LIBS_ALL) libevas_la_DEPENDENCIES = $(top_builddir)/config.h -libevas_la_LDFLAGS = -version-info 5:0:5 +libevas_la_LDFLAGS = -version-info 6:0:6 diff --git a/legacy/evas/src/evas_imlib_routines.c b/legacy/evas/src/evas_imlib_routines.c index c24a643402..22d851dca4 100644 --- a/legacy/evas/src/evas_imlib_routines.c +++ b/legacy/evas/src/evas_imlib_routines.c @@ -55,7 +55,7 @@ __evas_imlib_image_cache_clean(void) __evas_image_cache_used -= imlib_image_get_width() * imlib_image_get_height() * 4; - imlib_free_image_and_decache(); + imlib_free_image(); if (last->scaled.image) { imlib_context_set_image(last->scaled.image); @@ -113,17 +113,16 @@ __evas_imlib_image_new_from_file(Display *disp, char *file) Evas_Imlib_Image *im; Imlib_Image image; - im = __evas_imlib_image_cache_find(file); - if (im) return im; - image = imlib_load_image(file); if (!image) return NULL; im = malloc(sizeof(Evas_Imlib_Image)); im->file = strdup(file); im->image = image; im->scaled.aa = 0; + im->scaled.w = 0; + im->scaled.h = 0; im->scaled.image = NULL; - im->life = 0; + im->scaled.usage = 0; im->references = 1; images = evas_list_prepend(images, im); return im; @@ -216,7 +215,6 @@ __evas_imlib_image_draw(Evas_Imlib_Image *im, imlib_context_set_direction(IMLIB_TEXT_TO_RIGHT); imlib_context_set_anti_alias(__evas_anti_alias); imlib_context_set_blend(1); -/* if (im->life < 65536) im->life++;*/ for(l = drawable_list; l; l = l->next) { Evas_Imlib_Drawable *dr; @@ -247,8 +245,7 @@ __evas_imlib_image_draw(Evas_Imlib_Image *im, if (!up->image) up->image = imlib_create_image(up->w, up->h); /* if our src and dest are 1:1 scaling.. use original */ - if (((dst_w == src_w) && (dst_h == src_h)) || - (im->life < 2)) + if ((dst_w == src_w) && (dst_h == src_h)) { imlib_context_set_image(up->image); imlib_blend_image_onto_image(im->image, 0, @@ -256,6 +253,7 @@ __evas_imlib_image_draw(Evas_Imlib_Image *im, dst_x - up->x, dst_y - up->y, dst_w, dst_h); if (im->scaled.image) { + im->scaled.usage = 0; imlib_context_set_image(im->scaled.image); imlib_free_image(); im->scaled.image = NULL; @@ -352,6 +350,29 @@ __evas_imlib_image_draw(Evas_Imlib_Image *im, iw = imlib_image_get_width(); ih = imlib_image_get_height(); + if ((dst_w == im->scaled.w) && + (dst_h == im->scaled.h) && + (__evas_anti_alias == im->scaled.aa)) + { + Imlib_Border bd; + + imlib_context_set_image(im->image); + imlib_image_get_border(&bd); + if ((bd.left != 0) || + (bd.right != 0) || + (bd.top != 0) || + (bd.bottom != 0)) + im->scaled.usage = 0; + else + im->scaled.usage++; + } + else + { + im->scaled.usage = 0; + im->scaled.w = dst_w; + im->scaled.h = dst_h; + im->scaled.aa = __evas_anti_alias; + } /* if we are using the WHOLE src image */ if ((src_x == 0) && (src_y == 0) && (src_w == iw) && (src_h == ih) && @@ -360,7 +381,8 @@ __evas_imlib_image_draw(Evas_Imlib_Image *im, (dst_w + dst_x <= win_w) && (dst_h + dst_y <= win_h) && ((!__evas_clip) || ((dst_x >= __evas_clip_x) && (dst_y >= __evas_clip_y) && - (dst_w + dst_x <= __evas_clip_w) && (dst_h + dst_y <= __evas_clip_h))))) + (dst_w + dst_x <= __evas_clip_w) && (dst_h + dst_y <= __evas_clip_h)))) && + (im->scaled.usage > 15)) { imlib_context_set_image(im->image); im->scaled.image = imlib_create_cropped_scaled_image(0, 0, iw, ih, diff --git a/legacy/evas/src/evas_imlib_routines.h b/legacy/evas/src/evas_imlib_routines.h index a0228c8054..807501258b 100644 --- a/legacy/evas/src/evas_imlib_routines.h +++ b/legacy/evas/src/evas_imlib_routines.h @@ -38,9 +38,10 @@ struct _evas_imlib_image Imlib_Image image; struct { int aa; + int w, h; Imlib_Image image; + int usage; } scaled; - int life; int references; }; diff --git a/legacy/evas/src/evas_render.c b/legacy/evas/src/evas_render.c index 0a2e2f2f13..de1552b9d1 100644 --- a/legacy/evas/src/evas_render.c +++ b/legacy/evas/src/evas_render.c @@ -910,12 +910,16 @@ evas_render_updates(Evas e) void *im; oo = o; - if (o->renderer_data.method[e->current.render_method]) - im = (void *)o->renderer_data.method[e->current.render_method]; - else - o->renderer_data.method[e->current.render_method] = - im = - func_image_new_from_file(e->current.display, oo->current.file); + im = NULL; + if (oo->current.file) + { + if (o->renderer_data.method[e->current.render_method]) + im = (void *)o->renderer_data.method[e->current.render_method]; + else + o->renderer_data.method[e->current.render_method] = + im = + func_image_new_from_file(e->current.display, oo->current.file); + } if (im) { int visx, visy, visw, vish;