[gthumb] removed the use of libopenraw, check whether libraw is available
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] removed the use of libopenraw, check whether libraw is available
- Date: Sun, 30 Jun 2013 08:39:33 +0000 (UTC)
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]