Fri, 05 Mar 2021 03:31:29 -0600
Create a PidginAvatar widget.
This does everything the existing code does, but trying to integrate right now
is kind of difficult. The plan is to use this in a new PidginInfoPane I have
started, but that change got very large so I just packed it into the end of
the existing info pane.
The only things that are not implement right now, are making menu items
insensitive and that's because we need to figure out a better want to handle
custom avatars for users.
Testing Done:
Ran locally.
Reviewed at https://reviews.imfreedom.org/r/528/
|
39568
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
1 | /* pidgin |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
2 | * |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
3 | * Pidgin is the legal property of its developers, whose names are too numerous |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
4 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
5 | * source distribution. |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
6 | * |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
7 | * This program is free software; you can redistribute it and/or modify |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
8 | * it under the terms of the GNU General Public License as published by |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
9 | * the Free Software Foundation; either version 2 of the License, or |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
10 | * (at your option) any later version. |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
11 | * |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
12 | * This program is distributed in the hope that it will be useful, |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
15 | * GNU General Public License for more details. |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
16 | * |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
17 | * You should have received a copy of the GNU General Public License |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
18 | * along with this program; if not, write to the Free Software |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
20 | */ |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
21 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
22 | #include "pidgin/pidgingdkpixbuf.h" |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
23 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
24 | GdkPixbuf * |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
25 | pidgin_gdk_pixbuf_new_from_image(PurpleImage *image, GError **error) { |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
26 | GdkPixbufLoader *loader = NULL; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
27 | GdkPixbuf *pixbuf = NULL; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
28 | GBytes *data = NULL; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
29 | gboolean success = FALSE; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
30 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
31 | g_return_val_if_fail(PURPLE_IS_IMAGE(image), NULL); |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
32 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
33 | data = purple_image_get_contents(image); |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
34 | success = gdk_pixbuf_loader_write_bytes(loader, data, error); |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
35 | g_bytes_unref(data); |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
36 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
37 | if(success) { |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
38 | if(error != NULL && *error != NULL) { |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
39 | g_object_unref(G_OBJECT(loader)); |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
40 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
41 | return NULL; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
42 | } |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
43 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
44 | if(gdk_pixbuf_loader_close(loader, error)) { |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
45 | pixbuf = gdk_pixbuf_loader_get_pixbuf(loader); |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
46 | if(pixbuf != NULL) { |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
47 | pixbuf = g_object_ref(pixbuf); |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
48 | } |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
49 | } |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
50 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
51 | g_object_unref(G_OBJECT(loader)); |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
52 | } |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
53 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
54 | return pixbuf; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
55 | } |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
56 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
57 | void pidgin_gdk_pixbuf_make_round(GdkPixbuf *pixbuf) { |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
58 | gint width, height, rowstride; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
59 | guchar *pixels; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
60 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
61 | if (!gdk_pixbuf_get_has_alpha(pixbuf)) { |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
62 | return; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
63 | } |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
64 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
65 | width = gdk_pixbuf_get_width(pixbuf); |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
66 | height = gdk_pixbuf_get_height(pixbuf); |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
67 | rowstride = gdk_pixbuf_get_rowstride(pixbuf); |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
68 | pixels = gdk_pixbuf_get_pixels(pixbuf); |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
69 | |
|
39571
b88f466a4a4d
Add some missing braces and fix some errant spaces
Gary Kramlich <grim@reaperworld.com>
parents:
39568
diff
changeset
|
70 | if (width < 6 || height < 6) { |
|
39568
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
71 | return; |
|
39571
b88f466a4a4d
Add some missing braces and fix some errant spaces
Gary Kramlich <grim@reaperworld.com>
parents:
39568
diff
changeset
|
72 | } |
|
39568
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
73 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
74 | /* The following code will conver the alpha of the pixel data in all |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
75 | * corners to look something like the following diagram. |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
76 | * |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
77 | * 00 80 c0 FF FF c0 80 00 |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
78 | * 80 FF FF FF FF FF FF 80 |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
79 | * c0 FF FF FF FF FF FF c0 |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
80 | * FF FF FF FF FF FF FF FF |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
81 | * FF FF FF FF FF FF FF FF |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
82 | * c0 FF FF FF FF FF FF c0 |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
83 | * 80 FF FF FF FF FF FF 80 |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
84 | * 00 80 c0 FF FF c0 80 00 |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
85 | */ |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
86 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
87 | /* Top left */ |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
88 | pixels[3] = 0; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
89 | pixels[7] = 0x80; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
90 | pixels[11] = 0xC0; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
91 | pixels[rowstride + 3] = 0x80; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
92 | pixels[rowstride * 2 + 3] = 0xC0; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
93 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
94 | /* Top right */ |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
95 | pixels[width * 4 - 1] = 0; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
96 | pixels[width * 4 - 5] = 0x80; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
97 | pixels[width * 4 - 9] = 0xC0; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
98 | pixels[rowstride + (width * 4) - 1] = 0x80; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
99 | pixels[(2 * rowstride) + (width * 4) - 1] = 0xC0; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
100 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
101 | /* Bottom left */ |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
102 | pixels[(height - 1) * rowstride + 3] = 0; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
103 | pixels[(height - 1) * rowstride + 7] = 0x80; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
104 | pixels[(height - 1) * rowstride + 11] = 0xC0; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
105 | pixels[(height - 2) * rowstride + 3] = 0x80; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
106 | pixels[(height - 3) * rowstride + 3] = 0xC0; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
107 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
108 | /* Bottom right */ |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
109 | pixels[height * rowstride - 1] = 0; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
110 | pixels[(height - 1) * rowstride - 1] = 0x80; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
111 | pixels[(height - 2) * rowstride - 1] = 0xC0; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
112 | pixels[height * rowstride - 5] = 0x80; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
113 | pixels[height * rowstride - 9] = 0xC0; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
114 | } |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
115 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
116 | gboolean |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
117 | pidgin_gdk_pixbuf_is_opaque(GdkPixbuf *pixbuf) { |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
118 | gint height, rowstride, i; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
119 | guchar *pixels; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
120 | guchar *row; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
121 | |
|
39571
b88f466a4a4d
Add some missing braces and fix some errant spaces
Gary Kramlich <grim@reaperworld.com>
parents:
39568
diff
changeset
|
122 | if (!gdk_pixbuf_get_has_alpha(pixbuf)) { |
|
39568
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
123 | return TRUE; |
|
39571
b88f466a4a4d
Add some missing braces and fix some errant spaces
Gary Kramlich <grim@reaperworld.com>
parents:
39568
diff
changeset
|
124 | } |
|
39568
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
125 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
126 | height = gdk_pixbuf_get_height (pixbuf); |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
127 | rowstride = gdk_pixbuf_get_rowstride (pixbuf); |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
128 | pixels = gdk_pixbuf_get_pixels (pixbuf); |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
129 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
130 | /* check the top row */ |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
131 | row = pixels; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
132 | for (i = 3; i < rowstride; i+=4) { |
|
39571
b88f466a4a4d
Add some missing braces and fix some errant spaces
Gary Kramlich <grim@reaperworld.com>
parents:
39568
diff
changeset
|
133 | if (row[i] < 0xfe) { |
|
39568
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
134 | return FALSE; |
|
39571
b88f466a4a4d
Add some missing braces and fix some errant spaces
Gary Kramlich <grim@reaperworld.com>
parents:
39568
diff
changeset
|
135 | } |
|
39568
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
136 | } |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
137 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
138 | /* check the left and right sides */ |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
139 | for (i = 1; i < height - 1; i++) { |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
140 | row = pixels + (i * rowstride); |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
141 | if (row[3] < 0xfe || row[rowstride - 1] < 0xfe) { |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
142 | return FALSE; |
|
39571
b88f466a4a4d
Add some missing braces and fix some errant spaces
Gary Kramlich <grim@reaperworld.com>
parents:
39568
diff
changeset
|
143 | } |
|
39568
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
144 | } |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
145 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
146 | /* check the bottom */ |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
147 | row = pixels + ((height - 1) * rowstride); |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
148 | for (i = 3; i < rowstride; i += 4) { |
|
39571
b88f466a4a4d
Add some missing braces and fix some errant spaces
Gary Kramlich <grim@reaperworld.com>
parents:
39568
diff
changeset
|
149 | if (row[i] < 0xfe) { |
|
39568
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
150 | return FALSE; |
|
39571
b88f466a4a4d
Add some missing braces and fix some errant spaces
Gary Kramlich <grim@reaperworld.com>
parents:
39568
diff
changeset
|
151 | } |
|
39568
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
152 | } |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
153 | |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
154 | return TRUE; |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
155 | } |
|
f4714f1de6d0
Start cleaning up gtkutils by moving functions to individual files
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
156 |