annotate src/image-load.h @ 1617:d4d12f872398

preserve image center over short periods when the "broken image" icon is displayed http://sourceforge.net/tracker/?func=detail&aid=2793057&group_id=222125&atid=1054680
author nadvornik
date Sat, 30 May 2009 20:18:22 +0000
parents 597ed9e9979c
children 956aab097ea7
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: */