okra pushed a commit to branch master.

http://git.enlightenment.org/apps/ephoto.git/commit/?id=d62984608a93512674b87d235acb5c3ca4b8110e

commit d62984608a93512674b87d235acb5c3ca4b8110e
Author: Stephen okra Houston <smhousto...@gmail.com>
Date:   Thu Mar 24 12:16:05 2016 -0500

    Ephoto: Use Enlightenment's thumbnailer to achieve better thumbnailing.
---
 configure.ac                   |  4 +++
 src/bin/Makefile.am            | 37 +++++++++++++++++++++------
 src/bin/ephoto.c               |  8 ++++--
 src/bin/ephoto.h               | 55 ++++++++++++++++++++++++++++++++-------
 src/bin/ephoto_main.c          | 58 +++++++++++++++++-------------------------
 src/bin/ephoto_thumb_browser.c |  5 +++-
 6 files changed, 113 insertions(+), 54 deletions(-)

diff --git a/configure.ac b/configure.ac
index 16abae0..90a7c2c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,6 +5,8 @@ rm -f config.cache
 
 AC_INIT([ephoto], [0.9.99], [enlightenment-de...@lists.sourceforge.net])
 
+AC_CHECK_HEADERS([dirent.h limits.h math.h arpa/inet.h netinet/in.h])
+
 AC_PREREQ([2.60])
 AC_CONFIG_SRCDIR([configure.ac])
 AC_CONFIG_MACRO_DIR([m4])
