annotate src/image-overlay.c @ 276:4f526d436873

Implement secure rc file saving. First data is written to a temporary file, then if nothing was wrong, this file is renamed to the final name. This way the risk of corrupted rc file is greatly reduced. The code is borrowed from ELinks (http://elinks.cz).
author zas_
date Tue, 08 Apr 2008 21:55:58 +0000
parents dc69ea2dcf76
children 9995c5fb202a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1 /*
196
f6e307c7bad6 rename GQview -> Geeqie over the code
nadvornik
parents: 155
diff changeset
2 * Geeqie
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
3 * (C) 2006 John Ellis
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
4 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
5 * Author: John Ellis
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
6 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
7 * This software is released under the GNU General Public License (GNU GPL).
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
8 * Please read the included file COPYING for more information.
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
9 * This software comes with no warranty of any kind, use at your own risk!
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
10 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
11
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
12 #include "gqview.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
13 #include "image-overlay.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
14
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
15 #include "collect.h"
218
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
16 #include "exif.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
17 #include "filelist.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
18 #include "image.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
19 #include "img-view.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
20 #include "layout.h"
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
21 #include "pixbuf-renderer.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
22 #include "pixbuf_util.h"
273
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
23 #include "histogram.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
24
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
25
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
26 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
27 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
28 * image overlay
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
29 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
30 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
31
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
32 typedef struct _OverlayStateData OverlayStateData;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
33 struct _OverlayStateData {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
34 ImageWindow *imd;
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
35 ImageState changed_states;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
36
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
37 gint show_info;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
38 gint show_status;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
39
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
40 gint ovl_info;
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
41
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
42 gint icon_time[IMAGE_OSD_COUNT];
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
43 gint icon_id[IMAGE_OSD_COUNT];
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
44
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
45 gint idle_id;
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
46 gint timer_id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
47 gulong destroy_id;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
48 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
49
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
50
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
51 typedef struct _OSDIcon OSDIcon;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
52 struct _OSDIcon {
122
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
53 gint reset; /* reset on new image */
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
54 gint x; /* x, y offset */
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
55 gint y;
122
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
56 gchar *key; /* inline pixbuf */
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
57 };
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
58
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
59 static OSDIcon osd_icons[] = {
122
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
60 { TRUE, 0, 0, NULL }, /* none */
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
61 { TRUE, -10, -10, NULL }, /* auto rotated */
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
62 { TRUE, -10, -10, NULL }, /* user rotated */
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
63 { TRUE, -40, -10, NULL }, /* color embedded */
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
64 { TRUE, -70, -10, NULL }, /* first image */
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
65 { TRUE, -70, -10, NULL }, /* last image */
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
66 { FALSE, -70, -10, NULL }, /* osd enabled */
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
67 { FALSE, 0, 0, NULL }
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
68 };
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
69
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
70 #define OSD_DATA "overlay-data"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
71
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
72 #define OSD_INFO_X 10
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
73 #define OSD_INFO_Y -10
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
74
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
75 #define IMAGE_OSD_DEFAULT_DURATION 30
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
76
273
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
77 /*
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
78 *----------------------------------------------------------------------------
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
79 * image histogram
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
80 *----------------------------------------------------------------------------
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
81 */
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
82
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
83
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
84 #define HIST_PREPARE(imd, lw) \
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
85 LayoutWindow *lw = NULL; \
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
86 if (imd) \
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
87 lw = layout_find_by_image(imd);
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
88
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
89 void image_osd_histogram_onoff_toggle(ImageWindow *imd, gint x)
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
90 {
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
91 HIST_PREPARE(imd, lw)
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
92 if (lw)
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
93 {
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
94 lw->histogram_enabled = !!(x);
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
95 if (lw->histogram_enabled && !lw->histogram)
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
96 lw->histogram = histogram_new();
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
97 }
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
98 }
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
99
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
100 gint image_osd_histogram_onoff_status(ImageWindow *imd)
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
101 {
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
102 HIST_PREPARE(imd, lw)
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
103 return lw ? lw->histogram_enabled : FALSE;
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
104 }
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
105
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
106 void image_osd_histogram_chan_toggle(ImageWindow *imd)
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
107 {
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
108 HIST_PREPARE(imd, lw)
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
109 if (lw && lw->histogram)
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
110 histogram_set_channel(lw->histogram, (histogram_get_channel(lw->histogram) +1)%HCHAN_COUNT);
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
111 }
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
112
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
113 void image_osd_histogram_log_toggle(ImageWindow *imd)
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
114 {
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
115 HIST_PREPARE(imd,lw)
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
116 if (lw && lw->histogram)
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
117 histogram_set_mode(lw->histogram, !histogram_get_mode(lw->histogram));
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
118 }
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
119
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
120
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
121
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
122 static void image_osd_timer_schedule(OverlayStateData *osd);
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
123
218
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
124 static gchar *image_osd_mkinfo(const gchar *str, ImageWindow *imd, GHashTable *vars)
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
125 {
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
126 gchar delim = '%', imp = '|', sep[] = " - ";
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
127 gchar *start, *end;
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
128 gint pos, prev;
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
129 gint last;
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
130 gchar *name, *data;
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
131 GString *new = g_string_new(str);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
132 gchar *ret;
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
133 ExifData *exif;
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
134
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
135 exif = exif_read_fd(imd->image_fd, FALSE);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
136 prev = 0;
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
137 last = FALSE;
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
138
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
139 while (TRUE)
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
140 {
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
141 start = strchr(new->str, delim);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
142 if (!start)
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
143 break;
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
144 end = strchr(start+1, delim);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
145 if (!end)
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
146 break;
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
147
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
148 name = g_strndup(start+1, end-start-1);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
149 pos = start-new->str;
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
150 data = g_strdup(g_hash_table_lookup(vars, name));
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
151 if (!data && exif)
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
152 data = exif_get_data_as_text(exif, name);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
153
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
154 g_string_erase(new, pos, end-start+1);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
155 if (data)
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
156 g_string_insert(new, pos, data);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
157 if (pos-prev == 2 && new->str[pos-1] == imp)
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
158 {
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
159 g_string_erase(new, --pos, 1);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
160 if (last && data)
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
161 {
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
162 g_string_insert(new, pos, sep);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
163 pos += strlen(sep);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
164 }
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
165 }
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
166
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
167 prev = data ? pos+strlen(data)-1 : pos-1;
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
168 last = data ? TRUE : last;
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
169 g_free(name);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
170 g_free(data);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
171 }
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
172
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
173 /* search and destroy empty lines */
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
174 end = new->str;
245
62f2f8f7cb2d Add parenthesis around affection to clear a gcc warning.
zas_
parents: 218
diff changeset
175 while ((start = strchr(end, '\n')))
218
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
176 {
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
177 end = start;
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
178 while (*++(end) == '\n')
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
179 ;
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
180 g_string_erase(new, start-new->str, end-start-1);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
181 }
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
182
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
183 g_strchomp(new->str);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
184
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
185 ret = new->str;
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
186 g_string_free(new, FALSE);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
187
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
188 return ret;
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
189 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
190
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
191 static GdkPixbuf *image_osd_info_render(ImageWindow *imd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
192 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
193 GdkPixbuf *pixbuf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
194 gint width, height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
195 PangoLayout *layout;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
196 const gchar *name;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
197 gchar *name_escaped;
275
dc69ea2dcf76 fixed histogram label
nadvornik
parents: 273
diff changeset
198 gchar *text;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
199 gchar *size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
200 gint n, t;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
201 CollectionData *cd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
202 CollectInfo *info;
273
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
203 GdkPixbuf *imgpixbuf = NULL;
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
204 LayoutWindow *lw = NULL;
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
205 gint with_hist = 0;
216
a57b153e7fa4 Indentation and white lines minor fixes.
zas_
parents: 196
diff changeset
206 gchar *ct;
263
c7fefb0a4b78 Display marks in overlay info only if at least one is set.
zas_
parents: 245
diff changeset
207 gint w, h;
218
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
208 GHashTable *vars;
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
209
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
210 vars = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
211
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
212 name = image_get_name(imd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
213 if (name)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
214 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
215 name_escaped = g_markup_escape_text(name, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
216 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
217 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
218 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
219 name_escaped = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
220 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
221
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
222 cd = image_get_collection(imd, &info);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
223 if (cd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
224 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
225 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
226
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
227 t = g_list_length(cd->list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
228 n = g_list_index(cd->list, info) + 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
229 buf = g_markup_escape_text((cd->name) ? cd->name : _("Untitled"), -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
230 ct = g_strdup_printf("<i>%s</i>\n", buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
231 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
232 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
233 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
234 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
235 lw = layout_find_by_image(imd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
236 if (lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
237 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
238 if (lw->slideshow)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
239 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
240 n = g_list_length(lw->slideshow->list_done);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
241 t = n + g_list_length(lw->slideshow->list);
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
242 if (n == 0) n = t;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
243 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
244 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
245 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
246 t = layout_list_count(lw, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
247 n = layout_list_get_index(lw, image_get_path(lw->image)) + 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
248 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
249 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
250 else if (view_window_find_image(imd, &n, &t))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
251 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
252 n++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
253 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
254 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
255 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
256 t = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
257 n = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
258 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
259
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
260 if (n < 1) n = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
261 if (t < 1) t = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
262
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
263 ct = g_strdup("");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
264 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
265
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
266 size = text_from_size_abrev(imd->size);
218
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
267 if (!imd->unknown)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
268 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
269 if (imd->delay_flip &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
270 imd->il && imd->il->pixbuf &&
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
271 image_get_pixbuf(imd) != imd->il->pixbuf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
272 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
273 w = gdk_pixbuf_get_width(imd->il->pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
274 h = gdk_pixbuf_get_height(imd->il->pixbuf);
273
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
275 imgpixbuf = imd->il->pixbuf;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
276 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
277 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
278 {
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
279 pixbuf_renderer_get_image_size(PIXBUF_RENDERER(imd->pr), &w, &h);
273
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
280 imgpixbuf = (PIXBUF_RENDERER(imd->pr))->pixbuf;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
281 }
273
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
282 if (!lw)
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
283 lw = layout_find_by_image(imd);
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
284
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
285 if (imgpixbuf && lw->histogram && lw->histogram_enabled
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
286 && (!imd->il || imd->il->done))
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
287 with_hist=1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
288
218
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
289 g_hash_table_insert(vars, "width", g_strdup_printf("%d", w));
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
290 g_hash_table_insert(vars, "height", g_strdup_printf("%d", h));
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
291 g_hash_table_insert(vars, "res", g_strdup_printf("%d × %d", w, h));
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
292 }
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
293
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
294 g_hash_table_insert(vars, "collection", g_strdup(ct));
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
295 g_hash_table_insert(vars, "number", g_strdup_printf("%d", n));
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
296 g_hash_table_insert(vars, "total", g_strdup_printf("%d", t));
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
297 g_hash_table_insert(vars, "name", g_strdup(name_escaped));
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
298 g_hash_table_insert(vars, "date", g_strdup(text_from_time(imd->mtime)));
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
299 g_hash_table_insert(vars, "size", g_strdup(size));
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
300
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
301 if (!name_escaped)
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
302 {
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
303 text = g_strdup_printf(_("Untitled"));
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
304 }
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
305 else
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
306 {
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
307 text = image_osd_mkinfo(fullscreen_info, imd, vars);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
308 }
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 122
diff changeset
309
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
310 g_free(size);
218
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
311 g_free(ct);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
312 g_free(name_escaped);
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
313 g_hash_table_destroy(vars);
133
532c42d5ed4d compilation fix
bruclik
parents: 132
diff changeset
314
532c42d5ed4d compilation fix
bruclik
parents: 132
diff changeset
315 {
216
a57b153e7fa4 Indentation and white lines minor fixes.
zas_
parents: 196
diff changeset
316 FileData *fd = image_get_fd(imd);
263
c7fefb0a4b78 Display marks in overlay info only if at least one is set.
zas_
parents: 245
diff changeset
317
265
3f14da3c3b9a Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents: 263
diff changeset
318 if (fd) /* fd may be null after file deletion */
263
c7fefb0a4b78 Display marks in overlay info only if at least one is set.
zas_
parents: 245
diff changeset
319 {
265
3f14da3c3b9a Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents: 263
diff changeset
320 gint active_marks = 0;
3f14da3c3b9a Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents: 263
diff changeset
321 gint mark;
275
dc69ea2dcf76 fixed histogram label
nadvornik
parents: 273
diff changeset
322 gchar *text2;
263
c7fefb0a4b78 Display marks in overlay info only if at least one is set.
zas_
parents: 245
diff changeset
323
c7fefb0a4b78 Display marks in overlay info only if at least one is set.
zas_
parents: 245
diff changeset
324 for (mark = 0; mark < FILEDATA_MARKS_SIZE; mark++)
c7fefb0a4b78 Display marks in overlay info only if at least one is set.
zas_
parents: 245
diff changeset
325 {
265
3f14da3c3b9a Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents: 263
diff changeset
326 active_marks += fd->marks[mark];
3f14da3c3b9a Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents: 263
diff changeset
327 }
263
c7fefb0a4b78 Display marks in overlay info only if at least one is set.
zas_
parents: 245
diff changeset
328
275
dc69ea2dcf76 fixed histogram label
nadvornik
parents: 273
diff changeset
329 if (with_hist)
dc69ea2dcf76 fixed histogram label
nadvornik
parents: 273
diff changeset
330 {
dc69ea2dcf76 fixed histogram label
nadvornik
parents: 273
diff changeset
331 text2 = g_strdup_printf("%s\n%s", text, histogram_label(lw->histogram));
dc69ea2dcf76 fixed histogram label
nadvornik
parents: 273
diff changeset
332 g_free(text);
dc69ea2dcf76 fixed histogram label
nadvornik
parents: 273
diff changeset
333 text = text2;
dc69ea2dcf76 fixed histogram label
nadvornik
parents: 273
diff changeset
334 }
dc69ea2dcf76 fixed histogram label
nadvornik
parents: 273
diff changeset
335
265
3f14da3c3b9a Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents: 263
diff changeset
336 if (active_marks > 0)
3f14da3c3b9a Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents: 263
diff changeset
337 {
3f14da3c3b9a Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents: 263
diff changeset
338 GString *buf = g_string_sized_new(FILEDATA_MARKS_SIZE * 2);
3f14da3c3b9a Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents: 263
diff changeset
339
3f14da3c3b9a Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents: 263
diff changeset
340 for (mark = 0; mark < FILEDATA_MARKS_SIZE; mark++)
3f14da3c3b9a Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents: 263
diff changeset
341 {
3f14da3c3b9a Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents: 263
diff changeset
342 g_string_append_printf(buf, fd->marks[mark] ? " <span background='#FF00FF'>%c</span>" : " %c", '1' + mark);
3f14da3c3b9a Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents: 263
diff changeset
343 }
3f14da3c3b9a Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents: 263
diff changeset
344
275
dc69ea2dcf76 fixed histogram label
nadvornik
parents: 273
diff changeset
345 text2 = g_strdup_printf("%s\n%s", text, buf->str);
265
3f14da3c3b9a Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents: 263
diff changeset
346 g_string_free(buf, TRUE);
3f14da3c3b9a Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents: 263
diff changeset
347 g_free(text);
275
dc69ea2dcf76 fixed histogram label
nadvornik
parents: 273
diff changeset
348 text = text2;
265
3f14da3c3b9a Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents: 263
diff changeset
349 }
275
dc69ea2dcf76 fixed histogram label
nadvornik
parents: 273
diff changeset
350
263
c7fefb0a4b78 Display marks in overlay info only if at least one is set.
zas_
parents: 245
diff changeset
351 }
155
d06bccc7551e show active marks in image overlay
nadvornik
parents: 133
diff changeset
352 }
133
532c42d5ed4d compilation fix
bruclik
parents: 132
diff changeset
353
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
354 layout = gtk_widget_create_pango_layout(imd->pr, NULL);
275
dc69ea2dcf76 fixed histogram label
nadvornik
parents: 273
diff changeset
355 pango_layout_set_markup(layout, text, -1);
dc69ea2dcf76 fixed histogram label
nadvornik
parents: 273
diff changeset
356 g_free(text);
133
532c42d5ed4d compilation fix
bruclik
parents: 132
diff changeset
357
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
358 pango_layout_get_pixel_size(layout, &width, &height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
359
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
360 width += 10;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
361 height += 10;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
362
273
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
363 if (with_hist)
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
364 {
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
365 histogram_read(lw->histogram, imgpixbuf);
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
366 if (width < 266) width = 266;
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
367 height += 256;
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
368 }
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
369
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
370
218
f4a0555794a9 Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents: 216
diff changeset
371 /* TODO: make osd color configurable --Zas */
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
372 pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, width, height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
373 pixbuf_set_rect_fill(pixbuf, 3, 3, width-6, height-6, 240, 240, 240, 210);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
374 pixbuf_set_rect(pixbuf, 0, 0, width, height, 240, 240, 240, 80, 1, 1, 1, 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
375 pixbuf_set_rect(pixbuf, 1, 1, width-2, height-2, 240, 240, 240, 130, 1, 1, 1, 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
376 pixbuf_set_rect(pixbuf, 2, 2, width-4, height-4, 240, 240, 240, 180, 1, 1, 1, 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
377 pixbuf_pixel_set(pixbuf, 0, 0, 0, 0, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
378 pixbuf_pixel_set(pixbuf, width - 1, 0, 0, 0, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
379 pixbuf_pixel_set(pixbuf, 0, height - 1, 0, 0, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
380 pixbuf_pixel_set(pixbuf, width - 1, height - 1, 0, 0, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
381
273
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
382 if (with_hist)
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
383 histogram_draw(lw->histogram, pixbuf, 0, 0, width, height);
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
384
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
385 pixbuf_draw_layout(pixbuf, layout, imd->pr, 5, 5, 0, 0, 0, 255);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
386
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
387 g_object_unref(G_OBJECT(layout));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
388
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
389 return pixbuf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
390 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
391
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
392 static GdkPixbuf *image_osd_icon_pixbuf(ImageOSDFlag flag)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
393 {
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
394 static GdkPixbuf **icons = NULL;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
395 GdkPixbuf *icon = NULL;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
396
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
397 if (!icons) icons = g_new0(GdkPixbuf *, IMAGE_OSD_COUNT);
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
398 if (icons[flag]) return icons[flag];
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
399
122
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
400 if (osd_icons[flag].key)
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
401 {
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
402 icon = pixbuf_inline(osd_icons[flag].key);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
403 }
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
404
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
405 if (!icon)
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
406 {
122
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
407 icon = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 24, 24);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
408 pixbuf_set_rect_fill(icon, 1, 1, 22, 22, 255, 255, 255, 200);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
409 pixbuf_set_rect(icon, 0, 0, 24, 24, 0, 0, 0, 128, 1, 1, 1, 1);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
410 switch (flag)
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
411 {
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
412 case IMAGE_OSD_ROTATE_AUTO:
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
413 pixbuf_set_rect(icon, 3, 8, 11, 12,
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
414 0, 0, 0, 255,
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
415 3, 0, 3, 0);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
416 pixbuf_draw_triangle(icon, 14, 3, 6, 12,
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
417 20, 9, 14, 15, 14, 3,
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
418 0, 0, 0, 255);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
419 break;
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
420 case IMAGE_OSD_ROTATE_USER:
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
421 break;
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
422 case IMAGE_OSD_COLOR:
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
423 pixbuf_set_rect_fill(icon, 3, 3, 18, 6, 200, 0, 0, 255);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
424 pixbuf_set_rect_fill(icon, 3, 9, 18, 6, 0, 200, 0, 255);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
425 pixbuf_set_rect_fill(icon, 3, 15, 18, 6, 0, 0, 200, 255);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
426 break;
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
427 case IMAGE_OSD_FIRST:
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
428 pixbuf_set_rect(icon, 3, 3, 18, 18, 0, 0, 0, 200, 3, 3, 3, 0);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
429 pixbuf_draw_triangle(icon, 6, 5, 12, 6,
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
430 12, 5, 18, 11, 6, 11,
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
431 0, 0, 0, 255);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
432 break;
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
433 case IMAGE_OSD_LAST:
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
434 pixbuf_set_rect(icon, 3, 3, 18, 18, 0, 0, 0, 200, 3, 3, 0, 3);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
435 pixbuf_draw_triangle(icon, 6, 12, 12, 6,
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
436 12, 18, 6, 12, 18, 12,
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
437 0, 0, 0, 255);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
438 break;
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
439 case IMAGE_OSD_ICON:
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
440 pixbuf_set_rect_fill(icon, 11, 3, 3, 12, 0, 0, 0, 255);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
441 pixbuf_set_rect_fill(icon, 11, 17, 3, 3, 0, 0, 0, 255);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
442 break;
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
443 default:
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
444 break;
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
445 }
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
446 }
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
447
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
448 icons[flag] = icon;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
449
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
450 return icon;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
451 }
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
452
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
453 static void image_osd_icon_show(OverlayStateData *osd, ImageOSDFlag flag)
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
454 {
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
455 GdkPixbuf *pixbuf;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
456
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
457 if (osd->icon_id[flag]) return;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
458
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
459 pixbuf = image_osd_icon_pixbuf(flag);
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
460 if (!pixbuf) return;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
461
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
462 osd->icon_id[flag] = image_overlay_add(osd->imd, pixbuf,
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
463 osd_icons[flag].x, osd_icons[flag].y,
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
464 TRUE, FALSE);
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
465 }
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
466
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
467 static void image_osd_icon_hide(OverlayStateData *osd, ImageOSDFlag flag)
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
468 {
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
469 if (osd->icon_id[flag])
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
470 {
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
471 image_overlay_remove(osd->imd, osd->icon_id[flag]);
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
472 osd->icon_id[flag] = 0;
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
473 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
474 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
475
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
476 static gint image_osd_update_cb(gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
477 {
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
478 OverlayStateData *osd = data;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
479
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
480 if (osd->show_info)
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
481 {
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
482 if (osd->changed_states & IMAGE_STATE_IMAGE)
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
483 {
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
484 GdkPixbuf *pixbuf;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
485
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
486 pixbuf = image_osd_info_render(osd->imd);
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
487 if (osd->ovl_info == 0)
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
488 {
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
489 osd->ovl_info = image_overlay_add(osd->imd, pixbuf,
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
490 OSD_INFO_X, OSD_INFO_Y, TRUE, FALSE);
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
491 }
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
492 else
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
493 {
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
494 image_overlay_set(osd->imd, osd->ovl_info, pixbuf, OSD_INFO_X, OSD_INFO_Y);
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
495 }
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
496 g_object_unref(pixbuf);
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
497 }
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
498 }
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
499 else
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
500 {
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
501 if (osd->ovl_info)
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
502 {
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
503 image_overlay_remove(osd->imd, osd->ovl_info);
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
504 osd->ovl_info = 0;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
505 }
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
506 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
507
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
508 if (osd->show_status)
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
509 {
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
510 gint i;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
511
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
512 if (osd->changed_states & IMAGE_STATE_IMAGE)
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
513 {
122
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
514 for (i = 0; i < IMAGE_OSD_COUNT; i++)
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
515 {
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
516 if (osd_icons[i].reset) osd->icon_time[i] = 0;
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
517 }
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
518 }
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
519
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
520 if (osd->changed_states & IMAGE_STATE_COLOR_ADJ)
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
521 {
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
522 osd->icon_time[IMAGE_OSD_COLOR] = IMAGE_OSD_DEFAULT_DURATION + 1;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
523 image_osd_timer_schedule(osd);
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
524 }
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
525
122
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
526 if (osd->changed_states & IMAGE_STATE_ROTATE_AUTO)
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
527 {
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
528 gint n = 0;
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
529
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
530 if (osd->imd->state & IMAGE_STATE_ROTATE_AUTO)
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
531 {
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
532 n = 1;
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
533 if (!osd->imd->cm) n += IMAGE_OSD_DEFAULT_DURATION;
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
534 }
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
535
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
536 osd->icon_time[IMAGE_OSD_ROTATE_AUTO] = n;
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
537 image_osd_timer_schedule(osd);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
538 }
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 118
diff changeset
539
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
540 for (i = 0; i < IMAGE_OSD_COUNT; i++)
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
541 {
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
542 if (osd->icon_time[i] > 0)
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
543 {
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
544 image_osd_icon_show(osd, i);
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
545 }
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
546 else
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
547 {
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
548 image_osd_icon_hide(osd, i);
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
549 }
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
550 }
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
551 }
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
552 else
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
553 {
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
554 gint i;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
555
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
556 for (i = 0; i < IMAGE_OSD_COUNT; i++)
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
557 {
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
558 image_osd_icon_hide(osd, i);
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
559 }
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
560 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
561
273
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
562 if (osd->imd->il && osd->imd->il->done)
e0e2c2b72c5a reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents: 265
diff changeset
563 osd->changed_states = IMAGE_STATE_NONE;
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
564 osd->idle_id = -1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
565 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
566 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
567
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
568 static void image_osd_update_schedule(OverlayStateData *osd, gint force)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
569 {
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
570 if (force) osd->changed_states |= IMAGE_STATE_IMAGE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
571
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
572 if (osd->idle_id == -1)
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
573 {
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
574 osd->idle_id = g_idle_add_full(G_PRIORITY_HIGH, image_osd_update_cb, osd, NULL);
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
575 }
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
576 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
577
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
578 void image_osd_update(ImageWindow *imd)
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
579 {
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
580 OverlayStateData *osd;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
581
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
582 if (!imd) return;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
583
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
584 osd = g_object_get_data(G_OBJECT(imd->pr), "IMAGE_OVERLAY_DATA");
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
585 if (!osd) return;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
586
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
587 image_osd_update_schedule(osd, TRUE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
588 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
589
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
590 static gint image_osd_timer_cb(gpointer data)
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
591 {
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
592 OverlayStateData *osd = data;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
593 gint done = TRUE;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
594 gint changed = FALSE;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
595 gint i;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
596
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
597 for (i = 0; i < IMAGE_OSD_COUNT; i++)
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
598 {
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
599 if (osd->icon_time[i] > 1)
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
600 {
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
601 osd->icon_time[i]--;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
602 if (osd->icon_time[i] < 2)
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
603 {
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
604 osd->icon_time[i] = 0;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
605 changed = TRUE;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
606 }
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
607 else
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
608 {
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
609 done = FALSE;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
610 }
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
611 }
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
612 }
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
613
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
614 if (changed) image_osd_update_schedule(osd, FALSE);
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
615
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
616 if (done)
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
617 {
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
618 osd->timer_id = -1;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
619 return FALSE;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
620 }
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
621
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
622 return TRUE;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
623 }
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
624
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
625 static void image_osd_timer_schedule(OverlayStateData *osd)
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
626 {
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
627 if (osd->timer_id == -1)
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
628 {
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
629 osd->timer_id = g_timeout_add(100, image_osd_timer_cb, osd);
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
630 }
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
631 }
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
632
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
633 static void image_osd_state_cb(ImageWindow *imd, ImageState state, gpointer data)
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
634 {
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
635 OverlayStateData *osd = data;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
636
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
637 osd->changed_states |= state;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
638 image_osd_update_schedule(osd, FALSE);
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
639 }
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
640
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
641 static void image_osd_free(OverlayStateData *osd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
642 {
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
643 if (!osd) return;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
644
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
645 if (osd->idle_id != -1) g_source_remove(osd->idle_id);
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
646 if (osd->timer_id != -1) g_source_remove(osd->timer_id);
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
647
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
648 if (osd->imd)
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
649 {
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
650 gint i;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
651
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
652 g_object_set_data(G_OBJECT(osd->imd->pr), "IMAGE_OVERLAY_DATA", NULL);
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
653 g_signal_handler_disconnect(osd->imd->pr, osd->destroy_id);
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
654
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
655 image_set_state_func(osd->imd, NULL, NULL);
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
656 image_overlay_remove(osd->imd, osd->ovl_info);
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
657
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
658 for (i = 0; i < IMAGE_OSD_COUNT; i++)
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
659 {
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
660 image_osd_icon_hide(osd, i);
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
661 }
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
662 }
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
663
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
664 g_free(osd);
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
665 }
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
666
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
667 static void image_osd_remove(ImageWindow *imd)
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
668 {
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
669 OverlayStateData *osd;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
670
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
671 osd = g_object_get_data(G_OBJECT(imd->pr), "IMAGE_OVERLAY_DATA");
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
672 image_osd_free(osd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
673 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
674
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
675 static void image_osd_destroy_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
676 {
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
677 OverlayStateData *osd = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
678
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
679 osd->imd = NULL;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
680 image_osd_free(osd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
681 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
682
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
683 static void image_osd_enable(ImageWindow *imd, gint info, gint status)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
684 {
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
685 OverlayStateData *osd;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
686
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
687 osd = g_object_get_data(G_OBJECT(imd->pr), "IMAGE_OVERLAY_DATA");
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
688 if (!osd)
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
689 {
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
690 osd = g_new0(OverlayStateData, 1);
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
691 osd->imd = imd;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
692 osd->idle_id = -1;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
693 osd->timer_id = -1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
694
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
695 osd->destroy_id = g_signal_connect(G_OBJECT(imd->pr), "destroy",
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
696 G_CALLBACK(image_osd_destroy_cb), osd);
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
697 g_object_set_data(G_OBJECT(imd->pr), "IMAGE_OVERLAY_DATA", osd);
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
698
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
699 image_set_state_func(osd->imd, image_osd_state_cb, osd);
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
700 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
701
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
702 if (osd->show_info != info ||
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
703 osd->show_status != status)
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
704 {
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
705 osd->show_info = info;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
706 osd->show_status = status;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
707
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
708 image_osd_update_schedule(osd, TRUE);
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
709 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
710 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
711
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
712 void image_osd_set(ImageWindow *imd, gint info, gint status)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
713 {
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
714 if (!imd) return;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
715
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
716 if (!info && !status)
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
717 {
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
718 image_osd_remove(imd);
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
719 return;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
720 }
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
721
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
722 image_osd_enable(imd, info, status);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
723 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
724
117
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
725 gint image_osd_get(ImageWindow *imd, gint *info, gint *status)
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
726 {
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
727 OverlayStateData *osd;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
728
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
729 if (!imd) return FALSE;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
730
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
731 osd = g_object_get_data(G_OBJECT(imd->pr), "IMAGE_OVERLAY_DATA");
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
732 if (!osd) return FALSE;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
733
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
734 if (info) *info = osd->show_info;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
735 if (status) *status = osd->show_status;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
736
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
737 return TRUE;
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
738 }
0c2e1f0a001b Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
739
118
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
740 /* duration:
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
741 0 = hide
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
742 1 = show
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
743 2+ = show for duration tenths of a second
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
744 -1 = use default duration
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
745 */
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
746 void image_osd_icon(ImageWindow *imd, ImageOSDFlag flag, gint duration)
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
747 {
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
748 OverlayStateData *osd;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
749
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
750 if (!imd) return;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
751
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
752 osd = g_object_get_data(G_OBJECT(imd->pr), "IMAGE_OVERLAY_DATA");
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
753 if (!osd) return;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
754
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
755 if (flag < IMAGE_OSD_NONE || flag >= IMAGE_OSD_COUNT) return;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
756 if (duration < 0) duration = IMAGE_OSD_DEFAULT_DURATION;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
757 if (duration > 1) duration += 1;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
758
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
759 osd->icon_time[flag] = duration;
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
760
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
761 image_osd_update_schedule(osd, FALSE);
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
762 image_osd_timer_schedule(osd);
ac0f7f942c4d Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
763 }