From: <enl...@li...> - 2003-09-16 02:19:05
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart Modified Files: esmart-config.in Log Message: typo fix =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/esmart-config.in,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- esmart-config.in 14 Sep 2003 00:30:38 -0000 1.1 +++ esmart-config.in 16 Sep 2003 02:18:58 -0000 1.2 @@ -42,11 +42,11 @@ if test @includedir@ != /usr/include ; then includes=-I@includedir@ fi - echo $includes @imlib2_cflags@ @evas_cflags@ -I$prefix/include + echo $includes @imlib_cflags@ @evas_cflags@ -I$prefix/include ;; --libs) libdirs=-L@libdir@ - echo $libdirs -lesmart @imlib2_libs@ @evas_libs@ -lm + echo $libdirs -lesmart @imlib_libs@ @evas_libs@ -lm ;; *) echo "${usage}" 1>&2 |
From: <enl...@li...> - 2003-09-19 23:02:12
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/src/thumb Modified Files: E_Thumb.c Log Message: Slight attribute query fixup. =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/thumb/E_Thumb.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- E_Thumb.c 14 Sep 2003 00:30:38 -0000 1.1 +++ E_Thumb.c 19 Sep 2003 23:02:02 -0000 1.2 @@ -98,8 +98,8 @@ E_Thumb *e = NULL; if ((e = (E_Thumb *) evas_object_smart_data_get (o))) { - if (w) *w = e->w; - if (h) *h = e->h; + if (w) *w = e->file.w; + if (h) *h = e->file.h; } } } @@ -121,8 +121,10 @@ result = evas_object_image_add(evas_object_evas_get(o)); evas_object_image_alpha_set(result, 1); - evas_object_image_size_set(result, imlib_image_get_width(), - imlib_image_get_height()); + e->file.w = imlib_image_get_width(); + e->file.h = imlib_image_get_height(); + evas_object_image_size_set(result, e->file.w, e->file.h); + evas_object_image_data_copy_set(result, imlib_image_get_data_for_reading_only()); imlib_free_image_and_decache (); |
From: <enl...@li...> - 2003-09-20 18:25:53
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/src/thumb Modified Files: E_Thumb.c Log Message: Thumbnails should keep aspect fine now. ran indent too. =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/thumb/E_Thumb.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- E_Thumb.c 19 Sep 2003 23:02:02 -0000 1.2 +++ E_Thumb.c 20 Sep 2003 18:25:51 -0000 1.3 @@ -62,12 +62,12 @@ e->file.name = strdup (uri); snprintf (uri, PATH_MAX, "file://%s", file); e->uri = strdup (uri); - _e_thumb_hash_name (result); - if(!e->image) - { - evas_object_del(result); + _e_thumb_hash_name (result); + if (!e->image) + { + evas_object_del (result); result = NULL; - } + } } } return (result); @@ -88,8 +88,9 @@ if ((e = (E_Thumb *) evas_object_smart_data_get (o))) return (e->file.name); } - return(NULL); + return (NULL); } + void e_thumb_geometry_get (Evas_Object * o, int *w, int *h) { @@ -97,16 +98,18 @@ { E_Thumb *e = NULL; if ((e = (E_Thumb *) evas_object_smart_data_get (o))) - { - if (w) *w = e->file.w; - if (h) *h = e->file.h; - } + { + if (w) + *w = e->file.w; + if (h) + *h = e->file.h; + } } } -Evas_Object* -e_thumb_evas_object_get(Evas_Object *o) +Evas_Object * +e_thumb_evas_object_get (Evas_Object * o) { - Evas_Object *result = NULL; + Evas_Object *result = NULL; if (o) { E_Thumb *e = NULL; @@ -118,21 +121,23 @@ if (tmp) { imlib_context_set_image (tmp); - - result = evas_object_image_add(evas_object_evas_get(o)); - evas_object_image_alpha_set(result, 1); - e->file.w = imlib_image_get_width(); - e->file.h = imlib_image_get_height(); - evas_object_image_size_set(result, e->file.w, e->file.h); - - evas_object_image_data_copy_set(result, - imlib_image_get_data_for_reading_only()); - imlib_free_image_and_decache (); + + result = evas_object_image_add (evas_object_evas_get (o)); + evas_object_image_alpha_set (result, 1); + e->file.w = imlib_image_get_width (); + e->file.h = imlib_image_get_height (); + evas_object_image_size_set (result, e->file.w, e->file.h); + + evas_object_image_data_copy_set (result, + imlib_image_get_data_for_reading_only + ()); + imlib_free_image_and_decache (); } } } - return(result); + return (result); } + /*========================================================================== * Smart Object Functions *========================================================================*/ @@ -280,7 +285,7 @@ { e->x = x; e->y = y; - evas_object_move(e->image, x, y); + _e_thumb_resize (o, e->w, e->h); } } } @@ -294,15 +299,23 @@ static void _e_thumb_resize (Evas_Object * o, double w, double h) { - if (o) + if (o && (w > 1) && (h > 1)) { E_Thumb *e = NULL; if ((e = (E_Thumb *) evas_object_smart_data_get (o))) { + double ww = w, hh = h; e->w = w; e->h = h; - evas_object_resize(e->image, w, h); - evas_object_image_fill_set(e->image, 0.0, 0.0, w, h); + if (e->thumb.w > e->thumb.h) + hh *= (double) e->thumb.h / (double) e->thumb.w; + else + ww *= (double) e->thumb.w / (double) e->thumb.h; + + evas_object_resize (e->image, ww, hh); + evas_object_image_fill_set (e->image, 0.0, 0.0, ww, hh); + evas_object_move (e->image, e->x + ((w - ww) / 2), + e->y + ((h - hh) / 2)); } } } @@ -319,7 +332,7 @@ E_Thumb *e = NULL; if ((e = (E_Thumb *) evas_object_smart_data_get (o))) { - evas_object_show(e->image); + evas_object_show (e->image); } } } @@ -375,7 +388,7 @@ E_Thumb *e = NULL; if ((e = (E_Thumb *) evas_object_smart_data_get (o))) { - evas_object_clip_set(e->image, clip); + evas_object_clip_set (e->image, clip); } } } @@ -392,7 +405,7 @@ E_Thumb *e = NULL; if ((e = (E_Thumb *) evas_object_smart_data_get (o))) { - evas_object_clip_unset(e->image); + evas_object_clip_unset (e->image); } } } @@ -412,7 +425,7 @@ /* use normal as the fallback */ if (!uri) - return(NULL); + return (NULL); MD5Init (&ctx); MD5Update (&ctx, uri, strlen (uri)); @@ -459,7 +472,12 @@ evas_object_image_file_set (e->image, e->thumb.name, NULL); if (!evas_object_image_load_error_get (e->image)) - ok = 1; + { + ok = 1; + evas_object_image_size_get (e->image, + &e->thumb.w, + &e->thumb.h); + } else { evas_object_del (e->image); @@ -470,7 +488,7 @@ } if (!ok) { - int ret = 0; + int ret = 0; e->thumb.w = e->thumb.h = E_THUMBNAIL_SIZE; _e_thumb_generate (o); e->image = evas_object_image_add (evas_object_evas_get (o)); @@ -480,7 +498,7 @@ evas_object_del (e->image); e->image = NULL; } - + } } } @@ -501,7 +519,7 @@ if (tmp) { imlib_context_set_image (tmp); - e->format = strdup(imlib_image_format ()); + e->format = strdup (imlib_image_format ()); e->file.w = imlib_image_get_width (); e->file.h = imlib_image_get_height (); @@ -533,17 +551,17 @@ imlib_free_image_and_decache (); imlib_context_set_image (src); /* - imlib_context_set_anti_alias (1); - */ + imlib_context_set_anti_alias (1); + */ imlib_image_set_has_alpha (1); imlib_image_set_format ("argb"); - if (_e_thumb_write (o, imlib_image_get_data()) == 0) + if (_e_thumb_write (o, imlib_image_get_data ()) == 0) fprintf (stderr, "Cached %s successfully\n", e->file.name); else fprintf (stderr, "Unable to cache %s\n", e->file.name); } - imlib_free_image_and_decache (); + imlib_free_image_and_decache (); } else { @@ -763,7 +781,6 @@ /* ptr=evas_object_image_data_get(e->image,1); */ - fprintf (stderr, "%d,%d\n", e->thumb.w, e->thumb.h); for (i = 0; i < e->thumb.h; i++) { if (has_alpha) @@ -796,7 +813,7 @@ else printf ("e_thumb: Unable to open \"%s\" for writing\n", tmpfile); - fflush(fp); + fflush (fp); if (fp) fclose (fp); if (row_data) |
From: <enl...@li...> - 2003-10-11 06:33:00
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/src/container Modified Files: container_smart.c Log Message: Slight fixup, this was leading to some kind of infinite loop If you resized your container a lot, quickly, it'd segv with a LONG stacktrace. =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/container/container_smart.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- container_smart.c 14 Sep 2003 00:30:38 -0000 1.1 +++ container_smart.c 11 Oct 2003 06:32:57 -0000 1.2 @@ -211,11 +211,13 @@ Container *data; data = evas_object_smart_data_get(obj); - + if((data->x == x) && (data->y == y)) + return; // evas_object_move(data->clipper, x+ data->padding.l, // y + data->padding.t); - + if(data->x == x && data->y == y) + return; evas_object_move(data->clipper, x, y); evas_object_move(data->grabber, x, y); |
From: <enl...@li...> - 2003-10-11 06:39:41
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/src/container Modified Files: container_smart.c Log Message: There's no need to add that fix twice. =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/container/container_smart.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- container_smart.c 11 Oct 2003 06:32:57 -0000 1.2 +++ container_smart.c 11 Oct 2003 06:39:39 -0000 1.3 @@ -216,8 +216,6 @@ // evas_object_move(data->clipper, x+ data->padding.l, // y + data->padding.t); - if(data->x == x && data->y == y) - return; evas_object_move(data->clipper, x, y); evas_object_move(data->grabber, x, y); |
From: <enl...@li...> - 2003-10-14 18:13:03
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/src/thumb Modified Files: E_Thumb.c E_Thumb.h Log Message: e_thumb_format_get - returns the image type of image we're thumbing I needed this info in entice =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/thumb/E_Thumb.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- E_Thumb.c 27 Sep 2003 04:58:25 -0000 1.5 +++ E_Thumb.c 14 Oct 2003 18:12:57 -0000 1.6 @@ -143,6 +143,7 @@ evas_object_image_alpha_set (result, 1); e->file.w = imlib_image_get_width (); e->file.h = imlib_image_get_height (); + e->format = strdup(imlib_image_format()); evas_object_image_size_set (result, e->file.w, e->file.h); evas_object_image_data_copy_set (result, @@ -155,6 +156,18 @@ return (result); } +const char * +e_thumb_format_get(Evas_Object *o) +{ + char *result = NULL; + if (o) + { + E_Thumb *e = NULL; + if ((e = (E_Thumb *) evas_object_smart_data_get (o))) + result = e->format; + } + return(result); +} /*========================================================================== * Smart Object Functions *========================================================================*/ =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/thumb/E_Thumb.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- E_Thumb.h 22 Sep 2003 03:14:29 -0000 1.2 +++ E_Thumb.h 14 Oct 2003 18:12:57 -0000 1.3 @@ -64,4 +64,12 @@ * Returns a valid Evas_Object if imlib2 or evas can load the file */ Evas_Object *e_thumb_evas_object_get(Evas_Object *o); + +/** + * e_thumb_format_get - get the format of the image this thumb is for + * @o - The smart object we want the format for + * NOTE: Don't free this string, dupe it if you wanna keep it around + */ +const char * e_thumb_format_get(Evas_Object *o); + #endif |
From: <enl...@li...> - 2003-10-17 22:31:42
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/src/container Modified Files: container.h container.c Log Message: TrillMonkey needed a basic scroll function, so I added one. =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/container/container.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- container.h 12 Oct 2003 01:43:54 -0000 1.3 +++ container.h 17 Oct 2003 22:31:40 -0000 1.4 @@ -143,6 +143,7 @@ /* scrolling */ void e_container_scroll_start(Evas_Object *container, double velocity); void e_container_scroll_stop(Evas_Object *container); +void e_container_scroll(Evas_Object *container, int val); /* callbacks */ void e_container_callback_order_change_set(Evas_Object *obj, =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/container/container.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- container.c 12 Oct 2003 01:43:54 -0000 1.3 +++ container.c 17 Oct 2003 22:31:40 -0000 1.4 @@ -74,6 +74,17 @@ if (b) *b = cont->padding.b; } +void e_container_scroll(Evas_Object *container, int val) +{ + Container *cont; + + if((cont = _container_fetch(container))) + { + cont->scroll_offset += val; + _container_elements_fix(cont); + } +} + void e_container_scroll_offset_set(Evas_Object *container, int scroll_offset) { Container *cont; |
From: <enl...@li...> - 2003-11-08 18:06:43
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/src/trans Log Message: Directory /cvsroot/enlightenment/e17/proto/esmart/src/trans added to the repository |
From: <enl...@li...> - 2003-11-08 18:14:24
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/src/trans Added Files: Makefile.am X11_Trans.c X11_Trans.h Log Message: background grabbing evas object, this should make the e-develop list happy there is a concept here called "freshen", it regrabs the screen with the coordinates specified. basically you need tomanually hook in your move,resize settings, OR take one big snapshot once and pan around at resize time, it's up to you. This should work fine swallowed into an edje also, but you'll still need to freshen when the ecore_evas or ecore_x_window is moved/ersized. This is the same code present in evidence and the iconbar. See the esmart test for some example usage. |
From: <enl...@li...> - 2003-11-08 18:14:52
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/src Modified Files: Makefile.am Log Message: background grabbing evas object, this should make the e-develop list happy there is a concept here called "freshen", it regrabs the screen with the coordinates specified. basically you need tomanually hook in your move,resize settings, OR take one big snapshot once and pan around at resize time, it's up to you. This should work fine swallowed into an edje also, but you'll still need to freshen when the ecore_evas or ecore_x_window is moved/ersized. This is the same code present in evidence and the iconbar. See the esmart test for some example usage. =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/Makefile.am,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- Makefile.am 14 Sep 2003 00:30:38 -0000 1.1 +++ Makefile.am 8 Nov 2003 18:14:21 -0000 1.2 @@ -1,8 +1,8 @@ ## Process this file with automake to produce Makefile.in -INCLUDES = @evas_cflags@ @imlib_cflags@ +INCLUDES = @evas_cflags@ @imlib_cflags@ @ecore_cflags@ -SUBDIRS = container thumb +SUBDIRS = container thumb trans lib_LTLIBRARIES = libesmart.la @@ -11,11 +11,12 @@ libesmart_la_SOURCES = esmart.c libesmart_la_LIBADD = container/libecontainer.la \ - thumb/libethumb.la - @evas_libs@ @imlib_libs@ -lm + thumb/libethumb.la trans/libepseudotrans.la + @evas_libs@ @imlib_libs@ @ecore_libs@ -lm libesmart_la_DEPENDENCIES = container/libecontainer.la \ - thumb/libethumb.la + thumb/libethumb.la \ + trans/libepseudotrans.la #libesmart_la_LDFLAGS = -version-info 1:0:0 libesmart_la_CFLAGS = -g |
From: <enl...@li...> - 2003-11-08 18:17:07
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/test Modified Files: Makefile.am esmart_main.c Log Message: the last of the X11 transparent object stuff =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/test/Makefile.am,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- Makefile.am 14 Sep 2003 00:30:39 -0000 1.1 +++ Makefile.am 8 Nov 2003 18:17:06 -0000 1.2 @@ -4,6 +4,7 @@ INCLUDES = -I$(top_srcdir)/src \ -I$(top_srcdir)/src/thumb \ -I$(top_srcdir)/src/container \ + -I$(top_srcdir)/src/trans \ @evas_cflags@ \ @imlib_cflags@ \ @ecore_cflags@ =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/test/esmart_main.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- esmart_main.c 14 Sep 2003 21:45:59 -0000 1.2 +++ esmart_main.c 8 Nov 2003 18:17:06 -0000 1.3 @@ -15,6 +15,7 @@ #include <Ecore_Evas.h> #include "E_Thumb.h" #include "container.h" +#include "X11_Trans.h" static void window_del_cb(Ecore_Evas *ee) @@ -23,15 +24,35 @@ } static void +window_move_cb(Ecore_Evas *ee) +{ + int x, y, w, h; + Evas_Object *o = NULL; + + ecore_evas_geometry_get(ee, &x, &y, &w, &h); + + if((o = evas_object_name_find(ecore_evas_get(ee), "root_background"))) + { + evas_object_x11_trans_freshen(o, x, y, w, h); + } +} +static void window_resize_cb(Ecore_Evas *ee) { - int w, h; + int x, y, w, h; Evas_Object *o = NULL; - ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); + ecore_evas_geometry_get(ee, &x, &y, &w, &h); + if((o = evas_object_name_find(ecore_evas_get(ee), "root_background"))) + { + evas_object_resize(o, w, h); + evas_object_x11_trans_freshen(o, x, y, w, h); + } if((o = evas_object_name_find(ecore_evas_get(ee), "background"))) + { evas_object_resize(o, w, h); + } if((o = evas_object_name_find(ecore_evas_get(ee), "container"))) evas_object_resize(o, w, h); } @@ -43,7 +64,7 @@ return(0); } -static int +static void bg_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info) { Evas_Event_Mouse_Down *event = event_info; @@ -55,11 +76,9 @@ e_container_scroll_start(cont, -1); else e_container_scroll_start(cont, 1); - - } -static int +static void bg_up_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info) { Evas_Event_Mouse_Up *event = event_info; @@ -88,14 +107,23 @@ ecore_evas_title_set(ee, "Enlightenment Thumbnail Test"); ecore_evas_callback_delete_request_set(ee, window_del_cb); ecore_evas_callback_resize_set(ee, window_resize_cb); + ecore_evas_callback_move_set(ee, window_move_cb); evas = ecore_evas_get(ee); - o = evas_object_rectangle_add(evas); + o = evas_object_x11_trans_new(evas); evas_object_move(o, 0, 0); evas_object_resize(o, 300, 120); - evas_object_color_set(o, 255, 255, 255, 255); evas_object_layer_set(o, -5); + evas_object_name_set(o, "root_background"); + evas_object_show(o); + + o = evas_object_rectangle_add(evas); + evas_object_move(o, 0, 0); + evas_object_resize(o, 300, 120); + evas_object_layer_set(o, -6); + evas_object_color_set(o, 255, 255, 255, 0); evas_object_name_set(o, "background"); + evas_object_show(o); cont = e_container_new(evas); @@ -109,10 +137,11 @@ e_container_fill_policy_set(cont, CONTAINER_FILL_POLICY_FILL_Y | CONTAINER_FILL_POLICY_KEEP_ASPECT); - + evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, bg_down_cb, cont); evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, bg_up_cb, cont); + while(--argc) { if((o = e_thumb_new(ecore_evas_get(ee), argv[argc]))) @@ -122,7 +151,6 @@ e_container_element_append(cont, o); } } - ecore_evas_show(ee); ecore_main_loop_begin(); } |
From: <enl...@li...> - 2003-11-08 18:17:37
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart Modified Files: configure.in Log Message: the last of the X11 transparent object stuff =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/configure.in,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- configure.in 14 Sep 2003 00:30:38 -0000 1.1 +++ configure.in 8 Nov 2003 18:17:06 -0000 1.2 @@ -71,6 +71,7 @@ test/Makefile src/container/Makefile src/thumb/Makefile +src/trans/Makefile ], [ chmod +x esmart-config ] |
From: <enl...@li...> - 2003-11-10 17:39:01
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/src/thumb Modified Files: E_Thumb.c Log Message: normalize paths so we don't generate different thumbnails for /home/me//me.png and /home/me/me.png =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/thumb/E_Thumb.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- E_Thumb.c 17 Oct 2003 20:53:04 -0000 1.8 +++ E_Thumb.c 10 Nov 2003 17:38:29 -0000 1.9 @@ -76,7 +76,8 @@ if ((e = (E_Thumb *) evas_object_smart_data_get (result))) { - snprintf (uri, PATH_MAX, "%s", file); + if(!(realpath(file, uri))) + snprintf (uri, PATH_MAX, "%s", file); e->file.name = strdup (uri); snprintf (uri, PATH_MAX, "file://%s", file); e->uri = strdup (uri); |
From: <enl...@li...> - 2003-12-10 04:57:00
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart Modified Files: configure.in esmart-config.in Log Message: Updating esmart to use epsilon =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/configure.in,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- configure.in 9 Nov 2003 23:17:47 -0000 1.5 +++ configure.in 10 Dec 2003 04:56:58 -0000 1.6 @@ -72,6 +72,20 @@ AC_SUBST(imlib_libs) AC_SUBST(imlib_cflags) +AC_ARG_WITH(epsilon, + [ --with-epsilon=DIR use epsilon in <DIR>], + [CFLAGS="$CFLAGS -I$withval/include" + LIBS="-L$withval/lib $LIBS"]) + +AC_PATH_GENERIC(epsilon,, [ + AC_SUBST(epsilon_libs) + AC_SUBST(epsilon_cflags)], + AC_MSG_ERROR(Cannot find epsilon: Is epsilon-config in path?)) +epsilon_libs=`epsilon-config --libs` +epsilon_cflags=`epsilon-config --cflags` +AC_SUBST(epsilon_libs) +AC_SUBST(epsilon_cflags) + AC_PATH_PROG(PERL, perl, 0) AC_SUBST(PERL) =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/esmart-config.in,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- esmart-config.in 16 Sep 2003 02:18:58 -0000 1.2 +++ esmart-config.in 10 Dec 2003 04:56:59 -0000 1.3 @@ -42,11 +42,11 @@ if test @includedir@ != /usr/include ; then includes=-I@includedir@ fi - echo $includes @imlib_cflags@ @evas_cflags@ -I$prefix/include + echo $includes @imlib_cflags@ @evas_cflags@ @epsilon_cflags@ -I$prefix/include ;; --libs) libdirs=-L@libdir@ - echo $libdirs -lesmart @imlib_libs@ @evas_libs@ -lm + echo $libdirs -lesmart @imlib_libs@ @evas_libs@ @epsilon_libs@ -lm ;; *) echo "${usage}" 1>&2 |
From: <enl...@li...> - 2003-12-10 04:58:01
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/src/thumb Modified Files: E_Thumb.c E_Thumb.h Makefile.am Log Message: Update this to use epsilon, backend libs changed, old api stayed in place =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/thumb/E_Thumb.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- E_Thumb.c 10 Nov 2003 17:38:29 -0000 1.9 +++ E_Thumb.c 10 Dec 2003 04:57:59 -0000 1.10 @@ -2,27 +2,21 @@ #include "E_Thumb.h" #define X_DISPLAY_MISSING 1 #include <Imlib2.h> -#include <png.h> -#include "md5.h" +#include <Epsilon.h> #include <limits.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> +#include <string.h> -#define E_THUMBNAIL_SIZE 128 - -static int _e_thumb_write (Evas_Object * o, DATA32 * ptr); -static int _e_thumb_read_file_attributes (Evas_Object * o); static void _e_thumb_add (Evas_Object * o); static void _e_thumb_del (Evas_Object * o); static void _e_thumb_show (Evas_Object * o); static void _e_thumb_hide (Evas_Object * o); static void _e_thumb_raise (Evas_Object * o); static void _e_thumb_lower (Evas_Object * o); -static void _e_thumb_generate (Evas_Object * o); -static void _e_thumb_hash_name (Evas_Object * o); static void _e_thumb_clip_unset (Evas_Object * o); static void _e_thumb_layer_set (Evas_Object * o, int layer); static void _e_thumb_move (Evas_Object * o, double x, double y); @@ -32,23 +26,6 @@ static void _e_thumb_stack_below (Evas_Object * o, Evas_Object * below); static void _e_thumb_color_set (Evas_Object * o, int r, int g, int b, int a); -void -e_thumb_init (void) -{ - int i = 0; - struct stat status; - char buf[PATH_MAX]; - char *dirs[] = { ".thumbnails", ".thumbnails/normal", - ".thumbnails/large", ".thumbnails/fail" }; - - for(i = 0; i < 4; i++) - { - snprintf(buf, PATH_MAX, "%s/%s", getenv("HOME"), dirs[i]); - if(!stat(buf, &status)) continue; - else mkdir(buf, S_IRUSR | S_IWUSR | S_IXUSR); - } -} - Evas_Object * e_thumb_new (Evas * evas, const char *file) { @@ -56,7 +33,6 @@ if (file && file[0] == '/') { E_Thumb *e = NULL; - char uri[PATH_MAX]; Evas_Smart *s = NULL; s = evas_smart_new ("E_Thumb", _e_thumb_add, @@ -76,19 +52,34 @@ if ((e = (E_Thumb *) evas_object_smart_data_get (result))) { - if(!(realpath(file, uri))) - snprintf (uri, PATH_MAX, "%s", file); - e->file.name = strdup (uri); - snprintf (uri, PATH_MAX, "file://%s", file); - e->uri = strdup (uri); - _e_thumb_hash_name (result); - if (!e->image) + if((e->e = epsilon_new(file))) { - evas_object_del (result); - result = NULL; + if(epsilon_exists(e->e) == EPSILON_FAIL) + { + e_thumb_free(result); + result = NULL; + } + else + { + e->image = evas_object_image_add (evas); + epsilon_thumb_file_get(e->e); + evas_object_image_file_set (e->image, + epsilon_thumb_file_get(e->e),NULL); + if (!evas_object_image_load_error_get (e->image)) + { + evas_object_image_size_get (e->image, &e->tw, &e->th); + } + else + { + e_thumb_free(result); + e->image = NULL; + } + } + } } + } return (result); } @@ -105,7 +96,7 @@ { E_Thumb *e = NULL; if ((e = (E_Thumb *) evas_object_smart_data_get (o))) - return (e->file.name); + if(e->e) return(e->e->src); } return (NULL); } @@ -118,10 +109,12 @@ E_Thumb *e = NULL; if ((e = (E_Thumb *) evas_object_smart_data_get (o))) { + if(!e->info) + e->info = epsilon_info_get(e->e); if (w) - *w = e->file.w; + *w = e->info->w; if (h) - *h = e->file.h; + *h = e->info->h; } } } @@ -136,17 +129,15 @@ { Imlib_Image tmp = NULL; - tmp = imlib_load_image_immediately_without_cache (e->file.name); + tmp = imlib_load_image_immediately_without_cache (e->e->src); if (tmp) { + if(!e->info) e->info = epsilon_info_get(e->e); imlib_context_set_image (tmp); result = evas_object_image_add (evas_object_evas_get (o)); evas_object_image_alpha_set (result, 1); - e->file.w = imlib_image_get_width (); - e->file.h = imlib_image_get_height (); - e->format = strdup(imlib_image_format()); - evas_object_image_size_set (result, e->file.w, e->file.h); + evas_object_image_size_set (result, e->info->w, e->info->h); evas_object_image_data_copy_set (result, imlib_image_get_data_for_reading_only @@ -166,7 +157,11 @@ { E_Thumb *e = NULL; if ((e = (E_Thumb *) evas_object_smart_data_get (o))) - result = e->format; + { + if(!e->info) + e->info = epsilon_info_get(e->e); + return(e->info->mimetype); + } } return(result); } @@ -198,14 +193,10 @@ { if (e->image) evas_object_del (e->image); - if (e->file.name) - free (e->file.name); - if (e->thumb.name) - free (e->thumb.name); - if (e->uri) - free (e->uri); - if (e->format) - free (e->format); + if(e->e) + epsilon_free(e->e); + if (e->info) + epsilon_info_free(e->info); free (e); } } @@ -339,10 +330,10 @@ double ww = w, hh = h; e->w = w; e->h = h; - if (e->thumb.w > e->thumb.h) - hh *= (double) e->thumb.h / (double) e->thumb.w; + if (e->tw > e->th) + hh *= (double) e->th / (double) e->tw; else - ww *= (double) e->thumb.w / (double) e->thumb.h; + ww *= (double) e->tw / (double) e->th; evas_object_resize (e->image, ww, hh); evas_object_image_fill_set (e->image, 0.0, 0.0, ww, hh); @@ -441,412 +432,4 @@ } } } - -static char * -_e_thumb_hash_uri (const char *uri) -{ - int n; - MD5_CTX ctx; - char md5out[(2 * MD5_HASHBYTES) + 1]; - char nn[PATH_MAX]; - struct stat thumbstatus; - unsigned char hash[MD5_HASHBYTES]; - static const char hex[] = "0123456789abcdef"; - - char *dirs[] = { "normal", "large", "fail/evidence", "normal" }; - /* use normal as the fallback */ - - if (!uri) - return (NULL); - - MD5Init (&ctx); - MD5Update (&ctx, uri, strlen (uri)); - MD5Final (hash, &ctx); - - for (n = 0; n < MD5_HASHBYTES; n++) - { - md5out[2 * n] = hex[hash[n] >> 4]; - md5out[2 * n + 1] = hex[hash[n] & 0x0f]; - } - md5out[2 * n] = '\0'; - - for (n = 0; n < 4; n++) - { - snprintf (nn, PATH_MAX, "%s/.thumbnails/%s/%s.png", getenv ("HOME"), - dirs[n], md5out); - if (!stat (nn, &thumbstatus)) - break; - } - return (strdup (nn)); - -} -static void -_e_thumb_hash_name (Evas_Object * o) -{ - if (o) - { - E_Thumb *e = NULL; - if ((e = (E_Thumb *) evas_object_smart_data_get (o))) - { - int ok = 0; - struct stat filestatus; - - if (!stat (e->file.name, &filestatus)) - e->file.mtime = filestatus.st_mtime; - if ((e->thumb.name = _e_thumb_hash_uri (e->uri))) - { - if (!_e_thumb_read_file_attributes (o)) - { - if (e->file.mtime == e->thumb.mtime) - { - e->image = - evas_object_image_add (evas_object_evas_get (o)); - evas_object_image_file_set (e->image, e->thumb.name, - NULL); - if (!evas_object_image_load_error_get (e->image)) - { - ok = 1; - evas_object_image_size_get (e->image, - &e->thumb.w, - &e->thumb.h); - } - else - { - evas_object_del (e->image); - e->image = NULL; - } - } - } - } - if (!ok) - { - int ret = 0; - e->thumb.w = e->thumb.h = E_THUMBNAIL_SIZE; - _e_thumb_generate (o); - e->image = evas_object_image_add (evas_object_evas_get (o)); - evas_object_image_file_set (e->image, e->thumb.name, NULL); - if ((ret = evas_object_image_load_error_get (e->image)) != 0) - { - evas_object_del (e->image); - e->image = NULL; - } - - } - } - } -} - -static void -_e_thumb_generate (Evas_Object * o) -{ - if (o) - { - E_Thumb *e = NULL; - if ((e = (E_Thumb *) evas_object_smart_data_get (o))) - { - Imlib_Image tmp = NULL; - Imlib_Image src = NULL; - - tmp = imlib_load_image_immediately_without_cache (e->file.name); - if (tmp) - { - imlib_context_set_image (tmp); - e->format = strdup (imlib_image_format ()); - e->file.w = imlib_image_get_width (); - e->file.h = imlib_image_get_height (); - - if (e->file.w > e->file.h) - { - e->thumb.w = - (int) (((double) e->thumb.w / (double) e->file.w) * - (double) e->file.w); - e->thumb.h = - (int) (((double) e->thumb.h / (double) e->file.w) * - (double) e->file.h); - } - else - { - e->thumb.w = - (int) (((double) e->thumb.w / (double) e->file.h) * - (double) e->file.w); - e->thumb.h = - (int) (((double) e->thumb.h / (double) e->file.h) * - (double) e->file.h); - } - imlib_context_set_cliprect (0, 0, e->thumb.w, e->thumb.h); - if ((src = imlib_create_cropped_scaled_image (0, 0, - e->file.w, - e->file.h, - e->thumb.w, - e->thumb.h))) - { - imlib_free_image_and_decache (); - imlib_context_set_image (src); - /* - imlib_context_set_anti_alias (1); - */ - imlib_image_set_has_alpha (1); - imlib_image_set_format ("argb"); - if (_e_thumb_write (o, imlib_image_get_data ()) != 0) - fprintf (stderr, "Unable to cache %s\n", e->file.name); - } - imlib_free_image_and_decache (); - } - else - { - evas_object_del (e->image); - e->image = NULL; - } - } - } -} - -static FILE * -_e_thumb_open_png_file_reading (char *filename) -{ - FILE *fp = NULL; - - if ((fp = fopen (filename, "rb"))) - { - char buf[4]; - int bytes = sizeof (buf); - int ret; - - ret = fread (buf, sizeof (char), bytes, fp); - if (ret != bytes) - { - fclose (fp); - fp = NULL; - } - else - { - if ((ret = png_check_sig (buf, bytes))) - rewind (fp); - else - { - fclose (fp); - fp = NULL; - } - } - } - return fp; -} - - -static int -_e_thumb_read_file_attributes (Evas_Object * o) -{ - int result = 0; - FILE *fp = NULL; - E_Thumb *e = NULL; - - if ((e = (E_Thumb *) evas_object_smart_data_get (o)) == NULL) - return 1; - - if ((fp = _e_thumb_open_png_file_reading (e->thumb.name))) - { - png_structp png_ptr = NULL; - png_infop info_ptr = NULL; - png_textp text_ptr; - int num_text = 0, i; - - if (! - (png_ptr = - png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL))) - { - fclose (fp); - return 1; - } - - if (!(info_ptr = png_create_info_struct (png_ptr))) - { - png_destroy_read_struct (&png_ptr, (png_infopp) NULL, - (png_infopp) NULL); - fclose (fp); - return 1; - } - png_init_io (png_ptr, fp); - png_read_info (png_ptr, info_ptr); - - num_text = png_get_text (png_ptr, info_ptr, &text_ptr, &num_text); - for (i = 0; (i < num_text) && (i < 10); i++) - { - png_text text = text_ptr[i]; - - if (!strcmp (text.key, "Thumb::MTime")) - e->thumb.mtime = atoi (text.text); - if (!strcmp (text.key, "Thumb::Image::Width")) - e->thumb.w = atoi (text.text); - if (!strcmp (text.key, "Thumb::Image::Height")) - e->thumb.h = atoi (text.text); - if (!strcmp (text.key, "Thumb::URI")) - if (strcmp (text.text, e->uri)) - result = 1; - } - /* png_read_end(png_ptr,info_ptr); */ - png_destroy_read_struct (&png_ptr, &info_ptr, (png_infopp) NULL); - fclose (fp); - } - else - { - result = 1; - } - return (result); -} - -#define GET_TMPNAME(_tmpbuf,_file) { \ - int _l,_ll; \ - char _buf[21]; \ - _l=snprintf(_tmpbuf,PATH_MAX,"%s",_file); \ - _ll=snprintf(_buf,21,"e_thumb-%06d.png",(int)getpid()); \ - strncpy(&tmpfile[_l-35],_buf,_ll+1); } - /*****************************************************************************/ - -static int -_e_thumb_write (Evas_Object * o, DATA32 * ptr) -{ - FILE *fp = NULL; - char mtimebuf[PATH_MAX], widthbuf[10], heightbuf[10], formatbuf[32], - tmpfile[PATH_MAX] = ""; - int i, j, k, has_alpha = 1, ret = 0; - -/* - DATA32 *ptr=NULL; -*/ - png_infop info_ptr; - png_color_8 sig_bit; - png_structp png_ptr; - png_text text_ptr[5]; - png_bytep row_ptr, row_data = NULL; - - E_Thumb *e = NULL; - - if ((e = (E_Thumb *) evas_object_smart_data_get (o)) == NULL) - return 1; - GET_TMPNAME (tmpfile, e->thumb.name); - -/* - has_alpha = evas_object_image_alpha_get (e->image); - */ - if ((fp = fopen (tmpfile, "wb"))) - { - if (! - (png_ptr = - png_create_write_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL))) - { - ret = 1; - } - if (!(info_ptr = png_create_info_struct (png_ptr))) - { - png_destroy_write_struct (&png_ptr, (png_infopp) NULL); - ret = 1; - } - if (setjmp (png_ptr->jmpbuf)) - { - png_destroy_write_struct (&png_ptr, &info_ptr); - ret = 1; - } - - png_init_io (png_ptr, fp); - -#ifdef PNG_TEXT_SUPPORTED - /* setup tags here */ - text_ptr[0].key = "Thumb::URI"; - text_ptr[0].text = e->uri; - text_ptr[0].compression = PNG_TEXT_COMPRESSION_NONE; - - snprintf (mtimebuf, PATH_MAX, "%d", (int) e->file.mtime); - text_ptr[1].key = "Thumb::MTime"; - text_ptr[1].text = mtimebuf; - text_ptr[1].compression = PNG_TEXT_COMPRESSION_NONE; - - snprintf (widthbuf, PATH_MAX, "%d", e->file.w); - text_ptr[2].key = "Thumb::Image::Width"; - text_ptr[2].text = widthbuf; - text_ptr[2].compression = PNG_TEXT_COMPRESSION_NONE; - - snprintf (heightbuf, PATH_MAX, "%d", e->file.h); - text_ptr[3].key = "Thumb::Image::Height"; - text_ptr[3].text = heightbuf; - text_ptr[3].compression = PNG_TEXT_COMPRESSION_NONE; - - snprintf (formatbuf, PATH_MAX, "image/%s", e->format); - text_ptr[4].key = "Thumb::Mimetype"; - text_ptr[4].text = formatbuf; - text_ptr[4].compression = PNG_TEXT_COMPRESSION_NONE; - - png_set_text (png_ptr, info_ptr, text_ptr, 5); -#endif - if (has_alpha) - { - png_set_IHDR (png_ptr, info_ptr, e->thumb.w, e->thumb.h, 8, - PNG_COLOR_TYPE_RGB_ALPHA, PNG_INTERLACE_NONE, - PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); -#ifdef WORDS_BIGENDIAN - png_set_swap_alpha (png_ptr); -#else - png_set_bgr (png_ptr); -#endif - } - else - { - png_set_IHDR (png_ptr, info_ptr, e->thumb.w, e->thumb.h, 8, - PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, - PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); - row_data = (png_bytep) malloc (e->thumb.w * 3 * sizeof (char)); - } - - sig_bit.red = 8; - sig_bit.green = 8; - sig_bit.blue = 8; - sig_bit.alpha = 8; - png_set_sBIT (png_ptr, info_ptr, &sig_bit); - - png_set_compression_level (png_ptr, 9); /* 0?? ### */ - png_write_info (png_ptr, info_ptr); - png_set_shift (png_ptr, &sig_bit); - png_set_packing (png_ptr); -/* - ptr=evas_object_image_data_get(e->image,1); -*/ - for (i = 0; i < e->thumb.h; i++) - { - if (has_alpha) - row_ptr = (png_bytep) ptr; - else - { - for (j = 0, k = 0; j < e->thumb.w; k++) - { - row_data[j++] = (ptr[k] >> 16) & 0xff; - row_data[j++] = (ptr[k] >> 8) & 0xff; - row_data[j++] = (ptr[k]) & 0xff; - } - row_ptr = (png_bytep) row_data; - } - png_write_row (png_ptr, row_ptr); - ptr += e->thumb.w; - } - - png_write_end (png_ptr, info_ptr); - png_destroy_write_struct (&png_ptr, &info_ptr); - png_destroy_info_struct (png_ptr, &info_ptr); - - if (!rename (tmpfile, e->thumb.name)) - { - if (chmod (e->thumb.name, S_IWUSR | S_IRUSR)) - printf ("e_thumb: could not set permissions on \"%s\"!?\n", - e->thumb.name); - } - } - else - printf ("e_thumb: Unable to open \"%s\" for writing\n", tmpfile); - - fflush (fp); - if (fp) - fclose (fp); - if (row_data) - free (row_data); - - return (ret); -} =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/thumb/E_Thumb.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- E_Thumb.h 14 Oct 2003 18:12:57 -0000 1.3 +++ E_Thumb.h 10 Dec 2003 04:57:59 -0000 1.4 @@ -2,6 +2,7 @@ #define E_THUMB_H #include<Evas.h> +#include<Epsilon.h> /** * E_Thumb - In an effort to easily generate thumbnails this smart object @@ -15,22 +16,13 @@ */ struct _E_Thumb { - struct { - int mtime; - int w, h; - char *name; - } thumb, file; /* info about the thumb and source files */ - char *uri; /* uri for the file we're caching */ - char *format; /* image format of the real image */ + Epsilon *e; + Epsilon_Info *info; Evas_Object *image; /* thumb image that's displayed */ double x, y, w, h; /* smart object location/geometry */ + int tw, th; }; typedef struct _E_Thumb E_Thumb; - -/** - * e_thumb_init - create the directories ethumb is going to cache to - */ -void e_thumb_init(void); /** * e_thumb_free - free an E_Thumb smart object =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/thumb/Makefile.am,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- Makefile.am 14 Sep 2003 00:30:38 -0000 1.1 +++ Makefile.am 10 Dec 2003 04:57:59 -0000 1.2 @@ -1,6 +1,6 @@ ## Process this file with automake to produce Makefile.in -INCLUDES = @evas_cflags@ @imlib_cflags@ +INCLUDES = @evas_cflags@ @epsilon_cflags@ @imlib_cflags@ installed_headersdir = $(prefix)/include/Esmart/ @@ -10,9 +10,8 @@ E_Thumb.h libethumb_la_SOURCES = \ - md5.c md5.h \ E_Thumb.c E_Thumb.h -libethumb_la_LIBADD = @evas_libs@ @imlib_libs@ -lm +libethumb_la_LIBADD = @evas_libs@ @epsilon_libs@ @imlib_libs@ -lm libethumb_la_LDFLAGS = -version-info 1:0:0 libethumb_la_CFLAGS = -g |
From: <enl...@li...> - 2003-12-10 05:25:15
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/src/thumb Modified Files: E_Thumb.c Log Message: Forgot the realpath stuff, this broke entice :( =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/thumb/E_Thumb.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- E_Thumb.c 10 Dec 2003 04:57:59 -0000 1.10 +++ E_Thumb.c 10 Dec 2003 05:25:14 -0000 1.11 @@ -29,8 +29,9 @@ Evas_Object * e_thumb_new (Evas * evas, const char *file) { + char buf[PATH_MAX]; Evas_Object *result = NULL; - if (file && file[0] == '/') + if (file) { E_Thumb *e = NULL; Evas_Smart *s = NULL; @@ -52,7 +53,10 @@ if ((e = (E_Thumb *) evas_object_smart_data_get (result))) { - if((e->e = epsilon_new(file))) + if(!realpath(file, buf)) + snprintf(buf, PATH_MAX, "%s", file); + + if((e->e = epsilon_new(buf))) { if(epsilon_exists(e->e) == EPSILON_FAIL) { @@ -62,7 +66,6 @@ else { e->image = evas_object_image_add (evas); - epsilon_thumb_file_get(e->e); evas_object_image_file_set (e->image, epsilon_thumb_file_get(e->e),NULL); if (!evas_object_image_load_error_get (e->image)) |
From: <enl...@li...> - 2004-01-06 18:10:41
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/test Modified Files: esmart_main.c Log Message: update to use the dragable object in the test as well =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/test/esmart_main.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- esmart_main.c 8 Nov 2003 20:19:15 -0000 1.6 +++ esmart_main.c 6 Jan 2004 18:10:40 -0000 1.7 @@ -16,8 +16,34 @@ #include "E_Thumb.h" #include "container.h" #include "Esmart_Trans.h" +#include "dragable.h" #include "../src/config.h" +#define MOVE_REFRESH 0.06 +#define RESIZE_REFRESH 0.02 + +static Ecore_Timer *refresh_timer = NULL; + +static int +fix_bg(void *data) +{ + int x, y, w, h; + Ecore_Evas *ee = NULL; + Evas_Object *o = NULL; + + if((ee = (Ecore_Evas*)data)) + { + ecore_evas_geometry_get(ee, &x, &y, &w, &h); + if((o = evas_object_name_find(ecore_evas_get(ee), "root_background"))) + { + evas_object_resize(o, w, h); + esmart_trans_x11_freshen(o, x, y, w, h); + } + } + refresh_timer = NULL; + return(0); +} + static void window_del_cb(Ecore_Evas *ee) { @@ -30,32 +56,33 @@ int x, y, w, h; Evas_Object *o = NULL; - ecore_evas_geometry_get(ee, &x, &y, &w, &h); - - if((o = evas_object_name_find(ecore_evas_get(ee), "root_background"))) - { - esmart_trans_x11_freshen(o, x, y, w, h); - } + if(refresh_timer) ecore_timer_del(refresh_timer); + refresh_timer = ecore_timer_add(MOVE_REFRESH, fix_bg, ee); } static void window_resize_cb(Ecore_Evas *ee) { int x, y, w, h; Evas_Object *o = NULL; - + ecore_evas_geometry_get(ee, &x, &y, &w, &h); + if(refresh_timer) ecore_timer_del(refresh_timer); + refresh_timer = ecore_timer_add(RESIZE_REFRESH, fix_bg, ee); - if((o = evas_object_name_find(ecore_evas_get(ee), "root_background"))) - { - evas_object_resize(o, w, h); - esmart_trans_x11_freshen(o, x, y, w, h); - } if((o = evas_object_name_find(ecore_evas_get(ee), "background"))) { evas_object_resize(o, w, h); } if((o = evas_object_name_find(ecore_evas_get(ee), "container"))) evas_object_resize(o, w, h); + if((o = evas_object_name_find(ecore_evas_get(ee), "dragger"))) + evas_object_resize(o, w, h); +#if 0 + if((o = evas_object_name_find(ecore_evas_get(ee), "resizer"))) + { + evas_object_move(o, w - 20, h - 20); + } +#endif } static int @@ -126,6 +153,30 @@ evas_object_layer_set(o, -6); evas_object_color_set(o, 255, 255, 255, 0); evas_object_name_set(o, "background"); + evas_object_show(o); + + o = esmart_draggies_new(ee); + evas_object_move(o, 0, 0); + evas_object_resize(o, 300, 120); + evas_object_layer_set(o, -5); +#if 0 + evas_object_color_set(o, 255, 255, 255, 0); +#endif + evas_object_name_set(o, "dragger"); + esmart_draggies_button_set(o, 1); + evas_object_show(o); + +#if 0 + o = esmart_draggies_new(ee); + evas_object_move(o, 280, 100); + evas_object_resize(o, 20, 20); + evas_object_layer_set(o, -4); + evas_object_color_set(o, 255, 255, 255, 128); + evas_object_name_set(o, "resizer"); + esmart_draggies_type_set(o, DRAGGIES_TYPE_RESIZE_BR); + esmart_draggies_button_set(o, 1); + evas_object_show(o); +#endif if (argc < 2) { image = evas_object_image_add(evas); @@ -134,10 +185,10 @@ evas_object_resize(image, iw, ih); evas_object_image_fill_set(image, 0.0, 0.0, (Evas_Coord) iw, (Evas_Coord) ih); evas_object_layer_set(image, 1000); + evas_object_pass_events_set(image, 1); evas_object_show(image); } - evas_object_show(o); cont = e_container_new(evas); evas_object_move(cont, 0, 0); |
From: <enl...@li...> - 2004-01-06 18:11:38
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/src/draggies Log Message: Directory /cvsroot/enlightenment/e17/proto/esmart/src/draggies added to the repository |
From: <enl...@li...> - 2004-01-06 18:14:16
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/src/draggies Added Files: Makefile.am dragable.c dragable.h Log Message: This isn't really a smart object, or a composite object. It's basically a rectangle with some data attached to it and a few routines to talk to the ecore_evas it's living in. For now you can move your windows, and i'd like it to be able to resize in different directions smoothly. This is pretty much being added so borderless/shaped windows can allow some themeable part to allow moving the window. This object swallows fine etc. |
From: <enl...@li...> - 2004-01-06 18:14:51
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/test Modified Files: Makefile.am Log Message: Include stuff from dragable =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/test/Makefile.am,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- Makefile.am 8 Nov 2003 18:17:06 -0000 1.2 +++ Makefile.am 6 Jan 2004 18:14:51 -0000 1.3 @@ -5,6 +5,7 @@ -I$(top_srcdir)/src/thumb \ -I$(top_srcdir)/src/container \ -I$(top_srcdir)/src/trans \ + -I$(top_srcdir)/src/draggies \ @evas_cflags@ \ @imlib_cflags@ \ @ecore_cflags@ |
From: <enl...@li...> - 2004-01-06 18:15:36
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart Modified Files: configure.in Log Message: build draggies =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/configure.in,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- configure.in 10 Dec 2003 04:56:58 -0000 1.6 +++ configure.in 6 Jan 2004 18:15:36 -0000 1.7 @@ -100,6 +100,7 @@ src/container/Makefile src/thumb/Makefile src/trans/Makefile +src/draggies/Makefile ], [ chmod +x esmart-config ] |
From: <enl...@li...> - 2004-01-06 18:16:13
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/src Modified Files: Makefile.am Log Message: build dragable =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/Makefile.am,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- Makefile.am 8 Nov 2003 20:19:15 -0000 1.3 +++ Makefile.am 6 Jan 2004 18:16:12 -0000 1.4 @@ -2,7 +2,7 @@ INCLUDES = @evas_cflags@ @imlib_cflags@ @ecore_cflags@ -SUBDIRS = container thumb trans +SUBDIRS = container thumb trans draggies lib_LTLIBRARIES = libesmart.la @@ -11,11 +11,13 @@ libesmart_la_SOURCES = esmart.c libesmart_la_LIBADD = container/libecontainer.la \ - thumb/libethumb.la trans/libesmart_trans.la + thumb/libethumb.la trans/libesmart_trans.la \ + draggies/libecore_evas_dragable.la \ @evas_libs@ @imlib_libs@ @ecore_libs@ -lm libesmart_la_DEPENDENCIES = container/libecontainer.la \ thumb/libethumb.la \ + draggies/libecore_evas_dragable.la \ trans/libesmart_trans.la #libesmart_la_LDFLAGS = -version-info 1:0:0 |
From: <enl...@li...> - 2004-01-06 18:17:08
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/test Modified Files: esmart_main.c Log Message: make it transparent again =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/test/esmart_main.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- esmart_main.c 6 Jan 2004 18:10:40 -0000 1.7 +++ esmart_main.c 6 Jan 2004 18:17:05 -0000 1.8 @@ -159,9 +159,7 @@ evas_object_move(o, 0, 0); evas_object_resize(o, 300, 120); evas_object_layer_set(o, -5); -#if 0 evas_object_color_set(o, 255, 255, 255, 0); -#endif evas_object_name_set(o, "dragger"); esmart_draggies_button_set(o, 1); evas_object_show(o); |
From: <enl...@li...> - 2004-01-08 18:15:52
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/src/thumb Modified Files: E_Thumb.c Log Message: ran indent. fetch image height/width from imlib2 if meta data fetching fails =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/thumb/E_Thumb.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- E_Thumb.c 10 Dec 2003 05:25:14 -0000 1.11 +++ E_Thumb.c 8 Jan 2004 18:15:51 -0000 1.12 @@ -53,36 +53,37 @@ if ((e = (E_Thumb *) evas_object_smart_data_get (result))) { - if(!realpath(file, buf)) - snprintf(buf, PATH_MAX, "%s", file); - - if((e->e = epsilon_new(buf))) + if (!realpath (file, buf)) + snprintf (buf, PATH_MAX, "%s", file); + + if ((e->e = epsilon_new (buf))) { - if(epsilon_exists(e->e) == EPSILON_FAIL) + if (epsilon_exists (e->e) == EPSILON_FAIL) { - e_thumb_free(result); + e_thumb_free (result); result = NULL; } - else - { - e->image = evas_object_image_add (evas); - evas_object_image_file_set (e->image, - epsilon_thumb_file_get(e->e),NULL); - if (!evas_object_image_load_error_get (e->image)) - { - evas_object_image_size_get (e->image, &e->tw, &e->th); - } - else + else { - e_thumb_free(result); - e->image = NULL; + e->image = evas_object_image_add (evas); + evas_object_image_file_set (e->image, + epsilon_thumb_file_get (e->e), + NULL); + if (!evas_object_image_load_error_get (e->image)) + { + evas_object_image_size_get (e->image, &e->tw, &e->th); + } + else + { + e_thumb_free (result); + e->image = NULL; + } + } } - } } - } return (result); } @@ -99,7 +100,8 @@ { E_Thumb *e = NULL; if ((e = (E_Thumb *) evas_object_smart_data_get (o))) - if(e->e) return(e->e->src); + if (e->e) + return (e->e->src); } return (NULL); } @@ -112,8 +114,8 @@ E_Thumb *e = NULL; if ((e = (E_Thumb *) evas_object_smart_data_get (o))) { - if(!e->info) - e->info = epsilon_info_get(e->e); + if (!e->info) + e->info = epsilon_info_get (e->e); if (w) *w = e->info->w; if (h) @@ -135,11 +137,16 @@ tmp = imlib_load_image_immediately_without_cache (e->e->src); if (tmp) { - if(!e->info) e->info = epsilon_info_get(e->e); + if (!e->info) + e->info = epsilon_info_get (e->e); imlib_context_set_image (tmp); result = evas_object_image_add (evas_object_evas_get (o)); evas_object_image_alpha_set (result, 1); + if (e->info->w == 0) + e->info->w = imlib_image_get_width (); + if (e->info->h == 0) + e->info->w = imlib_image_get_height (); evas_object_image_size_set (result, e->info->w, e->info->h); evas_object_image_data_copy_set (result, @@ -153,21 +160,22 @@ } const char * -e_thumb_format_get(Evas_Object *o) +e_thumb_format_get (Evas_Object * o) { char *result = NULL; if (o) { E_Thumb *e = NULL; if ((e = (E_Thumb *) evas_object_smart_data_get (o))) - { - if(!e->info) - e->info = epsilon_info_get(e->e); - return(e->info->mimetype); - } + { + if (!e->info) + e->info = epsilon_info_get (e->e); + return (e->info->mimetype); + } } - return(result); + return (result); } + /*========================================================================== * Smart Object Functions *========================================================================*/ @@ -196,10 +204,10 @@ { if (e->image) evas_object_del (e->image); - if(e->e) - epsilon_free(e->e); + if (e->e) + epsilon_free (e->e); if (e->info) - epsilon_info_free(e->info); + epsilon_info_free (e->info); free (e); } } @@ -435,4 +443,5 @@ } } } + /*****************************************************************************/ |
From: <enl...@li...> - 2004-01-13 07:35:03
|
Enlightenment CVS committal Author : atmosphere Project : e17 Module : proto Dir : e17/proto/esmart/src/container/layout/entice Modified Files: entice.c Log Message: phormie, i think this atleast in part was wher eyou were heading with this. It's still not *right* but we can work on it. Notable question though, should the alpha value for the clipper be being handled in the plugin ? can we do this at append/remove time checking the size of the list, and that way not reimplementing it in multiple places? =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/esmart/src/container/layout/entice/entice.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- entice.c 13 Jan 2004 01:25:09 -0000 1.1 +++ entice.c 13 Jan 2004 07:35:02 -0000 1.2 @@ -3,27 +3,21 @@ #include <math.h> #include "../../container.h" +static int _entice_current = 0; +static int _entice_scroll_timer(void *data); + void _entice_layout(Container *cont) { Evas_List *l; int i, im_no; double pos; - double ey = cont->y + cont->padding.t; + double ey = cont->y + cont->padding.t + cont->scroll_offset; - i = 1; - im_no = 0; - printf("*** layout, entice style...\n"); -/* - for (l = cont->elements; l; l = l->next, i++) - { - if (l == current) - im_no = i; - } -*/ - im_no = 3; + im_no = _entice_current; i = 1; pos = 0.0; + evas_object_color_set(cont->clipper, 255, 255, 255, 255); for (l=cont->elements; l; l = l->next, i++) { Container_Element *el; @@ -65,16 +59,42 @@ void _entice_scroll_start(Container *cont, double velocity) { + Scroll_Data *data; + double length, size; + + length = e_container_elements_length_get(cont->obj); + data = calloc(1, sizeof(Scroll_Data)); + data->velocity = velocity; + data->start_time = ecore_time_get(); + data->cont = cont; + data->length = length; + + cont->scroll_timer = ecore_timer_add(.02, _entice_scroll_timer, data); } void _entice_scroll_stop(Container *cont) { + /* FIXME: decelerate on stop? */ + if (cont->scroll_timer) + { + ecore_timer_del(cont->scroll_timer); + cont->scroll_timer = NULL; + } } void _entice_scroll_to(Container *cont, Container_Element *el) { + if(cont && el) + { + Evas_List *l; + _entice_current = 1; + for(l = cont->elements; l; l = l->next, _entice_current++) + { + if(el == l->data) return; + } + } } void @@ -93,3 +113,29 @@ return 1; } + +int +_entice_scroll_timer(void *data) +{ + Scroll_Data *sd = data; + double dt, dx, size, pad, max_scroll; + + dt = ecore_time_get() - sd->start_time; + dx = 10 * (1 - exp(-dt)); + + sd->cont->scroll_offset += dx * sd->velocity; + + size = sd->cont->direction ? sd->cont->h : sd->cont->w; + pad = sd->cont->direction ? sd->cont->padding.t + sd->cont->padding.b : + sd->cont->padding.l + sd->cont->padding.r; + max_scroll = size - sd->length - pad; + + if (sd->cont->scroll_offset < max_scroll) + sd->cont->scroll_offset = max_scroll; + + else if (sd->cont->scroll_offset > 0) + sd->cont->scroll_offset = 0; + + _entice_layout(sd->cont); + return 1; +} |