diff src/image-load.h @ 1012:fe82830ab8fd

converted image loader to a GObject and use signals for notification
author nadvornik
date Fri, 29 Aug 2008 20:53:53 +0000
parents 616b14da08c2
children 4d3c98219246
line wrap: on
line diff
--- a/src/image-load.h	Fri Aug 29 12:35:13 2008 +0000
+++ b/src/image-load.h	Fri Aug 29 20:53:53 2008 +0000
@@ -14,23 +14,58 @@
 #ifndef IMAGE_LOAD_H
 #define IMAGE_LOAD_H
 
+#define TYPE_IMAGE_LOADER		(image_loader_get_type())
+
+//typedef struct _ImageLoader ImageLoader;
+typedef struct _ImageLoaderClass ImageLoaderClass;
+
+struct _ImageLoader
+{
+	GObject parent;
+	
+	/*< private >*/
+	GdkPixbuf *pixbuf;
+	FileData *fd;
+	gchar *path;
+
+	gint bytes_read;
+	gint bytes_total;
+
+	gint preview;
+
+	gint requested_width;
+	gint requested_height;
+	gint shrunk;
+
+	gint done;
+	gint idle_id;
+	gint idle_priority;
+
+	GdkPixbufLoader *loader;
+
+	gint idle_done_id;
+
+	guchar *mapped_file;
+	gint read_buffer_size;
+	gint idle_read_loop_count;
+};
+
+struct _ImageLoaderClass {
+	GObjectClass parent;
+	
+	/* class members */
+	void (*area_ready)(ImageLoader *, guint x, guint y, guint w, guint h, gpointer);
+	void (*error)(ImageLoader *, gpointer);
+	void (*done)(ImageLoader *, gpointer);
+	void (*percent)(ImageLoader *, gdouble, gpointer);
+};
+
+GType image_loader_get_type(void);
 
 ImageLoader *image_loader_new(FileData *fd);
 
 void image_loader_free(ImageLoader *il);
 
-void image_loader_set_area_ready_func(ImageLoader *il,
-				      void (*func_area_ready)(ImageLoader *, guint, guint, guint, guint, gpointer),
-				      gpointer data_area_ready);
-void image_loader_set_error_func(ImageLoader *il,
-				 void (*func_error)(ImageLoader *, gpointer),
-				 gpointer data_error);
-void image_loader_set_done_func(ImageLoader *il,
-				void (*func_done)(ImageLoader *, gpointer),
-				gpointer data_done);
-void image_loader_set_percent_func(ImageLoader *il,
-				   void (*func_percent)(ImageLoader *, gdouble, gpointer),
-				   gpointer data_percent);
 
 /* Speed up loading when you only need at most width x height size image,
  * only the jpeg GdkPixbuf loader benefits from it - so there is no
@@ -45,7 +80,7 @@
  */
 void image_loader_set_priority(ImageLoader *il, gint priority);
 
-gint image_loader_start(ImageLoader *il, void (*func_done)(ImageLoader *, gpointer), gpointer data_done);
+gint image_loader_start(ImageLoader *il);
 
 
 GdkPixbuf *image_loader_get_pixbuf(ImageLoader *il);