annotate src/pixbuf_util.c @ 2812:865f7eab9b6d

Additional optional entries for the toolbar
author Colin Clark <colin.clark@cclark.uk>
date Sat, 11 Aug 2018 19:48:17 +0100
parents 3e9ca298bb1d
children e6f95baec8b5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1 /*
2350
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
2 * Copyright (C) 2004 John Ellis
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
3 * Copyright (C) 2008 - 2016 The Geeqie Team
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
4 *
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
5 * Author: John Ellis
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
6 *
2350
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
7 * This program is free software; you can redistribute it and/or modify
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
8 * it under the terms of the GNU General Public License as published by
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
10 * (at your option) any later version.
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
11 *
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
12 * This program is distributed in the hope that it will be useful,
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
15 * GNU General Public License for more details.
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
16 *
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
17 * You should have received a copy of the GNU General Public License along
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
18 * with this program; if not, write to the Free Software Foundation, Inc.,
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
20 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
21
281
b1c2c2cf19d4 gqview.h -> main.h
Laurent Monin <geeqie@norz.org>
parents: 198
diff changeset
22 #include "main.h"
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
23 #include "pixbuf_util.h"
839
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
24 #include "exif.h"
1458
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
25 #include "ui_fileops.h"
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
26
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
27 #include "icons/icons_inline.h"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
28
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
29 #include <math.h>
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
30
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
31
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
32 /*
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
33 *-----------------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
34 * png save
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
35 *-----------------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
36 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
37
1000
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 864
diff changeset
38 gboolean pixbuf_to_file_as_png(GdkPixbuf *pixbuf, const gchar *filename)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
39 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
40 GError *error = NULL;
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
41 gboolean ret;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
42
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
43 if (!pixbuf || !filename) return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
44
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
45 ret = gdk_pixbuf_save(pixbuf, filename, "png", &error,
288
e675073bcca0 Replace occurences of Geeqie / geeqie by constants defined in main.h.
Laurent Monin <geeqie@norz.org>
parents: 281
diff changeset
46 "tEXt::Software", GQ_APPNAME " " VERSION, NULL);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
47
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
48 if (error)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
49 {
673
c9c2bc042e10 Do not use printf() directly but use new wrapper function log_printf() instead.
Laurent Monin <geeqie@norz.org>
parents: 513
diff changeset
50 log_printf("Error saving png file: %s\n", error->message);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
51 g_error_free(error);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
52 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
53
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
54 return ret;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
55 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
56
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
57 /*
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
58 *-----------------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
59 * jpeg save
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
60 *-----------------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
61 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
62
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
63 gboolean pixbuf_to_file_as_jpg(GdkPixbuf *pixbuf, const gchar *filename, gint quality)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
64 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
65 GError *error = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
66 gchar *qbuf;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
67 gboolean ret;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
68
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
69 if (!pixbuf || !filename) return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
70
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
71 if (quality == -1) quality = 75;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
72 if (quality < 1 || quality > 100)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
73 {
673
c9c2bc042e10 Do not use printf() directly but use new wrapper function log_printf() instead.
Laurent Monin <geeqie@norz.org>
parents: 513
diff changeset
74 log_printf("Jpeg not saved, invalid quality %d\n", quality);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
75 return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
76 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
77
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
78 qbuf = g_strdup_printf("%d", quality);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
79 ret = gdk_pixbuf_save(pixbuf, filename, "jpeg", &error, "quality", qbuf, NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
80 g_free(qbuf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
81
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
82 if (error)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
83 {
673
c9c2bc042e10 Do not use printf() directly but use new wrapper function log_printf() instead.
Laurent Monin <geeqie@norz.org>
parents: 513
diff changeset
84 log_printf("Error saving jpeg to %s\n%s\n", filename, error->message);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
85 g_error_free(error);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
86 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
87
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
88 return ret;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
89 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
90
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
91 /*
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
92 *-----------------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
93 * pixbuf from inline
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
94 *-----------------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
95 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
96
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
97 typedef struct _PixbufInline PixbufInline;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
98 struct _PixbufInline
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
99 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
100 const gchar *key;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
101 const guint8 *data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
102 };
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
103
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
104 static PixbufInline inline_pixbuf_data[] = {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
105 { PIXBUF_INLINE_FOLDER_CLOSED, folder_closed },
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
106 { PIXBUF_INLINE_FOLDER_LOCKED, folder_locked },
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
107 { PIXBUF_INLINE_FOLDER_OPEN, folder_open },
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
108 { PIXBUF_INLINE_FOLDER_UP, folder_up },
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
109 { PIXBUF_INLINE_SCROLLER, icon_scroller },
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
110 { PIXBUF_INLINE_BROKEN, icon_broken },
2597
e65df743a5a1 Ref #510: Rudimentary video support
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
111 { PIXBUF_INLINE_METADATA, icon_metadata },
e65df743a5a1 Ref #510: Rudimentary video support
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
112 { PIXBUF_INLINE_UNKNOWN, icon_unknown },
e65df743a5a1 Ref #510: Rudimentary video support
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
113 { PIXBUF_INLINE_VIDEO, icon_video },
2793
2feed80bcd34 Collections changes
Colin Clark <colin.clark@cclark.uk>
parents: 2597
diff changeset
114 { PIXBUF_INLINE_COLLECTION, icon_collection },
91
d6b6f5cfa048 Wed Nov 1 11:39:48 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 82
diff changeset
115 { PIXBUF_INLINE_ICON, gqview_icon },
198
487ad60946b4 changed logo
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 196
diff changeset
116 { PIXBUF_INLINE_LOGO, geeqie_logo },
41
cac3a3efd1fd Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 33
diff changeset
117 { PIXBUF_INLINE_ICON_FLOAT, icon_float },
cac3a3efd1fd Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 33
diff changeset
118 { PIXBUF_INLINE_ICON_THUMB, icon_thumb },
91
d6b6f5cfa048 Wed Nov 1 11:39:48 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 82
diff changeset
119 { PIXBUF_INLINE_ICON_BOOK, icon_book },
d6b6f5cfa048 Wed Nov 1 11:39:48 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 82
diff changeset
120 { PIXBUF_INLINE_ICON_CONFIG, icon_config },
d6b6f5cfa048 Wed Nov 1 11:39:48 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 82
diff changeset
121 { PIXBUF_INLINE_ICON_TOOLS, icon_tools },
d6b6f5cfa048 Wed Nov 1 11:39:48 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 82
diff changeset
122 { PIXBUF_INLINE_ICON_VIEW, icon_view },
2794
780a9b685335 Ref #331: Overimposed custom composition rule lines
Colin Clark <colin.clark@cclark.uk>
parents: 2793
diff changeset
123 { PIXBUF_INLINE_ICON_GUIDELINES, icon_guidelines },
2795
684ca84becd2 Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents: 2794
diff changeset
124 { PIXBUF_INLINE_ICON_PANORAMA, icon_panorama },
684ca84becd2 Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents: 2794
diff changeset
125 { PIXBUF_INLINE_ICON_MAINTENANCE, icon_maintenance },
684ca84becd2 Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents: 2794
diff changeset
126 { PIXBUF_INLINE_ICON_ZOOMFILLHOR, icon_zoomfillhor },
684ca84becd2 Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents: 2794
diff changeset
127 { PIXBUF_INLINE_ICON_ZOOMFILLVERT, icon_zoomfillvert },
684ca84becd2 Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents: 2794
diff changeset
128 { PIXBUF_INLINE_ICON_HIDETOOLS, icon_hidetools },
684ca84becd2 Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents: 2794
diff changeset
129 { PIXBUF_INLINE_ICON_EXIF, icon_exif },
684ca84becd2 Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents: 2794
diff changeset
130 { PIXBUF_INLINE_ICON_MARKS, icon_marks },
684ca84becd2 Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents: 2794
diff changeset
131 { PIXBUF_INLINE_ICON_INFO, icon_info },
684ca84becd2 Additional toolbar icons
Colin Clark <colin.clark@cclark.uk>
parents: 2794
diff changeset
132 { PIXBUF_INLINE_ICON_SORT, icon_sort },
2799
ea4163f0c769 Ref #332: include pdf-view
Colin Clark <colin.clark@cclark.uk>
parents: 2795
diff changeset
133 { PIXBUF_INLINE_ICON_PDF, icon_pdf },
2801
3e9ca298bb1d Fix #251: Crop simulation
Colin Clark <colin.clark@cclark.uk>
parents: 2799
diff changeset
134 { PIXBUF_INLINE_ICON_DRAW_RECTANGLE, icon_draw_rectangle },
2812
865f7eab9b6d Additional optional entries for the toolbar
Colin Clark <colin.clark@cclark.uk>
parents: 2801
diff changeset
135 { PIXBUF_INLINE_ICON_MOVE, icon_move },
865f7eab9b6d Additional optional entries for the toolbar
Colin Clark <colin.clark@cclark.uk>
parents: 2801
diff changeset
136 { PIXBUF_INLINE_ICON_RENAME, icon_rename },
865f7eab9b6d Additional optional entries for the toolbar
Colin Clark <colin.clark@cclark.uk>
parents: 2801
diff changeset
137 { PIXBUF_INLINE_ICON_SELECT_ALL, icon_select_all },
865f7eab9b6d Additional optional entries for the toolbar
Colin Clark <colin.clark@cclark.uk>
parents: 2801
diff changeset
138 { PIXBUF_INLINE_ICON_SELECT_NONE, icon_select_none },
865f7eab9b6d Additional optional entries for the toolbar
Colin Clark <colin.clark@cclark.uk>
parents: 2801
diff changeset
139 { PIXBUF_INLINE_ICON_SELECT_INVERT, icon_select_invert },
865f7eab9b6d Additional optional entries for the toolbar
Colin Clark <colin.clark@cclark.uk>
parents: 2801
diff changeset
140 { PIXBUF_INLINE_ICON_SELECT_RECTANGLE, icon_select_rectangle },
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
141 { NULL, NULL }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
142 };
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
143
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
144 GdkPixbuf *pixbuf_inline(const gchar *key)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
145 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
146 gint i;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
147
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
148 if (!key) return NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
149
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
150 i = 0;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
151 while (inline_pixbuf_data[i].key)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
152 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
153 if (strcmp(inline_pixbuf_data[i].key, key) == 0)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
154 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
155 return gdk_pixbuf_new_from_inline(-1, inline_pixbuf_data[i].data, FALSE, NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
156 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
157 i++;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
158 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
159
673
c9c2bc042e10 Do not use printf() directly but use new wrapper function log_printf() instead.
Laurent Monin <geeqie@norz.org>
parents: 513
diff changeset
160 log_printf("warning: inline pixbuf key \"%s\" not found.\n", key);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
161
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
162 return NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
163 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
164
1341
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
165 static void register_stock_icon(const gchar *key, GdkPixbuf *pixbuf)
1334
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
166 {
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
167 static GtkIconFactory *icon_factory = NULL;
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
168 GtkIconSet *icon_set;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
169
1334
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
170 if (!icon_factory)
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
171 {
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
172 icon_factory = gtk_icon_factory_new();
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
173 gtk_icon_factory_add_default(icon_factory);
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
174 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
175
1341
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
176 icon_set = gtk_icon_set_new_from_pixbuf(pixbuf);
1334
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
177 gtk_icon_factory_add(icon_factory, key, icon_set);
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
178 }
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
179
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
180
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
181 void pixbuf_inline_register_stock_icons(void)
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
182 {
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
183 gint i;
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
184
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
185 i = 0;
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
186 while (inline_pixbuf_data[i].key)
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
187 {
1341
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
188 register_stock_icon(inline_pixbuf_data[i].key, pixbuf_inline(inline_pixbuf_data[i].key));
1334
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
189 i++;
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
190 }
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
191 }
89c9db0e3258 create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
192
1341
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
193 gboolean register_theme_icon_as_stock(const gchar *key, const gchar *icon)
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
194 {
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
195 GtkIconTheme *icon_theme;
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
196 GdkPixbuf *pixbuf;
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
197 GError *error = NULL;
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
198
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
199 icon_theme = gtk_icon_theme_get_default();
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
200
1398
303e58e4826f Display icons in edit contextual menu.
Laurent Monin <geeqie@norz.org>
parents: 1345
diff changeset
201 if (gtk_icon_theme_has_icon(icon_theme, key)) return FALSE;
303e58e4826f Display icons in edit contextual menu.
Laurent Monin <geeqie@norz.org>
parents: 1345
diff changeset
202
1345
04048f93175f Prevent Gtk assertion failures when no icon is set.
Laurent Monin <geeqie@norz.org>
parents: 1341
diff changeset
203 pixbuf = gtk_icon_theme_load_icon(icon_theme,
1341
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
204 icon, /* icon name */
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
205 64, /* size */
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
206 0, /* flags */
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
207 &error);
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2168
diff changeset
208 if (!pixbuf)
1341
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
209 {
1345
04048f93175f Prevent Gtk assertion failures when no icon is set.
Laurent Monin <geeqie@norz.org>
parents: 1341
diff changeset
210 if (error)
04048f93175f Prevent Gtk assertion failures when no icon is set.
Laurent Monin <geeqie@norz.org>
parents: 1341
diff changeset
211 {
1458
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
212 DEBUG_1("Couldn't load icon %s: %s", icon, error->message);
1345
04048f93175f Prevent Gtk assertion failures when no icon is set.
Laurent Monin <geeqie@norz.org>
parents: 1341
diff changeset
213 g_error_free(error);
1458
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
214 error = NULL;
1345
04048f93175f Prevent Gtk assertion failures when no icon is set.
Laurent Monin <geeqie@norz.org>
parents: 1341
diff changeset
215 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
216
1458
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
217 if (strchr(icon, '.'))
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
218 {
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
219 /* try again without extension */
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
220 gchar *icon2 = remove_extension_from_path(icon);
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
221 pixbuf = gtk_icon_theme_load_icon(icon_theme,
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
222 icon2, /* icon name */
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
223 64, /* size */
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
224 0, /* flags */
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
225 &error);
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
226 if (error)
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
227 {
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
228 DEBUG_1("Couldn't load icon %s: %s", icon2, error->message);
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
229 g_error_free(error);
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
230 }
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
231 g_free(icon2);
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
232 }
1341
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
233 }
1458
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
234
a08532bb045a fixed loading of desktop file icons, gtk seems to expect an icon name without extension
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1443
diff changeset
235 if (!pixbuf) return FALSE;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
236
1341
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
237 register_stock_icon(key, pixbuf);
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
238 return TRUE;
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
239 }
75bf2e172da8 load icons for external editors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1334
diff changeset
240
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
241 gboolean pixbuf_scale_aspect(gint req_w, gint req_h,
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
242 gint old_w, gint old_h,
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
243 gint *new_w, gint *new_h)
864
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
244 {
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
245 if (((gdouble)req_w / old_w) < ((gdouble)req_h / old_h))
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
246 {
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
247 *new_w = req_w;
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
248 *new_h = (gdouble)*new_w / old_w * old_h;
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
249 if (*new_h < 1) *new_h = 1;
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
250 }
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
251 else
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
252 {
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
253 *new_h = req_h;
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
254 *new_w = (gdouble)*new_h / old_h * old_w;
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
255 if (*new_w < 1) *new_w = 1;
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
256 }
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
257
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
258 return (*new_w != old_w || *new_h != old_h);
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
259 }
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
260
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
261 GdkPixbuf *pixbuf_fallback(FileData *fd, gint requested_width, gint requested_height)
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
262 {
2597
e65df743a5a1 Ref #510: Rudimentary video support
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
263 GdkPixbuf *pixbuf;
e65df743a5a1 Ref #510: Rudimentary video support
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
264
e65df743a5a1 Ref #510: Rudimentary video support
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
265 switch (fd->format_class)
e65df743a5a1 Ref #510: Rudimentary video support
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
266 {
e65df743a5a1 Ref #510: Rudimentary video support
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
267 case FORMAT_CLASS_UNKNOWN:
e65df743a5a1 Ref #510: Rudimentary video support
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
268 pixbuf = pixbuf_inline(PIXBUF_INLINE_UNKNOWN);
e65df743a5a1 Ref #510: Rudimentary video support
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
269 break;
e65df743a5a1 Ref #510: Rudimentary video support
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
270 case FORMAT_CLASS_META:
e65df743a5a1 Ref #510: Rudimentary video support
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
271 pixbuf = pixbuf_inline(PIXBUF_INLINE_METADATA);
e65df743a5a1 Ref #510: Rudimentary video support
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
272 break;
e65df743a5a1 Ref #510: Rudimentary video support
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
273 case FORMAT_CLASS_VIDEO:
e65df743a5a1 Ref #510: Rudimentary video support
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
274 pixbuf = pixbuf_inline(PIXBUF_INLINE_VIDEO);
e65df743a5a1 Ref #510: Rudimentary video support
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
275 break;
2793
2feed80bcd34 Collections changes
Colin Clark <colin.clark@cclark.uk>
parents: 2597
diff changeset
276 case FORMAT_CLASS_COLLECTION:
2feed80bcd34 Collections changes
Colin Clark <colin.clark@cclark.uk>
parents: 2597
diff changeset
277 pixbuf = pixbuf_inline(PIXBUF_INLINE_COLLECTION);
2feed80bcd34 Collections changes
Colin Clark <colin.clark@cclark.uk>
parents: 2597
diff changeset
278 break;
2799
ea4163f0c769 Ref #332: include pdf-view
Colin Clark <colin.clark@cclark.uk>
parents: 2795
diff changeset
279 case FORMAT_CLASS_PDF:
ea4163f0c769 Ref #332: include pdf-view
Colin Clark <colin.clark@cclark.uk>
parents: 2795
diff changeset
280 pixbuf = pixbuf_inline(PIXBUF_INLINE_ICON_PDF);
ea4163f0c769 Ref #332: include pdf-view
Colin Clark <colin.clark@cclark.uk>
parents: 2795
diff changeset
281 break;
2597
e65df743a5a1 Ref #510: Rudimentary video support
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
282 default:
e65df743a5a1 Ref #510: Rudimentary video support
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
283 pixbuf = pixbuf_inline(PIXBUF_INLINE_BROKEN);
e65df743a5a1 Ref #510: Rudimentary video support
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
284 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
285
864
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
286 if (requested_width && requested_height)
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
287 {
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
288 gint w = gdk_pixbuf_get_width(pixbuf);
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
289 gint h = gdk_pixbuf_get_height(pixbuf);
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
290
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
291 if (w > requested_width || h > requested_height)
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
292 {
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
293 gint nw, nh;
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
294
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
295 if (pixbuf_scale_aspect(requested_width, requested_height,
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
296 w, h, &nw, &nh))
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
297 {
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
298 GdkPixbuf *tmp;
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
299
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
300 tmp = pixbuf;
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
301 pixbuf = gdk_pixbuf_scale_simple(tmp, nw, nh, GDK_INTERP_TILES);
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
302 g_object_unref(G_OBJECT(tmp));
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
303 }
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
304 }
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
305 }
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
306 return pixbuf;
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
307 }
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
308
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 839
diff changeset
309
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
310 /*
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
311 *-----------------------------------------------------------------------------
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
312 * misc utils
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
313 *-----------------------------------------------------------------------------
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
314 */
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
315
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
316 gboolean util_clip_region(gint x, gint y, gint w, gint h,
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
317 gint clip_x, gint clip_y, gint clip_w, gint clip_h,
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
318 gint *rx, gint *ry, gint *rw, gint *rh)
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
319 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
320 if (clip_x + clip_w <= x ||
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
321 clip_x >= x + w ||
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
322 clip_y + clip_h <= y ||
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
323 clip_y >= y + h)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
324 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
325 return FALSE;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
326 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
327
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
328 *rx = MAX(x, clip_x);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
329 *rw = MIN((x + w), (clip_x + clip_w)) - *rx;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
330
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
331 *ry = MAX(y, clip_y);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
332 *rh = MIN((y + h), (clip_y + clip_h)) - *ry;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
333
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
334 return TRUE;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
335 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
336
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
337 /*
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
338 *-----------------------------------------------------------------------------
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
339 * pixbuf rotation
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
340 *-----------------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
341 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
342
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
343 static void pixbuf_copy_block_rotate(guchar *src, gint src_row_stride, gint x, gint y,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
344 guchar *dest, gint dest_row_stride, gint w, gint h,
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
345 gint bytes_per_pixel, gboolean counter_clockwise)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
346 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
347 gint i, j;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
348 guchar *sp;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
349 guchar *dp;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
350
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
351 for (i = 0; i < h; i++)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
352 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
353 sp = src + ((i + y) * src_row_stride) + (x * bytes_per_pixel);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
354 for (j = 0; j < w; j++)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
355 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
356 if (counter_clockwise)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
357 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
358 dp = dest + ((w - j - 1) * dest_row_stride) + (i * bytes_per_pixel);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
359 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
360 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
361 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
362 dp = dest + (j * dest_row_stride) + ((h - i - 1) * bytes_per_pixel);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
363 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
364 *(dp++) = *(sp++); /* r */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
365 *(dp++) = *(sp++); /* g */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
366 *(dp++) = *(sp++); /* b */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
367 if (bytes_per_pixel == 4) *(dp) = *(sp++); /* a */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
368 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
369 }
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 288
diff changeset
370
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
371 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
372
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
373 static void pixbuf_copy_block(guchar *src, gint src_row_stride, gint w, gint h,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
374 guchar *dest, gint dest_row_stride, gint x, gint y, gint bytes_per_pixel)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
375 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
376 gint i;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
377 guchar *sp;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
378 guchar *dp;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
379
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
380 for (i = 0; i < h; i++)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
381 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
382 sp = src + (i * src_row_stride);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
383 dp = dest + ((y + i) * dest_row_stride) + (x * bytes_per_pixel);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
384 memcpy(dp, sp, w * bytes_per_pixel);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
385 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
386 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
387
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
388 #define ROTATE_BUFFER_WIDTH 48
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
389 #define ROTATE_BUFFER_HEIGHT 48
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
390
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
391 /*
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
392 * Returns a copy of pixbuf src rotated 90 degrees clockwise or 90 counterclockwise
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
393 *
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
394 */
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
395 GdkPixbuf *pixbuf_copy_rotate_90(GdkPixbuf *src, gboolean counter_clockwise)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
396 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
397 GdkPixbuf *dest;
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
398 gboolean has_alpha;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
399 gint sw, sh, srs;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
400 gint dw, dh, drs;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
401 guchar *s_pix;
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 288
diff changeset
402 guchar *d_pix;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
403 gint i, j;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
404 gint a;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
405 GdkPixbuf *buffer;
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 288
diff changeset
406 guchar *b_pix;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
407 gint brs;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
408 gint w, h;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
409
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
410 if (!src) return NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
411
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
412 sw = gdk_pixbuf_get_width(src);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
413 sh = gdk_pixbuf_get_height(src);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
414 has_alpha = gdk_pixbuf_get_has_alpha(src);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
415 srs = gdk_pixbuf_get_rowstride(src);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
416 s_pix = gdk_pixbuf_get_pixels(src);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
417
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
418 dw = sh;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
419 dh = sw;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
420 dest = gdk_pixbuf_new(GDK_COLORSPACE_RGB, has_alpha, 8, dw, dh);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
421 drs = gdk_pixbuf_get_rowstride(dest);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
422 d_pix = gdk_pixbuf_get_pixels(dest);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
423
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
424 a = (has_alpha ? 4 : 3);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
425
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
426 buffer = gdk_pixbuf_new(GDK_COLORSPACE_RGB, has_alpha, 8,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
427 ROTATE_BUFFER_WIDTH, ROTATE_BUFFER_HEIGHT);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
428 b_pix = gdk_pixbuf_get_pixels(buffer);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
429 brs = gdk_pixbuf_get_rowstride(buffer);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
430
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
431 for (i = 0; i < sh; i+= ROTATE_BUFFER_WIDTH)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
432 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
433 w = MIN(ROTATE_BUFFER_WIDTH, (sh - i));
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
434 for (j = 0; j < sw; j += ROTATE_BUFFER_HEIGHT)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
435 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
436 gint x, y;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
437
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
438 h = MIN(ROTATE_BUFFER_HEIGHT, (sw - j));
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
439 pixbuf_copy_block_rotate(s_pix, srs, j, i,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
440 b_pix, brs, h, w,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
441 a, counter_clockwise);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
442
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
443 if (counter_clockwise)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
444 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
445 x = i;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
446 y = sw - h - j;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
447 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
448 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
449 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
450 x = sh - w - i;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
451 y = j;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
452 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
453 pixbuf_copy_block(b_pix, brs, w, h,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
454 d_pix, drs, x, y, a);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
455 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
456 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
457
1043
718ab8111f48 Replaced gtk depreceated code.
Petr Ostadal <postadal@suse.cz>
parents: 1001
diff changeset
458 g_object_unref(buffer);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
459
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
460 #if 0
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
461 /* this is the simple version of rotation (roughly 2-4x slower) */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
462
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
463 for (i = 0; i < sh; i++)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
464 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
465 sp = s_pix + (i * srs);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
466 for (j = 0; j < sw; j++)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
467 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
468 if (counter_clockwise)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
469 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
470 dp = d_pix + ((dh - j - 1) * drs) + (i * a);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
471 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
472 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
473 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
474 dp = d_pix + (j * drs) + ((dw - i - 1) * a);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
475 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
476
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
477 *(dp++) = *(sp++); /* r */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
478 *(dp++) = *(sp++); /* g */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
479 *(dp++) = *(sp++); /* b */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
480 if (has_alpha) *(dp) = *(sp++); /* a */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
481 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
482 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
483 #endif
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
484
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
485 return dest;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
486 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
487
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
488 /*
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
489 * Returns a copy of pixbuf mirrored and or flipped.
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
490 * TO do a 180 degree rotations set both mirror and flipped TRUE
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
491 * if mirror and flip are FALSE, result is a simple copy.
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
492 */
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
493 GdkPixbuf *pixbuf_copy_mirror(GdkPixbuf *src, gboolean mirror, gboolean flip)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
494 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
495 GdkPixbuf *dest;
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
496 gboolean has_alpha;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
497 gint w, h, srs;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
498 gint drs;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
499 guchar *s_pix;
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 288
diff changeset
500 guchar *d_pix;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
501 guchar *sp;
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 288
diff changeset
502 guchar *dp;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
503 gint i, j;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
504 gint a;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
505
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
506 if (!src) return NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
507
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
508 w = gdk_pixbuf_get_width(src);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
509 h = gdk_pixbuf_get_height(src);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
510 has_alpha = gdk_pixbuf_get_has_alpha(src);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
511 srs = gdk_pixbuf_get_rowstride(src);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
512 s_pix = gdk_pixbuf_get_pixels(src);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
513
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
514 dest = gdk_pixbuf_new(GDK_COLORSPACE_RGB, has_alpha, 8, w, h);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
515 drs = gdk_pixbuf_get_rowstride(dest);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
516 d_pix = gdk_pixbuf_get_pixels(dest);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
517
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
518 a = has_alpha ? 4 : 3;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
519
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
520 for (i = 0; i < h; i++)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
521 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
522 sp = s_pix + (i * srs);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
523 if (flip)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
524 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
525 dp = d_pix + ((h - i - 1) * drs);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
526 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
527 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
528 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
529 dp = d_pix + (i * drs);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
530 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
531 if (mirror)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
532 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
533 dp += (w - 1) * a;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
534 for (j = 0; j < w; j++)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
535 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
536 *(dp++) = *(sp++); /* r */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
537 *(dp++) = *(sp++); /* g */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
538 *(dp++) = *(sp++); /* b */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
539 if (has_alpha) *(dp) = *(sp++); /* a */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
540 dp -= (a + 3);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
541 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
542 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
543 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
544 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
545 for (j = 0; j < w; j++)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
546 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
547 *(dp++) = *(sp++); /* r */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
548 *(dp++) = *(sp++); /* g */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
549 *(dp++) = *(sp++); /* b */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
550 if (has_alpha) *(dp++) = *(sp++); /* a */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
551 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
552 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
553 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
554
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
555 return dest;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
556 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
557
1001
a1f0b2010ca1 Consistency: type * instead of type*.
Laurent Monin <geeqie@norz.org>
parents: 1000
diff changeset
558 GdkPixbuf *pixbuf_apply_orientation(GdkPixbuf *pixbuf, gint orientation)
839
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
559 {
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
560 GdkPixbuf *dest;
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
561 GdkPixbuf *tmp = NULL;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
562
839
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
563 switch (orientation)
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
564 {
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
565 case EXIF_ORIENTATION_TOP_LEFT:
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
566 dest = gdk_pixbuf_copy(pixbuf);
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
567 break;
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
568 case EXIF_ORIENTATION_TOP_RIGHT:
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
569 /* mirrored */
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
570 dest = pixbuf_copy_mirror(pixbuf, TRUE, FALSE);
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
571 break;
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
572 case EXIF_ORIENTATION_BOTTOM_RIGHT:
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
573 /* upside down */
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
574 dest = pixbuf_copy_mirror(pixbuf, TRUE, TRUE);
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
575 break;
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
576 case EXIF_ORIENTATION_BOTTOM_LEFT:
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
577 /* flipped */
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
578 dest = pixbuf_copy_mirror(pixbuf, FALSE, TRUE);
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
579 break;
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
580 case EXIF_ORIENTATION_LEFT_TOP:
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
581 tmp = pixbuf_copy_mirror(pixbuf, FALSE, TRUE);
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
582 dest = pixbuf_copy_rotate_90(tmp, FALSE);
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
583 break;
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
584 case EXIF_ORIENTATION_RIGHT_TOP:
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
585 /* rotated -90 (270) */
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
586 dest = pixbuf_copy_rotate_90(pixbuf, FALSE);
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
587 break;
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
588 case EXIF_ORIENTATION_RIGHT_BOTTOM:
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
589 tmp = pixbuf_copy_mirror(pixbuf, FALSE, TRUE);
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
590 dest = pixbuf_copy_rotate_90(tmp, TRUE);
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
591 break;
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
592 case EXIF_ORIENTATION_LEFT_BOTTOM:
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
593 /* rotated 90 */
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
594 dest = pixbuf_copy_rotate_90(pixbuf, TRUE);
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
595 break;
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
596 default:
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
597 dest = gdk_pixbuf_copy(pixbuf);
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
598 break;
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
599 }
1043
718ab8111f48 Replaced gtk depreceated code.
Petr Ostadal <postadal@suse.cz>
parents: 1001
diff changeset
600 if (tmp) g_object_unref(tmp);
839
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
601 return dest;
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
602
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
603 }
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 673
diff changeset
604
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
605
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
606 /*
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
607 *-----------------------------------------------------------------------------
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
608 * pixbuf drawing (rectangles)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
609 *-----------------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
610 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
611
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
612 /*
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
613 * Fills region of pixbuf at x,y over w,h
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
614 * with colors red (r), green (g), blue (b)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
615 * applying alpha (a), use a=255 for solid.
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
616 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
617 void pixbuf_draw_rect_fill(GdkPixbuf *pb,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
618 gint x, gint y, gint w, gint h,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
619 gint r, gint g, gint b, gint a)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
620 {
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
621 gboolean has_alpha;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
622 gint pw, ph, prs;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
623 guchar *p_pix;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
624 guchar *pp;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
625 gint i, j;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
626
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
627 if (!pb) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
628
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
629 pw = gdk_pixbuf_get_width(pb);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
630 ph = gdk_pixbuf_get_height(pb);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
631
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
632 if (x < 0 || x + w > pw) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
633 if (y < 0 || y + h > ph) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
634
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
635 has_alpha = gdk_pixbuf_get_has_alpha(pb);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
636 prs = gdk_pixbuf_get_rowstride(pb);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
637 p_pix = gdk_pixbuf_get_pixels(pb);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
638
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 288
diff changeset
639 for (i = 0; i < h; i++)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
640 {
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
641 pp = p_pix + (y + i) * prs + (x * (has_alpha ? 4 : 3));
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
642 for (j = 0; j < w; j++)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
643 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
644 *pp = (r * a + *pp * (256-a)) >> 8;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
645 pp++;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
646 *pp = (g * a + *pp * (256-a)) >> 8;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
647 pp++;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
648 *pp = (b * a + *pp * (256-a)) >> 8;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
649 pp++;
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
650 if (has_alpha) pp++;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
651 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
652 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
653 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
654
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
655 void pixbuf_draw_rect(GdkPixbuf *pb,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
656 gint x, gint y, gint w, gint h,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
657 gint r, gint g, gint b, gint a,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
658 gint left, gint right, gint top, gint bottom)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
659 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
660 pixbuf_draw_rect_fill(pb, x + left, y, w - left - right, top,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
661 r, g, b ,a);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
662 pixbuf_draw_rect_fill(pb, x + w - right, y, right, h,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
663 r, g, b ,a);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
664 pixbuf_draw_rect_fill(pb, x + left, y + h - bottom, w - left - right, bottom,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
665 r, g, b ,a);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
666 pixbuf_draw_rect_fill(pb, x, y, left, h,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
667 r, g, b ,a);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
668 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
669
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
670 void pixbuf_set_rect_fill(GdkPixbuf *pb,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
671 gint x, gint y, gint w, gint h,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
672 gint r, gint g, gint b, gint a)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
673 {
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
674 gboolean has_alpha;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
675 gint pw, ph, prs;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
676 guchar *p_pix;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
677 guchar *pp;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
678 gint i, j;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
679
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
680 if (!pb) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
681
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
682 pw = gdk_pixbuf_get_width(pb);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
683 ph = gdk_pixbuf_get_height(pb);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
684
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
685 if (x < 0 || x + w > pw) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
686 if (y < 0 || y + h > ph) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
687
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
688 has_alpha = gdk_pixbuf_get_has_alpha(pb);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
689 prs = gdk_pixbuf_get_rowstride(pb);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
690 p_pix = gdk_pixbuf_get_pixels(pb);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
691
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 288
diff changeset
692 for (i = 0; i < h; i++)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
693 {
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
694 pp = p_pix + (y + i) * prs + (x * (has_alpha ? 4 : 3));
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
695 for (j = 0; j < w; j++)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
696 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
697 *pp = r; pp++;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
698 *pp = g; pp++;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
699 *pp = b; pp++;
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
700 if (has_alpha) { *pp = a; pp++; }
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
701 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
702 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
703 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
704
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
705 void pixbuf_set_rect(GdkPixbuf *pb,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
706 gint x, gint y, gint w, gint h,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
707 gint r, gint g, gint b, gint a,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
708 gint left, gint right, gint top, gint bottom)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
709 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
710 pixbuf_set_rect_fill(pb, x + left, y, w - left - right, top,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
711 r, g, b ,a);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
712 pixbuf_set_rect_fill(pb, x + w - right, y, right, h,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
713 r, g, b ,a);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
714 pixbuf_set_rect_fill(pb, x + left, y + h - bottom, w - left - right, bottom,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
715 r, g, b ,a);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
716 pixbuf_set_rect_fill(pb, x, y, left, h,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
717 r, g, b ,a);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
718 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
719
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
720 void pixbuf_pixel_set(GdkPixbuf *pb, gint x, gint y, gint r, gint g, gint b, gint a)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
721 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
722 guchar *buf;
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
723 gboolean has_alpha;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
724 gint rowstride;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
725 guchar *p;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
726
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
727 if (x < 0 || x >= gdk_pixbuf_get_width(pb) ||
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 288
diff changeset
728 y < 0 || y >= gdk_pixbuf_get_height(pb)) return;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
729
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
730 buf = gdk_pixbuf_get_pixels(pb);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
731 has_alpha = gdk_pixbuf_get_has_alpha(pb);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
732 rowstride = gdk_pixbuf_get_rowstride(pb);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
733
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 288
diff changeset
734 p = buf + (y * rowstride) + (x * (has_alpha ? 4 : 3));
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
735 *p = r; p++;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
736 *p = g; p++;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
737 *p = b; p++;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
738 if (has_alpha) *p = a;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
739 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
740
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
741
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
742 /*
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
743 *-----------------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
744 * pixbuf text rendering
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
745 *-----------------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
746 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
747
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
748 static void pixbuf_copy_font(GdkPixbuf *src, gint sx, gint sy,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
749 GdkPixbuf *dest, gint dx, gint dy,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
750 gint w, gint h,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
751 guint8 r, guint8 g, guint8 b, guint8 a)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
752 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
753 gint sw, sh, srs;
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
754 gboolean s_alpha;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
755 gint s_step;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
756 guchar *s_pix;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
757 gint dw, dh, drs;
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
758 gboolean d_alpha;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
759 gint d_step;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
760 guchar *d_pix;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
761
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
762 guchar *sp;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
763 guchar *dp;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
764 gint i, j;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
765
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
766 if (!src || !dest) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
767
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
768 sw = gdk_pixbuf_get_width(src);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
769 sh = gdk_pixbuf_get_height(src);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
770
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
771 if (sx < 0 || sx + w > sw) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
772 if (sy < 0 || sy + h > sh) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
773
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
774 dw = gdk_pixbuf_get_width(dest);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
775 dh = gdk_pixbuf_get_height(dest);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
776
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
777 if (dx < 0 || dx + w > dw) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
778 if (dy < 0 || dy + h > dh) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
779
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
780 s_alpha = gdk_pixbuf_get_has_alpha(src);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
781 d_alpha = gdk_pixbuf_get_has_alpha(dest);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
782 srs = gdk_pixbuf_get_rowstride(src);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
783 drs = gdk_pixbuf_get_rowstride(dest);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
784 s_pix = gdk_pixbuf_get_pixels(src);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
785 d_pix = gdk_pixbuf_get_pixels(dest);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
786
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
787 s_step = (s_alpha) ? 4 : 3;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
788 d_step = (d_alpha) ? 4 : 3;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
789
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
790 for (i = 0; i < h; i++)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
791 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
792 sp = s_pix + (sy + i) * srs + sx * s_step;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
793 dp = d_pix + (dy + i) * drs + dx * d_step;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
794 for (j = 0; j < w; j++)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
795 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
796 if (*sp)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
797 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
798 guint8 asub;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
799
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
800 asub = a * sp[0] / 255;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
801 *dp = (r * asub + *dp * (256-asub)) >> 8;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
802 dp++;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
803 asub = a * sp[1] / 255;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
804 *dp = (g * asub + *dp * (256-asub)) >> 8;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
805 dp++;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
806 asub = a * sp[2] / 255;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
807 *dp = (b * asub + *dp * (256-asub)) >> 8;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
808 dp++;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
809
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
810 if (d_alpha)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
811 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
812 *dp = MAX(*dp, a * ((sp[0] + sp[1] + sp[2]) / 3) / 255);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
813 dp++;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
814 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
815 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
816 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
817 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
818 dp += d_step;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
819 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
820
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
821 sp += s_step;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
822 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
823 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
824 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
825
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
826 void pixbuf_draw_layout(GdkPixbuf *pixbuf, PangoLayout *layout, GtkWidget *widget,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
827 gint x, gint y,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
828 guint8 r, guint8 g, guint8 b, guint8 a)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
829 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
830 GdkPixbuf *buffer;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
831 gint w, h;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
832 gint sx, sy;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
833 gint dw, dh;
2034
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
834 cairo_surface_t *source;
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
835 cairo_t *cr;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
836
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
837 pango_layout_get_pixel_size(layout, &w, &h);
95
e103e1c85665 Fri Nov 3 11:40:48 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 91
diff changeset
838 if (w < 1 || h < 1) return;
e103e1c85665 Fri Nov 3 11:40:48 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 91
diff changeset
839
2034
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
840 source = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, w, h);
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
841
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
842 cr = cairo_create (source);
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
843 cairo_set_source_rgb(cr, 0, 0, 0);
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
844 cairo_rectangle (cr, 0, 0, w, h);
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
845 cairo_fill (cr);
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
846 cairo_set_source_rgb(cr, 1, 1, 1);
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
847 pango_cairo_show_layout (cr, layout);
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
848 cairo_destroy (cr);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
849
2034
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
850 buffer = gdk_pixbuf_new_from_data (cairo_image_surface_get_data (source),
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
851 GDK_COLORSPACE_RGB,
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
852 cairo_image_surface_get_format (source) == CAIRO_FORMAT_ARGB32,
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
853 8,
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
854 cairo_image_surface_get_width (source),
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
855 cairo_image_surface_get_height (source),
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
856 cairo_image_surface_get_stride (source),
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
857 NULL,
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
858 NULL);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
859
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
860 sx = 0;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
861 sy = 0;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
862 dw = gdk_pixbuf_get_width(pixbuf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
863 dh = gdk_pixbuf_get_height(pixbuf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
864
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
865 if (x < 0)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
866 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
867 w += x;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
868 sx = -x;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
869 x = 0;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
870 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
871
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
872 if (y < 0)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
873 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
874 h += y;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
875 sy = -y;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
876 y = 0;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
877 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
878
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
879 if (x + w > dw) w = dw - x;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
880 if (y + h > dh) h = dh - y;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
881
12
8e6d90233b6d ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents: 9
diff changeset
882 pixbuf_copy_font(buffer, sx, sy,
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
883 pixbuf, x, y, w, h,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
884 r, g, b, a);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
885
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
886 g_object_unref(buffer);
2034
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
887 cairo_surface_destroy(source);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
888 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
889
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
890 /*
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
891 *-----------------------------------------------------------------------------
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
892 * pixbuf drawing (triangle)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
893 *-----------------------------------------------------------------------------
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
894 */
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
895
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
896 void util_clip_triangle(gint x1, gint y1, gint x2, gint y2, gint x3, gint y3,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
897 gint *rx, gint *ry, gint *rw, gint *rh)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
898 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
899 gint tx, ty, tw, th;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
900
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
901 tx = MIN(x1, x2);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
902 tx = MIN(tx, x3);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
903 ty = MIN(y1, y2);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
904 ty = MIN(ty, y3);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
905 tw = MAX(abs(x1 - x2), abs(x2 - x3));
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
906 tw = MAX(tw, abs(x3 - x1));
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
907 th = MAX(abs(y1 - y2), abs(y2 - y3));
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
908 th = MAX(th, abs(y3 - y1));
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
909
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
910 *rx = tx;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
911 *ry = ty;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
912 *rw = tw;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
913 *rh = th;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
914 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
915
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
916 void pixbuf_draw_triangle(GdkPixbuf *pb,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
917 gint clip_x, gint clip_y, gint clip_w, gint clip_h,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
918 gint x1, gint y1, gint x2, gint y2, gint x3, gint y3,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
919 guint8 r, guint8 g, guint8 b, guint8 a)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
920 {
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
921 gboolean has_alpha;
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
922 gint pw, ph, prs;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
923 gint rx, ry, rw, rh;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
924 gint tx, ty, tw, th;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
925 gint fx1, fy1;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
926 gint fx2, fy2;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
927 gint fw, fh;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
928 guchar *p_pix;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
929 guchar *pp;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
930 gint p_step;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
931 gdouble slope1, slope2;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
932 gint slope1_x, slope1_y;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
933 gint y;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
934 gint t;
1437
cc423d10b73e gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1398
diff changeset
935 gboolean middle = FALSE;
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
936
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
937 if (!pb) return;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
938
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
939 pw = gdk_pixbuf_get_width(pb);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
940 ph = gdk_pixbuf_get_height(pb);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
941
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
942 if (!util_clip_region(0, 0, pw, ph,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
943 clip_x, clip_y, clip_w, clip_h,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
944 &rx, &ry, &rw, &rh)) return;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
945
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
946 util_clip_triangle(x1, y1, x2, y2, x3, y3,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
947 &tx, &ty, &tw, &th);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
948
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
949 if (!util_clip_region(rx, ry, rw, rh,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
950 tx, ty, tw, th,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
951 &fx1, &fy1, &fw, &fh)) return;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
952 fx2 = fx1 + fw;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
953 fy2 = fy1 + fh;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
954
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
955 has_alpha = gdk_pixbuf_get_has_alpha(pb);
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
956 prs = gdk_pixbuf_get_rowstride(pb);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
957 p_pix = gdk_pixbuf_get_pixels(pb);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
958
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
959 p_step = (has_alpha) ? 4 : 3;
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
960
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
961 if (y1 > y2)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
962 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
963 t = x1; x1 = x2; x2 = t;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
964 t = y1; y1 = y2; y2 = t;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
965 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
966 if (y2 > y3)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
967 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
968 t = x2; x2 = x3; x3 = t;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
969 t = y2; y2 = y3; y3 = t;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
970 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
971 if (y1 > y2)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
972 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
973 t = x1; x1 = x2; x2 = t;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
974 t = y1; y1 = y2; y2 = t;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
975 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
976
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
977 slope1 = (gdouble)(y2 - y1);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
978 if (slope1) slope1 = (gdouble)(x2 - x1) / slope1;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
979 slope1_x = x1;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
980 slope1_y = y1;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
981 slope2 = (gdouble)(y3 - y1);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
982 if (slope2) slope2 = (gdouble)(x3 - x1) / slope2;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
983
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
984 for (y = fy1; y < fy2; y++)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
985 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
986 gint xa, xb;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
987
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
988 if (!middle && y > y2)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
989 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
990 slope1 = (gdouble)(y3 - y2);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
991 if (slope1) slope1 = (gdouble)(x3 - x2) / slope1;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
992 slope1_x = x2;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
993 slope1_y = y2;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
994
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
995 middle = TRUE;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
996 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
997
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
998 xa = slope1_x + ((gdouble)slope1 * (y - slope1_y) + 0.5);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
999 xb = x1 + ((gdouble)slope2 * (y - y1) + 0.5);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1000
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1001 if (xa > xb)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1002 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1003 t = xa; xa = xb; xb = t;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1004 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1005
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1006 xa = CLAMP(xa, fx1, fx2);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1007 xb = CLAMP(xb, fx1, fx2);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1008
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1009 pp = p_pix + y * prs + xa * p_step;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1010
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1011 while (xa < xb)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1012 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1013 *pp = (r * a + *pp * (256-a)) >> 8;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1014 pp++;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1015 *pp = (g * a + *pp * (256-a)) >> 8;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1016 pp++;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1017 *pp = (b * a + *pp * (256-a)) >> 8;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1018 pp++;
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1019 if (has_alpha) pp++;
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1020
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1021 xa++;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1022 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1023 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1024 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1025
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1026 /*
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1027 *-----------------------------------------------------------------------------
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1028 * pixbuf drawing (line)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1029 *-----------------------------------------------------------------------------
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1030 */
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1031
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1032 static gboolean util_clip_line(gdouble clip_x, gdouble clip_y, gdouble clip_w, gdouble clip_h,
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1033 gdouble x1, gdouble y1, gdouble x2, gdouble y2,
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1034 gdouble *rx1, gdouble *ry1, gdouble *rx2, gdouble *ry2)
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1035 {
1437
cc423d10b73e gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1398
diff changeset
1036 gboolean flip = FALSE;
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1037 gdouble d;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1038
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1039 if (x1 > x2)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1040 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1041 gdouble t;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1042
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1043 t = x1; x1 = x2; x2 = t;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1044 t = y1; y1 = y2; y2 = t;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1045 flip = TRUE;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1046 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1047
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1048 if (x2 < clip_x || x1 > clip_x + clip_w) return FALSE;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1049
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1050 if (y1 < y2)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1051 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1052 if (y2 < clip_y || y1 > clip_y + clip_h) return FALSE;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1053 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1054 else
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1055 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1056 if (y1 < clip_y || y2 > clip_y + clip_h) return FALSE;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1057 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1058
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1059 d = x2 - x1;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1060 if (d > 0.0)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1061 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1062 gdouble slope;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1063
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1064 slope = (y2 - y1) / d;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1065 if (x1 < clip_x)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1066 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1067 y1 = y1 + slope * (clip_x - x1);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1068 x1 = clip_x;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1069 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1070 if (x2 > clip_x + clip_w)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1071 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1072 y2 = y2 + slope * (clip_x + clip_w - x2);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1073 x2 = clip_x + clip_w;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1074 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1075 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1076
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1077 if (y1 < y2)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1078 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1079 if (y2 < clip_y || y1 > clip_y + clip_h) return FALSE;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1080 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1081 else
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1082 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1083 gdouble t;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1084
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1085 if (y1 < clip_y || y2 > clip_y + clip_h) return FALSE;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1086
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1087 t = x1; x1 = x2; x2 = t;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1088 t = y1; y1 = y2; y2 = t;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1089 flip = !flip;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1090 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1091
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1092 d = y2 - y1;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1093 if (d > 0.0)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1094 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1095 gdouble slope;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1096
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1097 slope = (x2 - x1) / d;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1098 if (y1 < clip_y)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1099 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1100 x1 = x1 + slope * (clip_y - y1);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1101 y1 = clip_y;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1102 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1103 if (y2 > clip_y + clip_h)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1104 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1105 x2 = x2 + slope * (clip_y + clip_h - y2);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1106 y2 = clip_y + clip_h;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1107 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1108 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1109
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1110 if (flip)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1111 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1112 *rx1 = x2;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1113 *ry1 = y2;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1114 *rx2 = x1;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1115 *ry2 = y1;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1116 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1117 else
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1118 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1119 *rx1 = x1;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1120 *ry1 = y1;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1121 *rx2 = x2;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1122 *ry2 = y2;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1123 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1124
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1125 return TRUE;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1126 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1127
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1128 void pixbuf_draw_line(GdkPixbuf *pb,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1129 gint clip_x, gint clip_y, gint clip_w, gint clip_h,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1130 gint x1, gint y1, gint x2, gint y2,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1131 guint8 r, guint8 g, guint8 b, guint8 a)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1132 {
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1133 gboolean has_alpha;
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1134 gint pw, ph, prs;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1135 gint rx, ry, rw, rh;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1136 gdouble rx1, ry1, rx2, ry2;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1137 guchar *p_pix;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1138 guchar *pp;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1139 gint p_step;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1140 gdouble slope;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1141 gdouble x, y;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1142 gint px, py;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1143 gint cx1, cy1, cx2, cy2;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1144
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1145 if (!pb) return;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1146
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1147 pw = gdk_pixbuf_get_width(pb);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1148 ph = gdk_pixbuf_get_height(pb);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1149
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1150 if (!util_clip_region(0, 0, pw, ph,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1151 clip_x, clip_y, clip_w, clip_h,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1152 &rx, &ry, &rw, &rh)) return;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1153 if (!util_clip_line((gdouble)rx, (gdouble)ry, (gdouble)rw, (gdouble)rh,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1154 (gdouble)x1, (gdouble)y1, (gdouble)x2, (gdouble)y2,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1155 &rx1, &ry1, &rx2, &ry2)) return;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1156
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1157 cx1 = rx;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1158 cy1 = ry;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1159 cx2 = rx + rw;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1160 cy2 = ry + rh;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1161
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1162 has_alpha = gdk_pixbuf_get_has_alpha(pb);
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1163 prs = gdk_pixbuf_get_rowstride(pb);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1164 p_pix = gdk_pixbuf_get_pixels(pb);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1165
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1166 p_step = (has_alpha) ? 4 : 3;
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1167
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1168 if (fabs(rx2 - rx1) > fabs(ry2 - ry1))
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1169 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1170 if (rx1 > rx2)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1171 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1172 gdouble t;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1173 t = rx1; rx1 = rx2; rx2 = t;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1174 t = ry1; ry1 = ry2; ry2 = t;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1175 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1176
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1177 slope = rx2 - rx1;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1178 if (slope != 0.0) slope = (ry2 - ry1) / slope;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1179 for (x = rx1; x < rx2; x += 1.0)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1180 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1181 px = (gint)(x + 0.5);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1182 py = (gint)(ry1 + (x - rx1) * slope + 0.5);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1183
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1184 if (px >= cx1 && px < cx2 && py >= cy1 && py < cy2)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1185 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1186 pp = p_pix + py * prs + px * p_step;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1187 *pp = (r * a + *pp * (256-a)) >> 8;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1188 pp++;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1189 *pp = (g * a + *pp * (256-a)) >> 8;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1190 pp++;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1191 *pp = (b * a + *pp * (256-a)) >> 8;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1192 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1193 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1194 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1195 else
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1196 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1197 if (ry1 > ry2)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1198 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1199 gdouble t;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1200 t = rx1; rx1 = rx2; rx2 = t;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1201 t = ry1; ry1 = ry2; ry2 = t;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1202 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1203
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1204 slope = ry2 - ry1;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1205 if (slope != 0.0) slope = (rx2 - rx1) / slope;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1206 for (y = ry1; y < ry2; y += 1.0)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1207 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1208 px = (gint)(rx1 + (y - ry1) * slope + 0.5);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1209 py = (gint)(y + 0.5);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1210
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1211 if (px >= cx1 && px < cx2 && py >= cy1 && py < cy2)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1212 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1213 pp = p_pix + py * prs + px * p_step;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1214 *pp = (r * a + *pp * (256-a)) >> 8;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1215 pp++;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1216 *pp = (g * a + *pp * (256-a)) >> 8;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1217 pp++;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1218 *pp = (b * a + *pp * (256-a)) >> 8;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1219 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1220 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1221 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1222 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1223
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1224 /*
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1225 *-----------------------------------------------------------------------------
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1226 * pixbuf drawing (fades and shadows)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1227 *-----------------------------------------------------------------------------
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1228 */
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1229
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1230 static void pixbuf_draw_fade_linear(guchar *p_pix, gint prs, gboolean has_alpha,
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1231 gint s, gboolean vertical, gint border,
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 288
diff changeset
1232 gint x1, gint y1, gint x2, gint y2,
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1233 guint8 r, guint8 g, guint8 b, guint8 a)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1234 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1235 guchar *pp;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1236 gint p_step;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1237 guint8 n = a;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1238 gint i, j;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1239
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1240 p_step = (has_alpha) ? 4 : 3;
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1241 for (j = y1; j < y2; j++)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1242 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1243 pp = p_pix + j * prs + x1 * p_step;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1244 if (!vertical) n = a - a * abs(j - s) / border;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1245 for (i = x1; i < x2; i++)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1246 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1247 if (vertical) n = a - a * abs(i - s) / border;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1248 *pp = (r * n + *pp * (256-n)) >> 8;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1249 pp++;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1250 *pp = (g * n + *pp * (256-n)) >> 8;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1251 pp++;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1252 *pp = (b * n + *pp * (256-n)) >> 8;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1253 pp++;
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1254 if (has_alpha) pp++;
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1255 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1256 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1257 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1258
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1259 static void pixbuf_draw_fade_radius(guchar *p_pix, gint prs, gboolean has_alpha,
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1260 gint sx, gint sy, gint border,
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 288
diff changeset
1261 gint x1, gint y1, gint x2, gint y2,
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1262 guint8 r, guint8 g, guint8 b, guint8 a)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1263 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1264 guchar *pp;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1265 gint p_step;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1266 gint i, j;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1267
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1268 p_step = (has_alpha) ? 4 : 3;
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1269 for (j = y1; j < y2; j++)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1270 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1271 pp = p_pix + j * prs + x1 * p_step;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1272 for (i = x1; i < x2; i++)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1273 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1274 guint8 n;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1275 gint r;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1276
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1277 r = MIN(border, (gint)sqrt((i-sx)*(i-sx) + (j-sy)*(j-sy)));
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1278 n = a - a * r / border;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1279 *pp = (r * n + *pp * (256-n)) >> 8;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1280 pp++;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1281 *pp = (g * n + *pp * (256-n)) >> 8;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1282 pp++;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1283 *pp = (b * n + *pp * (256-n)) >> 8;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1284 pp++;
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1285 if (has_alpha) pp++;
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1286 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1287 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1288 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1289
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1290 void pixbuf_draw_shadow(GdkPixbuf *pb,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1291 gint clip_x, gint clip_y, gint clip_w, gint clip_h,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1292 gint x, gint y, gint w, gint h, gint border,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1293 guint8 r, guint8 g, guint8 b, guint8 a)
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1294 {
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1295 gint has_alpha;
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1296 gint pw, ph, prs;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1297 gint rx, ry, rw, rh;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1298 gint fx, fy, fw, fh;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1299 guchar *p_pix;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1300
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1301 if (!pb) return;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1302
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1303 pw = gdk_pixbuf_get_width(pb);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1304 ph = gdk_pixbuf_get_height(pb);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1305
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1306 if (!util_clip_region(0, 0, pw, ph,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1307 clip_x, clip_y, clip_w, clip_h,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1308 &rx, &ry, &rw, &rh)) return;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1309
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1310 has_alpha = gdk_pixbuf_get_has_alpha(pb);
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1311 prs = gdk_pixbuf_get_rowstride(pb);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1312 p_pix = gdk_pixbuf_get_pixels(pb);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1313
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1314 if (util_clip_region(x + border, y + border, w - border * 2, h - border * 2,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1315 rx, ry, rw, rh,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1316 &fx, &fy, &fw, &fh))
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1317 {
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1318 pixbuf_draw_rect_fill(pb, fx, fy, fw, fh, r, g, b, a);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1319 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1320
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1321 if (border < 1) return;
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1322
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1323 if (util_clip_region(x, y + border, border, h - border * 2,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1324 rx, ry, rw, rh,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1325 &fx, &fy, &fw, &fh))
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1326 {
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1327 pixbuf_draw_fade_linear(p_pix, prs, has_alpha,
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1328 x + border, TRUE, border,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1329 fx, fy, fx + fw, fy + fh,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1330 r, g, b, a);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1331 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1332 if (util_clip_region(x + w - border, y + border, border, h - border * 2,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1333 rx, ry, rw, rh,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1334 &fx, &fy, &fw, &fh))
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1335 {
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1336 pixbuf_draw_fade_linear(p_pix, prs, has_alpha,
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1337 x + w - border, TRUE, border,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1338 fx, fy, fx + fw, fy + fh,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1339 r, g, b, a);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1340 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1341 if (util_clip_region(x + border, y, w - border * 2, border,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1342 rx, ry, rw, rh,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1343 &fx, &fy, &fw, &fh))
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1344 {
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1345 pixbuf_draw_fade_linear(p_pix, prs, has_alpha,
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1346 y + border, FALSE, border,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1347 fx, fy, fx + fw, fy + fh,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1348 r, g, b, a);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1349 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1350 if (util_clip_region(x + border, y + h - border, w - border * 2, border,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1351 rx, ry, rw, rh,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1352 &fx, &fy, &fw, &fh))
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1353 {
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1354 pixbuf_draw_fade_linear(p_pix, prs, has_alpha,
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1355 y + h - border, FALSE, border,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1356 fx, fy, fx + fw, fy + fh,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1357 r, g, b, a);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1358 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1359 if (util_clip_region(x, y, border, border,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1360 rx, ry, rw, rh,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1361 &fx, &fy, &fw, &fh))
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1362 {
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1363 pixbuf_draw_fade_radius(p_pix, prs, has_alpha,
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1364 x + border, y + border, border,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1365 fx, fy, fx + fw, fy + fh,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1366 r, g, b, a);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1367 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1368 if (util_clip_region(x + w - border, y, border, border,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1369 rx, ry, rw, rh,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1370 &fx, &fy, &fw, &fh))
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1371 {
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1372 pixbuf_draw_fade_radius(p_pix, prs, has_alpha,
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1373 x + w - border, y + border, border,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1374 fx, fy, fx + fw, fy + fh,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1375 r, g, b, a);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1376 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1377 if (util_clip_region(x, y + h - border, border, border,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1378 rx, ry, rw, rh,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1379 &fx, &fy, &fw, &fh))
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1380 {
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1381 pixbuf_draw_fade_radius(p_pix, prs, has_alpha,
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1382 x + border, y + h - border, border,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1383 fx, fy, fx + fw, fy + fh,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1384 r, g, b, a);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1385 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1386 if (util_clip_region(x + w - border, y + h - border, border, border,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1387 rx, ry, rw, rh,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1388 &fx, &fy, &fw, &fh))
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1389 {
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1390 pixbuf_draw_fade_radius(p_pix, prs, has_alpha,
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1391 x + w - border, y + h - border, border,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1392 fx, fy, fx + fw, fy + fh,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1393 r, g, b, a);
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1394 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1395 }
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1396
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 12
diff changeset
1397
82
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1398 /*
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1399 *-----------------------------------------------------------------------------
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1400 * pixbuf color alterations
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1401 *-----------------------------------------------------------------------------
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1402 */
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1403
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1404 void pixbuf_desaturate_rect(GdkPixbuf *pb,
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1405 gint x, gint y, gint w, gint h)
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1406 {
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1407 gboolean has_alpha;
82
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1408 gint pw, ph, prs;
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1409 guchar *p_pix;
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1410 guchar *pp;
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1411 gint i, j;
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1412
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1413 if (!pb) return;
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1414
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1415 pw = gdk_pixbuf_get_width(pb);
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1416 ph = gdk_pixbuf_get_height(pb);
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1417
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1418 if (x < 0 || x + w > pw) return;
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1419 if (y < 0 || y + h > ph) return;
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1420
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1421 has_alpha = gdk_pixbuf_get_has_alpha(pb);
82
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1422 prs = gdk_pixbuf_get_rowstride(pb);
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1423 p_pix = gdk_pixbuf_get_pixels(pb);
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1424
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 288
diff changeset
1425 for (i = 0; i < h; i++)
82
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1426 {
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1427 pp = p_pix + (y + i) * prs + (x * (has_alpha ? 4 : 3));
82
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1428 for (j = 0; j < w; j++)
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1429 {
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1430 guint8 grey;
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1431
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1432 grey = (pp[0] + pp[1] + pp[2]) / 3;
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1433 *pp = grey;
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1434 pp++;
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1435 *pp = grey;
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1436 pp++;
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1437 *pp = grey;
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1438 pp++;
1443
e29281a30ed8 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1439 if (has_alpha) pp++;
82
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1440 }
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1441 }
05a6aea69f24 Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 41
diff changeset
1442 }
1055
4bbdfab3c89a Adding a vim modeline to all files - patch by Klaus Ethgen
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
1443 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */