annotate src/image-load.h @ 1667:ece97f3f2305

fixes for a built without Exiv2 don't try to access XMP metadata if not compiled with Exiv2 some metadata options are valid without Exiv2, do not disable them
author nadvornik
date Tue, 30 Jun 2009 20:12:28 +0000
parents 597ed9e9979c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1 /*
196
f6e307c7bad6 rename GQview -> Geeqie over the code
nadvornik
parents: 138
diff changeset
2 * Geeqie
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3 * (C) 2004 John Ellis
1284
8b89e3ff286b Add year 2009 to copyright info everywhere.
zas_
parents: 1185
diff changeset
4 * Copyright (C) 2008 - 2009 The Geeqie Team
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
5 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
6 * Author: John Ellis
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
7 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
8 * This software is released under the GNU General Public License (GNU GPL).
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
9 * Please read the included file COPYING for more information.
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
10 * This software comes with no warranty of any kind, use at your own risk!
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
11 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
12
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
13
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
14 #ifndef IMAGE_LOAD_H
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
15 #define IMAGE_LOAD_H
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
16
1012
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
17 #define TYPE_IMAGE_LOADER (image_loader_get_type())
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
18
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
19 //typedef struct _ImageLoader ImageLoader;
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
20 typedef struct _ImageLoaderClass ImageLoaderClass;
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
21
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
22 struct _ImageLoader
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
23 {
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
24 GObject parent;
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
25
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
26 /*< private >*/
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
27 GdkPixbuf *pixbuf;
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
28 FileData *fd;
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
29 gchar *path;
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
30
1185
82fdf177a7c1 Fix up pointer signedness warnings.
zas_
parents: 1055
diff changeset
31 gsize bytes_read;
82fdf177a7c1 Fix up pointer signedness warnings.
zas_
parents: 1055
diff changeset
32 gsize bytes_total;
1012
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
33
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1284
diff changeset
34 gboolean preview;
1012
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
35
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
36 gint requested_width;
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
37 gint requested_height;
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1284
diff changeset
38 gboolean shrunk;
1012
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
39
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1284
diff changeset
40 gboolean done;
1523
24a12aa0cb54 Fix up event source ids type: gint -> guint.
zas_
parents: 1497
diff changeset
41 guint idle_id; /* event source id */
1012
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
42 gint idle_priority;
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
43
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
44 GdkPixbufLoader *loader;
1497
2c54f3f71634 report pixbuf loader errors
nadvornik
parents: 1433
diff changeset
45 GError *error;
1012
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
46
1523
24a12aa0cb54 Fix up event source ids type: gint -> guint.
zas_
parents: 1497
diff changeset
47 guint idle_done_id; /* event source id */
1014
4d3c98219246 prepared image loader code for threads
nadvornik
parents: 1012
diff changeset
48 GList *area_param_list;
1045
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1021
diff changeset
49 GList *area_param_delayed_list;
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1021
diff changeset
50
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1284
diff changeset
51 gboolean delay_area_ready;
1015
2cdcf67e9300 run image loader in separate thread
nadvornik
parents: 1014
diff changeset
52
2cdcf67e9300 run image loader in separate thread
nadvornik
parents: 1014
diff changeset
53 GMutex *data_mutex;
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1284
diff changeset
54 gboolean stopping;
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1284
diff changeset
55 gboolean can_destroy;
1021
988995f6b1cf use GThreadPool
nadvornik
parents: 1015
diff changeset
56 GCond *can_destroy_cond;
988995f6b1cf use GThreadPool
nadvornik
parents: 1015
diff changeset
57 gboolean thread;
1012
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
58
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
59 guchar *mapped_file;
1185
82fdf177a7c1 Fix up pointer signedness warnings.
zas_
parents: 1055
diff changeset
60 gsize read_buffer_size;
1559
597ed9e9979c Fix up few warnings (especially on 64bits platforms).
zas_
parents: 1523
diff changeset
61 guint idle_read_loop_count;
1012
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
62 };
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
63
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
64 struct _ImageLoaderClass {
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
65 GObjectClass parent;
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
66
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
67 /* class members */
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
68 void (*area_ready)(ImageLoader *, guint x, guint y, guint w, guint h, gpointer);
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
69 void (*error)(ImageLoader *, gpointer);
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
70 void (*done)(ImageLoader *, gpointer);
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
71 void (*percent)(ImageLoader *, gdouble, gpointer);
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
72 };
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
73
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1011
diff changeset
74 GType image_loader_get_type(void);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
75
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 9
diff changeset
76 ImageLoader *image_loader_new(FileData *fd);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 9
diff changeset
77
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
78 void image_loader_free(ImageLoader *il);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
79
1045
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1021
diff changeset
80 /* delay area_ready signals */
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1284
diff changeset
81 void image_loader_delay_area_ready(ImageLoader *il, gboolean enable);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
82
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
83 /* Speed up loading when you only need at most width x height size image,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
84 * only the jpeg GdkPixbuf loader benefits from it - so there is no
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
85 * guarantee that the image will scale down to the requested size..
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
86 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
87 void image_loader_set_requested_size(ImageLoader *il, gint width, gint height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
88
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
89 void image_loader_set_buffer_size(ImageLoader *il, guint size);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
90
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
91 /* this only has effect if used before image_loader_start()
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
92 * default is G_PRIORITY_DEFAULT_IDLE
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
93 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
94 void image_loader_set_priority(ImageLoader *il, gint priority);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
95
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1284
diff changeset
96 gboolean image_loader_start(ImageLoader *il);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
97
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
98
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
99 GdkPixbuf *image_loader_get_pixbuf(ImageLoader *il);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
100 gchar *image_loader_get_format(ImageLoader *il);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
101 gdouble image_loader_get_percent(ImageLoader *il);
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1284
diff changeset
102 gboolean image_loader_get_is_done(ImageLoader *il);
1011
616b14da08c2 do not access image_loader directly
nadvornik
parents: 1009
diff changeset
103 FileData *image_loader_get_fd(ImageLoader *il);
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1284
diff changeset
104 gboolean image_loader_get_shrunk(ImageLoader *il);
1497
2c54f3f71634 report pixbuf loader errors
nadvornik
parents: 1433
diff changeset
105 const gchar *image_loader_get_error(ImageLoader *il);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
106
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1284
diff changeset
107 gboolean image_load_dimensions(FileData *fd, gint *width, gint *height);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
108
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
109 #endif
1055
1646720364cf Adding a vim modeline to all files - patch by Klaus Ethgen
nadvornik
parents: 1045
diff changeset
110 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */