Mercurial > geeqie
annotate src/image-overlay.c @ 1260:51dec1b35246
Add -Wformat and -Wformat-security gcc options when --enable-debug-flags is set, move default optimization to -O2 by default (-O0 is only useful for specific debugging purposes).
author | zas_ |
---|---|
date | Mon, 26 Jan 2009 08:36:23 +0000 |
parents | 947e603a52c6 |
children | 8b89e3ff286b |
rev | line source |
---|---|
9 | 1 /* |
196 | 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 |
475 | 4 * Copyright (C) 2008 The Geeqie Team |
9 | 5 * |
6 * Author: John Ellis | |
7 * | |
8 * This software is released under the GNU General Public License (GNU GPL). | |
9 * Please read the included file COPYING for more information. | |
10 * This software comes with no warranty of any kind, use at your own risk! | |
11 */ | |
12 | |
281 | 13 #include "main.h" |
9 | 14 #include "image-overlay.h" |
15 | |
16 #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
|
17 #include "exif.h" |
586 | 18 #include "filedata.h" |
622 | 19 #include "histogram.h" |
9 | 20 #include "image.h" |
21 #include "img-view.h" | |
22 #include "layout.h" | |
1178
f6449c17306b
Move comments/keywords read and write stuff to new metadata.{c,h}.
zas_
parents:
1177
diff
changeset
|
23 #include "metadata.h" |
23
17acca639a86
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
24 #include "pixbuf-renderer.h" |
9 | 25 #include "pixbuf_util.h" |
622 | 26 #include "ui_fileops.h" |
1011 | 27 #include "image-load.h" |
9 | 28 |
29 /* | |
30 *---------------------------------------------------------------------------- | |
31 * image overlay | |
32 *---------------------------------------------------------------------------- | |
33 */ | |
34 | |
614 | 35 |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
36 typedef struct _OverlayStateData OverlayStateData; |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
37 struct _OverlayStateData { |
9 | 38 ImageWindow *imd; |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
39 ImageState changed_states; |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
40 |
616
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
41 Histogram *histogram; |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
42 |
614 | 43 OsdShowFlags show; |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
44 |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
45 gint ovl_info; |
822
df541dc41707
Allow to set image overlay info position through options:
zas_
parents:
821
diff
changeset
|
46 |
df541dc41707
Allow to set image overlay info position through options:
zas_
parents:
821
diff
changeset
|
47 gint x; |
df541dc41707
Allow to set image overlay info position through options:
zas_
parents:
821
diff
changeset
|
48 gint y; |
118
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
49 |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
50 gint icon_time[IMAGE_OSD_COUNT]; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
51 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
|
52 |
9 | 53 gint idle_id; |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
54 gint timer_id; |
9 | 55 gulong destroy_id; |
56 }; | |
57 | |
118
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 typedef struct _OSDIcon OSDIcon; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
60 struct _OSDIcon { |
122
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
61 gint reset; /* reset on new image */ |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
62 gint x; /* x, y offset */ |
118
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
63 gint y; |
122
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
64 gchar *key; /* inline pixbuf */ |
118
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
65 }; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
66 |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
67 static OSDIcon osd_icons[] = { |
122
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
68 { TRUE, 0, 0, NULL }, /* none */ |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
69 { TRUE, -10, -10, NULL }, /* auto rotated */ |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
70 { TRUE, -10, -10, NULL }, /* user rotated */ |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
71 { TRUE, -40, -10, NULL }, /* color embedded */ |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
72 { TRUE, -70, -10, NULL }, /* first image */ |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
73 { TRUE, -70, -10, NULL }, /* last image */ |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
74 { FALSE, -70, -10, NULL }, /* osd enabled */ |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
75 { FALSE, 0, 0, NULL } |
118
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
76 }; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
77 |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
78 #define OSD_DATA "overlay-data" |
9 | 79 |
118
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
80 #define IMAGE_OSD_DEFAULT_DURATION 30 |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
81 |
290 | 82 #define HISTOGRAM_HEIGHT 140 |
620 | 83 #define HISTOGRAM_WIDTH 256 |
469
a05c72927e23
Rename few functions and replace fullscreen info with image overlay template string.
zas_
parents:
468
diff
changeset
|
84 |
481
67a612985686
Merge view_overlay_toggle() and layout_image_overlay_toggle() into new image_osd_toggle().
zas_
parents:
480
diff
changeset
|
85 static void image_osd_timer_schedule(OverlayStateData *osd); |
67a612985686
Merge view_overlay_toggle() and layout_image_overlay_toggle() into new image_osd_toggle().
zas_
parents:
480
diff
changeset
|
86 |
733
57f759d012c7
Modify set_default_image_overlay_template_string() to accept the pointer to
zas_
parents:
671
diff
changeset
|
87 void set_image_overlay_template_string(gchar **template_string, const gchar *value) |
469
a05c72927e23
Rename few functions and replace fullscreen info with image overlay template string.
zas_
parents:
468
diff
changeset
|
88 { |
733
57f759d012c7
Modify set_default_image_overlay_template_string() to accept the pointer to
zas_
parents:
671
diff
changeset
|
89 g_assert(template_string); |
57f759d012c7
Modify set_default_image_overlay_template_string() to accept the pointer to
zas_
parents:
671
diff
changeset
|
90 |
57f759d012c7
Modify set_default_image_overlay_template_string() to accept the pointer to
zas_
parents:
671
diff
changeset
|
91 g_free(*template_string); |
57f759d012c7
Modify set_default_image_overlay_template_string() to accept the pointer to
zas_
parents:
671
diff
changeset
|
92 *template_string = g_strdup(value); |
57f759d012c7
Modify set_default_image_overlay_template_string() to accept the pointer to
zas_
parents:
671
diff
changeset
|
93 } |
57f759d012c7
Modify set_default_image_overlay_template_string() to accept the pointer to
zas_
parents:
671
diff
changeset
|
94 |
57f759d012c7
Modify set_default_image_overlay_template_string() to accept the pointer to
zas_
parents:
671
diff
changeset
|
95 |
57f759d012c7
Modify set_default_image_overlay_template_string() to accept the pointer to
zas_
parents:
671
diff
changeset
|
96 void set_default_image_overlay_template_string(gchar **template_string) |
57f759d012c7
Modify set_default_image_overlay_template_string() to accept the pointer to
zas_
parents:
671
diff
changeset
|
97 { |
57f759d012c7
Modify set_default_image_overlay_template_string() to accept the pointer to
zas_
parents:
671
diff
changeset
|
98 set_image_overlay_template_string(template_string, DEFAULT_OVERLAY_INFO); |
469
a05c72927e23
Rename few functions and replace fullscreen info with image overlay template string.
zas_
parents:
468
diff
changeset
|
99 } |
a05c72927e23
Rename few functions and replace fullscreen info with image overlay template string.
zas_
parents:
468
diff
changeset
|
100 |
615
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
101 static OverlayStateData *image_get_osd_data(ImageWindow *imd) |
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
102 { |
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
103 OverlayStateData *osd; |
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
104 |
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
105 if (!imd) return NULL; |
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
106 |
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
107 g_assert(imd->pr); |
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
108 |
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
109 osd = g_object_get_data(G_OBJECT(imd->pr), "IMAGE_OVERLAY_DATA"); |
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
110 return osd; |
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
111 } |
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
112 |
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
113 static void image_set_osd_data(ImageWindow *imd, OverlayStateData *osd) |
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
114 { |
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
115 g_assert(imd); |
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
116 g_assert(imd->pr); |
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
117 g_object_set_data(G_OBJECT(imd->pr), "IMAGE_OVERLAY_DATA", osd); |
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
118 } |
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
119 |
273
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
265
diff
changeset
|
120 /* |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
265
diff
changeset
|
121 *---------------------------------------------------------------------------- |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
265
diff
changeset
|
122 * image histogram |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
265
diff
changeset
|
123 *---------------------------------------------------------------------------- |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
265
diff
changeset
|
124 */ |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
265
diff
changeset
|
125 |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
265
diff
changeset
|
126 |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
265
diff
changeset
|
127 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
|
128 { |
616
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
129 OverlayStateData *osd = image_get_osd_data(imd); |
613
d06f422a6673
image_osd_histogram_chan_toggle(), image_osd_histogram_log_toggle():
zas_
parents:
586
diff
changeset
|
130 |
616
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
131 if (!osd || !osd->histogram) return; |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
132 |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
133 histogram_set_channel(osd->histogram, (histogram_get_channel(osd->histogram) +1)%HCHAN_COUNT); |
613
d06f422a6673
image_osd_histogram_chan_toggle(), image_osd_histogram_log_toggle():
zas_
parents:
586
diff
changeset
|
134 image_osd_update(imd); |
273
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
265
diff
changeset
|
135 } |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
265
diff
changeset
|
136 |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
265
diff
changeset
|
137 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
|
138 { |
616
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
139 OverlayStateData *osd = image_get_osd_data(imd); |
613
d06f422a6673
image_osd_histogram_chan_toggle(), image_osd_histogram_log_toggle():
zas_
parents:
586
diff
changeset
|
140 |
616
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
141 if (!osd || !osd->histogram) return; |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
142 |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
143 histogram_set_mode(osd->histogram, !histogram_get_mode(osd->histogram)); |
613
d06f422a6673
image_osd_histogram_chan_toggle(), image_osd_histogram_log_toggle():
zas_
parents:
586
diff
changeset
|
144 image_osd_update(imd); |
273
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
265
diff
changeset
|
145 } |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
265
diff
changeset
|
146 |
481
67a612985686
Merge view_overlay_toggle() and layout_image_overlay_toggle() into new image_osd_toggle().
zas_
parents:
480
diff
changeset
|
147 void image_osd_toggle(ImageWindow *imd) |
67a612985686
Merge view_overlay_toggle() and layout_image_overlay_toggle() into new image_osd_toggle().
zas_
parents:
480
diff
changeset
|
148 { |
616
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
149 OverlayStateData *osd; |
503
e5023cced4e5
Fix image overlay displayed only on second "I" press in layout view.
zas_
parents:
483
diff
changeset
|
150 |
616
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
151 if (!imd) return; |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
152 |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
153 osd = image_get_osd_data(imd); |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
154 if (!osd) |
481
67a612985686
Merge view_overlay_toggle() and layout_image_overlay_toggle() into new image_osd_toggle().
zas_
parents:
480
diff
changeset
|
155 { |
616
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
156 image_osd_set(imd, OSD_SHOW_INFO | OSD_SHOW_STATUS); |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
157 return; |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
158 } |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
159 |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
160 if (osd->show != OSD_SHOW_NOTHING) |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
161 { |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
162 if (osd->show & OSD_SHOW_HISTOGRAM) |
481
67a612985686
Merge view_overlay_toggle() and layout_image_overlay_toggle() into new image_osd_toggle().
zas_
parents:
480
diff
changeset
|
163 { |
616
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
164 image_osd_set(imd, OSD_SHOW_NOTHING); |
481
67a612985686
Merge view_overlay_toggle() and layout_image_overlay_toggle() into new image_osd_toggle().
zas_
parents:
480
diff
changeset
|
165 } |
67a612985686
Merge view_overlay_toggle() and layout_image_overlay_toggle() into new image_osd_toggle().
zas_
parents:
480
diff
changeset
|
166 else |
67a612985686
Merge view_overlay_toggle() and layout_image_overlay_toggle() into new image_osd_toggle().
zas_
parents:
480
diff
changeset
|
167 { |
616
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
168 image_osd_set(imd, osd->show | OSD_SHOW_HISTOGRAM); |
481
67a612985686
Merge view_overlay_toggle() and layout_image_overlay_toggle() into new image_osd_toggle().
zas_
parents:
480
diff
changeset
|
169 } |
67a612985686
Merge view_overlay_toggle() and layout_image_overlay_toggle() into new image_osd_toggle().
zas_
parents:
480
diff
changeset
|
170 } |
67a612985686
Merge view_overlay_toggle() and layout_image_overlay_toggle() into new image_osd_toggle().
zas_
parents:
480
diff
changeset
|
171 } |
118
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
172 |
650
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
173 static gchar *keywords_to_string(FileData *fd) |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
174 { |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
175 GList *keywords; |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
176 GString *kwstr = NULL; |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
177 gchar *ret = NULL; |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
178 |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
179 g_assert(fd); |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
180 |
1238
947e603a52c6
simplified metadata interface, dropped metadata_read,
nadvornik
parents:
1191
diff
changeset
|
181 keywords = metadata_read_list(fd, KEYWORD_KEY); |
947e603a52c6
simplified metadata interface, dropped metadata_read,
nadvornik
parents:
1191
diff
changeset
|
182 |
947e603a52c6
simplified metadata interface, dropped metadata_read,
nadvornik
parents:
1191
diff
changeset
|
183 if (keywords) |
650
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
184 { |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
185 GList *work = keywords; |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
186 |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
187 while (work) |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
188 { |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
189 gchar *kw = work->data; |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
190 work = work->next; |
995 | 191 |
650
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
192 if (!kw) continue; |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
193 if (!kwstr) |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
194 kwstr = g_string_new(""); |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
195 else |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
196 g_string_append(kwstr, ", "); |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
197 |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
198 g_string_append(kwstr, kw); |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
199 } |
1238
947e603a52c6
simplified metadata interface, dropped metadata_read,
nadvornik
parents:
1191
diff
changeset
|
200 string_list_free(keywords); |
650
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
201 } |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
202 |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
203 if (kwstr) |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
204 { |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
205 ret = kwstr->str; |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
206 g_string_free(kwstr, FALSE); |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
207 } |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
208 |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
209 return ret; |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
210 } |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
211 |
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
|
212 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
|
213 { |
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
|
214 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
|
215 gchar *start, *end; |
736 | 216 guint pos, prev; |
866
c879a9a4f186
image_osd_mkinfo(): pipe replacement by " - " separator was fixed to work correctly with
zas_
parents:
865
diff
changeset
|
217 gboolean want_separator = FALSE; |
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
|
218 gchar *name, *data; |
410 | 219 GString *new; |
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
|
220 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
|
221 |
410 | 222 if (!str || !*str) return g_strdup(""); |
442 | 223 |
410 | 224 new = g_string_new(str); |
225 | |
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
|
226 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
|
227 |
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
|
228 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
|
229 { |
736 | 230 guint limit = 0; |
298
cb93a982fcdd
Add the possibility to truncate overlay infos displayed:
zas_
parents:
290
diff
changeset
|
231 gchar *trunc = NULL; |
622 | 232 gchar *limpos = NULL; |
233 gchar *extra = NULL; | |
234 gchar *extrapos = NULL; | |
298
cb93a982fcdd
Add the possibility to truncate overlay infos displayed:
zas_
parents:
290
diff
changeset
|
235 gchar *p; |
cb93a982fcdd
Add the possibility to truncate overlay infos displayed:
zas_
parents:
290
diff
changeset
|
236 |
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
|
237 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
|
238 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
|
239 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
|
240 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
|
241 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
|
242 break; |
442 | 243 |
622 | 244 /* Search for optionnal modifiers |
245 * %name:99:extra% -> name = "name", limit=99, extra = "extra" | |
246 */ | |
247 for (p = start + 1; p < end; p++) | |
298
cb93a982fcdd
Add the possibility to truncate overlay infos displayed:
zas_
parents:
290
diff
changeset
|
248 { |
622 | 249 if (p[0] == ':') |
298
cb93a982fcdd
Add the possibility to truncate overlay infos displayed:
zas_
parents:
290
diff
changeset
|
250 { |
622 | 251 if (g_ascii_isdigit(p[1]) && !limpos) |
252 { | |
253 limpos = p + 1; | |
254 if (!trunc) trunc = p; | |
255 } | |
256 else | |
257 { | |
258 extrapos = p + 1; | |
259 if (!trunc) trunc = p; | |
260 break; | |
261 } | |
298
cb93a982fcdd
Add the possibility to truncate overlay infos displayed:
zas_
parents:
290
diff
changeset
|
262 } |
cb93a982fcdd
Add the possibility to truncate overlay infos displayed:
zas_
parents:
290
diff
changeset
|
263 } |
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
|
264 |
622 | 265 if (limpos) |
736 | 266 limit = (guint) atoi(limpos); |
298
cb93a982fcdd
Add the possibility to truncate overlay infos displayed:
zas_
parents:
290
diff
changeset
|
267 |
622 | 268 if (extrapos) |
269 extra = g_strndup(extrapos, end - extrapos); | |
270 | |
271 name = g_strndup(start+1, (trunc ? trunc : end)-start-1); | |
650
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
272 pos = start - new->str; |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
273 data = NULL; |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
274 |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
275 if (strcmp(name, "keywords") == 0) |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
276 { |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
277 data = keywords_to_string(imd->image_fd); |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
278 } |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
279 else if (strcmp(name, "comment") == 0) |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
280 { |
1238
947e603a52c6
simplified metadata interface, dropped metadata_read,
nadvornik
parents:
1191
diff
changeset
|
281 data = metadata_read_string(imd->image_fd, COMMENT_KEY); |
650
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
282 } |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
283 else |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
284 { |
995 | 285 /* |
865
8d0c91a0f461
do not read keywords and comment between exif_read_fd and exif_free_fd
nadvornik
parents:
862
diff
changeset
|
286 keywords and comment can't be read between exif_read_fd and exif_free_fd calls |
8d0c91a0f461
do not read keywords and comment between exif_read_fd and exif_free_fd
nadvornik
parents:
862
diff
changeset
|
287 because fd->exif does not count references |
8d0c91a0f461
do not read keywords and comment between exif_read_fd and exif_free_fd
nadvornik
parents:
862
diff
changeset
|
288 on the other hand, it is OK to call it in the loop because it is cached |
8d0c91a0f461
do not read keywords and comment between exif_read_fd and exif_free_fd
nadvornik
parents:
862
diff
changeset
|
289 */ |
8d0c91a0f461
do not read keywords and comment between exif_read_fd and exif_free_fd
nadvornik
parents:
862
diff
changeset
|
290 |
8d0c91a0f461
do not read keywords and comment between exif_read_fd and exif_free_fd
nadvornik
parents:
862
diff
changeset
|
291 ExifData *exif; |
8d0c91a0f461
do not read keywords and comment between exif_read_fd and exif_free_fd
nadvornik
parents:
862
diff
changeset
|
292 exif = exif_read_fd(imd->image_fd); |
8d0c91a0f461
do not read keywords and comment between exif_read_fd and exif_free_fd
nadvornik
parents:
862
diff
changeset
|
293 |
650
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
294 data = g_strdup(g_hash_table_lookup(vars, name)); |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
295 if (data && strcmp(name, "zoom") == 0) imd->overlay_show_zoom = TRUE; |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
296 if (!data && exif) |
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
297 data = exif_get_data_as_text(exif, name); |
865
8d0c91a0f461
do not read keywords and comment between exif_read_fd and exif_free_fd
nadvornik
parents:
862
diff
changeset
|
298 exif_free_fd(imd->image_fd, exif); |
650
02e2c135ee0c
Keywords and comment can now be displayed in OSD info using %keywords% and %comment%.
zas_
parents:
622
diff
changeset
|
299 } |
866
c879a9a4f186
image_osd_mkinfo(): pipe replacement by " - " separator was fixed to work correctly with
zas_
parents:
865
diff
changeset
|
300 |
299 | 301 if (data && *data && limit > 0 && strlen(data) > limit + 3) |
298
cb93a982fcdd
Add the possibility to truncate overlay infos displayed:
zas_
parents:
290
diff
changeset
|
302 { |
cb93a982fcdd
Add the possibility to truncate overlay infos displayed:
zas_
parents:
290
diff
changeset
|
303 gchar *new_data = g_strdup_printf("%-*.*s...", limit, limit, data); |
cb93a982fcdd
Add the possibility to truncate overlay infos displayed:
zas_
parents:
290
diff
changeset
|
304 g_free(data); |
cb93a982fcdd
Add the possibility to truncate overlay infos displayed:
zas_
parents:
290
diff
changeset
|
305 data = new_data; |
cb93a982fcdd
Add the possibility to truncate overlay infos displayed:
zas_
parents:
290
diff
changeset
|
306 } |
622 | 307 |
483
c9e3baeda1b1
Correctly escape data before using pango_layout_set_markup().
zas_
parents:
482
diff
changeset
|
308 if (data) |
c9e3baeda1b1
Correctly escape data before using pango_layout_set_markup().
zas_
parents:
482
diff
changeset
|
309 { |
c9e3baeda1b1
Correctly escape data before using pango_layout_set_markup().
zas_
parents:
482
diff
changeset
|
310 /* Since we use pango markup to display, we need to escape here */ |
c9e3baeda1b1
Correctly escape data before using pango_layout_set_markup().
zas_
parents:
482
diff
changeset
|
311 gchar *escaped = g_markup_escape_text(data, -1); |
c9e3baeda1b1
Correctly escape data before using pango_layout_set_markup().
zas_
parents:
482
diff
changeset
|
312 g_free(data); |
c9e3baeda1b1
Correctly escape data before using pango_layout_set_markup().
zas_
parents:
482
diff
changeset
|
313 data = escaped; |
c9e3baeda1b1
Correctly escape data before using pango_layout_set_markup().
zas_
parents:
482
diff
changeset
|
314 } |
622 | 315 |
316 if (extra) | |
317 { | |
318 if (data && *data) | |
319 { | |
320 /* Display data between left and right parts of extra string | |
752
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
321 * the data is expressed by a '*' character. A '*' may be escaped |
995 | 322 * by a \. You should escape all '*' characters, do not rely on the |
752
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
323 * current implementation which only replaces the first unescaped '*'. |
622 | 324 * If no "*" is present, the extra string is just appended to data string. |
325 * Pango mark up is accepted in left and right parts. | |
326 * Any \n is replaced by a newline | |
327 * Examples: | |
328 * "<i>*</i>\n" -> data is displayed in italics ended with a newline | |
329 * "\n" -> ended with newline | |
330 * "ISO *" -> prefix data with "ISO " (ie. "ISO 100") | |
752
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
331 * "\**\*" -> prefix data with a star, and append a star (ie. "*100*") |
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
332 * "\\*" -> prefix data with an anti slash (ie "\100") |
622 | 333 * "Collection <b>*</b>\n" -> display data in bold prefixed by "Collection " and a newline is appended |
334 * | |
335 * FIXME: using background / foreground colors lead to weird results. | |
336 */ | |
337 gchar *new_data; | |
338 gchar *left = NULL; | |
339 gchar *right = extra; | |
340 gchar *p; | |
736 | 341 guint len = strlen(extra); |
622 | 342 |
752
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
343 /* Search for left and right parts and unescape characters */ |
622 | 344 for (p = extra; *p; p++, len--) |
752
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
345 if (p[0] == '\\') |
622 | 346 { |
752
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
347 if (p[1] == 'n') |
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
348 { |
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
349 memmove(p+1, p+2, --len); |
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
350 p[0] = '\n'; |
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
351 } |
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
352 else if (p[1] != '\0') |
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
353 memmove(p, p+1, len--); // includes \0 |
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
354 } |
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
355 else if (p[0] == '*' && !left) |
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
356 { |
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
357 right = p + 1; |
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
358 left = extra; |
622 | 359 } |
360 | |
752
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
361 if (left) right[-1] = '\0'; |
85c9412d77d2
Allow to escape star characters in the template string with a \.
zas_
parents:
736
diff
changeset
|
362 |
622 | 363 new_data = g_strdup_printf("%s%s%s", left ? left : "", data, right); |
364 g_free(data); | |
365 data = new_data; | |
366 } | |
367 g_free(extra); | |
995 | 368 } |
622 | 369 |
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
|
370 g_string_erase(new, pos, end-start+1); |
866
c879a9a4f186
image_osd_mkinfo(): pipe replacement by " - " separator was fixed to work correctly with
zas_
parents:
865
diff
changeset
|
371 if (data && *data) |
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
|
372 { |
866
c879a9a4f186
image_osd_mkinfo(): pipe replacement by " - " separator was fixed to work correctly with
zas_
parents:
865
diff
changeset
|
373 if (want_separator) |
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
|
374 { |
866
c879a9a4f186
image_osd_mkinfo(): pipe replacement by " - " separator was fixed to work correctly with
zas_
parents:
865
diff
changeset
|
375 /* insert separator */ |
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
|
376 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
|
377 pos += strlen(sep); |
986
533694a9675c
Fix another missing separator bug in image overlay. This one was occuring with default string when no ISO data was available from exif.
zas_
parents:
963
diff
changeset
|
378 want_separator = FALSE; |
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
|
379 } |
866
c879a9a4f186
image_osd_mkinfo(): pipe replacement by " - " separator was fixed to work correctly with
zas_
parents:
865
diff
changeset
|
380 |
c879a9a4f186
image_osd_mkinfo(): pipe replacement by " - " separator was fixed to work correctly with
zas_
parents:
865
diff
changeset
|
381 g_string_insert(new, pos, data); |
c879a9a4f186
image_osd_mkinfo(): pipe replacement by " - " separator was fixed to work correctly with
zas_
parents:
865
diff
changeset
|
382 pos += strlen(data); |
c879a9a4f186
image_osd_mkinfo(): pipe replacement by " - " separator was fixed to work correctly with
zas_
parents:
865
diff
changeset
|
383 } |
c879a9a4f186
image_osd_mkinfo(): pipe replacement by " - " separator was fixed to work correctly with
zas_
parents:
865
diff
changeset
|
384 |
c879a9a4f186
image_osd_mkinfo(): pipe replacement by " - " separator was fixed to work correctly with
zas_
parents:
865
diff
changeset
|
385 if (pos-prev >= 1 && new->str[pos] == imp) |
c879a9a4f186
image_osd_mkinfo(): pipe replacement by " - " separator was fixed to work correctly with
zas_
parents:
865
diff
changeset
|
386 { |
c879a9a4f186
image_osd_mkinfo(): pipe replacement by " - " separator was fixed to work correctly with
zas_
parents:
865
diff
changeset
|
387 /* pipe character is replaced by a separator, delete it |
c879a9a4f186
image_osd_mkinfo(): pipe replacement by " - " separator was fixed to work correctly with
zas_
parents:
865
diff
changeset
|
388 * and raise a flag if needed */ |
c879a9a4f186
image_osd_mkinfo(): pipe replacement by " - " separator was fixed to work correctly with
zas_
parents:
865
diff
changeset
|
389 g_string_erase(new, pos--, 1); |
986
533694a9675c
Fix another missing separator bug in image overlay. This one was occuring with default string when no ISO data was available from exif.
zas_
parents:
963
diff
changeset
|
390 want_separator |= (data && *data); |
866
c879a9a4f186
image_osd_mkinfo(): pipe replacement by " - " separator was fixed to work correctly with
zas_
parents:
865
diff
changeset
|
391 } |
986
533694a9675c
Fix another missing separator bug in image overlay. This one was occuring with default string when no ISO data was available from exif.
zas_
parents:
963
diff
changeset
|
392 |
533694a9675c
Fix another missing separator bug in image overlay. This one was occuring with default string when no ISO data was available from exif.
zas_
parents:
963
diff
changeset
|
393 if (new->str[pos] == '\n') want_separator = FALSE; |
533694a9675c
Fix another missing separator bug in image overlay. This one was occuring with default string when no ISO data was available from exif.
zas_
parents:
963
diff
changeset
|
394 |
866
c879a9a4f186
image_osd_mkinfo(): pipe replacement by " - " separator was fixed to work correctly with
zas_
parents:
865
diff
changeset
|
395 prev = pos - 1; |
c879a9a4f186
image_osd_mkinfo(): pipe replacement by " - " separator was fixed to work correctly with
zas_
parents:
865
diff
changeset
|
396 |
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
|
397 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
|
398 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
|
399 } |
442 | 400 |
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
|
401 /* 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
|
402 end = new->str; |
245
62f2f8f7cb2d
Add parenthesis around affection to clear a gcc warning.
zas_
parents:
218
diff
changeset
|
403 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
|
404 { |
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
|
405 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
|
406 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
|
407 ; |
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
|
408 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
|
409 } |
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
|
410 |
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
|
411 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
|
412 |
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
|
413 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
|
414 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
|
415 |
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
|
416 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
|
417 } |
9 | 418 |
862
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
419 typedef enum { |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
420 OSDT_NONE = 0, |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
421 OSDT_FREE = 1 << 0, |
963 | 422 OSDT_NO_DUP = 1 << 1 |
862
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
423 } OsdTemplateFlags; |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
424 |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
425 static void osd_template_insert(GHashTable *vars, gchar *keyword, gchar *value, OsdTemplateFlags flags) |
861
3df5220fbc23
image_osd_info_render(): ensure values are always escaped before using pango_layout_set_markup().
zas_
parents:
860
diff
changeset
|
426 { |
862
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
427 if (!value) |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
428 { |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
429 g_hash_table_insert(vars, keyword, g_strdup("")); |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
430 return; |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
431 } |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
432 |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
433 if (flags & OSDT_NO_DUP) |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
434 { |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
435 g_hash_table_insert(vars, keyword, value); |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
436 return; |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
437 } |
963 | 438 else |
862
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
439 { |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
440 g_hash_table_insert(vars, keyword, g_strdup(value)); |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
441 } |
861
3df5220fbc23
image_osd_info_render(): ensure values are always escaped before using pango_layout_set_markup().
zas_
parents:
860
diff
changeset
|
442 |
862
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
443 if (flags & OSDT_FREE) g_free((gpointer) value); |
861
3df5220fbc23
image_osd_info_render(): ensure values are always escaped before using pango_layout_set_markup().
zas_
parents:
860
diff
changeset
|
444 } |
3df5220fbc23
image_osd_info_render(): ensure values are always escaped before using pango_layout_set_markup().
zas_
parents:
860
diff
changeset
|
445 |
616
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
446 static GdkPixbuf *image_osd_info_render(OverlayStateData *osd) |
9 | 447 { |
410 | 448 GdkPixbuf *pixbuf = NULL; |
9 | 449 gint width, height; |
450 PangoLayout *layout; | |
451 const gchar *name; | |
275 | 452 gchar *text; |
273
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
265
diff
changeset
|
453 GdkPixbuf *imgpixbuf = NULL; |
860
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
454 gboolean with_hist; |
995 | 455 ImageWindow *imd = osd->imd; |
617
aa883b6d2ef6
image_osd_info_render(): if there's no fd, just return.
zas_
parents:
616
diff
changeset
|
456 FileData *fd = image_get_fd(imd); |
aa883b6d2ef6
image_osd_info_render(): if there's no fd, just return.
zas_
parents:
616
diff
changeset
|
457 |
aa883b6d2ef6
image_osd_info_render(): if there's no fd, just return.
zas_
parents:
616
diff
changeset
|
458 if (!fd) return NULL; |
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
|
459 |
9 | 460 name = image_get_name(imd); |
461 if (name) | |
462 { | |
860
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
463 gint n, t; |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
464 CollectionData *cd; |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
465 CollectInfo *info; |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
466 GHashTable *vars; |
861
3df5220fbc23
image_osd_info_render(): ensure values are always escaped before using pango_layout_set_markup().
zas_
parents:
860
diff
changeset
|
467 |
860
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
468 vars = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free); |
9 | 469 |
860
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
470 cd = image_get_collection(imd, &info); |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
471 if (cd) |
622 | 472 { |
860
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
473 t = g_list_length(cd->list); |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
474 n = g_list_index(cd->list, info) + 1; |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
475 if (cd->name) |
9 | 476 { |
860
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
477 if (file_extension_match(cd->name, GQ_COLLECTION_EXT)) |
862
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
478 osd_template_insert(vars, "collection", remove_extension_from_path(cd->name), OSDT_FREE); |
860
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
479 else |
862
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
480 osd_template_insert(vars, "collection", cd->name, OSDT_NONE); |
9 | 481 } |
482 else | |
483 { | |
862
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
484 osd_template_insert(vars, "collection", _("Untitled"), OSDT_NONE); |
9 | 485 } |
486 } | |
487 else | |
488 { | |
860
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
489 LayoutWindow *lw = layout_find_by_image(imd); |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
490 if (lw) |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
491 { |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
492 if (lw->slideshow) |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
493 { |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
494 n = g_list_length(lw->slideshow->list_done); |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
495 t = n + g_list_length(lw->slideshow->list); |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
496 if (n == 0) n = t; |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
497 } |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
498 else |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
499 { |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
500 t = layout_list_count(lw, NULL); |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
501 n = layout_list_get_index(lw, image_get_fd(lw->image)) + 1; |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
502 } |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
503 } |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
504 else if (view_window_find_image(imd, &n, &t)) |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
505 { |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
506 n++; |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
507 } |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
508 else |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
509 { |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
510 t = 1; |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
511 n = 1; |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
512 } |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
513 |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
514 if (n < 1) n = 1; |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
515 if (t < 1) t = 1; |
480
805c3258d228
Make histogram depends on image window not layout window.
zas_
parents:
475
diff
changeset
|
516 |
862
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
517 osd_template_insert(vars, "collection", NULL, OSDT_NONE); |
860
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
518 } |
861
3df5220fbc23
image_osd_info_render(): ensure values are always escaped before using pango_layout_set_markup().
zas_
parents:
860
diff
changeset
|
519 |
862
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
520 osd_template_insert(vars, "number", g_strdup_printf("%d", n), OSDT_NO_DUP); |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
521 osd_template_insert(vars, "total", g_strdup_printf("%d", t), OSDT_NO_DUP); |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
522 osd_template_insert(vars, "name", (gchar *) name, OSDT_NONE); |
995 | 523 osd_template_insert(vars, "date", imd->image_fd ? ((gchar *) text_from_time(imd->image_fd->date)) : "", OSDT_NONE); |
888 | 524 osd_template_insert(vars, "size", imd->image_fd ? (text_from_size_abrev(imd->image_fd->size)) : g_strdup(""), OSDT_FREE); |
862
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
525 osd_template_insert(vars, "zoom", image_zoom_get_as_text(imd), OSDT_FREE); |
861
3df5220fbc23
image_osd_info_render(): ensure values are always escaped before using pango_layout_set_markup().
zas_
parents:
860
diff
changeset
|
526 |
860
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
527 if (!imd->unknown) |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
528 { |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
529 gint w, h; |
1011 | 530 GdkPixbuf *load_pixbuf = image_loader_get_pixbuf(imd->il); |
442 | 531 |
860
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
532 if (imd->delay_flip && |
1011 | 533 imd->il && load_pixbuf && |
534 image_get_pixbuf(imd) != load_pixbuf) | |
860
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
535 { |
1011 | 536 w = gdk_pixbuf_get_width(load_pixbuf); |
537 h = gdk_pixbuf_get_height(load_pixbuf); | |
538 imgpixbuf = load_pixbuf; | |
860
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
539 } |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
540 else |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
541 { |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
542 image_get_image_size(imd, &w, &h); |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
543 imgpixbuf = (PIXBUF_RENDERER(imd->pr))->pixbuf; |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
544 } |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
545 |
861
3df5220fbc23
image_osd_info_render(): ensure values are always escaped before using pango_layout_set_markup().
zas_
parents:
860
diff
changeset
|
546 |
862
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
547 osd_template_insert(vars, "width", g_strdup_printf("%d", w), OSDT_NO_DUP); |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
548 osd_template_insert(vars, "height", g_strdup_printf("%d", h), OSDT_NO_DUP); |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
549 osd_template_insert(vars, "res", g_strdup_printf("%d × %d", w, h), OSDT_FREE); |
860
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
550 } |
861
3df5220fbc23
image_osd_info_render(): ensure values are always escaped before using pango_layout_set_markup().
zas_
parents:
860
diff
changeset
|
551 else |
3df5220fbc23
image_osd_info_render(): ensure values are always escaped before using pango_layout_set_markup().
zas_
parents:
860
diff
changeset
|
552 { |
862
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
553 osd_template_insert(vars, "width", NULL, OSDT_NONE); |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
554 osd_template_insert(vars, "height", NULL, OSDT_NONE); |
30e1f4370215
osd_template_insert(): optimize and simplify using flags.
zas_
parents:
861
diff
changeset
|
555 osd_template_insert(vars, "res", NULL, OSDT_NONE); |
861
3df5220fbc23
image_osd_info_render(): ensure values are always escaped before using pango_layout_set_markup().
zas_
parents:
860
diff
changeset
|
556 } |
3df5220fbc23
image_osd_info_render(): ensure values are always escaped before using pango_layout_set_markup().
zas_
parents:
860
diff
changeset
|
557 |
860
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
558 text = image_osd_mkinfo(options->image_overlay.common.template_string, imd, vars); |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
559 g_hash_table_destroy(vars); |
415 | 560 |
860
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
561 } else { |
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
562 /* When does this occur ?? */ |
861
3df5220fbc23
image_osd_info_render(): ensure values are always escaped before using pango_layout_set_markup().
zas_
parents:
860
diff
changeset
|
563 text = g_markup_escape_text(_("Untitled"), -1); |
860
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
564 } |
132 | 565 |
1011 | 566 with_hist = (imgpixbuf && (osd->show & OSD_SHOW_HISTOGRAM) && osd->histogram && (!imd->il || image_loader_get_is_done(imd->il))); |
860
1e85eabf4952
image_osd_info_render(): code cleanup and simplification, drop some useless memory allocations.
zas_
parents:
857
diff
changeset
|
567 |
133 | 568 { |
265
3f14da3c3b9a
Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents:
263
diff
changeset
|
569 gint active_marks = 0; |
3f14da3c3b9a
Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents:
263
diff
changeset
|
570 gint mark; |
275 | 571 gchar *text2; |
263
c7fefb0a4b78
Display marks in overlay info only if at least one is set.
zas_
parents:
245
diff
changeset
|
572 |
442 | 573 for (mark = 0; mark < FILEDATA_MARKS_SIZE; mark++) |
263
c7fefb0a4b78
Display marks in overlay info only if at least one is set.
zas_
parents:
245
diff
changeset
|
574 { |
800 | 575 active_marks += file_data_get_mark(fd, mark); |
265
3f14da3c3b9a
Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents:
263
diff
changeset
|
576 } |
263
c7fefb0a4b78
Display marks in overlay info only if at least one is set.
zas_
parents:
245
diff
changeset
|
577 |
265
3f14da3c3b9a
Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents:
263
diff
changeset
|
578 if (active_marks > 0) |
3f14da3c3b9a
Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents:
263
diff
changeset
|
579 { |
3f14da3c3b9a
Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents:
263
diff
changeset
|
580 GString *buf = g_string_sized_new(FILEDATA_MARKS_SIZE * 2); |
442 | 581 |
582 for (mark = 0; mark < FILEDATA_MARKS_SIZE; mark++) | |
265
3f14da3c3b9a
Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents:
263
diff
changeset
|
583 { |
800 | 584 g_string_append_printf(buf, file_data_get_mark(fd, mark) ? " <span background='#FF00FF'>%c</span>" : " %c", '1' + mark); |
995 | 585 } |
265
3f14da3c3b9a
Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents:
263
diff
changeset
|
586 |
410 | 587 if (*text) |
588 text2 = g_strdup_printf("%s\n%s", text, buf->str); | |
589 else | |
590 text2 = g_strdup(buf->str); | |
265
3f14da3c3b9a
Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents:
263
diff
changeset
|
591 g_string_free(buf, TRUE); |
3f14da3c3b9a
Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents:
263
diff
changeset
|
592 g_free(text); |
275 | 593 text = text2; |
265
3f14da3c3b9a
Fix a segfault on fullscreen file deletion reported by Fr«±d«±ric Mantegazza.
zas_
parents:
263
diff
changeset
|
594 } |
275 | 595 |
995 | 596 if (with_hist) |
290 | 597 { |
616
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
598 gchar *escaped_histogram_label = g_markup_escape_text(histogram_label(osd->histogram), -1); |
410 | 599 if (*text) |
483
c9e3baeda1b1
Correctly escape data before using pango_layout_set_markup().
zas_
parents:
482
diff
changeset
|
600 text2 = g_strdup_printf("%s\n%s", text, escaped_histogram_label); |
410 | 601 else |
483
c9e3baeda1b1
Correctly escape data before using pango_layout_set_markup().
zas_
parents:
482
diff
changeset
|
602 text2 = g_strdup(escaped_histogram_label); |
c9e3baeda1b1
Correctly escape data before using pango_layout_set_markup().
zas_
parents:
482
diff
changeset
|
603 g_free(escaped_histogram_label); |
290 | 604 g_free(text); |
605 text = text2; | |
606 } | |
155 | 607 } |
410 | 608 |
23
17acca639a86
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
609 layout = gtk_widget_create_pango_layout(imd->pr, NULL); |
275 | 610 pango_layout_set_markup(layout, text, -1); |
611 g_free(text); | |
442 | 612 |
9 | 613 pango_layout_get_pixel_size(layout, &width, &height); |
410 | 614 /* with empty text width is set to 0, but not height) */ |
615 if (width == 0) | |
616 height = 0; | |
617 else if (height == 0) | |
618 width = 0; | |
619 if (width > 0) width += 10; | |
620 if (height > 0) height += 10; | |
9 | 621 |
273
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
265
diff
changeset
|
622 if (with_hist) |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
265
diff
changeset
|
623 { |
616
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
624 histogram_read(osd->histogram, imgpixbuf); |
620 | 625 if (width < HISTOGRAM_WIDTH + 10) width = HISTOGRAM_WIDTH + 10; |
290 | 626 height += HISTOGRAM_HEIGHT + 5; |
273
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
265
diff
changeset
|
627 } |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
265
diff
changeset
|
628 |
410 | 629 if (width > 0 && height > 0) |
630 { | |
631 /* TODO: make osd color configurable --Zas */ | |
632 pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, width, height); | |
633 pixbuf_set_rect_fill(pixbuf, 3, 3, width-6, height-6, 240, 240, 240, 210); | |
634 pixbuf_set_rect(pixbuf, 0, 0, width, height, 240, 240, 240, 80, 1, 1, 1, 1); | |
635 pixbuf_set_rect(pixbuf, 1, 1, width-2, height-2, 240, 240, 240, 130, 1, 1, 1, 1); | |
636 pixbuf_set_rect(pixbuf, 2, 2, width-4, height-4, 240, 240, 240, 180, 1, 1, 1, 1); | |
637 pixbuf_pixel_set(pixbuf, 0, 0, 0, 0, 0, 0); | |
638 pixbuf_pixel_set(pixbuf, width - 1, 0, 0, 0, 0, 0); | |
639 pixbuf_pixel_set(pixbuf, 0, height - 1, 0, 0, 0, 0); | |
640 pixbuf_pixel_set(pixbuf, width - 1, height - 1, 0, 0, 0, 0); | |
442 | 641 |
410 | 642 if (with_hist) |
620 | 643 { |
644 gint x = 5; | |
645 gint y = height - HISTOGRAM_HEIGHT - 5; | |
646 gint w = width - 10; | |
760 | 647 float xoffset = 0; |
620 | 648 gint subdiv = 5; |
649 gint c = 160; | |
650 gint alpha = 250; | |
651 gint i; | |
760 | 652 float add = w / (float)subdiv; |
442 | 653 |
620 | 654 for (i = 0; i < subdiv; i++) |
655 { | |
656 gint d = (i > 0 ? 0 : 1); | |
657 | |
760 | 658 pixbuf_set_rect(pixbuf, x + xoffset + 0.5, y, add + d + 0.5, HISTOGRAM_HEIGHT, c, c, c, alpha, d, 1, 1, 1); |
659 xoffset += add+d; | |
620 | 660 } |
661 | |
662 histogram_draw(osd->histogram, pixbuf, x, y, w, HISTOGRAM_HEIGHT); | |
663 } | |
410 | 664 pixbuf_draw_layout(pixbuf, layout, imd->pr, 5, 5, 0, 0, 0, 255); |
665 } | |
9 | 666 |
667 g_object_unref(G_OBJECT(layout)); | |
668 | |
669 return pixbuf; | |
670 } | |
671 | |
118
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
672 static GdkPixbuf *image_osd_icon_pixbuf(ImageOSDFlag flag) |
9 | 673 { |
118
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
674 static GdkPixbuf **icons = NULL; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
675 GdkPixbuf *icon = NULL; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
676 |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
677 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
|
678 if (icons[flag]) return icons[flag]; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
679 |
122
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
680 if (osd_icons[flag].key) |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
681 { |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
682 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
|
683 } |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
684 |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
685 if (!icon) |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
686 { |
122
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
687 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
|
688 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
|
689 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
|
690 switch (flag) |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
691 { |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
692 case IMAGE_OSD_ROTATE_AUTO: |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
693 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
|
694 0, 0, 0, 255, |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
695 3, 0, 3, 0); |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
696 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
|
697 20, 9, 14, 15, 14, 3, |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
698 0, 0, 0, 255); |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
699 break; |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
700 case IMAGE_OSD_ROTATE_USER: |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
701 break; |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
702 case IMAGE_OSD_COLOR: |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
703 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
|
704 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
|
705 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
|
706 break; |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
707 case IMAGE_OSD_FIRST: |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
708 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
|
709 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
|
710 12, 5, 18, 11, 6, 11, |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
711 0, 0, 0, 255); |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
712 break; |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
713 case IMAGE_OSD_LAST: |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
714 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
|
715 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
|
716 12, 18, 6, 12, 18, 12, |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
717 0, 0, 0, 255); |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
718 break; |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
719 case IMAGE_OSD_ICON: |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
720 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
|
721 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
|
722 break; |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
723 default: |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
724 break; |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
725 } |
118
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
726 } |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
727 |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
728 icons[flag] = icon; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
729 |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
730 return icon; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
731 } |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
732 |
821
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
733 static gint image_overlay_add(ImageWindow *imd, GdkPixbuf *pixbuf, gint x, gint y, |
857
7d387a25b1ec
Use flags instead of int parameters for pixbuf_renderer_overlay_add().
zas_
parents:
844
diff
changeset
|
734 OverlayRendererFlags flags) |
821
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
735 { |
857
7d387a25b1ec
Use flags instead of int parameters for pixbuf_renderer_overlay_add().
zas_
parents:
844
diff
changeset
|
736 return pixbuf_renderer_overlay_add((PixbufRenderer *)imd->pr, pixbuf, x, y, flags); |
821
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
737 } |
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
738 |
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
739 static void image_overlay_set(ImageWindow *imd, gint id, GdkPixbuf *pixbuf, gint x, gint y) |
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
740 { |
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
741 pixbuf_renderer_overlay_set((PixbufRenderer *)imd->pr, id, pixbuf, x, y); |
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
742 } |
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
743 |
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
744 #if 0 /* unused for now */ |
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
745 static gint image_overlay_get(ImageWindow *imd, gint id, GdkPixbuf **pixbuf, gint *x, gint *y) |
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
746 { |
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
747 return pixbuf_renderer_overlay_get((PixbufRenderer *)imd->pr, id, pixbuf, x, y); |
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
748 } |
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
749 #endif |
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
750 |
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
751 static void image_overlay_remove(ImageWindow *imd, gint id) |
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
752 { |
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
753 pixbuf_renderer_overlay_remove((PixbufRenderer *)imd->pr, id); |
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
754 } |
fb249b8e63e4
Move some functions from image.[ch] to image-overlay.c and make them static:
zas_
parents:
800
diff
changeset
|
755 |
118
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
756 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
|
757 { |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
758 GdkPixbuf *pixbuf; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
759 |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
760 if (osd->icon_id[flag]) return; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
761 |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
762 pixbuf = image_osd_icon_pixbuf(flag); |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
763 if (!pixbuf) return; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
764 |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
765 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
|
766 osd_icons[flag].x, osd_icons[flag].y, |
857
7d387a25b1ec
Use flags instead of int parameters for pixbuf_renderer_overlay_add().
zas_
parents:
844
diff
changeset
|
767 OVL_RELATIVE); |
118
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
768 } |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
769 |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
770 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
|
771 { |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
772 if (osd->icon_id[flag]) |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
773 { |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
774 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
|
775 osd->icon_id[flag] = 0; |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
776 } |
9 | 777 } |
778 | |
886 | 779 static void image_osd_icons_reset_time(OverlayStateData *osd) |
780 { | |
781 gint i; | |
782 | |
783 for (i = 0; i < IMAGE_OSD_COUNT; i++) | |
784 { | |
785 if (osd_icons[i].reset) | |
786 { | |
787 osd->icon_time[i] = 0; | |
788 } | |
789 } | |
790 } | |
791 | |
792 static void image_osd_icons_update(OverlayStateData *osd) | |
793 { | |
794 gint i; | |
795 | |
796 for (i = 0; i < IMAGE_OSD_COUNT; i++) | |
797 { | |
798 if (osd->icon_time[i] > 0) | |
799 { | |
800 image_osd_icon_show(osd, i); | |
801 } | |
802 else | |
803 { | |
804 image_osd_icon_hide(osd, i); | |
805 } | |
806 } | |
807 } | |
808 | |
809 static void image_osd_icons_hide(OverlayStateData *osd) | |
810 { | |
811 gint i; | |
812 | |
813 for (i = 0; i < IMAGE_OSD_COUNT; i++) | |
814 { | |
815 image_osd_icon_hide(osd, i); | |
816 } | |
817 } | |
818 | |
887
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
819 static void image_osd_info_show(OverlayStateData *osd, GdkPixbuf *pixbuf) |
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
820 { |
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
821 if (osd->ovl_info == 0) |
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
822 { |
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
823 osd->ovl_info = image_overlay_add(osd->imd, pixbuf, osd->x, osd->y, OVL_RELATIVE); |
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
824 } |
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
825 else |
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
826 { |
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
827 image_overlay_set(osd->imd, osd->ovl_info, pixbuf, osd->x, osd->y); |
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
828 } |
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
829 } |
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
830 |
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
831 static void image_osd_info_hide(OverlayStateData *osd) |
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
832 { |
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
833 if (osd->ovl_info == 0) return; |
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
834 |
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
835 image_overlay_remove(osd->imd, osd->ovl_info); |
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
836 osd->ovl_info = 0; |
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
837 } |
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
838 |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
839 static gint image_osd_update_cb(gpointer data) |
9 | 840 { |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
841 OverlayStateData *osd = data; |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
842 |
415 | 843 osd->imd->overlay_show_zoom = FALSE; |
844 | |
614 | 845 if (osd->show & OSD_SHOW_INFO) |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
846 { |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
847 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
|
848 { |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
849 GdkPixbuf *pixbuf; |
9 | 850 |
616
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
851 pixbuf = image_osd_info_render(osd); |
410 | 852 if (pixbuf) |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
853 { |
887
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
854 image_osd_info_show(osd, pixbuf); |
410 | 855 g_object_unref(pixbuf); |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
856 } |
887
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
857 else |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
858 { |
887
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
859 image_osd_info_hide(osd); |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
860 } |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
861 } |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
862 } |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
863 else |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
864 { |
887
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
865 image_osd_info_hide(osd); |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
866 } |
9 | 867 |
614 | 868 if (osd->show & OSD_SHOW_STATUS) |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
869 { |
118
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
870 if (osd->changed_states & IMAGE_STATE_IMAGE) |
886 | 871 image_osd_icons_reset_time(osd); |
872 | |
118
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
873 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
|
874 { |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
875 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
|
876 image_osd_timer_schedule(osd); |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
877 } |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
878 |
122
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
879 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
|
880 { |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
881 gint n = 0; |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
882 |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
883 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
|
884 { |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
885 n = 1; |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
886 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
|
887 } |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
888 |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
889 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
|
890 image_osd_timer_schedule(osd); |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
891 } |
e2a8b7f2165b
Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents:
118
diff
changeset
|
892 |
886 | 893 image_osd_icons_update(osd); |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
894 } |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
895 else |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
896 { |
886 | 897 image_osd_icons_hide(osd); |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
898 } |
9 | 899 |
1011 | 900 if (osd->imd->il && image_loader_get_is_done(osd->imd->il)) |
273
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
265
diff
changeset
|
901 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
|
902 osd->idle_id = -1; |
9 | 903 return FALSE; |
904 } | |
905 | |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
906 static void image_osd_update_schedule(OverlayStateData *osd, gint force) |
9 | 907 { |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
908 if (force) osd->changed_states |= IMAGE_STATE_IMAGE; |
9 | 909 |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
910 if (osd->idle_id == -1) |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
911 { |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
912 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
|
913 } |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
914 } |
9 | 915 |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
916 void image_osd_update(ImageWindow *imd) |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
917 { |
615
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
918 OverlayStateData *osd = image_get_osd_data(imd); |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
919 |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
920 if (!osd) return; |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
921 |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
922 image_osd_update_schedule(osd, TRUE); |
9 | 923 } |
924 | |
118
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
925 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
|
926 { |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
927 OverlayStateData *osd = data; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
928 gint done = TRUE; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
929 gint changed = FALSE; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
930 gint i; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
931 |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
932 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
|
933 { |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
934 if (osd->icon_time[i] > 1) |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
935 { |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
936 osd->icon_time[i]--; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
937 if (osd->icon_time[i] < 2) |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
938 { |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
939 osd->icon_time[i] = 0; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
940 changed = TRUE; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
941 } |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
942 else |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
943 { |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
944 done = FALSE; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
945 } |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
946 } |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
947 } |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
948 |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
949 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
|
950 |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
951 if (done) |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
952 { |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
953 osd->timer_id = -1; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
954 return FALSE; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
955 } |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
956 |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
957 return TRUE; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
958 } |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
959 |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
960 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
|
961 { |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
962 if (osd->timer_id == -1) |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
963 { |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
964 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
|
965 } |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
966 } |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
967 |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
968 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
|
969 { |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
970 OverlayStateData *osd = data; |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
971 |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
972 osd->changed_states |= state; |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
973 image_osd_update_schedule(osd, FALSE); |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
974 } |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
975 |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
976 static void image_osd_free(OverlayStateData *osd) |
9 | 977 { |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
978 if (!osd) return; |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
979 |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
980 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
|
981 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
|
982 |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
983 if (osd->imd) |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
984 { |
615
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
985 image_set_osd_data(osd->imd, NULL); |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
986 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
|
987 |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
988 image_set_state_func(osd->imd, NULL, NULL); |
118
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
989 |
887
e418c33a49c8
Move code from image_osd_update_cb() to separate functions.
zas_
parents:
886
diff
changeset
|
990 image_osd_info_hide(osd); |
886 | 991 image_osd_icons_hide(osd); |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
992 } |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
993 |
616
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
994 if (osd->histogram) histogram_free(osd->histogram); |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
995 |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
996 g_free(osd); |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
997 } |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
998 |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
999 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
|
1000 { |
615
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
1001 OverlayStateData *osd = image_get_osd_data(imd); |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1002 |
616
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
1003 if (osd) image_osd_free(osd); |
9 | 1004 } |
1005 | |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1006 static void image_osd_destroy_cb(GtkWidget *widget, gpointer data) |
9 | 1007 { |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1008 OverlayStateData *osd = data; |
9 | 1009 |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1010 osd->imd = NULL; |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1011 image_osd_free(osd); |
9 | 1012 } |
1013 | |
614 | 1014 static void image_osd_enable(ImageWindow *imd, OsdShowFlags show) |
9 | 1015 { |
615
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
1016 OverlayStateData *osd = image_get_osd_data(imd); |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1017 |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1018 if (!osd) |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1019 { |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1020 osd = g_new0(OverlayStateData, 1); |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1021 osd->imd = imd; |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1022 osd->idle_id = -1; |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1023 osd->timer_id = -1; |
616
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
1024 osd->show = OSD_SHOW_NOTHING; |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
1025 osd->histogram = NULL; |
822
df541dc41707
Allow to set image overlay info position through options:
zas_
parents:
821
diff
changeset
|
1026 osd->x = options->image_overlay.common.x; |
df541dc41707
Allow to set image overlay info position through options:
zas_
parents:
821
diff
changeset
|
1027 osd->y = options->image_overlay.common.y; |
df541dc41707
Allow to set image overlay info position through options:
zas_
parents:
821
diff
changeset
|
1028 |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1029 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
|
1030 G_CALLBACK(image_osd_destroy_cb), osd); |
615
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
1031 image_set_osd_data(imd, osd); |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1032 |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1033 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
|
1034 } |
9 | 1035 |
616
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
1036 if (show & OSD_SHOW_HISTOGRAM) |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
1037 osd->histogram = histogram_new(); |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
1038 else if (osd->histogram) |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
1039 { |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
1040 histogram_free(osd->histogram); |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
1041 osd->histogram = NULL; |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
1042 } |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
1043 |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
1044 if (show & OSD_SHOW_STATUS) |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
1045 image_osd_icon(imd, IMAGE_OSD_ICON, -1); |
d9c9d05c9d4d
Move overlay histogram stuff from ImageWindow to OverlayStateData.
zas_
parents:
615
diff
changeset
|
1046 |
614 | 1047 if (show != osd->show) |
1048 image_osd_update_schedule(osd, TRUE); | |
9 | 1049 |
614 | 1050 osd->show = show; |
9 | 1051 } |
1052 | |
614 | 1053 void image_osd_set(ImageWindow *imd, OsdShowFlags show) |
9 | 1054 { |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1055 if (!imd) return; |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1056 |
614 | 1057 if (show == OSD_SHOW_NOTHING) |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1058 { |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1059 image_osd_remove(imd); |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1060 return; |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1061 } |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1062 |
614 | 1063 image_osd_enable(imd, show); |
9 | 1064 } |
1065 | |
621 | 1066 OsdShowFlags image_osd_get(ImageWindow *imd) |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1067 { |
615
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
1068 OverlayStateData *osd = image_get_osd_data(imd); |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1069 |
621 | 1070 return osd ? osd->show : OSD_SHOW_NOTHING; |
117
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1071 } |
0c2e1f0a001b
Wed Nov 29 14:28:30 2006 John Ellis <johne@verizon.net>
gqview
parents:
23
diff
changeset
|
1072 |
118
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
1073 /* duration: |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
1074 0 = hide |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
1075 1 = show |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
1076 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
|
1077 -1 = use default duration |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
1078 */ |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
1079 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
|
1080 { |
615
cddccc89d93b
Introduce image_get_osd_data() and image_set_osd_data().
zas_
parents:
614
diff
changeset
|
1081 OverlayStateData *osd = image_get_osd_data(imd); |
118
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
1082 |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
1083 if (!osd) return; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
1084 |
1177
5a20c47e7a14
Fix up unsigned expression always true/false warnings.
zas_
parents:
1055
diff
changeset
|
1085 if (flag >= IMAGE_OSD_COUNT) return; |
118
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
1086 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
|
1087 if (duration > 1) duration += 1; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
1088 |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
1089 osd->icon_time[flag] = duration; |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
1090 |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
1091 image_osd_update_schedule(osd, FALSE); |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
1092 image_osd_timer_schedule(osd); |
ac0f7f942c4d
Wed Nov 29 22:53:03 2006 John Ellis <johne@verizon.net>
gqview
parents:
117
diff
changeset
|
1093 } |
1055
1646720364cf
Adding a vim modeline to all files - patch by Klaus Ethgen
nadvornik
parents:
1011
diff
changeset
|
1094 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */ |