Mercurial > pidgin.yaz
diff pidgin/gtkblist.c @ 29878:bd28b8515eb2
Simplify: dest always equals src. No need to copy everything.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Wed, 24 Feb 2010 04:59:47 +0000 |
parents | 185677f47825 |
children | 0fe3f0bc0695 1c6c2f5ecf53 |
line wrap: on
line diff
--- a/pidgin/gtkblist.c Tue Feb 23 14:50:37 2010 +0000 +++ b/pidgin/gtkblist.c Wed Feb 24 04:59:47 2010 +0000 @@ -2660,39 +2660,30 @@ /* Altered from do_colorshift in gnome-panel */ static void -do_alphashift (GdkPixbuf *dest, GdkPixbuf *src, int shift) +do_alphashift(GdkPixbuf *pixbuf, int shift) { gint i, j; - gint width, height, has_alpha, srcrowstride, destrowstride; - guchar *target_pixels; - guchar *original_pixels; - guchar *pixsrc; - guchar *pixdest; + gint width, height, padding; + guchar *pixels; int val; - guchar a; - - has_alpha = gdk_pixbuf_get_has_alpha (src); - if (!has_alpha) + + if (!gdk_pixbuf_get_has_alpha(pixbuf)) return; - width = gdk_pixbuf_get_width (src); - height = gdk_pixbuf_get_height (src); - srcrowstride = gdk_pixbuf_get_rowstride (src); - destrowstride = gdk_pixbuf_get_rowstride (dest); - target_pixels = gdk_pixbuf_get_pixels (dest); - original_pixels = gdk_pixbuf_get_pixels (src); + width = gdk_pixbuf_get_width(pixbuf); + height = gdk_pixbuf_get_height(pixbuf); + padding = gdk_pixbuf_get_rowstride(pixbuf) - width * 4; + pixels = gdk_pixbuf_get_pixels(pixbuf); for (i = 0; i < height; i++) { - pixdest = target_pixels + i*destrowstride; - pixsrc = original_pixels + i*srcrowstride; for (j = 0; j < width; j++) { - *(pixdest++) = *(pixsrc++); - *(pixdest++) = *(pixsrc++); - *(pixdest++) = *(pixsrc++); - a = *(pixsrc++); - val = a - shift; - *(pixdest++) = CLAMP(val, 0, 255); - } + pixels++; + pixels++; + pixels++; + val = *pixels - shift; + *(pixels++) = CLAMP(val, 0, 255); + } + pixels += padding; } } @@ -6367,7 +6358,7 @@ g_object_ref(G_OBJECT(gtkblist->empty_avatar)); avatar = gtkblist->empty_avatar; } else if ((!PURPLE_BUDDY_IS_ONLINE(buddy) || purple_presence_is_idle(presence))) { - do_alphashift(avatar, avatar, 77); + do_alphashift(avatar, 77); } emblem = pidgin_blist_get_emblem((PurpleBlistNode*) buddy);