[gthumb] removed the use of libopenraw, check whether libraw is available



commit 08f3c615830a01422beb9402b396965f6100308d
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Mon Jun 24 10:05:09 2013 +0200

    removed the use of libopenraw, check whether libraw is available

 configure.ac                     |   38 ++++----
 extensions/raw_files/Makefile.am |    4 +-
 extensions/raw_files/main.c      |  203 ++++---------------------------------
 gthumb/Makefile.am               |    4 +-
 gthumb/glib-utils.c              |    6 +-
 5 files changed, 50 insertions(+), 205 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index efe2f93..12b7f74 100644
--- a/configure.ac
+++ b/configure.ac
@@ -63,7 +63,7 @@ EXIV2_REQUIRED=0.21
 CLUTTER_REQUIRED=1.0.0
 CLUTTER_GTK_REQUIRED=1.0.0
 GSTREAMER_REQUIRED=1.0.0
-OPENRAW_REQUIRED=0.0.8
+LIBRAW_REQUIRED=0.14
 LIBSOUP_REQUIRED=2.36
 LIBSECRET_REQUIRED=0.11
 LIBBRASERO_REQUIRED=3.2.0
@@ -439,26 +439,26 @@ AC_DEFINE(WEBP_IS_UNKNOWN_TO_GLIB, 1, [Define to 1 if webp images area not recog
 
 dnl ===========================================================================
 
-AC_MSG_CHECKING(liboperaw)
-AC_ARG_ENABLE([libopenraw],
-             [AS_HELP_STRING([--enable-libopenraw],[use the libopenraw library to read raw files 
[default=no]])],,
-             [enable_libopenraw=no])
-
-if test x$enable_libopenraw = xyes ; then
-       PKG_CHECK_MODULES(LIBOPENRAW,
-                         libopenraw-1.0 >= $OPENRAW_REQUIRED,
-                         [enable_libopenraw=yes],
-                         [enable_libopenraw=no])
-       if test "x$enable_libopenraw" = "xyes"; then
-               AC_DEFINE(ENABLE_LIBOPENRAW, 1, [Define to 1 if libopenraw must be used to read raw files 
instead of dcraw])
+AC_MSG_CHECKING(libraw)
+AC_ARG_ENABLE([libraw],
+             [AS_HELP_STRING([--disable-libraw],[do not use libraw to read raw files (will use dcraw 
directly)])],,
+             [enable_libraw=yes])
+
+if test x$enable_libraw = xyes ; then
+       PKG_CHECK_MODULES(LIBRAW,
+                         libraw >= $LIBRAW_REQUIRED,
+                         [enable_libraw=yes],
+                         [enable_libraw=no])
+       if test "x$enable_libraw" = "xyes"; then
+               AC_DEFINE(HAVE_LIBRAW, 1, [Define to 1 if libraw is used to read raw files instead of dcraw])
        fi
 fi
-if test x$enable_libopenraw = xno ; then
-       enable_libopenraw='no (uses dcraw)'
+if test x$enable_libraw = xno ; then
+       enable_libraw='no (uses dcraw)'
 fi
-AC_SUBST(LIBOPENRAW_LIBS)
-AC_SUBST(LIBOPENRAW_CFLAGS)
-AC_MSG_RESULT($enable_libopenraw)
+AC_SUBST(LIBRAW_LIBS)
+AC_SUBST(LIBRAW_CFLAGS)
+AM_CONDITIONAL(ENABLE_LIBRAW, test "x$enable_libraw" = xyes)
 
 dnl ===========================================================================
 
@@ -792,7 +792,7 @@ Configuration:
        TIFF tools           : ${enable_tiff}
        Clutter support      : ${enable_clutter}
        GStreamer support    : ${enable_gstreamer}
-       Use libopenraw       : ${enable_libopenraw}
+       Use libraw           : ${enable_libraw}
        Web services support : ${enable_web_services}
        Use libsecret        : ${enable_libsecret}
        Burn disc support    : ${enable_libbrasero}
diff --git a/extensions/raw_files/Makefile.am b/extensions/raw_files/Makefile.am
index 8bcba5f..3f941b5 100644
--- a/extensions/raw_files/Makefile.am
+++ b/extensions/raw_files/Makefile.am
@@ -4,9 +4,9 @@ extension_LTLIBRARIES = libraw_files.la
 libraw_files_la_SOURCES = \
        main.c
 
-libraw_files_la_CFLAGS = $(GTHUMB_CFLAGS) $(LIBOPENRAW_CFLAGS) -I$(top_srcdir) -I$(top_builddir)/gthumb 
+libraw_files_la_CFLAGS = $(GTHUMB_CFLAGS) $(LIBRAW_CFLAGS) -I$(top_srcdir) -I$(top_builddir)/gthumb 
 libraw_files_la_LDFLAGS = $(EXTENSION_LIBTOOL_FLAGS)
-libraw_files_la_LIBADD = $(GTHUMB_LIBS) $(LIBOPENRAW_LIBS)
+libraw_files_la_LIBADD = $(GTHUMB_LIBS) $(LIBRAW_LIBS)
 libraw_files_la_DEPENDENCIES = $(top_builddir)/gthumb/gthumb$(EXEEXT)
 
 extensioninidir = $(extensiondir)
diff --git a/extensions/raw_files/main.c b/extensions/raw_files/main.c
index aad7036..b190218 100644
--- a/extensions/raw_files/main.c
+++ b/extensions/raw_files/main.c
@@ -23,187 +23,28 @@
 #include <config.h>
 
 
-#ifdef ENABLE_LIBOPENRAW
+#ifdef ENABLE_LIBRAW
 
 
-#define GDK_PIXBUF_ENABLE_BACKEND
 #include <gtk/gtk.h>
 #include <gthumb.h>
-#include <libopenraw/libopenraw.h>
-
-
-static void
-free_pixels (guchar   *pixels,
-            gpointer  data)
-{
-       free (pixels);
-}
-
-
-static GdkPixbuf *
-_or_thumbnail_to_pixbuf (ORThumbnailRef thumbnail,
-                        int32_t        orientation)
-{
-       GdkPixbuf    *pixbuf = NULL;
-       const guchar *buf;
-       size_t        buf_size;
-       or_data_type  format;
-
-       buf = (const guchar *) or_thumbnail_data (thumbnail);
-       buf_size = or_thumbnail_data_size (thumbnail);
-       format = or_thumbnail_format (thumbnail);
-       switch (format) {
-       case OR_DATA_TYPE_PIXMAP_8RGB: {
-               guchar   *data;
-               uint32_t  x, y;
-
-               data = (guchar*) malloc (buf_size);
-               memcpy (data, buf, buf_size);
-               or_thumbnail_dimensions (thumbnail, &x, &y);
-               pixbuf = gdk_pixbuf_new_from_data (data,
-                                                  GDK_COLORSPACE_RGB,
-                                                  FALSE,
-                                                  8,
-                                                  x,
-                                                  y,
-                                                  x * 3,
-                                                  free_pixels,
-                                                  NULL);
-               break;
-       }
-       case OR_DATA_TYPE_JPEG:
-       case OR_DATA_TYPE_TIFF:
-       case OR_DATA_TYPE_PNG: {
-               GdkPixbufLoader *loader;
-
-               loader = gdk_pixbuf_loader_new ();
-               gdk_pixbuf_loader_write (loader, buf, buf_size, NULL);
-               gdk_pixbuf_loader_close (loader, NULL);
-               pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);
-               break;
-       }
-       default:
-               break;
-       }
-
-       return pixbuf;
-}
-
-
-static GdkPixbuf *
-openraw_extract_thumbnail_from_file (GthFileData  *file_data,
-                                    int           requested_size,
-                                    GError      **error)
-{
-       GdkPixbuf    *pixbuf = NULL;
-       char         *filename;
-       ORRawFileRef  raw_file = NULL;
-
-       filename = g_file_get_path (file_data->file);
-       if (filename == NULL)
-               return NULL;
-
-       raw_file = or_rawfile_new (filename, OR_DATA_TYPE_NONE);
-       if (raw_file != NULL) {
-               int32_t        orientation;
-               ORThumbnailRef thumbnail;
-               or_error       err;
-
-               orientation = or_rawfile_get_orientation (raw_file);
-               thumbnail = or_thumbnail_new ();
-               err = or_rawfile_get_thumbnail (raw_file, requested_size, thumbnail);
-               if (err == OR_ERROR_NONE) {
-                       GdkPixbuf *tmp;
-
-                       tmp = _or_thumbnail_to_pixbuf (thumbnail, orientation);
-                       pixbuf = _gdk_pixbuf_transform (tmp, orientation);
-                       g_object_unref (tmp);
-               }
-
-               or_thumbnail_release (thumbnail);
-               or_rawfile_release (raw_file);
-       }
-
-       g_free (filename);
-
-       return pixbuf;
-}
-
-
-static void
-free_bitmapdata (guchar   *pixels,
-                gpointer  data)
-{
-       or_bitmapdata_release ((ORBitmapDataRef) data);
-}
-
-
-static GdkPixbuf *
-openraw_get_pixbuf_from_file (GthFileData  *file_data,
-                             GError      **error)
-{
-       GdkPixbuf    *pixbuf = NULL;
-       char         *filename;
-       ORRawFileRef  raw_file = NULL;
-
-       filename = g_file_get_path (file_data->file);
-       if (filename == NULL)
-               return NULL;
-
-       raw_file = or_rawfile_new (filename, OR_DATA_TYPE_NONE);
-       if (raw_file != NULL) {
-               ORBitmapDataRef bitmapdata;
-               or_error        err;
-
-               bitmapdata = or_bitmapdata_new ();
-               err = or_rawfile_get_rendered_image (raw_file, bitmapdata, 0);
-               if (err == OR_ERROR_NONE) {
-                       uint32_t x, y;
-
-                       or_bitmapdata_dimensions (bitmapdata, &x, &y);
-                       pixbuf = gdk_pixbuf_new_from_data (or_bitmapdata_data (bitmapdata),
-                                                          GDK_COLORSPACE_RGB,
-                                                          FALSE,
-                                                          8,
-                                                          x,
-                                                          y,
-                                                          (x - 2) * 3,
-                                                          free_bitmapdata,
-                                                          bitmapdata);
-               }
-
-               or_rawfile_release (raw_file);
-       }
-
-       g_free (filename);
-
-       return pixbuf;
-}
 
 
 static GthImage *
-openraw_pixbuf_animation_new_from_file (GthFileData  *file_data,
-                                       int           requested_size,
-                                       GError      **error)
+openraw_pixbuf_animation_new_from_file (GInputStream  *istream,
+                                       GthFileData   *file_data,
+                                       int            requested_size,
+                                       int           *original_width,
+                                       int           *original_height,
+                                       gpointer       user_data,
+                                       GCancellable  *cancellable,
+                                       GError       **error)
 {
-       GthImage  *image = NULL;
-       GdkPixbuf *pixbuf;
-
-       if (requested_size == 0)
-               pixbuf = openraw_extract_thumbnail_from_file (file_data, requested_size, error);
-       else
-               pixbuf = openraw_get_pixbuf_from_file (file_data, error);
-
-       if (pixbuf != NULL) {
-               image = gth_image_new_for_pixbuf (pixbuf);
-               g_object_unref (pixbuf);
-       }
-
-       return image;
+       return NULL;
 }
 
 
-#else /* ! ENABLE_LIBOPENRAW */
+#else /* ! ENABLE_LIBRAW */
 
 
 #define GDK_PIXBUF_ENABLE_BACKEND
@@ -278,17 +119,17 @@ openraw_pixbuf_animation_new_from_file (GInputStream  *istream,
                                        GCancellable  *cancellable,
                                        GError       **error)
 {
-       GthImage  *image = NULL;
-       GdkPixbuf *pixbuf;
-       gboolean   is_thumbnail;
-       gboolean   is_raw;
-       gboolean   is_hdr;
-       char      *local_file;
-       char      *local_file_md5;
-       char      *cache_file;
-       char      *cache_file_esc;
-       char      *local_file_esc;
-       char      *command = NULL;
+       GthImage    *image = NULL;
+       GdkPixbuf   *pixbuf;
+       gboolean     is_thumbnail;
+       gboolean     is_raw;
+       gboolean     is_hdr;
+       char        *local_file;
+       char         *local_file_md5;
+       char         *cache_file;
+       char         *cache_file_esc;
+       char         *local_file_esc;
+       char         *command = NULL;
 
        if (file_data == NULL) {
                if (error != NULL)
diff --git a/gthumb/Makefile.am b/gthumb/Makefile.am
index 42ed910..fe114da 100644
--- a/gthumb/Makefile.am
+++ b/gthumb/Makefile.am
@@ -286,7 +286,7 @@ gthumb_LDADD =                                              \
        $(LIBSECRET_LIBS)                               \
        $(GSTREAMER_LIBS)                               \
        $(LIBBRASERO_LIBS)                              \
-       $(LIBOPENRAW_LIBS)                              \
+       $(LIBRAW_LIBS)                                  \
        $(LIBSOUP_LIBS)                                 \
        $(LIBCHAMPLAIN_LIBS)                            \
        $(LIBRSVG_LIBS)                                 \
@@ -319,7 +319,7 @@ gthumb_CFLAGS =                                                     \
        $(LIBSECRET_CFLAGS)                                     \
        $(GSTREAMER_CFLAGS)                                     \
        $(LIBBRASERO_CFLAGS)                                    \
-       $(LIBOPENRAW_CFLAGS)                                    \
+       $(LIBRAW_CFLAGS)                                        \
        $(LIBSOUP_CFLAGS)                                       \
        $(LIBCHAMPLAIN_CFLAGS)                                  \
        $(SMCLIENT_CFLAGS)                                      \
diff --git a/gthumb/glib-utils.c b/gthumb/glib-utils.c
index 9370915..e51c99d 100644
--- a/gthumb/glib-utils.c
+++ b/gthumb/glib-utils.c
@@ -2917,7 +2917,11 @@ _g_content_type_get_from_stream (GInputStream  *istream,
        if (result_uncertain)
                content_type = NULL;
 
-       if (((content_type == NULL) || (strcmp (content_type, "application/xml") == 0)) && (file != NULL)) {
+       if (((content_type == NULL)
+            || (strcmp (content_type, "application/xml") == 0)
+            || (strcmp (content_type, "image/tiff") == 0))
+           && (file != NULL))
+       {
                char *filename;
 
                filename = g_file_get_basename (file);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]