Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : apps/e_utils

Dir     : e17/apps/e_utils/src/bin/emblem


Modified Files:
        Emblem.h Makefile.am emblem_ui.c main.c 


Log Message:
- convert emblem to use Epsilon for its thumbnail creation. The initial load
  will still be slow, but after that subsequent restarts of emblem should be
  quick.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e_utils/src/bin/emblem/Emblem.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- Emblem.h    5 Jun 2005 05:08:29 -0000       1.4
+++ Emblem.h    20 Jul 2005 02:10:38 -0000      1.5
@@ -12,6 +12,7 @@
 #include <Edje.h>
 #include <Esmart/Esmart_Container.h>
 #include <E_Lib.h>
+#include <Epsilon.h>
 
 #include "config.h"
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e_utils/src/bin/emblem/Makefile.am,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- Makefile.am 27 Jun 2005 14:31:12 -0000      1.3
+++ Makefile.am 20 Jul 2005 02:10:38 -0000      1.4
@@ -9,6 +9,7 @@
        @ecore_cflags@ \
        @evas_cflags@ \
        @edje_cflags@ \
+       @epsilon_cflags@ \
        @esmart_cflags@
 
 bin_PROGRAMS = emblem
@@ -24,5 +25,6 @@
        @evas_libs@ \
        @esmart_libs@ \
        @edje_libs@ \
+       @epsilon_libs@ \
        -lesmart_container
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e_utils/src/bin/emblem/emblem_ui.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- emblem_ui.c 5 Jun 2005 05:08:29 -0000       1.16
+++ emblem_ui.c 20 Jul 2005 02:10:38 -0000      1.17
@@ -104,6 +104,14 @@
     e_lib_theme_dirs_list();
     e_lib_background_dirs_list();
 
+    edje_object_signal_callback_add(em->gui.edje, "left,clicked", "*",
+                                            emblem_left_scroll_down_cb, em);
+    edje_object_signal_callback_add(em->gui.edje, "right,clicked", "*",
+                                            emblem_right_scroll_down_cb, em);
+    edje_object_signal_callback_add(em->gui.edje, "left,click,release", "*",
+                                            emblem_left_scroll_up_cb, em);
+    edje_object_signal_callback_add(em->gui.edje, "right,click,release", "*",
+                                            emblem_right_scroll_up_cb, em);
     return 1;
 }
 
@@ -117,9 +125,9 @@
 {
     Emblem *em;
     Evas_Coord w, h;
-    Evas_Object *o;
     double l;
     const char *state;
+    Evas_Object *o;
 
     em = ecore_evas_data_get(ee, "emblem");
 
@@ -141,36 +149,10 @@
     l = esmart_container_elements_length_get(em->gui.menu);
     state = edje_object_part_state_get(em->gui.edje, "left_arrow", NULL);
 
-    if (l < w)
-    {
-        if (!strcmp(state, "default"))
-        {
+    if ((l < w) && (!strcmp(state, "default")))
             edje_object_signal_emit(em->gui.edje, "arrows,hide", "*");
-            edje_object_signal_callback_del(em->gui.edje, "left,clicked", "*",
-                                                    
emblem_left_scroll_down_cb);
-            edje_object_signal_callback_del(em->gui.edje, "right,clicked", "*",
-                                                    
emblem_right_scroll_down_cb);
-            edje_object_signal_callback_del(em->gui.edje, 
"left,click,release", "*",
-                                                    emblem_left_scroll_up_cb);
-            edje_object_signal_callback_del(em->gui.edje, 
"right,click,release", "*",
-                                                    emblem_right_scroll_up_cb);
-        }
-    }
-    else 
-    {
-        if (!strcmp(state, "hidden"))
-        {
+    else if (!strcmp(state, "hidden"))
             edje_object_signal_emit(em->gui.edje, "arrows,show", "*");
-            edje_object_signal_callback_add(em->gui.edje, "left,clicked", "*",
-                                            emblem_left_scroll_down_cb, em);
-            edje_object_signal_callback_add(em->gui.edje, "right,clicked", "*",
-                                            emblem_right_scroll_down_cb, em);
-            edje_object_signal_callback_add(em->gui.edje, 
"left,click,release", "*",
-                                            emblem_left_scroll_up_cb, em);
-            edje_object_signal_callback_add(em->gui.edje, 
"right,click,release", "*",
-                                            emblem_right_scroll_up_cb, em);
-        }
-    }
 }
 
 static void
@@ -185,18 +167,9 @@
     l = esmart_container_elements_length_get(em->gui.menu);
 
     if (l < w)
