Re: 2.3 Feature Request: Inactive toolbar icons



Wowieee! i love it, sign me up for this patch; I tried it and aint going back! ;-)
(Umm, i mean: yea, that looks 'ok')

    -- Chris

iain wrote:
fre, 2003-02-07 kl. 16:12 skrev shaihulud supereva it:
  
Jeff Waugh wrote:

    
We're mostly looking for "yes, I am coding >this feature" emails, rather than
suggestions. Sorry. :-) You may want to >lodge a GTK+ bug on this, though -
it would be much prettier!
      
- Jeff
      
Thanks iain for make the patch ! Here is a screenshot:
http://discomachinegun.prettypeople.org/~iain/insensitive.png

I think that would be better if the alpha  is scaled down at 75-80%. In this way the inactive icons look better on a light or dark background.
    

Alpha is now halfed. Attached patch does so. It could probably be made
faster, by replacing the 2 for loops with one.

http://www.prettypeople.org/~iain/insensitive2.png

iain

  

Index: gtkstyle.c =================================================================== RCS file: /cvs/gnome/gtk+/gtk/gtkstyle.c,v retrieving revision 1.139 diff -u -p -r1.139 gtkstyle.c --- gtkstyle.c 10 Dec 2002 21:39:52 -0000 1.139 +++ gtkstyle.c 7 Feb 2003 16:43:53 -0000 @@ -1988,6 +1988,36 @@ scale_or_ref (GdkPixbuf *src, } } +static void +set_pixbuf_alpha (GdkPixbuf *src) +{ + int width, wb; + int height; + int rowstride; + gboolean has_alpha; + guchar *pixels, *p; + int i, j; + + width = gdk_pixbuf_get_width (src); + height = gdk_pixbuf_get_height (src); + rowstride = gdk_pixbuf_get_rowstride (src); + has_alpha = gdk_pixbuf_get_has_alpha (src); + + if (has_alpha == FALSE) + return; + + pixels = gdk_pixbuf_get_pixels (src); + + wb = width << 2; + for (i = 0; i < height; i ++) + { + p = pixels + (i * rowstride); + + for (j = 0; j < wb; j += 4) + p[j + 3] = p[j + 3] >> 2; + } +} + static GdkPixbuf * gtk_default_render_icon (GtkStyle *style, const GtkIconSource *source, @@ -2054,8 +2084,9 @@ gtk_default_render_icon (GtkStyle stated = gdk_pixbuf_copy (scaled); gdk_pixbuf_saturate_and_pixelate (scaled, stated, - 0.8, TRUE); - + 0.0, FALSE); + + set_pixbuf_alpha (stated); g_object_unref (scaled); } else if (state == GTK_STATE_PRELIGHT)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]