/*
* Geeqie
* (C) 2004 John Ellis
- * Copyright (C) 2008 - 2010 The Geeqie Team
+ * Copyright (C) 2008 - 2012 The Geeqie Team
*
* Author: John Ellis
*
#define TYPE_IMAGE_LOADER (image_loader_get_type())
+typedef void (*ImageLoaderBackendCbAreaPrepared)(gpointer loader, gpointer data);
+typedef void (*ImageLoaderBackendCbSize)(gpointer loader, gint width, gint height, gpointer data);
+typedef void (*ImageLoaderBackendCbAreaUpdated)(gpointer loader, guint x, guint y, guint w, guint h, gpointer data);
+
+typedef gpointer (*ImageLoaderBackendFuncLoaderNew)(ImageLoaderBackendCbAreaUpdated, ImageLoaderBackendCbSize, ImageLoaderBackendCbAreaPrepared, gpointer data);
+typedef void (*ImageLoaderBackendFuncSetSize)(gpointer loader, int width, int height);
+typedef gboolean (*ImageLoaderBackendFuncLoad)(gpointer loader, const guchar *buf, gsize count, GError **error); /* optional, load whole image at once */
+typedef gboolean (*ImageLoaderBackendFuncWrite)(gpointer loader, const guchar *buf, gsize count, GError **error);
+typedef GdkPixbuf* (*ImageLoaderBackendFuncGetPixbuf)(gpointer loader);
+typedef gboolean (*ImageLoaderBackendFuncClose)(gpointer loader, GError **error);
+typedef void (*ImageLoaderBackendFuncAbort)(gpointer loader);
+typedef void (*ImageLoaderBackendFuncFree)(gpointer loader);
+typedef gchar* (*ImageLoaderBackendFuncGetFormatName)(gpointer loader);
+typedef gchar** (*ImageLoaderBackendFuncGetFormatMimeTypes)(gpointer loader);
+
+typedef struct _ImageLoaderBackend ImageLoaderBackend;
+struct _ImageLoaderBackend
+{
+ ImageLoaderBackendFuncLoaderNew loader_new;
+ ImageLoaderBackendFuncSetSize set_size;
+ ImageLoaderBackendFuncLoad load;
+ ImageLoaderBackendFuncWrite write;
+ ImageLoaderBackendFuncGetPixbuf get_pixbuf;
+ ImageLoaderBackendFuncClose close;
+ ImageLoaderBackendFuncAbort abort;
+ ImageLoaderBackendFuncFree free;
+ ImageLoaderBackendFuncGetFormatName get_format_name;
+ ImageLoaderBackendFuncGetFormatMimeTypes get_format_mime_types;
+};
+
+
//typedef struct _ImageLoader ImageLoader;
typedef struct _ImageLoaderClass ImageLoaderClass;
struct _ImageLoader
{
GObject parent;
-
+
/*< private >*/
GdkPixbuf *pixbuf;
FileData *fd;
gint requested_width;
gint requested_height;
+
+ gint actual_width;
+ gint actual_height;
+
gboolean shrunk;
gboolean done;
guint idle_id; /* event source id */
gint idle_priority;
- GdkPixbufLoader *loader;
+ gpointer *loader;
GError *error;
+ ImageLoaderBackend backend;
guint idle_done_id; /* event source id */
GList *area_param_list;
GList *area_param_delayed_list;
-
+
gboolean delay_area_ready;
-
+
GMutex *data_mutex;
gboolean stopping;
gboolean can_destroy;
struct _ImageLoaderClass {
GObjectClass parent;
-
+
/* class members */
void (*area_ready)(ImageLoader *, guint x, guint y, guint w, guint h, gpointer);
void (*error)(ImageLoader *, gpointer);