-        edje_object_signal_emit(em->gui.edje, "arrows,hide", "*");
+            edje_object_signal_emit(em->gui.edje, "arrows,hide", "*");
     else 
-    {
-        edje_object_signal_callback_add(em->gui.edje, "left,clicked", "*",
-                                                emblem_left_scroll_down_cb, 
em);
-        edje_object_signal_callback_add(em->gui.edje, "right,clicked", "*",
-                                                emblem_right_scroll_down_cb, 
em);
-        edje_object_signal_callback_add(em->gui.edje, "left,click,release", 
"*",
-                                                emblem_left_scroll_up_cb, em);
-        edje_object_signal_callback_add(em->gui.edje, "right,click,release", 
"*",
-                                                emblem_right_scroll_up_cb, em);
-    }
+            edje_object_signal_emit(em->gui.edje, "arrows,show", "*");
 }
 
 static int
@@ -234,11 +207,51 @@
 emblem_evas_object_get(Emblem *em, const char *fname,
                             Evas_Coord w, Evas_Coord h)
 {
+    Epsilon *e;
+    Evas_Object *o;
+
+    if (!(e = epsilon_new(fname)))
+        return NULL;
+
+    epsilon_key_set(e, "desktop/background");
+    epsilon_resolution_set(e, SCREEN_W, SCREEN_H);
+
+    if (epsilon_exists(e) == EPSILON_FAIL)
+        epsilon_generate(e);
+
+    o = evas_object_image_add(ecore_evas_get(em->gui.ee));
+    evas_object_image_file_set(o, epsilon_thumb_file_get(e), NULL);
+    evas_object_move(o, 0, 0);
+    evas_object_resize(o, SCREEN_W, SCREEN_H);
+    evas_object_data_set(o, "file", strdup(fname));
+    evas_object_show(o);
+
+    epsilon_free(e);
+
+    return o;
+}
+
+static void
+emblem_current_bg_set(Emblem *em, char *file) 
+{
+    Evas_Coord w, h;
     Evas_Object *o, *o2, *ob;
     Ecore_Evas *ee2;
     Evas *evas2;
 
-    ob = ecore_evas_object_image_new(em->gui.ee);
+    if (em->gui.current)
+    {
+        edje_object_part_unswallow(em->gui.edje, em->gui.current);
+        evas_object_hide(em->gui.current);
+        evas_object_del(em->gui.current);
+    }
+
+    edje_object_part_geometry_get(em->gui.edje, "current", 
+                                            NULL, NULL, &w, &h);
+
+    em->gui.current = ecore_evas_object_image_new(em->gui.ee);  
+    ob = em->gui.current;
+
     ee2 = evas_object_data_get(ob, "Ecore_Evas");
     evas_object_image_size_set(ob, w, h);
     evas_object_image_fill_set(ob, 0, 0, w, h);
@@ -257,36 +270,17 @@
     evas_object_move(o, 0, 0);
     evas_object_resize(o, SCREEN_W, SCREEN_H);
 
-    if (!edje_object_file_set(o, fname, "desktop/background"))
+    if (!edje_object_file_set(o, file, "desktop/background"))
     {
-        printf("Unable to load file, %s\n", fname);
+        printf("Unable to load file, %s\n", file);
         evas_object_del(o);
-        return NULL;
+        return;
     }
     evas_object_show(o);
 
     evas_object_data_set(ob, "screen_buffer", o2);
-    evas_object_data_set(ob, "file", strdup(fname));
-
-    return ob;
-}
-
-static void
-emblem_current_bg_set(Emblem *em, char *file) 
-{
-    Evas_Coord w, h;
-
-    if (em->gui.current)
-    {
-        edje_object_part_unswallow(em->gui.edje, em->gui.current);
-        evas_object_hide(em->gui.current);
-        evas_object_del(em->gui.current);
-    }
-
-    edje_object_part_geometry_get(em->gui.edje, "current", 
-                                            NULL, NULL, &w, &h);
-
-    em->gui.current = emblem_evas_object_get(em, file, w, h);
+    evas_object_data_set(ob, "file", strdup(file));  
+        
     evas_object_resize(em->gui.current, w, h);
     edje_object_part_swallow(em->gui.edje, "current", em->gui.current);
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e_utils/src/bin/emblem/main.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- main.c      5 Jun 2005 05:08:29 -0000       1.5
+++ main.c      20 Jul 2005 02:10:38 -0000      1.6
@@ -150,6 +150,8 @@
         goto EDJE_SHUTDOWN;
     }
 
+    epsilon_init();
+
     if (!emblem_ui_init(em))
     {
         printf("Unable to setup UI\n");




-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to