@@ -45,6 +47,8 @@ PKG_CHECK_MODULES([EFL], [
  eina >= 1.7.0
  evas >= 1.7.0
  ecore >= 1.7.0
+ ecore-file >= 1.7.0
+ ecore-ipc >= 1.7.0
  edje >= 1.7.0
  eo >= 1.7.0
  eio >= 1.7.0
diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am
index 0698c96..e7ecc29 100644
--- a/src/bin/Makefile.am
+++ b/src/bin/Makefile.am
@@ -20,17 +20,38 @@ endif
 
 ephoto_SOURCES = \
        ephoto.c \
-       ephoto_main.c \
+        ephoto_bcg.c \
+       ephoto_color.c \
        ephoto_config.c \
-        ephoto_thumb_browser.c \
-        ephoto_single_browser.c \
-        ephoto_slideshow.c \
         ephoto_cropper.c \
-        ephoto_bcg.c \
-        ephoto_hsv.c \
+        ephoto_editor.c \
         ephoto_filters.c \
-        ephoto_color.c \
-        ephoto_editor.c
+        ephoto_hsv.c \
+        ephoto_ipc.c \
+        ephoto_main.c \
+        ephoto_thumb.c \
+        ephoto_thumb_browser.c \
+        ephoto_single_browser.c \
+        ephoto_slideshow.c
+
+internal_bindir = $(datadir)/$(PACKAGE)
+internal_bin_PROGRAMS = ephoto_thumbnail
+
+ephoto_thumbnail_CPPFLAGS = \
+       -I$(top_srcdir) \
+        -I$(top_srcdir)/src/bin \
+        -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
+        -Wall \
+        -Wextra \
+        -Wshadow \
+        @EFL_CFLAGS@
+
+ephoto_thumbnail_LDADD = @EFL_LIBS@
+
+ephoto_thumbnail_SOURCES = \
+       ephoto_thumbnailer.c \
+        ephoto_ipc.c \
+        ephoto_thumb.c
 
 noinst_HEADERS = ephoto.h
 EXTRA_DIST = ephoto.h
diff --git a/src/bin/ephoto.c b/src/bin/ephoto.c
index 6d21161..642a41f 100644
--- a/src/bin/ephoto.c
+++ b/src/bin/ephoto.c
@@ -9,7 +9,6 @@ elm_main(int argc, char **argv)
 
    eio_init();
    elm_need_efreet();
-   elm_need_ethumb();
    elm_language_set("");
    elm_app_compile_data_dir_set(PACKAGE_DATA_DIR);
    elm_app_info_set(elm_main, "ephoto", "themes/crop.edj");
@@ -21,7 +20,11 @@ elm_main(int argc, char **argv)
 #endif
 
    if (!efreet_mime_init())
-      printf("Could not initialize Efreet_Mime!\n");
+     printf("Could not initialize Efreet_Mime!\n");
+   if (!e_ipc_init())
+     printf("Could not initialize IPC!\n");
+   if (!e_thumb_init())
+     printf("Could not initialize Thumbnailer!\n");
 
    elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
 
@@ -71,6 +74,7 @@ elm_main(int argc, char **argv)
    elm_run();
 
   end:
+   e_thumb_shutdown();
    efreet_mime_shutdown();
    eio_shutdown();
 
diff --git a/src/bin/ephoto.h b/src/bin/ephoto.h
index a9bdf00..f7ad4ae 100644
--- a/src/bin/ephoto.h
+++ b/src/bin/ephoto.h
@@ -5,9 +5,17 @@
 #  include "config.h"
 # endif
 
+# include <stdio.h>
+# include <stdlib.h>
+# include <string.h>
+# include <dirent.h>
+# include <unistd.h>
+# include <limits.h>
+# include <math.h>
 # include <Eet.h>
 # include <Ecore.h>
 # include <Ecore_Evas.h>
+# include <Ecore_Ipc.h>
 # include <Ecore_File.h>
 # include <Efreet_Mime.h>
 # include <Elementary.h>
@@ -16,13 +24,6 @@
 # include <Edje.h>
 # include <Evas.h>
 # include <Eio.h>
-# include <Ethumb_Client.h>
-# include <limits.h>
-# include <math.h>
-# include <stdio.h>
-# include <stdlib.h>
-# include <string.h>
-# include <dirent.h>
 
 # ifdef HAVE_PO
 #  include <locale.h>
@@ -36,6 +37,9 @@
 # define ngettext(String1, String2, Var) Var == 1 ? String1 : String2
 #endif
 
+# define USE_IPC
+
+/*local types*/
 typedef struct _Ephoto_Config Ephoto_Config;
 typedef struct _Ephoto Ephoto;
 typedef struct _Ephoto_Entry Ephoto_Entry;
@@ -44,7 +48,9 @@ typedef struct _Ephoto_Event_Entry_Create 
Ephoto_Event_Entry_Create;
 typedef enum _Ephoto_State Ephoto_State;
 typedef enum _Ephoto_Orient Ephoto_Orient;
 typedef enum _Ephoto_Sort Ephoto_Sort;
+typedef enum _Ephoto_Ipc_Domain Ephoto_Ipc_Domain;
 
+/*main window functions*/
 Evas_Object *ephoto_window_add(const char *path);
 void ephoto_title_set(Ephoto *ephoto, const char *title);
 void ephoto_thumb_size_set(Ephoto *ephoto, int size);
@@ -54,11 +60,13 @@ void ephoto_thumb_path_set(Evas_Object *obj, const char 
*path);
 void ephoto_directory_set(Ephoto *ephoto, const char *path,
     Elm_Object_Item *expanded, Eina_Bool dirs_only, Eina_Bool thumbs_only);
 
+/*config panel functions*/
 Eina_Bool ephoto_config_init(Ephoto *em);
 void ephoto_config_save(Ephoto *em);
 void ephoto_config_free(Ephoto *em);
 void ephoto_config_main(Ephoto *em);
 
+/*single image functions*/
 Evas_Object *ephoto_single_browser_add(Ephoto *ephoto, Evas_Object *parent);
 void ephoto_single_browser_entries_set(Evas_Object *obj, Eina_List *entries);
 void ephoto_single_browser_entry_set(Evas_Object *obj, Ephoto_Entry *entry);
@@ -72,22 +80,40 @@ void ephoto_single_browser_cancel_editing(Evas_Object *main,
     Evas_Object *image);
 /* smart callbacks called: "back" - the user wants to go back to the previous
  * screen. */
+
+/*slideshow functions*/
 Evas_Object *ephoto_slideshow_add(Ephoto *ephoto, Evas_Object *parent);
 void ephoto_slideshow_entries_set(Evas_Object *obj, Eina_List *entries);
 void ephoto_slideshow_entry_set(Evas_Object *obj, Ephoto_Entry *entry);
-
 /* smart callbacks called: "back" - the user wants to go back to the previous
  * screen. */
+
+/*thumbnail browser functions*/
 Evas_Object *ephoto_thumb_browser_add(Ephoto *ephoto, Evas_Object *parent);
 void ephoto_thumb_browser_fsel_clear(Ephoto *ephoto);
 void ephoto_thumb_browser_top_dir_set(Ephoto *ephoto, const char *dir);
 void ephoto_thumb_browser_insert(Ephoto *ephoto, Ephoto_Entry *entry);
 void ephoto_thumb_browser_remove(Ephoto *ephoto, Ephoto_Entry *entry);
 void ephoto_thumb_browser_update(Ephoto *ephoto, Ephoto_Entry *entry);
-
 /* smart callbacks called: "selected" - an item in the thumb browser is
  * selected. The selected Ephoto_Entry is passed as event_info argument. */
 
+/*thumbnailing functions taken from enlightenment*/
+int e_thumb_init(void);
+int e_thumb_shutdown(void);
+Evas_Object *e_thumb_icon_add(Evas *evas);
+void e_thumb_icon_file_set(Evas_Object *obj, const char *file, const char 
*key);
+void e_thumb_icon_size_set(Evas_Object *obj, int w, int h);
+void e_thumb_icon_begin(Evas_Object *obj);
+void e_thumb_icon_end(Evas_Object *obj);
+void e_thumb_icon_rethumb(Evas_Object *obj);
+const char *e_thumb_sort_id_get(Evas_Object *obj);
+void e_thumb_client_data(Ecore_Ipc_Event_Client_Data *e);
+void e_thumb_client_del(Ecore_Ipc_Event_Client_Del *e);
+int e_ipc_init(void);
+int e_ipc_shutdown(void);
+
+/*editing functions*/
 Evas_Object *ephoto_editor_add(Evas_Object *parent, const char *title,
     const char *data_name, void *data);
 void ephoto_editor_del(Evas_Object *obj);
@@ -105,6 +131,8 @@ void ephoto_filter_black_and_white(Evas_Object *main, 
Evas_Object *image);
 void ephoto_filter_old_photo(Evas_Object *main, Evas_Object *image);
 void ephoto_filter_histogram_eq(Evas_Object *main, Evas_Object *image);
 
+/*data types and structures*/
+
 enum _Ephoto_State
 {
    EPHOTO_STATE_THUMB,
@@ -132,6 +160,11 @@ enum _Ephoto_Sort
    EPHOTO_SORT_MODTIME_DESCENDING
 };
 
+enum _Ephoto_Ipc_Domain
+{
+   EPHOTO_IPC_DOMAIN_THUMB
+};
+
 struct _Ephoto_Config
 {
    int config_version;
@@ -219,6 +252,7 @@ struct _Ephoto_Event_Entry_Create
    Ephoto_Entry *entry;
 };
 
+/*ephoto file functions*/
 Ephoto_Entry *ephoto_entry_new(Ephoto *ephoto, const char *path,
     const char *label, Eina_File_Type type);
 Eina_Bool ephoto_entry_exists(Ephoto *ephoto, const char *path);
@@ -230,6 +264,7 @@ void ephoto_entry_free_listener_del(Ephoto_Entry *entry,
 void ephoto_entries_free(Ephoto *ephoto);
 int ephoto_entries_cmp(const void *pa, const void *pb);
 
+/*check if image can be loaded*/
 static inline Eina_Bool
 _ephoto_eina_file_direct_info_image_useful(const Eina_File_Direct_Info *info)
 {
@@ -264,6 +299,7 @@ _ephoto_eina_file_direct_info_image_useful(const 
Eina_File_Direct_Info *info)
    return EINA_FALSE;
 }
 
+/*check if image can be saved*/
 static inline Eina_Bool
 _ephoto_file_image_can_save(const char *ext)
 {
@@ -283,6 +319,7 @@ _ephoto_file_image_can_save(const char *ext)
    return EINA_FALSE;
 }
 
+/*event types*/
 extern int EPHOTO_EVENT_ENTRY_CREATE;
 extern int EPHOTO_EVENT_POPULATE_START;
 extern int EPHOTO_EVENT_POPULATE_END;
diff --git a/src/bin/ephoto_main.c b/src/bin/ephoto_main.c
index dcd8e8e..9ca0269 100644
--- a/src/bin/ephoto_main.c
+++ b/src/bin/ephoto_main.c
@@ -630,25 +630,9 @@ _thumb_gen_size_changed_timer_cb(void *data)
 
    EINA_LIST_FOREACH(ephoto->thumbs, l, o)
      {
-        Ethumb_Thumb_Format format;
-
-        format = (Ethumb_Thumb_Format) (uintptr_t) 
-            evas_object_data_get(o, "ephoto_format");
-        if (format)
-         {
-            elm_thumb_format_set(o, format);
-            if (format == ETHUMB_THUMB_FDO)
-              {
-                 if (ephoto->config->thumb_gen_size < 256)
-                   elm_thumb_fdo_size_set(o, ETHUMB_THUMB_NORMAL);
-                 else
-                   elm_thumb_fdo_size_set(o, ETHUMB_THUMB_LARGE);
-              }
-             else
-              elm_thumb_size_set(o, ephoto->thumb_gen_size,
+        e_thumb_icon_size_set(o, ephoto->thumb_gen_size,
                   ephoto->thumb_gen_size);
-            elm_thumb_reload(o);
-         }
+       e_thumb_icon_rethumb(o);
      }
   end:
    ephoto->timer.thumb_regen = NULL;
@@ -682,6 +666,7 @@ _thumb_del(void *data, Evas *e EINA_UNUSED, Evas_Object 
*obj,
 {
    Ephoto *ephoto = data;
 
+   e_thumb_icon_end(obj);
    ephoto->thumbs = eina_list_remove(ephoto->thumbs, obj);
 }
 
@@ -698,16 +683,29 @@ ephoto_thumb_add(Ephoto *ephoto, Evas_Object *parent, 
const char *path)
          {
             ext++;
             if ((strcasecmp(ext, "edj") == 0))
-               o = elm_icon_add(parent);
+               {
+                 o = elm_icon_add(parent);
+               }
             else
-               o = elm_thumb_add(parent);
+               {
+                 o = e_thumb_icon_add(parent); 
+                  e_thumb_icon_file_set(o, path, NULL);
+                  e_thumb_icon_size_set(o, ephoto->thumb_gen_size,
+                     ephoto->thumb_gen_size);
+                  e_thumb_icon_begin(o);
+               }
          }
         else
-          o = elm_thumb_add(parent);
-       ephoto_thumb_path_set(o, path);
+          {
+            o = e_thumb_icon_add(parent);
+            e_thumb_icon_file_set(o, path, NULL);
+             e_thumb_icon_size_set(o, ephoto->thumb_gen_size,
+                 ephoto->thumb_gen_size);
+             e_thumb_icon_begin(o);
+          }
      }
    else
-      o = elm_thumb_add(parent);
+      o = e_thumb_icon_add(parent);
    if (!o)
       return NULL;
 
@@ -720,16 +718,13 @@ ephoto_thumb_add(Ephoto *ephoto, Evas_Object *parent, 
const char *path)
 void
 ephoto_thumb_path_set(Evas_Object *obj, const char *path)
 {
-   Ethumb_Thumb_Format format = ETHUMB_THUMB_FDO;
    const char *group = NULL;
    const char *ext = strrchr(path, '.');
 
    if (ext)
      {
        ext++;
-       if ((strcasecmp(ext, "jpg") == 0) || (strcasecmp(ext, "jpeg") == 0))
-          format = ETHUMB_THUMB_JPEG;
-       else if ((strcasecmp(ext, "edj") == 0))
+        if ((strcasecmp(ext, "edj") == 0))
          {
             if (edje_file_group_exists(path, "e/desktop/background"))
                group = "e/desktop/background";
@@ -741,16 +736,11 @@ ephoto_thumb_path_set(Evas_Object *obj, const char *path)
                  edje_file_collection_list_free(g);
               }
             elm_image_file_set(obj, path, group);
-            evas_object_data_set(obj, "ephoto_format", NULL);
             return;
          }
      }
-   elm_thumb_format_set(obj, format);
-   evas_object_data_set(obj, "ephoto_format", (void *) (uintptr_t) format);
-   elm_thumb_crop_align_set(obj, 0.5, 0.5);
-   elm_thumb_aspect_set(obj, ETHUMB_THUMB_CROP);
-   elm_thumb_orientation_set(obj, ETHUMB_THUMB_ORIENT_ORIGINAL);
-   elm_thumb_file_set(obj, path, group);
+   e_thumb_icon_file_set(obj, path, group);
+   e_thumb_icon_begin(obj);
 }
 
 Ephoto_Entry *
diff --git a/src/bin/ephoto_thumb_browser.c b/src/bin/ephoto_thumb_browser.c
index e35e4fb..ab4e6cb 100644
--- a/src/bin/ephoto_thumb_browser.c
+++ b/src/bin/ephoto_thumb_browser.c
@@ -312,7 +312,10 @@ _ephoto_thumb_file_icon_get(void *data, Evas_Object *obj,
      return NULL;
 
    if (e)
-     thumb = ephoto_thumb_add(e->ephoto, obj, e->path);
+     {
+        thumb = ephoto_thumb_add(e->ephoto, obj, e->path);
+        evas_object_show(thumb);
+     }
    return thumb;
 }
 

-- 


Reply via email to