Mercurial > pidgin.yaz
comparison pidgin/pidginstock.c @ 16470:07460704af2d
merge of 'a65c75c45190137cfc6871a47c77bc2fd38e7689'
and 'cb9e41d481dcb4784b7a90f40caaf35188c95ab5'
author | Richard Nelson <wabz@pidgin.im> |
---|---|
date | Fri, 27 Apr 2007 13:00:00 +0000 |
parents | c0c5f07027ff |
children | 43e119f590ce |
comparison
equal
deleted
inserted
replaced
16415:97802d3f3f1f | 16470:07460704af2d |
---|---|
99 gboolean small; | 99 gboolean small; |
100 gboolean medium; | 100 gboolean medium; |
101 gboolean large; | 101 gboolean large; |
102 gboolean huge; | 102 gboolean huge; |
103 gboolean rtl; | 103 gboolean rtl; |
104 const char *translucent_name; | |
104 } const sized_stock_icons [] = { | 105 } const sized_stock_icons [] = { |
105 { PIDGIN_STOCK_STATUS_AVAILABLE, "status", "available.png", TRUE, TRUE, TRUE, TRUE, FALSE, FALSE }, | 106 { PIDGIN_STOCK_STATUS_AVAILABLE, "status", "available.png", TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AVAILABLE_I }, |
106 { PIDGIN_STOCK_STATUS_AVAILABLE_I, "status", "available_i.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 107 { PIDGIN_STOCK_STATUS_AWAY, "status", "away.png", TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AWAY_I }, |
107 { PIDGIN_STOCK_STATUS_AWAY, "status", "away.png", TRUE, TRUE, TRUE, TRUE, FALSE, FALSE }, | 108 { PIDGIN_STOCK_STATUS_BUSY, "status", "busy.png", TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_BUSY_I }, |
108 { PIDGIN_STOCK_STATUS_AWAY_I, "status", "away_i.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 109 { PIDGIN_STOCK_STATUS_CHAT, "status", "chat.png", TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL }, |
109 { PIDGIN_STOCK_STATUS_BUSY, "status", "busy.png", TRUE, TRUE, TRUE, TRUE, FALSE, FALSE }, | 110 { PIDGIN_STOCK_STATUS_INVISIBLE,"status", "invisible.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
110 { PIDGIN_STOCK_STATUS_BUSY_I, "status", "busy_i.png", TRUE, FALSE, FALSE, FALSE, FALSE,FALSE }, | 111 { PIDGIN_STOCK_STATUS_XA, "status", "extended-away.png", TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, PIDGIN_STOCK_STATUS_XA_I }, |
111 { PIDGIN_STOCK_STATUS_CHAT, "status", "chat.png", TRUE, TRUE, TRUE, TRUE, FALSE, TRUE }, | 112 { PIDGIN_STOCK_STATUS_LOGIN, "status", "log-in.png", TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, |
112 { PIDGIN_STOCK_STATUS_INVISIBLE,"status", "invisible.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 113 { PIDGIN_STOCK_STATUS_LOGOUT, "status", "log-out.png", TRUE, TRUE, TRUE, TRUE, FALSE, FALSE , NULL }, |
113 { PIDGIN_STOCK_STATUS_XA, "status", "extended-away.png", TRUE, TRUE, TRUE, TRUE, FALSE, TRUE }, | 114 { PIDGIN_STOCK_STATUS_OFFLINE, "status", "offline.png", TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, |
114 { PIDGIN_STOCK_STATUS_XA_I, "status", "extended-away_i.png",TRUE, FALSE, FALSE, FALSE, FALSE, TRUE }, | 115 { PIDGIN_STOCK_STATUS_PERSON, "status", "person.png", TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, |
115 { PIDGIN_STOCK_STATUS_LOGIN, "status", "log-in.png", TRUE, TRUE, TRUE, TRUE, FALSE, FALSE }, | 116 { PIDGIN_STOCK_STATUS_MESSAGE, "status", "message-pending.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
116 { PIDGIN_STOCK_STATUS_LOGOUT, "status", "log-out.png", TRUE, TRUE, TRUE, TRUE, FALSE, FALSE }, | |
117 { PIDGIN_STOCK_STATUS_OFFLINE, "status", "offline.png", TRUE, TRUE, TRUE, TRUE, FALSE, FALSE }, | |
118 { PIDGIN_STOCK_STATUS_PERSON, "status", "person.png", TRUE, TRUE, TRUE, TRUE, FALSE, FALSE }, | |
119 { PIDGIN_STOCK_STATUS_MESSAGE, "status", "message-pending.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | |
120 | 117 |
121 { PIDGIN_STOCK_STATUS_IGNORED, "emblems", "blocked.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 118 { PIDGIN_STOCK_STATUS_IGNORED, "emblems", "blocked.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
122 { PIDGIN_STOCK_STATUS_FOUNDER, "emblems", "founder.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 119 { PIDGIN_STOCK_STATUS_FOUNDER, "emblems", "founder.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
123 { PIDGIN_STOCK_STATUS_OPERATOR, "emblems", "operator.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 120 { PIDGIN_STOCK_STATUS_OPERATOR, "emblems", "operator.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
124 { PIDGIN_STOCK_STATUS_HALFOP, "emblems", "half-operator.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 121 { PIDGIN_STOCK_STATUS_HALFOP, "emblems", "half-operator.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
125 { PIDGIN_STOCK_STATUS_VOICE, "emblems", "voice.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 122 { PIDGIN_STOCK_STATUS_VOICE, "emblems", "voice.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
126 | 123 |
127 { PIDGIN_STOCK_DIALOG_AUTH, "dialogs", "auth.png", TRUE, FALSE, FALSE, FALSE, TRUE, FALSE }, | 124 { PIDGIN_STOCK_DIALOG_AUTH, "dialogs", "auth.png", TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL }, |
128 { PIDGIN_STOCK_DIALOG_COOL, "dialogs", "cool.png", FALSE, FALSE, FALSE, FALSE, TRUE, FALSE }, | 125 { PIDGIN_STOCK_DIALOG_COOL, "dialogs", "cool.png", FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL }, |
129 { PIDGIN_STOCK_DIALOG_ERROR, "dialogs", "error.png", TRUE, FALSE, FALSE, FALSE, TRUE, FALSE }, | 126 { PIDGIN_STOCK_DIALOG_ERROR, "dialogs", "error.png", TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL }, |
130 { PIDGIN_STOCK_DIALOG_INFO, "dialogs", "info.png", TRUE, FALSE, FALSE, FALSE, TRUE, FALSE }, | 127 { PIDGIN_STOCK_DIALOG_INFO, "dialogs", "info.png", TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL }, |
131 { PIDGIN_STOCK_DIALOG_MAIL, "dialogs", "mail.png", TRUE, FALSE, FALSE, FALSE, TRUE, FALSE }, | 128 { PIDGIN_STOCK_DIALOG_MAIL, "dialogs", "mail.png", TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL }, |
132 { PIDGIN_STOCK_DIALOG_QUESTION, "dialogs", "question.png", TRUE, FALSE, FALSE, FALSE, TRUE, FALSE }, | 129 { PIDGIN_STOCK_DIALOG_QUESTION, "dialogs", "question.png", TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL }, |
133 { PIDGIN_STOCK_DIALOG_WARNING, "dialogs", "warning.png", FALSE, FALSE, FALSE, FALSE, TRUE, FALSE }, | 130 { PIDGIN_STOCK_DIALOG_WARNING, "dialogs", "warning.png", FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, NULL }, |
134 | 131 |
135 { PIDGIN_STOCK_ANIMATION_CONNECT0, "animations", "connect0.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 132 { PIDGIN_STOCK_ANIMATION_CONNECT0, "animations", "connect0.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
136 { PIDGIN_STOCK_ANIMATION_CONNECT1, "animations", "connect1.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 133 { PIDGIN_STOCK_ANIMATION_CONNECT1, "animations", "connect1.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
137 { PIDGIN_STOCK_ANIMATION_CONNECT2, "animations", "connect2.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 134 { PIDGIN_STOCK_ANIMATION_CONNECT2, "animations", "connect2.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
138 { PIDGIN_STOCK_ANIMATION_CONNECT3, "animations", "connect3.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 135 { PIDGIN_STOCK_ANIMATION_CONNECT3, "animations", "connect3.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
139 { PIDGIN_STOCK_ANIMATION_CONNECT4, "animations", "connect4.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 136 { PIDGIN_STOCK_ANIMATION_CONNECT4, "animations", "connect4.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
140 { PIDGIN_STOCK_ANIMATION_CONNECT5, "animations", "connect5.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 137 { PIDGIN_STOCK_ANIMATION_CONNECT5, "animations", "connect5.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
141 { PIDGIN_STOCK_ANIMATION_CONNECT6, "animations", "connect6.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 138 { PIDGIN_STOCK_ANIMATION_CONNECT6, "animations", "connect6.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
142 { PIDGIN_STOCK_ANIMATION_CONNECT7, "animations", "connect7.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 139 { PIDGIN_STOCK_ANIMATION_CONNECT7, "animations", "connect7.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
143 { PIDGIN_STOCK_ANIMATION_CONNECT8, "animations", "connect8.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 140 { PIDGIN_STOCK_ANIMATION_CONNECT8, "animations", "connect8.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
144 { PIDGIN_STOCK_ANIMATION_TYPING0, "animations", "typing0.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 141 { PIDGIN_STOCK_ANIMATION_TYPING0, "animations", "typing0.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
145 { PIDGIN_STOCK_ANIMATION_TYPING1, "animations", "typing1.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 142 { PIDGIN_STOCK_ANIMATION_TYPING1, "animations", "typing1.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
146 { PIDGIN_STOCK_ANIMATION_TYPING2, "animations", "typing2.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 143 { PIDGIN_STOCK_ANIMATION_TYPING2, "animations", "typing2.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
147 { PIDGIN_STOCK_ANIMATION_TYPING3, "animations", "typing3.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 144 { PIDGIN_STOCK_ANIMATION_TYPING3, "animations", "typing3.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
148 { PIDGIN_STOCK_ANIMATION_TYPING4, "animations", "typing4.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 145 { PIDGIN_STOCK_ANIMATION_TYPING4, "animations", "typing4.png",TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
149 | 146 |
150 { PIDGIN_STOCK_TOOLBAR_ACCOUNTS, "toolbar", "accounts.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 147 { PIDGIN_STOCK_TOOLBAR_ACCOUNTS, "toolbar", "accounts.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
151 { PIDGIN_STOCK_TOOLBAR_BGCOLOR, "toolbar", "change-bgcolor.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 148 { PIDGIN_STOCK_TOOLBAR_BGCOLOR, "toolbar", "change-bgcolor.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
152 { PIDGIN_STOCK_TOOLBAR_BLOCK, "emblems", "blocked.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 149 { PIDGIN_STOCK_TOOLBAR_BLOCK, "emblems", "blocked.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
153 { PIDGIN_STOCK_TOOLBAR_FGCOLOR, "toolbar", "change-fgcolor.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 150 { PIDGIN_STOCK_TOOLBAR_FGCOLOR, "toolbar", "change-fgcolor.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
154 { PIDGIN_STOCK_TOOLBAR_SMILEY, "toolbar", "emote-select.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 151 { PIDGIN_STOCK_TOOLBAR_SMILEY, "toolbar", "emote-select.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
155 { PIDGIN_STOCK_TOOLBAR_FONT_FACE, "toolbar", "font-face.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 152 { PIDGIN_STOCK_TOOLBAR_FONT_FACE, "toolbar", "font-face.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
156 { PIDGIN_STOCK_TOOLBAR_TEXT_SMALLER, "toolbar", "font-size-down.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 153 { PIDGIN_STOCK_TOOLBAR_TEXT_SMALLER, "toolbar", "font-size-down.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
157 { PIDGIN_STOCK_TOOLBAR_TEXT_LARGER, "toolbar", "font-size-up.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 154 { PIDGIN_STOCK_TOOLBAR_TEXT_LARGER, "toolbar", "font-size-up.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
158 { PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE, "toolbar", "insert-image.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 155 { PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE, "toolbar", "insert-image.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
159 { PIDGIN_STOCK_TOOLBAR_INSERT_LINK, "toolbar", "insert-link.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 156 { PIDGIN_STOCK_TOOLBAR_INSERT_LINK, "toolbar", "insert-link.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
160 { PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW, "toolbar", "message-new.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 157 { PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW, "toolbar", "message-new.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
161 { PIDGIN_STOCK_TOOLBAR_PENDING, "status", "message-pending.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 158 { PIDGIN_STOCK_TOOLBAR_PENDING, "status", "message-pending.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
162 { PIDGIN_STOCK_TOOLBAR_PLUGINS, "toolbar", "plugins.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 159 { PIDGIN_STOCK_TOOLBAR_PLUGINS, "toolbar", "plugins.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
163 { PIDGIN_STOCK_TOOLBAR_TYPING, "toolbar", "typing.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 160 { PIDGIN_STOCK_TOOLBAR_TYPING, "toolbar", "typing.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
164 { PIDGIN_STOCK_TOOLBAR_UNBLOCK, "toolbar", "unblock.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, | 161 { PIDGIN_STOCK_TOOLBAR_UNBLOCK, "toolbar", "unblock.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, |
165 { PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR, "toolbar", "select-avatar.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE }, | 162 { PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR, "toolbar", "select-avatar.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, NULL }, |
166 | 163 |
167 { PIDGIN_STOCK_TRAY_AVAILABLE, "tray", "tray-online.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE }, | 164 { PIDGIN_STOCK_TRAY_AVAILABLE, "tray", "tray-online.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, NULL }, |
168 { PIDGIN_STOCK_TRAY_AWAY, "tray", "tray-away.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE }, | 165 { PIDGIN_STOCK_TRAY_AWAY, "tray", "tray-away.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, NULL }, |
169 { PIDGIN_STOCK_TRAY_BUSY, "tray", "tray-busy.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE }, | 166 { PIDGIN_STOCK_TRAY_BUSY, "tray", "tray-busy.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, NULL }, |
170 { PIDGIN_STOCK_TRAY_XA, "tray", "tray-extended-away.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE }, | 167 { PIDGIN_STOCK_TRAY_XA, "tray", "tray-extended-away.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, NULL }, |
171 { PIDGIN_STOCK_TRAY_OFFLINE, "tray", "tray-offline.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE }, | 168 { PIDGIN_STOCK_TRAY_OFFLINE, "tray", "tray-offline.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, NULL }, |
172 { PIDGIN_STOCK_TRAY_CONNECT, "tray", "tray-connecting.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE }, | 169 { PIDGIN_STOCK_TRAY_CONNECT, "tray", "tray-connecting.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, NULL }, |
173 { PIDGIN_STOCK_TRAY_PENDING, "tray", "tray-message.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE } | 170 { PIDGIN_STOCK_TRAY_PENDING, "tray", "tray-message.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, NULL } |
174 }; | 171 }; |
175 | 172 |
176 static gchar * | 173 static gchar * |
177 find_file(const char *dir, const char *base) | 174 find_file(const char *dir, const char *base) |
178 { | 175 { |
235 gtk_icon_source_free(source); | 232 gtk_icon_source_free(source); |
236 } | 233 } |
237 | 234 |
238 | 235 |
239 } | 236 } |
237 | |
238 /* Altered from do_colorshift in gnome-panel */ | |
239 static void | |
240 do_alphashift (GdkPixbuf *dest, GdkPixbuf *src, int shift) | |
241 { | |
242 gint i, j; | |
243 gint width, height, has_alpha, srcrowstride, destrowstride; | |
244 guchar *target_pixels; | |
245 guchar *original_pixels; | |
246 guchar *pixsrc; | |
247 guchar *pixdest; | |
248 int val; | |
249 guchar a; | |
250 | |
251 has_alpha = gdk_pixbuf_get_has_alpha (src); | |
252 if (!has_alpha) | |
253 return; | |
254 | |
255 width = gdk_pixbuf_get_width (src); | |
256 height = gdk_pixbuf_get_height (src); | |
257 srcrowstride = gdk_pixbuf_get_rowstride (src); | |
258 destrowstride = gdk_pixbuf_get_rowstride (dest); | |
259 target_pixels = gdk_pixbuf_get_pixels (dest); | |
260 original_pixels = gdk_pixbuf_get_pixels (src); | |
261 | |
262 for (i = 0; i < height; i++) { | |
263 pixdest = target_pixels + i*destrowstride; | |
264 pixsrc = original_pixels + i*srcrowstride; | |
265 for (j = 0; j < width; j++) { | |
266 *(pixdest++) = *(pixsrc++); | |
267 *(pixdest++) = *(pixsrc++); | |
268 *(pixdest++) = *(pixsrc++); | |
269 a = *(pixsrc++); | |
270 val = a - shift; | |
271 *(pixdest++) = CLAMP(val, 0, 255); | |
272 } | |
273 } | |
274 } | |
275 | |
276 /* TODO: This is almost certainly not the best way to do this, but it's late, I'm tired, | |
277 * we're a few hours from getting this thing out, and copy/paste is EASY. | |
278 */ | |
279 static void | |
280 add_translucent_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir, | |
281 gboolean rtl, const char *size, const char *file) | |
282 { | |
283 char *filename; | |
284 GtkIconSource *source; | |
285 GdkPixbuf *pixbuf; | |
286 | |
287 filename = g_build_filename(DATADIR, "pixmaps", "pidgin", dir, size, file, NULL); | |
288 pixbuf = gdk_pixbuf_new_from_file(filename, NULL); | |
289 do_alphashift(pixbuf, pixbuf, 128); | |
290 | |
291 source = gtk_icon_source_new(); | |
292 gtk_icon_source_set_pixbuf(source, pixbuf); | |
293 gtk_icon_source_set_direction(source, GTK_TEXT_DIR_LTR); | |
294 gtk_icon_source_set_direction_wildcarded(source, !rtl); | |
295 gtk_icon_source_set_size(source, sizeid); | |
296 gtk_icon_source_set_size_wildcarded(source, FALSE); | |
297 gtk_icon_source_set_state_wildcarded(source, TRUE); | |
298 gtk_icon_set_add_source(iconset, source); | |
299 gtk_icon_source_free(source); | |
300 | |
301 if (sizeid == gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)) { | |
302 source = gtk_icon_source_new(); | |
303 gtk_icon_source_set_pixbuf(source, pixbuf); | |
304 gtk_icon_source_set_direction_wildcarded(source, TRUE); | |
305 gtk_icon_source_set_size(source, GTK_ICON_SIZE_MENU); | |
306 gtk_icon_source_set_size_wildcarded(source, FALSE); | |
307 gtk_icon_source_set_state_wildcarded(source, TRUE); | |
308 gtk_icon_set_add_source(iconset, source); | |
309 gtk_icon_source_free(source); | |
310 } | |
311 g_free(filename); | |
312 g_object_unref(pixbuf); | |
313 | |
314 if (rtl) { | |
315 filename = g_build_filename(DATADIR, "pixmaps", "pidgin", dir, size, "rtl", file, NULL); | |
316 pixbuf = gdk_pixbuf_new_from_file(filename, NULL); | |
317 do_alphashift(pixbuf, pixbuf, 128); | |
318 source = gtk_icon_source_new(); | |
319 gtk_icon_source_set_pixbuf(source, pixbuf); | |
320 gtk_icon_source_set_direction(source, GTK_TEXT_DIR_RTL); | |
321 gtk_icon_source_set_size(source, sizeid); | |
322 gtk_icon_source_set_size_wildcarded(source, FALSE); | |
323 gtk_icon_source_set_state_wildcarded(source, TRUE); | |
324 gtk_icon_set_add_source(iconset, source); | |
325 g_free(filename); | |
326 g_object_unref(pixbuf); | |
327 gtk_icon_source_free(source); | |
328 } | |
329 | |
330 | |
331 } | |
332 | |
240 | 333 |
241 void | 334 void |
242 pidgin_stock_init(void) | 335 pidgin_stock_init(void) |
243 { | 336 { |
244 static gboolean stock_initted = FALSE; | 337 static gboolean stock_initted = FALSE; |
332 sized_stock_icons[i].dir, sized_stock_icons[i].rtl, | 425 sized_stock_icons[i].dir, sized_stock_icons[i].rtl, |
333 "64", sized_stock_icons[i].filename); | 426 "64", sized_stock_icons[i].filename); |
334 | 427 |
335 gtk_icon_factory_add(icon_factory, sized_stock_icons[i].name, iconset); | 428 gtk_icon_factory_add(icon_factory, sized_stock_icons[i].name, iconset); |
336 gtk_icon_set_unref(iconset); | 429 gtk_icon_set_unref(iconset); |
430 | |
431 if (sized_stock_icons[i].translucent_name) { | |
432 iconset = gtk_icon_set_new(); | |
433 if (sized_stock_icons[i].extra_small) | |
434 add_translucent_sized_icon(iconset, extra_small, | |
435 sized_stock_icons[i].dir, sized_stock_icons[i].rtl, | |
436 "16", sized_stock_icons[i].filename); | |
437 if (sized_stock_icons[i].small) | |
438 add_translucent_sized_icon(iconset, small, | |
439 sized_stock_icons[i].dir, sized_stock_icons[i].rtl, | |
440 "22", sized_stock_icons[i].filename); | |
441 if (sized_stock_icons[i].medium) | |
442 add_translucent_sized_icon(iconset, medium, | |
443 sized_stock_icons[i].dir, sized_stock_icons[i].rtl, | |
444 "32", sized_stock_icons[i].filename); | |
445 if (sized_stock_icons[i].large) | |
446 add_translucent_sized_icon(iconset, large, | |
447 sized_stock_icons[i].dir, sized_stock_icons[i].rtl, | |
448 "48", sized_stock_icons[i].filename); | |
449 if (sized_stock_icons[i].huge) | |
450 add_translucent_sized_icon(iconset, huge, | |
451 sized_stock_icons[i].dir, sized_stock_icons[i].rtl, | |
452 "64", sized_stock_icons[i].filename); | |
453 | |
454 gtk_icon_factory_add(icon_factory, sized_stock_icons[i].translucent_name, iconset); | |
455 gtk_icon_set_unref(iconset); | |
456 } | |
337 } | 457 } |
338 | 458 |
339 gtk_widget_destroy(win); | 459 gtk_widget_destroy(win); |
340 g_object_unref(G_OBJECT(icon_factory)); | 460 g_object_unref(G_OBJECT(icon_factory)); |
341 | 461 |