annotate src/image.c @ 1678:c029adbabb70

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