annotate src/image.c @ 1701:2309e6150e8c

do not try to reload deleted image deleted image is replaced by the next one from the list, keep the old image displayed until the new one is set
author nadvornik
date Fri, 24 Jul 2009 12:56:54 +0000
parents b8235f919d6b
children 155268f3bc76
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1 /*
196
f6e307c7bad6 rename GQview -> Geeqie over the code
nadvornik
parents: 188
diff changeset
2 * Geeqie
115
53b2bfdcff69 Tue Nov 28 11:54:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 114
diff changeset
3 * (C) 2006 John Ellis
1284
8b89e3ff286b Add year 2009 to copyright info everywhere.
zas_
parents: 1269
diff changeset
4 * Copyright (C) 2008 - 2009 The Geeqie Team
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
5 *
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
6 * Author: John Ellis
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
7 *
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
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: 4
diff changeset
9 * Please read the included file COPYING for more information.
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
10 * This software comes with no warranty of any kind, use at your own risk!
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
11 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
12
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
13
281
9995c5fb202a gqview.h -> main.h
zas_
parents: 273
diff changeset
14 #include "main.h"
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
15 #include "image.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
16
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
17
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
18 #include "collect.h"
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
19 #include "color-man.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
20 #include "exif.h"
1288
10073464e6aa use metadata_read_* functions where possible
nadvornik
parents: 1284
diff changeset
21 #include "metadata.h"
480
805c3258d228 Make histogram depends on image window not layout window.
zas_
parents: 475
diff changeset
22 #include "histogram.h"
507
135570a8bd96 Move debug macros from main.h to new debug.h.
zas_
parents: 506
diff changeset
23 #include "image-load.h"
415
4f7362028062 Add zoom ratio display to OSD in fullscreen mode.
zas_
parents: 414
diff changeset
24 #include "image-overlay.h"
284
84c4618cd1cb Fix missing header files inclusions.
zas_
parents: 281
diff changeset
25 #include "layout.h"
84c4618cd1cb Fix missing header files inclusions.
zas_
parents: 281
diff changeset
26 #include "layout_image.h"
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
27 #include "pixbuf-renderer.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
28 #include "pixbuf_util.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
29 #include "ui_fileops.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
30
586
905688aa2317 split filelist.c to filefilter.c and filedata.c
nadvornik
parents: 530
diff changeset
31 #include "filedata.h"
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
32 #include "filecache.h"
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
33
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
34 #include <math.h>
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
35
26
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
36 static GList *image_list = NULL;
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
37
61
0c912a2d94f1 Mon Jun 13 20:22:58 2005 John Ellis <johne@verizon.net>
gqview
parents: 42
diff changeset
38 static void image_update_title(ImageWindow *imd);
115
53b2bfdcff69 Tue Nov 28 11:54:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 114
diff changeset
39 static void image_read_ahead_start(ImageWindow *imd);
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
40 static void image_cache_set(ImageWindow *imd, FileData *fd);
61
0c912a2d94f1 Mon Jun 13 20:22:58 2005 John Ellis <johne@verizon.net>
gqview
parents: 42
diff changeset
41
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
42 /*
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
43 *-------------------------------------------------------------------
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
44 * 'signals'
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
45 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
46 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
47
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
48 static void image_click_cb(PixbufRenderer *pr, GdkEventButton *event, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
49 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
50 ImageWindow *imd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
51
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
52 if (imd->func_button)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
53 {
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 863
diff changeset
54 imd->func_button(imd, event, imd->data_button);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
55 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
56 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
57
128
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
58 static void image_drag_cb(PixbufRenderer *pr, GdkEventButton *event, gpointer data)
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
59 {
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
60 ImageWindow *imd = data;
129
89fc00ffbce2 started relative scroll, keep scroll position
nadvornik
parents: 128
diff changeset
61 gint width, height;
128
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
62
129
89fc00ffbce2 started relative scroll, keep scroll position
nadvornik
parents: 128
diff changeset
63 pixbuf_renderer_get_scaled_size(pr, &width, &height);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
64
128
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
65 if (imd->func_drag)
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
66 {
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 863
diff changeset
67 imd->func_drag(imd, event,
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 863
diff changeset
68 (gfloat)(pr->drag_last_x - event->x) / width,
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 863
diff changeset
69 (gfloat)(pr->drag_last_y - event->y) / height,
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 863
diff changeset
70 imd->data_button);
128
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
71 }
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
72 }
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
73
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
74 static void image_scroll_notify_cb(PixbufRenderer *pr, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
75 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
76 ImageWindow *imd = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
77
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
78 if (imd->func_scroll_notify && pr->scale)
12
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
79 {
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
80 imd->func_scroll_notify(imd,
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
81 (gint)((gdouble)pr->x_scroll / pr->scale),
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
82 (gint)((gdouble)pr->y_scroll / pr->scale),
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
83 (gint)((gdouble)pr->image_width - pr->vis_width / pr->scale),
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
84 (gint)((gdouble)pr->image_height - pr->vis_height / pr->scale),
12
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
85 imd->data_scroll_notify);
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
86 }
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
87 }
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
88
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
89 static void image_update_util(ImageWindow *imd)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
90 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
91 if (imd->func_update) imd->func_update(imd, imd->data_update);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
92 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
93
25
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
94 static void image_zoom_cb(PixbufRenderer *pr, gdouble zoom, gpointer data)
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
95 {
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
96 ImageWindow *imd = data;
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
97
61
0c912a2d94f1 Mon Jun 13 20:22:58 2005 John Ellis <johne@verizon.net>
gqview
parents: 42
diff changeset
98 if (imd->title_show_zoom) image_update_title(imd);
415
4f7362028062 Add zoom ratio display to OSD in fullscreen mode.
zas_
parents: 414
diff changeset
99 if (imd->overlay_show_zoom) image_osd_update(imd);
4f7362028062 Add zoom ratio display to OSD in fullscreen mode.
zas_
parents: 414
diff changeset
100
25
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
101 image_update_util(imd);
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
102 }
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
103
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
104 static void image_complete_util(ImageWindow *imd, gboolean preload)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
105 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
106 if (imd->il && image_get_pixbuf(imd) != image_loader_get_pixbuf(imd->il)) return;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
107
506
fc9c8a3e1a8b Handle the newline in DEBUG_N() macro instead of adding one
zas_
parents: 495
diff changeset
108 DEBUG_1("%s image load completed \"%s\" (%s)", get_exec_time(),
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
109 (preload) ? (imd->read_ahead_fd ? imd->read_ahead_fd->path : "null") :
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
110 (imd->image_fd ? imd->image_fd->path : "null"),
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
111 (preload) ? "preload" : "current");
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
112
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
113 if (!preload) imd->completed = TRUE;
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
114 if (imd->func_complete) imd->func_complete(imd, preload, imd->data_complete);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
115 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
116
25
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
117 static void image_render_complete_cb(PixbufRenderer *pr, gpointer data)
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
118 {
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
119 ImageWindow *imd = data;
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
120
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
121 image_complete_util(imd, FALSE);
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
122 }
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
123
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
124 static void image_state_set(ImageWindow *imd, ImageState state)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
125 {
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
126 if (state == IMAGE_STATE_NONE)
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
127 {
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
128 imd->state = state;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
129 }
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
130 else
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
131 {
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
132 imd->state |= state;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
133 }
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
134 if (imd->func_state) imd->func_state(imd, state, imd->data_state);
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
135 }
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
136
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
137 static void image_state_unset(ImageWindow *imd, ImageState state)
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
138 {
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
139 imd->state &= ~state;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
140 if (imd->func_state) imd->func_state(imd, state, imd->data_state);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
141 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
142
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
143 /*
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
144 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
145 * misc
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
146 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
147 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
148
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
149 static void image_update_title(ImageWindow *imd)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
150 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
151 gchar *title = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
152 gchar *zoom = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
153 gchar *collection = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
154
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
155 if (!imd->top_window) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
156
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
157 if (imd->collection && collection_to_number(imd->collection) >= 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
158 {
987
9c75ab848cd4 Mark forgotten string for translation.
zas_
parents: 954
diff changeset
159 const gchar *name = imd->collection->name;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
160 if (!name) name = _("Untitled");
987
9c75ab848cd4 Mark forgotten string for translation.
zas_
parents: 954
diff changeset
161 collection = g_strdup_printf(_(" (Collection %s)"), name);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
162 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
163
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
164 if (imd->title_show_zoom)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
165 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
166 gchar *buf = image_zoom_get_as_text(imd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
167 zoom = g_strconcat(" [", buf, "]", NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
168 g_free(buf);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
169 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
170
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
171 title = g_strdup_printf("%s%s%s%s%s%s",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
172 imd->title ? imd->title : "",
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
173 imd->image_fd ? imd->image_fd->name : "",
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
174 zoom ? zoom : "",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
175 collection ? collection : "",
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
176 imd->image_fd ? " - " : "",
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
177 imd->title_right ? imd->title_right : "");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
178
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
179 gtk_window_set_title(GTK_WINDOW(imd->top_window), title);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
180
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
181 g_free(title);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
182 g_free(zoom);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
183 g_free(collection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
184 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
185
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
186 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
187 *-------------------------------------------------------------------
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
188 * rotation, flip, etc.
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
189 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
190 */
1548
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
191 static gboolean image_get_x11_screen_profile(ImageWindow *imd, guchar **screen_profile, gint *screen_profile_len)
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
192 {
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
193 GdkScreen *screen = gtk_widget_get_screen(imd->widget);;
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
194 GdkAtom type = GDK_NONE;
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
195 gint format = 0;
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
196
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
197 return (gdk_property_get(gdk_screen_get_root_window(screen),
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
198 gdk_atom_intern ("_ICC_PROFILE", FALSE),
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
199 GDK_NONE,
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
200 0, 64 * 1024 * 1024, FALSE,
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
201 &type, &format, screen_profile_len, screen_profile) && *screen_profile_len > 0);
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
202 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
203
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
204 static gboolean image_post_process_color(ImageWindow *imd, gint start_row, gboolean run_in_bg)
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
205 {
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
206 ColorMan *cm;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
207 ColorManProfileType input_type;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
208 ColorManProfileType screen_type;
1548
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
209 const gchar *input_file = NULL;
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
210 const gchar *screen_file = NULL;
1000
4fe8f9656107 For the sake of consistency, use glib basic types everywhere.
zas_
parents: 995
diff changeset
211 guchar *profile = NULL;
449
115db540bd0c read color profiles from jpeg also with Exiv2
nadvornik
parents: 446
diff changeset
212 guint profile_len;
1548
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
213 guchar *screen_profile = NULL;
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
214 gint screen_profile_len;
1363
d87deb05d59f Enable 'Use profile from image' item of color management menu only if such profile information is available from image.
zas_
parents: 1362
diff changeset
215 ExifData *exif;
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
216
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
217 if (imd->cm) return FALSE;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
218
426
9fe0ca1b5263 show the AdobeRGB profile in the menu, indicate input profile from image
nadvornik
parents: 424
diff changeset
219 if (imd->color_profile_input >= COLOR_PROFILE_FILE &&
9fe0ca1b5263 show the AdobeRGB profile in the menu, indicate input profile from image
nadvornik
parents: 424
diff changeset
220 imd->color_profile_input < COLOR_PROFILE_FILE + COLOR_PROFILE_INPUTS)
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
221 {
1356
681e79dd0820 Slightly modify access_file() and use it to test profile files existence and read access.
zas_
parents: 1346
diff changeset
222 const gchar *file = options->color_profile.input_file[imd->color_profile_input - COLOR_PROFILE_FILE];
681e79dd0820 Slightly modify access_file() and use it to test profile files existence and read access.
zas_
parents: 1346
diff changeset
223
1362
b3156b2ec4c5 Improve file checks using is_readable_file().
zas_
parents: 1359
diff changeset
224 if (!is_readable_file(file)) return FALSE;
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
225
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
226 input_type = COLOR_PROFILE_FILE;
1356
681e79dd0820 Slightly modify access_file() and use it to test profile files existence and read access.
zas_
parents: 1346
diff changeset
227 input_file = file;
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
228 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
229 else if (imd->color_profile_input >= COLOR_PROFILE_SRGB &&
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
230 imd->color_profile_input < COLOR_PROFILE_FILE)
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
231 {
426
9fe0ca1b5263 show the AdobeRGB profile in the menu, indicate input profile from image
nadvornik
parents: 424
diff changeset
232 input_type = imd->color_profile_input;
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
233 input_file = NULL;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
234 }
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
235 else
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
236 {
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
237 return FALSE;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
238 }
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
239
1548
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
240 if (options->color_profile.use_x11_screen_profile &&
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
241 image_get_x11_screen_profile(imd, &screen_profile, &screen_profile_len))
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
242 {
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
243 screen_type = COLOR_PROFILE_MEM;
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
244 DEBUG_1("Using X11 screen profile, length: %d", screen_profile_len);
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
245 }
1550
ffc44762e706 color profile fixes
nadvornik
parents: 1549
diff changeset
246 else if (options->color_profile.screen_file &&
1362
b3156b2ec4c5 Improve file checks using is_readable_file().
zas_
parents: 1359
diff changeset
247 is_readable_file(options->color_profile.screen_file))
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
248 {
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
249 screen_type = COLOR_PROFILE_FILE;
327
049d6b00cc14 Rename color profile options.
zas_
parents: 320
diff changeset
250 screen_file = options->color_profile.screen_file;
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
251 }
1548
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
252 else
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
253 {
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
254 screen_type = COLOR_PROFILE_SRGB;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
255 screen_file = NULL;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
256 }
1363
d87deb05d59f Enable 'Use profile from image' item of color management menu only if such profile information is available from image.
zas_
parents: 1362
diff changeset
257
d87deb05d59f Enable 'Use profile from image' item of color management menu only if such profile information is available from image.
zas_
parents: 1362
diff changeset
258
426
9fe0ca1b5263 show the AdobeRGB profile in the menu, indicate input profile from image
nadvornik
parents: 424
diff changeset
259 imd->color_profile_from_image = COLOR_PROFILE_NONE;
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
260
1363
d87deb05d59f Enable 'Use profile from image' item of color management menu only if such profile information is available from image.
zas_
parents: 1362
diff changeset
261 exif = exif_read_fd(imd->image_fd);
1357
4ca837d74999 image_post_process_color(): remove exif parameter, just extract it when needed.
zas_
parents: 1356
diff changeset
262
1363
d87deb05d59f Enable 'Use profile from image' item of color management menu only if such profile information is available from image.
zas_
parents: 1362
diff changeset
263 if (exif)
d87deb05d59f Enable 'Use profile from image' item of color management menu only if such profile information is available from image.
zas_
parents: 1362
diff changeset
264 {
d87deb05d59f Enable 'Use profile from image' item of color management menu only if such profile information is available from image.
zas_
parents: 1362
diff changeset
265 profile = exif_get_color_profile(exif, &profile_len);
d87deb05d59f Enable 'Use profile from image' item of color management menu only if such profile information is available from image.
zas_
parents: 1362
diff changeset
266 if (profile)
d87deb05d59f Enable 'Use profile from image' item of color management menu only if such profile information is available from image.
zas_
parents: 1362
diff changeset
267 {
d87deb05d59f Enable 'Use profile from image' item of color management menu only if such profile information is available from image.
zas_
parents: 1362
diff changeset
268 if (!imd->color_profile_use_image)
424
26c6e768bd47 first support for AdobeRGB colorspace
nadvornik
parents: 415
diff changeset
269 {
1363
d87deb05d59f Enable 'Use profile from image' item of color management menu only if such profile information is available from image.
zas_
parents: 1362
diff changeset
270 g_free(profile);
d87deb05d59f Enable 'Use profile from image' item of color management menu only if such profile information is available from image.
zas_
parents: 1362
diff changeset
271 profile = NULL;
424
26c6e768bd47 first support for AdobeRGB colorspace
nadvornik
parents: 415
diff changeset
272 }
1363
d87deb05d59f Enable 'Use profile from image' item of color management menu only if such profile information is available from image.
zas_
parents: 1362
diff changeset
273 DEBUG_1("Found embedded color profile");
d87deb05d59f Enable 'Use profile from image' item of color management menu only if such profile information is available from image.
zas_
parents: 1362
diff changeset
274 imd->color_profile_from_image = COLOR_PROFILE_MEM;
115
53b2bfdcff69 Tue Nov 28 11:54:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 114
diff changeset
275 }
1364
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
276 else
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
277 {
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
278 gchar *interop_index = exif_get_data_as_text(exif, "Exif.Iop.InteroperabilityIndex");
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
279
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
280 if (interop_index)
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
281 {
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
282 /* Exif 2.21 specification */
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
283 if (!strcmp(interop_index, "R98"))
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
284 {
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
285 imd->color_profile_from_image = COLOR_PROFILE_SRGB;
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
286 DEBUG_1("Found EXIF 2.21 ColorSpace of sRGB");
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
287 }
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
288 else if (!strcmp(interop_index, "R03"))
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
289 {
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
290 imd->color_profile_from_image = COLOR_PROFILE_ADOBERGB;
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
291 DEBUG_1("Found EXIF 2.21 ColorSpace of AdobeRGB");
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
292 }
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
293 g_free(interop_index);
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
294 }
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
295 else
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
296 {
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
297 gint cs;
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
298
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
299 /* ColorSpace == 1 specifies sRGB per EXIF 2.2 */
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
300 if (!exif_get_integer(exif, "Exif.Photo.ColorSpace", &cs)) cs = 0;
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
301 if (cs == 1)
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
302 {
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
303 imd->color_profile_from_image = COLOR_PROFILE_SRGB;
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
304 DEBUG_1("Found EXIF 2.2 ColorSpace of sRGB");
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
305 }
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
306 else if (cs == 2)
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
307 {
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
308 /* non-standard way of specifying AdobeRGB (used by some software) */
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
309 imd->color_profile_from_image = COLOR_PROFILE_ADOBERGB;
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
310 DEBUG_1("Found EXIF 2.2 ColorSpace of AdobeRGB");
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
311 }
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
312 }
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
313
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
314 if (imd->color_profile_use_image && imd->color_profile_from_image != COLOR_PROFILE_NONE)
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
315 {
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
316 input_type = imd->color_profile_from_image;
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
317 input_file = NULL;
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
318 }
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
319 }
17f80c6be6b6 Clarify colorspace determination (exif 2.2/2.21).
zas_
parents: 1363
diff changeset
320
1363
d87deb05d59f Enable 'Use profile from image' item of color management menu only if such profile information is available from image.
zas_
parents: 1362
diff changeset
321 exif_free_fd(imd->image_fd, exif);
114
50fc73e08550 Mon Nov 27 01:23:23 2006 John Ellis <johne@verizon.net>
gqview
parents: 113
diff changeset
322 }
1363
d87deb05d59f Enable 'Use profile from image' item of color management menu only if such profile information is available from image.
zas_
parents: 1362
diff changeset
323
176
695e1ad3b169 simplified exif.h, moved implementation-specific stuff to exif-int.h
nadvornik
parents: 175
diff changeset
324
449
115db540bd0c read color profiles from jpeg also with Exiv2
nadvornik
parents: 446
diff changeset
325 if (profile)
114
50fc73e08550 Mon Nov 27 01:23:23 2006 John Ellis <johne@verizon.net>
gqview
parents: 113
diff changeset
326 {
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
327 cm = color_man_new_embedded(run_in_bg ? imd : NULL, NULL,
449
115db540bd0c read color profiles from jpeg also with Exiv2
nadvornik
parents: 446
diff changeset
328 profile, profile_len,
1548
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
329 screen_type, screen_file, screen_profile, screen_profile_len);
449
115db540bd0c read color profiles from jpeg also with Exiv2
nadvornik
parents: 446
diff changeset
330 g_free(profile);
114
50fc73e08550 Mon Nov 27 01:23:23 2006 John Ellis <johne@verizon.net>
gqview
parents: 113
diff changeset
331 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
332 else
114
50fc73e08550 Mon Nov 27 01:23:23 2006 John Ellis <johne@verizon.net>
gqview
parents: 113
diff changeset
333 {
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
334 cm = color_man_new(run_in_bg ? imd : NULL, NULL,
114
50fc73e08550 Mon Nov 27 01:23:23 2006 John Ellis <johne@verizon.net>
gqview
parents: 113
diff changeset
335 input_type, input_file,
1548
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
336 screen_type, screen_file, screen_profile, screen_profile_len);
114
50fc73e08550 Mon Nov 27 01:23:23 2006 John Ellis <johne@verizon.net>
gqview
parents: 113
diff changeset
337 }
50fc73e08550 Mon Nov 27 01:23:23 2006 John Ellis <johne@verizon.net>
gqview
parents: 113
diff changeset
338
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
339 if (cm)
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
340 {
116
1bd40943dc2a Tue Nov 28 13:17:18 2006 John Ellis <johne@verizon.net>
gqview
parents: 115
diff changeset
341 if (start_row > 0)
1bd40943dc2a Tue Nov 28 13:17:18 2006 John Ellis <johne@verizon.net>
gqview
parents: 115
diff changeset
342 {
1bd40943dc2a Tue Nov 28 13:17:18 2006 John Ellis <johne@verizon.net>
gqview
parents: 115
diff changeset
343 cm->row = start_row;
1bd40943dc2a Tue Nov 28 13:17:18 2006 John Ellis <johne@verizon.net>
gqview
parents: 115
diff changeset
344 cm->incremental_sync = TRUE;
1bd40943dc2a Tue Nov 28 13:17:18 2006 John Ellis <johne@verizon.net>
gqview
parents: 115
diff changeset
345 }
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
346
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
347 imd->cm = (gpointer)cm;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
348 #if 0
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
349 if (run_in_bg) color_man_start_bg(imd->cm, image_post_process_color_cb, imd);
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
350 #endif
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
351 }
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
352
1550
ffc44762e706 color profile fixes
nadvornik
parents: 1549
diff changeset
353 image_update_util(imd);
1638
511c979c2e7c fixed leak in image_post_process_color
nadvornik
parents: 1626
diff changeset
354
511c979c2e7c fixed leak in image_post_process_color
nadvornik
parents: 1626
diff changeset
355 if (screen_profile)
511c979c2e7c fixed leak in image_post_process_color
nadvornik
parents: 1626
diff changeset
356 {
511c979c2e7c fixed leak in image_post_process_color
nadvornik
parents: 1626
diff changeset
357 g_free(screen_profile);
511c979c2e7c fixed leak in image_post_process_color
nadvornik
parents: 1626
diff changeset
358 screen_profile = NULL;
511c979c2e7c fixed leak in image_post_process_color
nadvornik
parents: 1626
diff changeset
359 }
511c979c2e7c fixed leak in image_post_process_color
nadvornik
parents: 1626
diff changeset
360
1550
ffc44762e706 color profile fixes
nadvornik
parents: 1549
diff changeset
361 return !!cm;
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
362 }
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
363
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
364
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
365 static void image_post_process_tile_color_cb(PixbufRenderer *pr, GdkPixbuf **pixbuf, gint x, gint y, gint w, gint h, gpointer data)
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
366 {
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
367 ImageWindow *imd = (ImageWindow *)data;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
368 if (imd->cm) color_man_correct_region(imd->cm, *pixbuf, x, y, w, h);
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
369 if (imd->desaturate) pixbuf_desaturate_rect(*pixbuf, x, y, w, h);
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
370
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
371 }
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
372
1566
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1550
diff changeset
373 void image_alter_orientation(ImageWindow *imd, AlterType type)
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
374 {
691
631d626c1f6b Fix some incomplete initialization warnings.
zas_
parents: 671
diff changeset
375 static const gint rotate_90[] = {1, 6, 7, 8, 5, 2, 3, 4, 1};
631d626c1f6b Fix some incomplete initialization warnings.
zas_
parents: 671
diff changeset
376 static const gint rotate_90_cc[] = {1, 8, 5, 6, 7, 4, 1, 2, 3};
631d626c1f6b Fix some incomplete initialization warnings.
zas_
parents: 671
diff changeset
377 static const gint rotate_180[] = {1, 3, 4, 1, 2, 7, 8, 5, 6};
631d626c1f6b Fix some incomplete initialization warnings.
zas_
parents: 671
diff changeset
378 static const gint mirror[] = {1, 2, 1, 4, 3, 6, 5, 8, 7};
631d626c1f6b Fix some incomplete initialization warnings.
zas_
parents: 671
diff changeset
379 static const gint flip[] = {1, 4, 3, 2, 1, 8, 7, 6, 5};
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
380
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
381
994
c879a4c14f33 Fixed segfaulting when alter image in directory without images.
bruclik
parents: 987
diff changeset
382 if (!imd || !imd->pr || !imd->image_fd) return;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
383
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
384 if (imd->orientation < 1 || imd->orientation > 8) imd->orientation = 1;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
385
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
386 switch (type)
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
387 {
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
388 case ALTER_ROTATE_90:
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
389 imd->orientation = rotate_90[imd->orientation];
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
390 break;
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
391 case ALTER_ROTATE_90_CC:
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
392 imd->orientation = rotate_90_cc[imd->orientation];
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
393 break;
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
394 case ALTER_ROTATE_180:
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
395 imd->orientation = rotate_180[imd->orientation];
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
396 break;
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
397 case ALTER_MIRROR:
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
398 imd->orientation = mirror[imd->orientation];
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
399 break;
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
400 case ALTER_FLIP:
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
401 imd->orientation = flip[imd->orientation];
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
402 break;
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
403 case ALTER_NONE:
439
1cca0b614cba Add a way to restore original state in Adjust menu.
zas_
parents: 437
diff changeset
404 imd->orientation = imd->image_fd->exif_orientation ? imd->image_fd->exif_orientation : 1;
1cca0b614cba Add a way to restore original state in Adjust menu.
zas_
parents: 437
diff changeset
405 break;
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
406 default:
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
407 return;
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
408 break;
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
409 }
434
1b0aee2b162e Keep image orientation set by the user during the session.
zas_
parents: 432
diff changeset
410
1567
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
411 if (imd->orientation != imd->image_fd->exif_orientation ? imd->image_fd->exif_orientation : 1)
434
1b0aee2b162e Keep image orientation set by the user during the session.
zas_
parents: 432
diff changeset
412 {
1567
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
413 if (!options->metadata.write_orientation)
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
414 {
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
415 /* user_orientation does not work together with options->metadata.write_orientation,
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
416 use either one or the other.
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
417 we must however handle switching metadata.write_orientation on and off, therefore
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
418 we just disable referencing new fd's, not unreferencing the old ones
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
419 */
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
420 if (imd->image_fd->user_orientation == 0) file_data_ref(imd->image_fd);
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
421 imd->image_fd->user_orientation = imd->orientation;
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
422 }
434
1b0aee2b162e Keep image orientation set by the user during the session.
zas_
parents: 432
diff changeset
423 }
1b0aee2b162e Keep image orientation set by the user during the session.
zas_
parents: 432
diff changeset
424 else
1b0aee2b162e Keep image orientation set by the user during the session.
zas_
parents: 432
diff changeset
425 {
1b0aee2b162e Keep image orientation set by the user during the session.
zas_
parents: 432
diff changeset
426 if (imd->image_fd->user_orientation != 0) file_data_unref(imd->image_fd);
1b0aee2b162e Keep image orientation set by the user during the session.
zas_
parents: 432
diff changeset
427 imd->image_fd->user_orientation = 0;
1b0aee2b162e Keep image orientation set by the user during the session.
zas_
parents: 432
diff changeset
428 }
1b0aee2b162e Keep image orientation set by the user during the session.
zas_
parents: 432
diff changeset
429
1567
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
430 if (options->metadata.write_orientation)
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
431 {
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
432 if (type == ALTER_NONE)
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
433 {
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
434 metadata_write_revert(imd->image_fd, ORIENTATION_KEY);
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
435 }
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
436 else
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
437 {
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
438 metadata_write_int(imd->image_fd, ORIENTATION_KEY, imd->orientation);
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
439 }
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
440 }
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
441
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
442 pixbuf_renderer_set_orientation((PixbufRenderer *)imd->pr, imd->orientation);
1566
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1550
diff changeset
443 }
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1550
diff changeset
444
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1550
diff changeset
445 void image_set_desaturate(ImageWindow *imd, gboolean desaturate)
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1550
diff changeset
446 {
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1550
diff changeset
447 imd->desaturate = desaturate;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
448 if (imd->cm || imd->desaturate)
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
449 pixbuf_renderer_set_post_process_func((PixbufRenderer *)imd->pr, image_post_process_tile_color_cb, (gpointer) imd, (imd->cm != NULL) );
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
450 else
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
451 pixbuf_renderer_set_post_process_func((PixbufRenderer *)imd->pr, NULL, NULL, TRUE);
1566
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1550
diff changeset
452 pixbuf_renderer_set_orientation((PixbufRenderer *)imd->pr, imd->orientation);
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
453 }
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
454
1566
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1550
diff changeset
455 gboolean image_get_desaturate(ImageWindow *imd)
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1550
diff changeset
456 {
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1550
diff changeset
457 return imd->desaturate;
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1550
diff changeset
458 }
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
459
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
460 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
461 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
462 * read ahead (prebuffer)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
463 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
464 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
465
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
466 static void image_read_ahead_cancel(ImageWindow *imd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
467 {
506
fc9c8a3e1a8b Handle the newline in DEBUG_N() macro instead of adding one
zas_
parents: 495
diff changeset
468 DEBUG_1("%s read ahead cancelled for :%s", get_exec_time(), imd->read_ahead_fd ? imd->read_ahead_fd->path : "null");
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
469
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
470 image_loader_free(imd->read_ahead_il);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
471 imd->read_ahead_il = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
472
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
473 file_data_unref(imd->read_ahead_fd);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
474 imd->read_ahead_fd = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
475 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
476
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
477 static void image_read_ahead_done_cb(ImageLoader *il, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
478 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
479 ImageWindow *imd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
480
506
fc9c8a3e1a8b Handle the newline in DEBUG_N() macro instead of adding one
zas_
parents: 495
diff changeset
481 DEBUG_1("%s read ahead done for :%s", get_exec_time(), imd->read_ahead_fd->path);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
482
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
483 if (!imd->read_ahead_fd->pixbuf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
484 {
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
485 imd->read_ahead_fd->pixbuf = image_loader_get_pixbuf(imd->read_ahead_il);
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
486 if (imd->read_ahead_fd->pixbuf)
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
487 {
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
488 g_object_ref(imd->read_ahead_fd->pixbuf);
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
489 image_cache_set(imd, imd->read_ahead_fd);
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
490 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
491 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
492 image_loader_free(imd->read_ahead_il);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
493 imd->read_ahead_il = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
494
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
495 image_complete_util(imd, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
496 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
497
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
498 static void image_read_ahead_error_cb(ImageLoader *il, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
499 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
500 /* we even treat errors as success, maybe at least some of the file was ok */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
501 image_read_ahead_done_cb(il, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
502 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
503
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
504 static void image_read_ahead_start(ImageWindow *imd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
505 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
506 /* already started ? */
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
507 if (!imd->read_ahead_fd || imd->read_ahead_il || imd->read_ahead_fd->pixbuf) return;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
508
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
509 /* still loading ?, do later */
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
510 if (imd->il /*|| imd->cm*/) return;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
511
506
fc9c8a3e1a8b Handle the newline in DEBUG_N() macro instead of adding one
zas_
parents: 495
diff changeset
512 DEBUG_1("%s read ahead started for :%s", get_exec_time(), imd->read_ahead_fd->path);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
513
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
514 imd->read_ahead_il = image_loader_new(imd->read_ahead_fd);
1045
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
515
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
516 image_loader_delay_area_ready(imd->read_ahead_il, TRUE); /* we will need the area_ready signals later */
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
517
1346
c9949c19a6d0 No space between function name and first parenthesis, it eases greping (see CODING).
zas_
parents: 1338
diff changeset
518 g_signal_connect(G_OBJECT(imd->read_ahead_il), "error", (GCallback)image_read_ahead_error_cb, imd);
c9949c19a6d0 No space between function name and first parenthesis, it eases greping (see CODING).
zas_
parents: 1338
diff changeset
519 g_signal_connect(G_OBJECT(imd->read_ahead_il), "done", (GCallback)image_read_ahead_done_cb, imd);
1012
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1000
diff changeset
520
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1000
diff changeset
521 if (!image_loader_start(imd->read_ahead_il))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
522 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
523 image_read_ahead_cancel(imd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
524 image_complete_util(imd, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
525 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
526 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
527
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
528 static void image_read_ahead_set(ImageWindow *imd, FileData *fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
529 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
530 if (imd->read_ahead_fd && fd && imd->read_ahead_fd == fd) return;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
531
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
532 image_read_ahead_cancel(imd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
533
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
534 imd->read_ahead_fd = file_data_ref(fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
535
506
fc9c8a3e1a8b Handle the newline in DEBUG_N() macro instead of adding one
zas_
parents: 495
diff changeset
536 DEBUG_1("read ahead set to :%s", imd->read_ahead_fd->path);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
537
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
538 image_read_ahead_start(imd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
539 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
540
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
541 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
542 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
543 * post buffering
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
544 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
545 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
546
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
547 static void image_cache_release_cb(FileData *fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
548 {
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
549 g_object_unref(fd->pixbuf);
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
550 fd->pixbuf = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
551 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
552
1182
6ae6d77a1f15 Fix up deprecated function and not a prototype warnings.
zas_
parents: 1055
diff changeset
553 static FileCacheData *image_get_cache(void)
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
554 {
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
555 static FileCacheData *cache = NULL;
848
e1d158ac6d36 cache size made configurable
nadvornik
parents: 847
diff changeset
556 if (!cache) cache = file_cache_new(image_cache_release_cb, 1);
e1d158ac6d36 cache size made configurable
nadvornik
parents: 847
diff changeset
557 file_cache_set_max_size(cache, (gulong)options->image.image_cache_max * 1048576); /* update from options */
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
558 return cache;
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
559 }
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
560
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
561 static void image_cache_set(ImageWindow *imd, FileData *fd)
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
562 {
847
77fc0ea3457d measure pixbuf cache size in bytes
nadvornik
parents: 846
diff changeset
563 g_assert(fd->pixbuf);
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
564
847
77fc0ea3457d measure pixbuf cache size in bytes
nadvornik
parents: 846
diff changeset
565 file_cache_put(image_get_cache(), fd, (gulong)gdk_pixbuf_get_rowstride(fd->pixbuf) * (gulong)gdk_pixbuf_get_height(fd->pixbuf));
1432
cf4029d10d38 improved notification system
nadvornik
parents: 1431
diff changeset
566 file_data_send_notification(fd, NOTIFY_PIXBUF); /* to update histogram */
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
567 }
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
568
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
569 static gint image_cache_get(ImageWindow *imd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
570 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
571 gint success;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
572
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
573 success = file_cache_get(image_get_cache(), imd->image_fd);
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
574 if (success)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
575 {
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
576 g_assert(imd->image_fd->pixbuf);
1045
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
577 image_change_pixbuf(imd, imd->image_fd->pixbuf, image_zoom_get(imd), FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
578 }
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
579
1498
5f49f305a6b6 improved debug messages
nadvornik
parents: 1482
diff changeset
580 // file_cache_dump(image_get_cache());
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
581 return success;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
582 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
583
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
584 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
585 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
586 * loading
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
587 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
588 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
589
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
590 static void image_load_pixbuf_ready(ImageWindow *imd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
591 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
592 if (image_get_pixbuf(imd) || !imd->il) return;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
593
1045
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
594 image_change_pixbuf(imd, image_loader_get_pixbuf(imd->il), image_zoom_get(imd), FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
595 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
596
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
597 static void image_load_area_cb(ImageLoader *il, guint x, guint y, guint w, guint h, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
598 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
599 ImageWindow *imd = data;
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
600 PixbufRenderer *pr;
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
601
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
602 pr = (PixbufRenderer *)imd->pr;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
603
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
604 if (imd->delay_flip &&
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
605 pr->pixbuf != image_loader_get_pixbuf(il))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
606 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
607 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
608 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
609
1045
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
610 if (!pr->pixbuf) image_change_pixbuf(imd, image_loader_get_pixbuf(imd->il), image_zoom_get(imd), TRUE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
611
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
612 pixbuf_renderer_area_changed(pr, x, y, w, h);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
613 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
614
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
615 static void image_load_done_cb(ImageLoader *il, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
616 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
617 ImageWindow *imd = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
618
506
fc9c8a3e1a8b Handle the newline in DEBUG_N() macro instead of adding one
zas_
parents: 495
diff changeset
619 DEBUG_1("%s image done", get_exec_time());
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
620
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
621 if (options->image.enable_read_ahead && imd->image_fd && !imd->image_fd->pixbuf && image_loader_get_pixbuf(imd->il))
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
622 {
1043
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1032
diff changeset
623 imd->image_fd->pixbuf = g_object_ref(image_loader_get_pixbuf(imd->il));
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
624 image_cache_set(imd, imd->image_fd);
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
625 }
1294
7ac9664242b2 histogram caching
nadvornik
parents: 1288
diff changeset
626 /* call the callback triggered by image_state after fd->pixbuf is set */
7ac9664242b2 histogram caching
nadvornik
parents: 1288
diff changeset
627 g_object_set(G_OBJECT(imd->pr), "loading", FALSE, NULL);
7ac9664242b2 histogram caching
nadvornik
parents: 1288
diff changeset
628 image_state_unset(imd, IMAGE_STATE_LOADING);
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
629
1031
999919edcb7b fixed handling of broken images
nadvornik
parents: 1027
diff changeset
630 if (!image_loader_get_pixbuf(imd->il))
999919edcb7b fixed handling of broken images
nadvornik
parents: 1027
diff changeset
631 {
999919edcb7b fixed handling of broken images
nadvornik
parents: 1027
diff changeset
632 GdkPixbuf *pixbuf;
999919edcb7b fixed handling of broken images
nadvornik
parents: 1027
diff changeset
633
999919edcb7b fixed handling of broken images
nadvornik
parents: 1027
diff changeset
634 pixbuf = pixbuf_inline(PIXBUF_INLINE_BROKEN);
1045
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
635 image_change_pixbuf(imd, pixbuf, image_zoom_get(imd), FALSE);
1031
999919edcb7b fixed handling of broken images
nadvornik
parents: 1027
diff changeset
636 g_object_unref(pixbuf);
999919edcb7b fixed handling of broken images
nadvornik
parents: 1027
diff changeset
637
999919edcb7b fixed handling of broken images
nadvornik
parents: 1027
diff changeset
638 imd->unknown = TRUE;
999919edcb7b fixed handling of broken images
nadvornik
parents: 1027
diff changeset
639 }
999919edcb7b fixed handling of broken images
nadvornik
parents: 1027
diff changeset
640 else if (imd->delay_flip &&
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
641 image_get_pixbuf(imd) != image_loader_get_pixbuf(imd->il))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
642 {
42
606fcf461a68 Sat May 14 13:04:23 2005 John Ellis <johne@verizon.net>
gqview
parents: 29
diff changeset
643 g_object_set(G_OBJECT(imd->pr), "complete", FALSE, NULL);
1045
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
644 image_change_pixbuf(imd, image_loader_get_pixbuf(imd->il), image_zoom_get(imd), FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
645 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
646
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
647 image_loader_free(imd->il);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
648 imd->il = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
649
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
650 // image_post_process(imd, TRUE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
651
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
652 image_read_ahead_start(imd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
653 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
654
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
655 static void image_load_error_cb(ImageLoader *il, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
656 {
506
fc9c8a3e1a8b Handle the newline in DEBUG_N() macro instead of adding one
zas_
parents: 495
diff changeset
657 DEBUG_1("%s image error", get_exec_time());
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
658
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
659 /* even on error handle it like it was done,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
660 * since we have a pixbuf with _something_ */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
661
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
662 image_load_done_cb(il, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
663 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
664
1338
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
665 static void image_load_set_signals(ImageWindow *imd, gboolean override_old_signals)
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
666 {
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
667 g_assert(imd->il);
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
668 if (override_old_signals)
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
669 {
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
670 /* override the old signals */
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
671 g_signal_handlers_disconnect_matched(G_OBJECT(imd->il), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, imd);
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
672 }
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
673
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
674 g_signal_connect(G_OBJECT(imd->il), "area_ready", (GCallback)image_load_area_cb, imd);
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
675 g_signal_connect(G_OBJECT(imd->il), "error", (GCallback)image_load_error_cb, imd);
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
676 g_signal_connect(G_OBJECT(imd->il), "done", (GCallback)image_load_done_cb, imd);
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
677 }
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
678
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
679 /* this read ahead is located here merely for the callbacks, above */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
680
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
681 static gboolean image_read_ahead_check(ImageWindow *imd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
682 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
683 if (!imd->read_ahead_fd) return FALSE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
684 if (imd->il) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
685
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
686 if (!imd->image_fd || imd->read_ahead_fd != imd->image_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
687 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
688 image_read_ahead_cancel(imd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
689 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
690 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
691
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
692 if (imd->read_ahead_il)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
693 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
694 imd->il = imd->read_ahead_il;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
695 imd->read_ahead_il = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
696
1338
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
697 image_load_set_signals(imd, TRUE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
698
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
699 g_object_set(G_OBJECT(imd->pr), "loading", TRUE, NULL);
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
700 image_state_set(imd, IMAGE_STATE_LOADING);
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
701
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
702 if (!imd->delay_flip)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
703 {
1045
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
704 image_change_pixbuf(imd, image_loader_get_pixbuf(imd->il), image_zoom_get(imd), TRUE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
705 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
706
1045
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
707 image_loader_delay_area_ready(imd->il, FALSE); /* send the delayed area_ready signals */
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
708
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
709 file_data_unref(imd->read_ahead_fd);
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
710 imd->read_ahead_fd = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
711 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
712 }
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
713 else if (imd->read_ahead_fd->pixbuf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
714 {
1045
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
715 image_change_pixbuf(imd, imd->read_ahead_fd->pixbuf, image_zoom_get(imd), FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
716
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
717 file_data_unref(imd->read_ahead_fd);
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
718 imd->read_ahead_fd = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
719
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
720 // image_post_process(imd, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
721 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
722 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
723
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
724 image_read_ahead_cancel(imd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
725 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
726 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
727
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
728 static gboolean image_load_begin(ImageWindow *imd, FileData *fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
729 {
506
fc9c8a3e1a8b Handle the newline in DEBUG_N() macro instead of adding one
zas_
parents: 495
diff changeset
730 DEBUG_1("%s image begin", get_exec_time());
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
731
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
732 if (imd->il) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
733
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
734 imd->completed = FALSE;
25
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
735 g_object_set(G_OBJECT(imd->pr), "complete", FALSE, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
736
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
737 if (image_cache_get(imd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
738 {
847
77fc0ea3457d measure pixbuf cache size in bytes
nadvornik
parents: 846
diff changeset
739 DEBUG_1("from cache: %s", imd->image_fd->path);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
740 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
741 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
742
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
743 if (image_read_ahead_check(imd))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
744 {
506
fc9c8a3e1a8b Handle the newline in DEBUG_N() macro instead of adding one
zas_
parents: 495
diff changeset
745 DEBUG_1("from read ahead buffer: %s", imd->image_fd->path);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
746 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
747 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
748
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
749 if (!imd->delay_flip && image_get_pixbuf(imd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
750 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
751 PixbufRenderer *pr;
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
752
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
753 pr = PIXBUF_RENDERER(imd->pr);
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
754 if (pr->pixbuf) g_object_unref(pr->pixbuf);
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
755 pr->pixbuf = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
756 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
757
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
758 g_object_set(G_OBJECT(imd->pr), "loading", TRUE, NULL);
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
759
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
760 imd->il = image_loader_new(fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
761
1338
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
762 image_load_set_signals(imd, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
763
1012
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1000
diff changeset
764 if (!image_loader_start(imd->il))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
765 {
506
fc9c8a3e1a8b Handle the newline in DEBUG_N() macro instead of adding one
zas_
parents: 495
diff changeset
766 DEBUG_1("image start error");
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
767
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
768 g_object_set(G_OBJECT(imd->pr), "loading", FALSE, NULL);
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
769
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
770 image_loader_free(imd->il);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
771 imd->il = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
772
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
773 image_complete_util(imd, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
774
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
775 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
776 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
777
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
778 image_state_set(imd, IMAGE_STATE_LOADING);
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
779
1045
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
780 /*
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
781 if (!imd->delay_flip && !image_get_pixbuf(imd) && image_loader_get_pixbuf(imd->il))
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
782 {
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
783 image_change_pixbuf(imd, image_loader_get_pixbuf(imd->il), image_zoom_get(imd), TRUE);
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
784 }
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
785 */
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
786 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
787 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
788
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
789 static void image_reset(ImageWindow *imd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
790 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
791 /* stops anything currently being done */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
792
506
fc9c8a3e1a8b Handle the newline in DEBUG_N() macro instead of adding one
zas_
parents: 495
diff changeset
793 DEBUG_1("%s image reset", get_exec_time());
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
794
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
795 g_object_set(G_OBJECT(imd->pr), "loading", FALSE, NULL);
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
796
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
797 image_loader_free(imd->il);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
798 imd->il = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
799
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
800 color_man_free((ColorMan *)imd->cm);
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
801 imd->cm = NULL;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
802
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
803 imd->delay_alter_type = ALTER_NONE;
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
804
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
805 image_state_set(imd, IMAGE_STATE_NONE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
806 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
807
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
808 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
809 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
810 * image changer
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
811 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
812 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
813
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
814 static void image_change_complete(ImageWindow *imd, gdouble zoom)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
815 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
816 image_reset(imd);
1337
091ba3e6aedb image_change_complete(): reduce code redundancy and implify.
zas_
parents: 1333
diff changeset
817 imd->unknown = TRUE;
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
818
1337
091ba3e6aedb image_change_complete(): reduce code redundancy and implify.
zas_
parents: 1333
diff changeset
819 if (!imd->image_fd)
091ba3e6aedb image_change_complete(): reduce code redundancy and implify.
zas_
parents: 1333
diff changeset
820 {
091ba3e6aedb image_change_complete(): reduce code redundancy and implify.
zas_
parents: 1333
diff changeset
821 image_change_pixbuf(imd, NULL, zoom, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
822 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
823 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
824 {
1337
091ba3e6aedb image_change_complete(): reduce code redundancy and implify.
zas_
parents: 1333
diff changeset
825
1362
b3156b2ec4c5 Improve file checks using is_readable_file().
zas_
parents: 1359
diff changeset
826 if (is_readable_file(imd->image_fd->path))
1337
091ba3e6aedb image_change_complete(): reduce code redundancy and implify.
zas_
parents: 1333
diff changeset
827 {
091ba3e6aedb image_change_complete(): reduce code redundancy and implify.
zas_
parents: 1333
diff changeset
828 PixbufRenderer *pr;
091ba3e6aedb image_change_complete(): reduce code redundancy and implify.
zas_
parents: 1333
diff changeset
829
091ba3e6aedb image_change_complete(): reduce code redundancy and implify.
zas_
parents: 1333
diff changeset
830 pr = PIXBUF_RENDERER(imd->pr);
091ba3e6aedb image_change_complete(): reduce code redundancy and implify.
zas_
parents: 1333
diff changeset
831 pr->zoom = zoom; /* store the zoom, needed by the loader */
091ba3e6aedb image_change_complete(): reduce code redundancy and implify.
zas_
parents: 1333
diff changeset
832
091ba3e6aedb image_change_complete(): reduce code redundancy and implify.
zas_
parents: 1333
diff changeset
833 if (image_load_begin(imd, imd->image_fd))
091ba3e6aedb image_change_complete(): reduce code redundancy and implify.
zas_
parents: 1333
diff changeset
834 {
091ba3e6aedb image_change_complete(): reduce code redundancy and implify.
zas_
parents: 1333
diff changeset
835 imd->unknown = FALSE;
091ba3e6aedb image_change_complete(): reduce code redundancy and implify.
zas_
parents: 1333
diff changeset
836 }
091ba3e6aedb image_change_complete(): reduce code redundancy and implify.
zas_
parents: 1333
diff changeset
837 }
091ba3e6aedb image_change_complete(): reduce code redundancy and implify.
zas_
parents: 1333
diff changeset
838
091ba3e6aedb image_change_complete(): reduce code redundancy and implify.
zas_
parents: 1333
diff changeset
839 if (imd->unknown == TRUE)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
840 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
841 GdkPixbuf *pixbuf;
1337
091ba3e6aedb image_change_complete(): reduce code redundancy and implify.
zas_
parents: 1333
diff changeset
842
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
843 pixbuf = pixbuf_inline(PIXBUF_INLINE_BROKEN);
1045
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
844 image_change_pixbuf(imd, pixbuf, zoom, FALSE);
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
845 g_object_unref(pixbuf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
846 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
847 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
848
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
849 image_update_util(imd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
850 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
851
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
852 static void image_change_real(ImageWindow *imd, FileData *fd,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
853 CollectionData *cd, CollectInfo *info, gdouble zoom)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
854 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
855
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
856 imd->collection = cd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
857 imd->collection_info = info;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
858
888
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
859 if (imd->auto_refresh && imd->image_fd)
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
860 file_data_unregister_real_time_monitor(imd->image_fd);
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
861
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
862 file_data_unref(imd->image_fd);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
863 imd->image_fd = file_data_ref(fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
864
888
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
865
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
866 image_change_complete(imd, zoom);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
867
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
868 image_update_title(imd);
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
869 image_state_set(imd, IMAGE_STATE_IMAGE);
888
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
870
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
871 if (imd->auto_refresh && imd->image_fd)
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
872 file_data_register_real_time_monitor(imd->image_fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
873 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
874
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
875 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
876 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
877 * focus stuff
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
878 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
879 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
880
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
881 static void image_focus_paint(ImageWindow *imd, gboolean has_focus, GdkRectangle *area)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
882 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
883 GtkWidget *widget;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
884
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
885 widget = imd->widget;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
886 if (!widget->window) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
887
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
888 if (has_focus)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
889 {
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
890 gtk_paint_focus(widget->style, widget->window, GTK_STATE_ACTIVE,
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
891 area, widget, "image_window",
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
892 widget->allocation.x, widget->allocation.y,
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
893 widget->allocation.width - 1, widget->allocation.height - 1);
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
894 }
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
895 else
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
896 {
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
897 gtk_paint_shadow(widget->style, widget->window, GTK_STATE_NORMAL, GTK_SHADOW_IN,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
898 area, widget, "image_window",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
899 widget->allocation.x, widget->allocation.y,
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
900 widget->allocation.width - 1, widget->allocation.height - 1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
901 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
902 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
903
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
904 static gboolean image_focus_expose(GtkWidget *widget, GdkEventExpose *event, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
905 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
906 ImageWindow *imd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
907
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
908 image_focus_paint(imd, GTK_WIDGET_HAS_FOCUS(widget), &event->area);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
909 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
910 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
911
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
912 static gboolean image_focus_in_cb(GtkWidget *widget, GdkEventFocus *event, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
913 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
914 ImageWindow *imd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
915
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
916 GTK_WIDGET_SET_FLAGS(imd->widget, GTK_HAS_FOCUS);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
917 image_focus_paint(imd, TRUE, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
918
1481
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1432
diff changeset
919 if (imd->func_focus_in)
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1432
diff changeset
920 {
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1432
diff changeset
921 imd->func_focus_in(imd, imd->data_focus_in);
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1432
diff changeset
922 }
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1432
diff changeset
923
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
924 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
925 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
926
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
927 static gboolean image_focus_out_cb(GtkWidget *widget, GdkEventFocus *event, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
928 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
929 ImageWindow *imd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
930
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
931 GTK_WIDGET_UNSET_FLAGS(imd->widget, GTK_HAS_FOCUS);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
932 image_focus_paint(imd, FALSE, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
933
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
934 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
935 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
936
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
937 static gboolean image_scroll_cb(GtkWidget *widget, GdkEventScroll *event, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
938 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
939 ImageWindow *imd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
940
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
941 if (imd->func_scroll &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
942 event && event->type == GDK_SCROLL)
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
943 {
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 863
diff changeset
944 imd->func_scroll(imd, event, imd->data_scroll);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
945 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
946 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
947
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
948 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
949 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
950
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
951 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
952 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
953 * public interface
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
954 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
955 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
956
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
957 void image_attach_window(ImageWindow *imd, GtkWidget *window,
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
958 const gchar *title, const gchar *title_right, gboolean show_zoom)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
959 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
960 imd->top_window = window;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
961 g_free(imd->title);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
962 imd->title = g_strdup(title);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
963 g_free(imd->title_right);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
964 imd->title_right = g_strdup(title_right);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
965 imd->title_show_zoom = show_zoom;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
966
334
df868b947aa0 Rename image-related options.
zas_
parents: 327
diff changeset
967 if (!options->image.fit_window_to_image) window = NULL;
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
968
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
969 pixbuf_renderer_set_parent((PixbufRenderer *)imd->pr, (GtkWindow *)window);
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
970
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
971 image_update_title(imd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
972 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
973
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
974 void image_set_update_func(ImageWindow *imd,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
975 void (*func)(ImageWindow *imd, gpointer data),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
976 gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
977 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
978 imd->func_update = func;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
979 imd->data_update = data;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
980 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
981
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
982 void image_set_complete_func(ImageWindow *imd,
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
983 void (*func)(ImageWindow *imd, gboolean preload, gpointer data),
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
984 gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
985 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
986 imd->func_complete = func;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
987 imd->data_complete = data;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
988 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
989
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
990 void image_set_state_func(ImageWindow *imd,
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
991 void (*func)(ImageWindow *imd, ImageState state, gpointer data),
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
992 gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
993 {
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
994 imd->func_state = func;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
995 imd->data_state = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
996 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
997
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
998
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
999 void image_set_button_func(ImageWindow *imd,
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 863
diff changeset
1000 void (*func)(ImageWindow *, GdkEventButton *event, gpointer),
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1001 gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1002 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1003 imd->func_button = func;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1004 imd->data_button = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1005 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1006
128
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1007 void image_set_drag_func(ImageWindow *imd,
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 863
diff changeset
1008 void (*func)(ImageWindow *, GdkEventButton *event, gdouble dx, gdouble dy, gpointer),
128
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1009 gpointer data)
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1010 {
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1011 imd->func_drag = func;
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1012 imd->data_drag = data;
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1013 }
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1014
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1015 void image_set_scroll_func(ImageWindow *imd,
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 863
diff changeset
1016 void (*func)(ImageWindow *, GdkEventScroll *event, gpointer),
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1017 gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1018 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1019 imd->func_scroll = func;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1020 imd->data_scroll = data;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1021 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1022
12
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1023 void image_set_scroll_notify_func(ImageWindow *imd,
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1024 void (*func)(ImageWindow *imd, gint x, gint y, gint width, gint height, gpointer data),
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1025 gpointer data)
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1026 {
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1027 imd->func_scroll_notify = func;
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1028 imd->data_scroll_notify = data;
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1029 }
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1030
1481
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1432
diff changeset
1031 void image_set_focus_in_func(ImageWindow *imd,
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1432
diff changeset
1032 void (*func)(ImageWindow *, gpointer),
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1432
diff changeset
1033 gpointer data)
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1432
diff changeset
1034 {
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1432
diff changeset
1035 imd->func_focus_in = func;
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1432
diff changeset
1036 imd->data_focus_in = data;
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1432
diff changeset
1037 }
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1432
diff changeset
1038
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1039 /* path, name */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1040
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1041 const gchar *image_get_path(ImageWindow *imd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1042 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1043 if (imd->image_fd == NULL) return NULL;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1044 return imd->image_fd->path;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1045 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1046
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1047 const gchar *image_get_name(ImageWindow *imd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1048 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1049 if (imd->image_fd == NULL) return NULL;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1050 return imd->image_fd->name;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1051 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1052
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1053 FileData *image_get_fd(ImageWindow *imd)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1054 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1055 return imd->image_fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1056 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1057
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1058 /* merely changes path string, does not change the image! */
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1059 void image_set_fd(ImageWindow *imd, FileData *fd)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1060 {
888
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1061 if (imd->auto_refresh && imd->image_fd)
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1062 file_data_unregister_real_time_monitor(imd->image_fd);
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1063
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1064 file_data_unref(imd->image_fd);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1065 imd->image_fd = file_data_ref(fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1066
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1067 image_update_title(imd);
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
1068 image_state_set(imd, IMAGE_STATE_IMAGE);
888
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1069
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1070 if (imd->auto_refresh && imd->image_fd)
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1071 file_data_register_real_time_monitor(imd->image_fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1072 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1073
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1074 /* load a new image */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1075
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1076 void image_change_fd(ImageWindow *imd, FileData *fd, gdouble zoom)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1077 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1078 if (imd->image_fd == fd) return;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1079
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1080 image_change_real(imd, fd, NULL, NULL, zoom);
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1081 }
12
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1082
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
1083 gboolean image_get_image_size(ImageWindow *imd, gint *width, gint *height)
530
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 513
diff changeset
1084 {
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 513
diff changeset
1085 return pixbuf_renderer_get_image_size(PIXBUF_RENDERER(imd->pr), width, height);
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 513
diff changeset
1086 }
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 513
diff changeset
1087
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1088 GdkPixbuf *image_get_pixbuf(ImageWindow *imd)
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1089 {
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1090 return pixbuf_renderer_get_pixbuf((PixbufRenderer *)imd->pr);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1091 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1092
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
1093 void image_change_pixbuf(ImageWindow *imd, GdkPixbuf *pixbuf, gdouble zoom, gboolean lazy)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1094 {
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1095
1639
36a04d4bed60 enabled color management in img-view
nadvornik
parents: 1638
diff changeset
1096 /* read_exif and similar functions can actually notice that the file has changed and trigger
36a04d4bed60 enabled color management in img-view
nadvornik
parents: 1638
diff changeset
1097 a notification that removes the pixbuf from cache and unrefs it. Therefore we must ref it
36a04d4bed60 enabled color management in img-view
nadvornik
parents: 1638
diff changeset
1098 here before it is taken over by the renderer. */
1251
ecfe3732f00a fixed glib warning
nadvornik
parents: 1247
diff changeset
1099 if (pixbuf) g_object_ref(pixbuf);
1247
09da3f14490d fixed possible crash
nadvornik
parents: 1182
diff changeset
1100
1288
10073464e6aa use metadata_read_* functions where possible
nadvornik
parents: 1284
diff changeset
1101 if (imd->image_fd)
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1102 {
1288
10073464e6aa use metadata_read_* functions where possible
nadvornik
parents: 1284
diff changeset
1103 if (imd->image_fd->user_orientation)
437
f707aa712b1f Fix the case "orientation from FileData, color profile from exif".
zas_
parents: 434
diff changeset
1104 {
1288
10073464e6aa use metadata_read_* functions where possible
nadvornik
parents: 1284
diff changeset
1105 imd->orientation = imd->image_fd->user_orientation;
10073464e6aa use metadata_read_* functions where possible
nadvornik
parents: 1284
diff changeset
1106 }
10073464e6aa use metadata_read_* functions where possible
nadvornik
parents: 1284
diff changeset
1107 else if (options->image.exif_rotate_enable)
10073464e6aa use metadata_read_* functions where possible
nadvornik
parents: 1284
diff changeset
1108 {
1567
c776b1310ca6 added an option to write image orientation to the metadata
nadvornik
parents: 1566
diff changeset
1109 imd->orientation = metadata_read_int(imd->image_fd, ORIENTATION_KEY, EXIF_ORIENTATION_TOP_LEFT);
439
1cca0b614cba Add a way to restore original state in Adjust menu.
zas_
parents: 437
diff changeset
1110 imd->image_fd->exif_orientation = imd->orientation;
437
f707aa712b1f Fix the case "orientation from FileData, color profile from exif".
zas_
parents: 434
diff changeset
1111 }
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1112 }
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1113
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1114 pixbuf_renderer_set_post_process_func((PixbufRenderer *)imd->pr, NULL, NULL, FALSE);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1115 if (imd->cm)
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1116 {
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1117 color_man_free(imd->cm);
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1118 imd->cm = NULL;
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1119 }
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1120
1045
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
1121 if (lazy)
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
1122 {
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
1123 pixbuf_renderer_set_pixbuf_lazy((PixbufRenderer *)imd->pr, pixbuf, zoom, imd->orientation);
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
1124 }
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
1125 else
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
1126 {
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
1127 pixbuf_renderer_set_pixbuf((PixbufRenderer *)imd->pr, pixbuf, zoom);
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
1128 pixbuf_renderer_set_orientation((PixbufRenderer *)imd->pr, imd->orientation);
0ab0deb0cfcc added possibility to redraw only the parts of image that are already
nadvornik
parents: 1043
diff changeset
1129 }
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1130
1251
ecfe3732f00a fixed glib warning
nadvornik
parents: 1247
diff changeset
1131 if (pixbuf) g_object_unref(pixbuf);
1247
09da3f14490d fixed possible crash
nadvornik
parents: 1182
diff changeset
1132
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1133 if (imd->color_profile_enable)
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1134 {
1357
4ca837d74999 image_post_process_color(): remove exif parameter, just extract it when needed.
zas_
parents: 1356
diff changeset
1135 image_post_process_color(imd, 0, FALSE); /* TODO: error handling */
1288
10073464e6aa use metadata_read_* functions where possible
nadvornik
parents: 1284
diff changeset
1136 }
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1137
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1138 if (imd->cm || imd->desaturate)
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1139 pixbuf_renderer_set_post_process_func((PixbufRenderer *)imd->pr, image_post_process_tile_color_cb, (gpointer) imd, (imd->cm != NULL) );
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1140
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 116
diff changeset
1141 image_state_set(imd, IMAGE_STATE_IMAGE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1142 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1143
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1144 void image_change_from_collection(ImageWindow *imd, CollectionData *cd, CollectInfo *info, gdouble zoom)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1145 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1146 if (!cd || !info || !g_list_find(cd->list, info)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1147
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1148 image_change_real(imd, info->fd, cd, info, zoom);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1149 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1150
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1151 CollectionData *image_get_collection(ImageWindow *imd, CollectInfo **info)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1152 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1153 if (collection_to_number(imd->collection) >= 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1154 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1155 if (g_list_find(imd->collection->list, imd->collection_info) != NULL)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1156 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1157 if (info) *info = imd->collection_info;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1158 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1159 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1160 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1161 if (info) *info = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1162 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1163 return imd->collection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1164 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1165
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1166 if (info) *info = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1167 return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1168 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1169
1012
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1000
diff changeset
1170 static void image_loader_sync_read_ahead_data(ImageLoader *il, gpointer old_data, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1171 {
1012
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1000
diff changeset
1172 if (g_signal_handlers_disconnect_by_func(G_OBJECT(il), (GCallback)image_read_ahead_error_cb, old_data))
1338
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
1173 g_signal_connect(G_OBJECT(il), "error", (GCallback)image_read_ahead_error_cb, data);
1012
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1000
diff changeset
1174
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1000
diff changeset
1175 if (g_signal_handlers_disconnect_by_func(G_OBJECT(il), (GCallback)image_read_ahead_done_cb, old_data))
1338
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
1176 g_signal_connect(G_OBJECT(il), "done", (GCallback)image_read_ahead_done_cb, data);
1012
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1000
diff changeset
1177 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1178
1012
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1000
diff changeset
1179 static void image_loader_sync_data(ImageLoader *il, gpointer old_data, gpointer data)
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1000
diff changeset
1180 {
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1000
diff changeset
1181 if (g_signal_handlers_disconnect_by_func(G_OBJECT(il), (GCallback)image_load_area_cb, old_data))
1338
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
1182 g_signal_connect(G_OBJECT(il), "area_ready", (GCallback)image_load_area_cb, data);
1012
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1000
diff changeset
1183
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1000
diff changeset
1184 if (g_signal_handlers_disconnect_by_func(G_OBJECT(il), (GCallback)image_load_error_cb, old_data))
1338
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
1185 g_signal_connect(G_OBJECT(il), "error", (GCallback)image_load_error_cb, data);
1012
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1000
diff changeset
1186
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1000
diff changeset
1187 if (g_signal_handlers_disconnect_by_func(G_OBJECT(il), (GCallback)image_load_done_cb, old_data))
1338
f150ab408e0b Minor simplification and cleanup.
zas_
parents: 1337
diff changeset
1188 g_signal_connect(G_OBJECT(il), "done", (GCallback)image_load_done_cb, data);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1189 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1190
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1191 /* this is more like a move function
24
104e34f9ab1f Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
1192 * it moves most data from source to imd
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1193 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1194 void image_change_from_image(ImageWindow *imd, ImageWindow *source)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1195 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1196 if (imd == source) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1197
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1198 imd->unknown = source->unknown;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1199
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1200 imd->collection = source->collection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1201 imd->collection_info = source->collection_info;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1202
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1203 image_loader_free(imd->il);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1204 imd->il = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1205
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
1206 image_set_fd(imd, image_get_fd(source));
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
1207
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
1208
24
104e34f9ab1f Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
1209 if (source->il)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1210 {
863
8ddd00cc8b69 fixed crash in entering fullscreen during loading
nadvornik
parents: 848
diff changeset
1211 imd->il = source->il;
8ddd00cc8b69 fixed crash in entering fullscreen during loading
nadvornik
parents: 848
diff changeset
1212 source->il = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1213
1012
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1000
diff changeset
1214 image_loader_sync_data(imd->il, source, imd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1215
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1216 imd->delay_alter_type = source->delay_alter_type;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1217 source->delay_alter_type = ALTER_NONE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1218 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1219
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1220 imd->color_profile_enable = source->color_profile_enable;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1221 imd->color_profile_input = source->color_profile_input;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1222 imd->color_profile_use_image = source->color_profile_use_image;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1223 color_man_free((ColorMan *)imd->cm);
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1224 imd->cm = NULL;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1225 if (source->cm)
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1226 {
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1227 ColorMan *cm;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1228
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1229 imd->cm = source->cm;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1230 source->cm = NULL;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1231
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1232 cm = (ColorMan *)imd->cm;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1233 cm->imd = imd;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1234 cm->func_done_data = imd;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1235 }
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1236
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1237 image_loader_free(imd->read_ahead_il);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1238 imd->read_ahead_il = source->read_ahead_il;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1239 source->read_ahead_il = NULL;
1012
fe82830ab8fd converted image loader to a GObject and use signals for notification
nadvornik
parents: 1000
diff changeset
1240 if (imd->read_ahead_il) image_loader_sync_read_ahead_data(imd->read_ahead_il, source, imd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1241
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1242 file_data_unref(imd->read_ahead_fd);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1243 imd->read_ahead_fd = source->read_ahead_fd;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1244 source->read_ahead_fd = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1245
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1246 imd->completed = source->completed;
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1247 imd->state = source->state;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1248 source->state = IMAGE_STATE_NONE;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1249
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1250 imd->orientation = source->orientation;
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1251 imd->desaturate = source->desaturate;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1252
24
104e34f9ab1f Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
1253 pixbuf_renderer_move(PIXBUF_RENDERER(imd->pr), PIXBUF_RENDERER(source->pr));
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1254
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1255 if (imd->cm || imd->desaturate)
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1256 pixbuf_renderer_set_post_process_func((PixbufRenderer *)imd->pr, image_post_process_tile_color_cb, (gpointer) imd, (imd->cm != NULL) );
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1257 else
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1258 pixbuf_renderer_set_post_process_func((PixbufRenderer *)imd->pr, NULL, NULL, TRUE);
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1259
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1260 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1261
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1262 /* manipulation */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1263
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1264 void image_area_changed(ImageWindow *imd, gint x, gint y, gint width, gint height)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1265 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1266 pixbuf_renderer_area_changed((PixbufRenderer *)imd->pr, x, y, width, height);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1267 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1268
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1269 void image_reload(ImageWindow *imd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1270 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1271 if (pixbuf_renderer_get_tiles((PixbufRenderer *)imd->pr)) return;
12
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1272
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
1273 image_change_complete(imd, image_zoom_get(imd));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1274 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1275
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1276 void image_scroll(ImageWindow *imd, gint x, gint y)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1277 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1278 pixbuf_renderer_scroll((PixbufRenderer *)imd->pr, x, y);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1279 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1280
13
ef790149ae21 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 12
diff changeset
1281 void image_scroll_to_point(ImageWindow *imd, gint x, gint y,
ef790149ae21 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 12
diff changeset
1282 gdouble x_align, gdouble y_align)
12
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1283 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1284 pixbuf_renderer_scroll_to_point((PixbufRenderer *)imd->pr, x, y, x_align, y_align);
12
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1285 }
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1286
131
b1acdfc7271b relative scroll is working; some cleanup
nadvornik
parents: 129
diff changeset
1287 void image_get_scroll_center(ImageWindow *imd, gdouble *x, gdouble *y)
b1acdfc7271b relative scroll is working; some cleanup
nadvornik
parents: 129
diff changeset
1288 {
b1acdfc7271b relative scroll is working; some cleanup
nadvornik
parents: 129
diff changeset
1289 pixbuf_renderer_get_scroll_center(PIXBUF_RENDERER(imd->pr), x, y);
b1acdfc7271b relative scroll is working; some cleanup
nadvornik
parents: 129
diff changeset
1290 }
b1acdfc7271b relative scroll is working; some cleanup
nadvornik
parents: 129
diff changeset
1291
b1acdfc7271b relative scroll is working; some cleanup
nadvornik
parents: 129
diff changeset
1292 void image_set_scroll_center(ImageWindow *imd, gdouble x, gdouble y)
b1acdfc7271b relative scroll is working; some cleanup
nadvornik
parents: 129
diff changeset
1293 {
b1acdfc7271b relative scroll is working; some cleanup
nadvornik
parents: 129
diff changeset
1294 pixbuf_renderer_set_scroll_center(PIXBUF_RENDERER(imd->pr), x, y);
b1acdfc7271b relative scroll is working; some cleanup
nadvornik
parents: 129
diff changeset
1295 }
b1acdfc7271b relative scroll is working; some cleanup
nadvornik
parents: 129
diff changeset
1296
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1297 void image_zoom_adjust(ImageWindow *imd, gdouble increment)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1298 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1299 pixbuf_renderer_zoom_adjust((PixbufRenderer *)imd->pr, increment);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1300 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1301
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1302 void image_zoom_adjust_at_point(ImageWindow *imd, gdouble increment, gint x, gint y)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1303 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1304 pixbuf_renderer_zoom_adjust_at_point((PixbufRenderer *)imd->pr, increment, x, y);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1305 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1306
12
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1307 void image_zoom_set_limits(ImageWindow *imd, gdouble min, gdouble max)
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1308 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1309 pixbuf_renderer_zoom_set_limits((PixbufRenderer *)imd->pr, min, max);
12
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1310 }
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1311
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1312 void image_zoom_set(ImageWindow *imd, gdouble zoom)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1313 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1314 pixbuf_renderer_zoom_set((PixbufRenderer *)imd->pr, zoom);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1315 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1316
1269
08b4598c7cba gint -> gboolean.
zas_
parents: 1251
diff changeset
1317 void image_zoom_set_fill_geometry(ImageWindow *imd, gboolean vertical)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1318 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1319 PixbufRenderer *pr;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1320 gdouble zoom;
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1321 gint width, height;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1322
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1323 pr = (PixbufRenderer *)imd->pr;
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1324
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1325 if (!pixbuf_renderer_get_pixbuf(pr) ||
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1326 !pixbuf_renderer_get_image_size(pr, &width, &height)) return;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1327
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1328 if (vertical)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1329 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1330 zoom = (gdouble)pr->window_height / height;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1331 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1332 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1333 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1334 zoom = (gdouble)pr->window_width / width;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1335 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1336
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1337 if (zoom < 1.0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1338 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1339 zoom = 0.0 - 1.0 / zoom;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1340 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1341
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1342 pixbuf_renderer_zoom_set(pr, zoom);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1343 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1344
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1345 gdouble image_zoom_get(ImageWindow *imd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1346 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1347 return pixbuf_renderer_zoom_get((PixbufRenderer *)imd->pr);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1348 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1349
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1350 gdouble image_zoom_get_real(ImageWindow *imd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1351 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1352 return pixbuf_renderer_zoom_get_scale((PixbufRenderer *)imd->pr);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1353 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1354
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1355 gchar *image_zoom_get_as_text(ImageWindow *imd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1356 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1357 gdouble zoom;
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1358 gdouble scale;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1359 gdouble l = 1.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1360 gdouble r = 1.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1361 gint pl = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1362 gint pr = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1363 gchar *approx = " ";
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1364
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1365 zoom = image_zoom_get(imd);
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1366 scale = image_zoom_get_real(imd);
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1367
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1368 if (zoom > 0.0)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1369 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1370 l = zoom;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1371 }
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1372 else if (zoom < 0.0)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1373 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1374 r = 0.0 - zoom;
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1375 }
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1376 else if (zoom == 0.0 && scale != 0.0)
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1377 {
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1378 if (scale >= 1.0)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1379 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1380 l = scale;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1381 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1382 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1383 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1384 r = 1.0 / scale;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1385 }
415
4f7362028062 Add zoom ratio display to OSD in fullscreen mode.
zas_
parents: 414
diff changeset
1386 approx = "~";
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1387 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1388
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1389 if (rint(l) != l) pl = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1390 if (rint(r) != r) pr = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1391
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1392 return g_strdup_printf("%.*f :%s%.*f", pl, l, approx, pr, r);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1393 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1394
885
ad420f2eb789 Use a specific enum for image.zoom_mode values (ZoomMode) and
zas_
parents: 868
diff changeset
1395 gdouble image_zoom_get_default(ImageWindow *imd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1396 {
885
ad420f2eb789 Use a specific enum for image.zoom_mode values (ZoomMode) and
zas_
parents: 868
diff changeset
1397 gdouble zoom = 1.0;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1398
885
ad420f2eb789 Use a specific enum for image.zoom_mode values (ZoomMode) and
zas_
parents: 868
diff changeset
1399 switch (options->image.zoom_mode)
ad420f2eb789 Use a specific enum for image.zoom_mode values (ZoomMode) and
zas_
parents: 868
diff changeset
1400 {
ad420f2eb789 Use a specific enum for image.zoom_mode values (ZoomMode) and
zas_
parents: 868
diff changeset
1401 case ZOOM_RESET_ORIGINAL:
ad420f2eb789 Use a specific enum for image.zoom_mode values (ZoomMode) and
zas_
parents: 868
diff changeset
1402 break;
ad420f2eb789 Use a specific enum for image.zoom_mode values (ZoomMode) and
zas_
parents: 868
diff changeset
1403 case ZOOM_RESET_FIT_WINDOW:
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1404 zoom = 0.0;
885
ad420f2eb789 Use a specific enum for image.zoom_mode values (ZoomMode) and
zas_
parents: 868
diff changeset
1405 break;
ad420f2eb789 Use a specific enum for image.zoom_mode values (ZoomMode) and
zas_
parents: 868
diff changeset
1406 case ZOOM_RESET_NONE:
ad420f2eb789 Use a specific enum for image.zoom_mode values (ZoomMode) and
zas_
parents: 868
diff changeset
1407 if (imd) zoom = image_zoom_get(imd);
ad420f2eb789 Use a specific enum for image.zoom_mode values (ZoomMode) and
zas_
parents: 868
diff changeset
1408 break;
ad420f2eb789 Use a specific enum for image.zoom_mode values (ZoomMode) and
zas_
parents: 868
diff changeset
1409 }
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1410
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1411 return zoom;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1412 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1413
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1414 /* read ahead */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1415
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1416 void image_prebuffer_set(ImageWindow *imd, FileData *fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1417 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1418 if (pixbuf_renderer_get_tiles((PixbufRenderer *)imd->pr)) return;
12
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1419
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1420 if (fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1421 {
846
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
1422 if (!file_cache_get(image_get_cache(), fd))
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
1423 {
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
1424 image_read_ahead_set(imd, fd);
8911a4f0e56c simple cache for loaded pixbufs
nadvornik
parents: 844
diff changeset
1425 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1426 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1427 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1428 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1429 image_read_ahead_cancel(imd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1430 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1431 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1432
888
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1433 static void image_notify_cb(FileData *fd, NotifyType type, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1434 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1435 ImageWindow *imd = data;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1436
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1437 if (!imd || !image_get_pixbuf(imd) ||
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 994
diff changeset
1438 /* imd->il || */ /* loading in progress - do not check - it should start from the beginning anyway */
891
841b387dd877 fixed test for changed files in cache
nadvornik
parents: 890
diff changeset
1439 !imd->image_fd || /* nothing to reload */
903
c93823609f15 periodic testing of changed files can be now disabled
nadvornik
parents: 891
diff changeset
1440 imd->state == IMAGE_STATE_NONE /* loading not started, no need to reload */
c93823609f15 periodic testing of changed files can be now disabled
nadvornik
parents: 891
diff changeset
1441 ) return;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1442
1432
cf4029d10d38 improved notification system
nadvornik
parents: 1431
diff changeset
1443 if ((type & (NOTIFY_REREAD | NOTIFY_CHANGE)) && fd == imd->image_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1444 {
1701
2309e6150e8c do not try to reload deleted image
nadvornik
parents: 1644
diff changeset
1445 if ((type & NOTIFY_CHANGE) && fd->change && fd->change->type == FILEDATA_CHANGE_DELETE)
2309e6150e8c do not try to reload deleted image
nadvornik
parents: 1644
diff changeset
1446 return; /* keep the image displayed, it will be replaced by the next image from the list soon */
1498
5f49f305a6b6 improved debug messages
nadvornik
parents: 1482
diff changeset
1447 DEBUG_1("Notify image: %s %04x", fd->path, type);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1448 image_reload(imd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1449 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1450 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1451
888
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1452 void image_auto_refresh_enable(ImageWindow *imd, gboolean enable)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1453 {
888
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1454 if (!enable && imd->auto_refresh && imd->image_fd)
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1455 file_data_unregister_real_time_monitor(imd->image_fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1456
888
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1457 if (enable && !imd->auto_refresh && imd->image_fd)
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1458 file_data_register_real_time_monitor(imd->image_fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1459
888
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1460 imd->auto_refresh = enable;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1461 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1462
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
1463 void image_top_window_set_sync(ImageWindow *imd, gboolean allow_sync)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1464 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1465 imd->top_window_sync = allow_sync;
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1466
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1467 g_object_set(G_OBJECT(imd->pr), "window_fit", allow_sync, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1468 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1469
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1470 void image_background_set_color(ImageWindow *imd, GdkColor *color)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1471 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1472 pixbuf_renderer_set_color((PixbufRenderer *)imd->pr, color);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1473 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1474
1626
1d7941c147be Add an option to Image preferences to restrict custom border to fullscreen mode only. Bug 2798062.
zas_
parents: 1567
diff changeset
1475 void image_background_set_color_from_options(ImageWindow *imd, gboolean fullscreen)
1d7941c147be Add an option to Image preferences to restrict custom border to fullscreen mode only. Bug 2798062.
zas_
parents: 1567
diff changeset
1476 {
1d7941c147be Add an option to Image preferences to restrict custom border to fullscreen mode only. Bug 2798062.
zas_
parents: 1567
diff changeset
1477 GdkColor *color = NULL;
1d7941c147be Add an option to Image preferences to restrict custom border to fullscreen mode only. Bug 2798062.
zas_
parents: 1567
diff changeset
1478
1644
b8235f919d6b the options for custom border color were made independent
nadvornik
parents: 1639
diff changeset
1479 if ((options->image.use_custom_border_color && !fullscreen) ||
b8235f919d6b the options for custom border color were made independent
nadvornik
parents: 1639
diff changeset
1480 (options->image.use_custom_border_color_in_fullscreen && fullscreen))
1626
1d7941c147be Add an option to Image preferences to restrict custom border to fullscreen mode only. Bug 2798062.
zas_
parents: 1567
diff changeset
1481 {
1d7941c147be Add an option to Image preferences to restrict custom border to fullscreen mode only. Bug 2798062.
zas_
parents: 1567
diff changeset
1482 color = &options->image.border_color;
1d7941c147be Add an option to Image preferences to restrict custom border to fullscreen mode only. Bug 2798062.
zas_
parents: 1567
diff changeset
1483 }
1d7941c147be Add an option to Image preferences to restrict custom border to fullscreen mode only. Bug 2798062.
zas_
parents: 1567
diff changeset
1484
1d7941c147be Add an option to Image preferences to restrict custom border to fullscreen mode only. Bug 2798062.
zas_
parents: 1567
diff changeset
1485 image_background_set_color(imd, color);
1d7941c147be Add an option to Image preferences to restrict custom border to fullscreen mode only. Bug 2798062.
zas_
parents: 1567
diff changeset
1486 }
1d7941c147be Add an option to Image preferences to restrict custom border to fullscreen mode only. Bug 2798062.
zas_
parents: 1567
diff changeset
1487
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1488 void image_color_profile_set(ImageWindow *imd,
1548
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
1489 gint input_type,
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
1490 gboolean use_image)
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1491 {
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1492 if (!imd) return;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1493
1548
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
1494 if (input_type < 0 || input_type >= COLOR_PROFILE_FILE + COLOR_PROFILE_INPUTS)
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1495 {
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1496 return;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1497 }
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1498
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1499 imd->color_profile_input = input_type;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1500 imd->color_profile_use_image = use_image;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1501 }
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1502
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
1503 gboolean image_color_profile_get(ImageWindow *imd,
1548
b5608391f479 support X11 screen profile
nadvornik
parents: 1498
diff changeset
1504 gint *input_type,
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
1505 gboolean *use_image)
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1506 {
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1507 if (!imd) return FALSE;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1508
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1509 if (input_type) *input_type = imd->color_profile_input;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1510 if (use_image) *use_image = imd->color_profile_use_image;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1511
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1512 return TRUE;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1513 }
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1514
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
1515 void image_color_profile_set_use(ImageWindow *imd, gboolean enable)
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1516 {
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1517 if (!imd) return;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1518
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1519 if (imd->color_profile_enable == enable) return;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1520
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1521 imd->color_profile_enable = enable;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1522 }
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1523
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
1524 gboolean image_color_profile_get_use(ImageWindow *imd)
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1525 {
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1526 if (!imd) return FALSE;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1527
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1528 return imd->color_profile_enable;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1529 }
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1530
1549
7302ff300a52 show color management status on statusbar
nadvornik
parents: 1548
diff changeset
1531 gboolean image_color_profile_get_status(ImageWindow *imd, gchar **image_profile, gchar **screen_profile)
426
9fe0ca1b5263 show the AdobeRGB profile in the menu, indicate input profile from image
nadvornik
parents: 424
diff changeset
1532 {
1549
7302ff300a52 show color management status on statusbar
nadvornik
parents: 1548
diff changeset
1533 ColorMan *cm;
7302ff300a52 show color management status on statusbar
nadvornik
parents: 1548
diff changeset
1534 if (!imd) return FALSE;
7302ff300a52 show color management status on statusbar
nadvornik
parents: 1548
diff changeset
1535
7302ff300a52 show color management status on statusbar
nadvornik
parents: 1548
diff changeset
1536 cm = imd->cm;
7302ff300a52 show color management status on statusbar
nadvornik
parents: 1548
diff changeset
1537 if (!cm) return FALSE;
7302ff300a52 show color management status on statusbar
nadvornik
parents: 1548
diff changeset
1538 return color_man_get_status(cm, image_profile, screen_profile);
426
9fe0ca1b5263 show the AdobeRGB profile in the menu, indicate input profile from image
nadvornik
parents: 424
diff changeset
1539
9fe0ca1b5263 show the AdobeRGB profile in the menu, indicate input profile from image
nadvornik
parents: 424
diff changeset
1540 }
9fe0ca1b5263 show the AdobeRGB profile in the menu, indicate input profile from image
nadvornik
parents: 424
diff changeset
1541
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
1542 void image_set_delay_flip(ImageWindow *imd, gboolean delay)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1543 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1544 if (!imd ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1545 imd->delay_flip == delay) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1546
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1547 imd->delay_flip = delay;
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1548
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1549 g_object_set(G_OBJECT(imd->pr), "delay_flip", delay, NULL);
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1550
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1551 if (!imd->delay_flip && imd->il)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1552 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1553 PixbufRenderer *pr;
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1554
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1555 pr = PIXBUF_RENDERER(imd->pr);
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1556 if (pr->pixbuf) g_object_unref(pr->pixbuf);
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1557 pr->pixbuf = NULL;
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1558
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1559 image_load_pixbuf_ready(imd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1560 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1561 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1562
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
1563 void image_to_root_window(ImageWindow *imd, gboolean scaled)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1564 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1565 GdkScreen *screen;
3
gqview
parents: 1
diff changeset
1566 GdkWindow *rootwindow;
gqview
parents: 1
diff changeset
1567 GdkPixmap *pixmap;
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1568 GdkPixbuf *pixbuf;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1569 GdkPixbuf *pb;
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1570 gint width, height;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1571
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1572 if (!imd) return;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1573
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1574 pixbuf = image_get_pixbuf(imd);
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1575 if (!pixbuf) return;
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1576
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1577 screen = gtk_widget_get_screen(imd->widget);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1578 rootwindow = gdk_screen_get_root_window(screen);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1579 if (gdk_drawable_get_visual(rootwindow) != gdk_visual_get_system()) return;
3
gqview
parents: 1
diff changeset
1580
gqview
parents: 1
diff changeset
1581 if (scaled)
gqview
parents: 1
diff changeset
1582 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1583 width = gdk_screen_width();
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1584 height = gdk_screen_height();
3
gqview
parents: 1
diff changeset
1585 }
gqview
parents: 1
diff changeset
1586 else
gqview
parents: 1
diff changeset
1587 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1588 pixbuf_renderer_get_scaled_size((PixbufRenderer *)imd->pr, &width, &height);
3
gqview
parents: 1
diff changeset
1589 }
gqview
parents: 1
diff changeset
1590
334
df868b947aa0 Rename image-related options.
zas_
parents: 327
diff changeset
1591 pb = gdk_pixbuf_scale_simple(pixbuf, width, height, (GdkInterpType)options->image.zoom_quality);
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1592
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1593 gdk_pixbuf_render_pixmap_and_mask(pb, &pixmap, NULL, 128);
3
gqview
parents: 1
diff changeset
1594 gdk_window_set_back_pixmap(rootwindow, pixmap, FALSE);
gqview
parents: 1
diff changeset
1595 gdk_window_clear(rootwindow);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1596 g_object_unref(pb);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1597 g_object_unref(pixmap);
3
gqview
parents: 1
diff changeset
1598
gqview
parents: 1
diff changeset
1599 gdk_flush();
gqview
parents: 1
diff changeset
1600 }
gqview
parents: 1
diff changeset
1601
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1602 void image_select(ImageWindow *imd, gboolean select)
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1603 {
1359
8f3d44564146 image_select(), image_set_selectable(): tidy up.
zas_
parents: 1358
diff changeset
1604 if (!imd->has_frame) return;
8f3d44564146 image_select(), image_set_selectable(): tidy up.
zas_
parents: 1358
diff changeset
1605
8f3d44564146 image_select(), image_set_selectable(): tidy up.
zas_
parents: 1358
diff changeset
1606 if (select)
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1607 {
1359
8f3d44564146 image_select(), image_set_selectable(): tidy up.
zas_
parents: 1358
diff changeset
1608 gtk_widget_set_state(imd->widget, GTK_STATE_SELECTED);
8f3d44564146 image_select(), image_set_selectable(): tidy up.
zas_
parents: 1358
diff changeset
1609 gtk_widget_set_state(imd->pr, GTK_STATE_NORMAL); /* do not propagate */
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1610 }
1359
8f3d44564146 image_select(), image_set_selectable(): tidy up.
zas_
parents: 1358
diff changeset
1611 else
8f3d44564146 image_select(), image_set_selectable(): tidy up.
zas_
parents: 1358
diff changeset
1612 gtk_widget_set_state(imd->widget, GTK_STATE_NORMAL);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1613 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1614
174
126724275319 improved drawing of image frames
nadvornik
parents: 154
diff changeset
1615 void image_set_selectable(ImageWindow *imd, gboolean selectable)
126724275319 improved drawing of image frames
nadvornik
parents: 154
diff changeset
1616 {
1359
8f3d44564146 image_select(), image_set_selectable(): tidy up.
zas_
parents: 1358
diff changeset
1617 if (!imd->has_frame) return;
8f3d44564146 image_select(), image_set_selectable(): tidy up.
zas_
parents: 1358
diff changeset
1618
8f3d44564146 image_select(), image_set_selectable(): tidy up.
zas_
parents: 1358
diff changeset
1619 gtk_frame_set_shadow_type(GTK_FRAME(imd->frame), GTK_SHADOW_NONE);
8f3d44564146 image_select(), image_set_selectable(): tidy up.
zas_
parents: 1358
diff changeset
1620 gtk_container_set_border_width(GTK_CONTAINER(imd->frame), selectable ? 4 : 0);
174
126724275319 improved drawing of image frames
nadvornik
parents: 154
diff changeset
1621 }
126724275319 improved drawing of image frames
nadvornik
parents: 154
diff changeset
1622
1482
dac747d99394 fixed keyboard focus on start-up
nadvornik
parents: 1481
diff changeset
1623 void image_grab_focus(ImageWindow *imd)
dac747d99394 fixed keyboard focus on start-up
nadvornik
parents: 1481
diff changeset
1624 {
dac747d99394 fixed keyboard focus on start-up
nadvornik
parents: 1481
diff changeset
1625 if (imd->has_frame)
dac747d99394 fixed keyboard focus on start-up
nadvornik
parents: 1481
diff changeset
1626 {
dac747d99394 fixed keyboard focus on start-up
nadvornik
parents: 1481
diff changeset
1627 gtk_widget_grab_focus(imd->frame);
dac747d99394 fixed keyboard focus on start-up
nadvornik
parents: 1481
diff changeset
1628 }
dac747d99394 fixed keyboard focus on start-up
nadvornik
parents: 1481
diff changeset
1629 else
dac747d99394 fixed keyboard focus on start-up
nadvornik
parents: 1481
diff changeset
1630 {
dac747d99394 fixed keyboard focus on start-up
nadvornik
parents: 1481
diff changeset
1631 gtk_widget_grab_focus(imd->widget);
dac747d99394 fixed keyboard focus on start-up
nadvornik
parents: 1481
diff changeset
1632 }
dac747d99394 fixed keyboard focus on start-up
nadvornik
parents: 1481
diff changeset
1633 }
dac747d99394 fixed keyboard focus on start-up
nadvornik
parents: 1481
diff changeset
1634
dac747d99394 fixed keyboard focus on start-up
nadvornik
parents: 1481
diff changeset
1635
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1636 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1637 *-------------------------------------------------------------------
26
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1638 * prefs sync
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1639 *-------------------------------------------------------------------
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1640 */
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1641
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1642 static void image_options_set(ImageWindow *imd)
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1643 {
334
df868b947aa0 Rename image-related options.
zas_
parents: 327
diff changeset
1644 g_object_set(G_OBJECT(imd->pr), "zoom_quality", options->image.zoom_quality,
df868b947aa0 Rename image-related options.
zas_
parents: 327
diff changeset
1645 "zoom_2pass", options->image.zoom_2pass,
df868b947aa0 Rename image-related options.
zas_
parents: 327
diff changeset
1646 "zoom_expand", options->image.zoom_to_fit_allow_expand,
df868b947aa0 Rename image-related options.
zas_
parents: 327
diff changeset
1647 "dither_quality", options->image.dither_quality,
df868b947aa0 Rename image-related options.
zas_
parents: 327
diff changeset
1648 "scroll_reset", options->image.scroll_reset_method,
df868b947aa0 Rename image-related options.
zas_
parents: 327
diff changeset
1649 "cache_display", options->image.tile_cache_max,
df868b947aa0 Rename image-related options.
zas_
parents: 327
diff changeset
1650 "window_fit", (imd->top_window_sync && options->image.fit_window_to_image),
df868b947aa0 Rename image-related options.
zas_
parents: 327
diff changeset
1651 "window_limit", options->image.limit_window_size,
df868b947aa0 Rename image-related options.
zas_
parents: 327
diff changeset
1652 "window_limit_value", options->image.max_window_size,
df868b947aa0 Rename image-related options.
zas_
parents: 327
diff changeset
1653 "autofit_limit", options->image.limit_autofit_size,
df868b947aa0 Rename image-related options.
zas_
parents: 327
diff changeset
1654 "autofit_limit_value", options->image.max_autofit_size,
209
ad78ad18523a configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
nadvornik
parents: 208
diff changeset
1655
26
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1656 NULL);
27
9c24765c2d3a Sat Apr 2 17:28:16 2005 John Ellis <johne@verizon.net>
gqview
parents: 26
diff changeset
1657
9c24765c2d3a Sat Apr 2 17:28:16 2005 John Ellis <johne@verizon.net>
gqview
parents: 26
diff changeset
1658 pixbuf_renderer_set_parent((PixbufRenderer *)imd->pr, (GtkWindow *)imd->top_window);
26
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1659 }
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1660
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1661 void image_options_sync(void)
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1662 {
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1663 GList *work;
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1664
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1665 work = image_list;
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1666 while (work)
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1667 {
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1668 ImageWindow *imd;
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1669
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1670 imd = work->data;
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1671 work = work->next;
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1672
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1673 image_options_set(imd);
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1674 }
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1675 }
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1676
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1677 /*
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1678 *-------------------------------------------------------------------
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1679 * init / destroy
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1680 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1681 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1682
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1683 static void image_free(ImageWindow *imd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1684 {
26
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1685 image_list = g_list_remove(image_list, imd);
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1686
888
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1687 if (imd->auto_refresh && imd->image_fd)
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1688 file_data_unregister_real_time_monitor(imd->image_fd);
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1689
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1690 file_data_unregister_notify_func(image_notify_cb, imd);
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1691
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1692 image_reset(imd);
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1693
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1694 image_read_ahead_cancel(imd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1695
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1696 file_data_unref(imd->image_fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1697 g_free(imd->title);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1698 g_free(imd->title_right);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1699 g_free(imd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1700 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1701
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1702 static void image_destroy_cb(GtkObject *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1703 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1704 ImageWindow *imd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1705 image_free(imd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1706 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1707
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1708 gboolean selectable_frame_expose_cb(GtkWidget *widget, GdkEventExpose *event, gpointer data)
151
344d4ab0e20a improved drawing of frame around selected image
nadvornik
parents: 138
diff changeset
1709 {
344d4ab0e20a improved drawing of frame around selected image
nadvornik
parents: 138
diff changeset
1710 gtk_paint_flat_box(widget->style,
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1711 widget->window,
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1712 widget->state,
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1713 (GTK_FRAME(widget))->shadow_type,
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1714 NULL,
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1715 widget,
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1716 NULL,
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1717 widget->allocation.x + 3, widget->allocation.y + 3,
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1718 widget->allocation.width - 6, widget->allocation.height - 6);
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1719
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1720
151
344d4ab0e20a improved drawing of frame around selected image
nadvornik
parents: 138
diff changeset
1721 return FALSE;
344d4ab0e20a improved drawing of frame around selected image
nadvornik
parents: 138
diff changeset
1722 }
344d4ab0e20a improved drawing of frame around selected image
nadvornik
parents: 138
diff changeset
1723
344d4ab0e20a improved drawing of frame around selected image
nadvornik
parents: 138
diff changeset
1724
175
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1725 void image_set_frame(ImageWindow *imd, gboolean frame)
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1726 {
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1727 frame = !!frame;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1728
175
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1729 if (frame == imd->has_frame) return;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1730
175
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1731 gtk_widget_hide(imd->pr);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1732
175
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1733 if (frame)
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1734 {
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1735 imd->frame = gtk_frame_new(NULL);
1043
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1032
diff changeset
1736 #if GTK_CHECK_VERSION(2,12,0)
1358
db324ac52bcc Indentation fixes.
zas_
parents: 1357
diff changeset
1737 g_object_ref(imd->pr);
1043
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1032
diff changeset
1738 #else
1358
db324ac52bcc Indentation fixes.
zas_
parents: 1357
diff changeset
1739 gtk_widget_ref(imd->pr);
1043
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1032
diff changeset
1740 #endif
175
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1741 if (imd->has_frame != -1) gtk_container_remove(GTK_CONTAINER(imd->widget), imd->pr);
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1742 gtk_container_add(GTK_CONTAINER(imd->frame), imd->pr);
1043
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1032
diff changeset
1743
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1032
diff changeset
1744 #if GTK_CHECK_VERSION(2,12,0)
1358
db324ac52bcc Indentation fixes.
zas_
parents: 1357
diff changeset
1745 g_object_unref(imd->pr);
1043
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1032
diff changeset
1746 #else
1358
db324ac52bcc Indentation fixes.
zas_
parents: 1357
diff changeset
1747 gtk_widget_unref(imd->pr);
1043
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1032
diff changeset
1748 #endif
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1749 g_signal_connect(G_OBJECT(imd->frame), "expose_event",
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1750 G_CALLBACK(selectable_frame_expose_cb), NULL);
175
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1751
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1752 GTK_WIDGET_SET_FLAGS(imd->frame, GTK_CAN_FOCUS);
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1753 g_signal_connect(G_OBJECT(imd->frame), "focus_in_event",
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1754 G_CALLBACK(image_focus_in_cb), imd);
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1755 g_signal_connect(G_OBJECT(imd->frame), "focus_out_event",
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1756 G_CALLBACK(image_focus_out_cb), imd);
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1757
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1758 g_signal_connect_after(G_OBJECT(imd->frame), "expose_event",
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1759 G_CALLBACK(image_focus_expose), imd);
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1760
1182
6ae6d77a1f15 Fix up deprecated function and not a prototype warnings.
zas_
parents: 1055
diff changeset
1761 #if GTK_CHECK_VERSION(2,14,0)
1358
db324ac52bcc Indentation fixes.
zas_
parents: 1357
diff changeset
1762 gtk_box_pack_start(GTK_BOX(imd->widget), imd->frame, TRUE, TRUE, 0);
1182
6ae6d77a1f15 Fix up deprecated function and not a prototype warnings.
zas_
parents: 1055
diff changeset
1763 #else
1358
db324ac52bcc Indentation fixes.
zas_
parents: 1357
diff changeset
1764 gtk_box_pack_start_defaults(GTK_BOX(imd->widget), imd->frame);
1182
6ae6d77a1f15 Fix up deprecated function and not a prototype warnings.
zas_
parents: 1055
diff changeset
1765 #endif
1358
db324ac52bcc Indentation fixes.
zas_
parents: 1357
diff changeset
1766 gtk_widget_show(imd->frame);
175
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1767 }
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1768 else
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1769 {
1043
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1032
diff changeset
1770 #if GTK_CHECK_VERSION(2,12,0)
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1032
diff changeset
1771 g_object_ref(imd->pr);
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1032
diff changeset
1772 #else
175
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1773 gtk_widget_ref(imd->pr);
1043
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1032
diff changeset
1774 #endif
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1775 if (imd->frame)
175
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1776 {
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1777 gtk_container_remove(GTK_CONTAINER(imd->frame), imd->pr);
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1778 gtk_widget_destroy(imd->frame);
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1779 imd->frame = NULL;
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1780 }
1182
6ae6d77a1f15 Fix up deprecated function and not a prototype warnings.
zas_
parents: 1055
diff changeset
1781 #if GTK_CHECK_VERSION(2,14,0)
1358
db324ac52bcc Indentation fixes.
zas_
parents: 1357
diff changeset
1782 gtk_box_pack_start(GTK_BOX(imd->widget), imd->pr, TRUE, TRUE, 0);
1182
6ae6d77a1f15 Fix up deprecated function and not a prototype warnings.
zas_
parents: 1055
diff changeset
1783 #else
175
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1784 gtk_box_pack_start_defaults(GTK_BOX(imd->widget), imd->pr);
1182
6ae6d77a1f15 Fix up deprecated function and not a prototype warnings.
zas_
parents: 1055
diff changeset
1785 #endif
1043
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1032
diff changeset
1786
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1032
diff changeset
1787 #if GTK_CHECK_VERSION(2,12,0)
1358
db324ac52bcc Indentation fixes.
zas_
parents: 1357
diff changeset
1788 g_object_unref(imd->pr);
1043
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1032
diff changeset
1789 #else
1358
db324ac52bcc Indentation fixes.
zas_
parents: 1357
diff changeset
1790 gtk_widget_unref(imd->pr);
1043
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1032
diff changeset
1791 #endif
175
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1792 }
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1793
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1794 gtk_widget_show(imd->pr);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 439
diff changeset
1795
175
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1796 imd->has_frame = frame;
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1797 }
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1798
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1365
diff changeset
1799 ImageWindow *image_new(gboolean frame)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1800 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1801 ImageWindow *imd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1802
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1803 imd = g_new0(ImageWindow, 1);
12
147f4c4b9025 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1804
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1805 imd->unknown = TRUE;
175
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1806 imd->has_frame = -1; /* not initialized; for image_set_frame */
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1807 imd->delay_alter_type = ALTER_NONE;
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 109
diff changeset
1808 imd->state = IMAGE_STATE_NONE;
426
9fe0ca1b5263 show the AdobeRGB profile in the menu, indicate input profile from image
nadvornik
parents: 424
diff changeset
1809 imd->color_profile_from_image = COLOR_PROFILE_NONE;
398
c4080362d619 image post-processing (rotation and color management) moved to
nadvornik
parents: 386
diff changeset
1810 imd->orientation = 1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1811
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1812 imd->pr = GTK_WIDGET(pixbuf_renderer_new());
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1813
26
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1814 image_options_set(imd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1815
175
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1816 imd->widget = gtk_vbox_new(0, 0);
151
344d4ab0e20a improved drawing of frame around selected image
nadvornik
parents: 138
diff changeset
1817
175
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1818 image_set_frame(imd, frame);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1819
175
682705e0c0e0 do not show frame for full-window images
nadvornik
parents: 174
diff changeset
1820 image_set_selectable(imd, 0);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1821
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1822 g_signal_connect(G_OBJECT(imd->pr), "clicked",
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1823 G_CALLBACK(image_click_cb), imd);
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1824 g_signal_connect(G_OBJECT(imd->pr), "scroll_notify",
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1825 G_CALLBACK(image_scroll_notify_cb), imd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1826
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1827 g_signal_connect(G_OBJECT(imd->pr), "scroll_event",
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1828 G_CALLBACK(image_scroll_cb), imd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1829
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 14
diff changeset
1830 g_signal_connect(G_OBJECT(imd->pr), "destroy",
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1831 G_CALLBACK(image_destroy_cb), imd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1832
25
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
1833 g_signal_connect(G_OBJECT(imd->pr), "zoom",
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
1834 G_CALLBACK(image_zoom_cb), imd);
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
1835 g_signal_connect(G_OBJECT(imd->pr), "render_complete",
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
1836 G_CALLBACK(image_render_complete_cb), imd);
128
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1837 g_signal_connect(G_OBJECT(imd->pr), "drag",
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1838 G_CALLBACK(image_drag_cb), imd);
25
0c3b353b666e Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
gqview
parents: 24
diff changeset
1839
888
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1840 file_data_register_notify_func(image_notify_cb, imd, NOTIFY_PRIORITY_LOW);
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1841
26
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1842 image_list = g_list_append(image_list, imd);
acd9885ebd78 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
gqview
parents: 25
diff changeset
1843
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1844 return imd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 4
diff changeset
1845 }
1055
1646720364cf Adding a vim modeline to all files - patch by Klaus Ethgen
nadvornik
parents: 1045
diff changeset
1846 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */