--- rxvt-unicode/src/background.C 2011/01/28 00:21:10 1.145 +++ rxvt-unicode/src/background.C 2011/04/30 13:11:34 1.149 @@ -3,7 +3,7 @@ *----------------------------------------------------------------------* * * All portions of code are copyright by their respective author/s. - * Copyright (c) 2005-2008 Marc Lehmann + * Copyright (c) 2005-2008 Marc Lehmann * Copyright (c) 2007 Sasha Vasko * Copyright (c) 2010 Emanuele Giaquinta * @@ -945,27 +945,26 @@ return changed; } -static inline unsigned long -compute_tint_shade_flags (rxvt_color *tint, int shade) +void +rxvt_term::set_tint_shade_flags () { - unsigned long flags = 0; rgba c (rgba::MAX_CC,rgba::MAX_CC,rgba::MAX_CC); bool has_shade = shade != 100; - if (tint) + bg_flags &= ~BG_TINT_FLAGS; + + if (bg_flags & BG_TINT_SET) { - tint->get (c); + tint.get (c); if (!has_shade && (c.r <= 0x00ff || c.r >= 0xff00) && (c.g <= 0x00ff || c.g >= 0xff00) && (c.b <= 0x00ff || c.b >= 0xff00)) - flags |= rxvt_term::BG_TINT_BITAND; + bg_flags |= BG_TINT_BITAND; } - if (has_shade || tint) - flags |= rxvt_term::BG_NEEDS_TINT; - - return flags; + if (has_shade || (bg_flags & BG_TINT_SET)) + bg_flags |= BG_NEEDS_TINT; } bool @@ -973,9 +972,9 @@ { if (!(bg_flags & BG_TINT_SET) || tint != new_tint) { - unsigned long new_flags = compute_tint_shade_flags (&new_tint, shade); tint = new_tint; - bg_flags = (bg_flags & ~BG_TINT_FLAGS) | new_flags | BG_TINT_SET; + bg_flags |= BG_TINT_SET; + set_tint_shade_flags (); return true; } @@ -993,9 +992,8 @@ if (new_shade != shade) { - unsigned long new_flags = compute_tint_shade_flags ((bg_flags & BG_TINT_SET) ? &tint : NULL, new_shade); shade = new_shade; - bg_flags = (bg_flags & ~BG_TINT_FLAGS) | new_flags; + set_tint_shade_flags (); return true; } @@ -1115,22 +1113,22 @@ else { # if XRENDER - rgba c (rgba::MAX_CC,rgba::MAX_CC,rgba::MAX_CC); + rgba c (rgba::MAX_CC, rgba::MAX_CC, rgba::MAX_CC); if (bg_flags & BG_TINT_SET) tint.get (c); if (shade <= 100) { - c.r = (c.r * shade) / 100; - c.g = (c.g * shade) / 100; - c.b = (c.b * shade) / 100; + c.r = c.r * shade / 100; + c.g = c.g * shade / 100; + c.b = c.b * shade / 100; } else { - c.r = (c.r * (200 - shade)) / 100; - c.g = (c.g * (200 - shade)) / 100; - c.b = (c.b * (200 - shade)) / 100; + c.r = c.r * (200 - shade) / 100; + c.g = c.g * (200 - shade) / 100; + c.b = c.b * (200 - shade) / 100; } XRenderPictFormat *solid_format = XRenderFindStandardFormat (dpy, PictStandardARGB32); @@ -1147,21 +1145,23 @@ pa.component_alpha = True; Pixmap mask_pmap = XCreatePixmap (dpy, pixmap, 1, 1, 32); - Picture mask_pic = XRenderCreatePicture (dpy, mask_pmap, solid_format, CPRepeat|CPComponentAlpha, &pa); + Picture mask_pic = XRenderCreatePicture (dpy, mask_pmap, solid_format, CPRepeat | CPComponentAlpha, &pa); XFreePixmap (dpy, mask_pmap); if (mask_pic && overlay_pic && back_pic) { XRenderColor mask_c; - mask_c.red = mask_c.green = mask_c.blue = 0; mask_c.alpha = 0xffff; + mask_c.red = + mask_c.green = + mask_c.blue = 0; XRenderFillRectangle (dpy, PictOpSrc, overlay_pic, &mask_c, 0, 0, 1, 1); mask_c.alpha = 0; - mask_c.red = 0xffff - c.r; + mask_c.red = 0xffff - c.r; mask_c.green = 0xffff - c.g; - mask_c.blue = 0xffff - c.b; + mask_c.blue = 0xffff - c.b; XRenderFillRectangle (dpy, PictOpSrc, mask_pic, &mask_c, 0, 0, 1, 1); XRenderComposite (dpy, PictOpOver, overlay_pic, mask_pic, back_pic, 0, 0, 0, 0, 0, 0, width, height); @@ -1186,7 +1186,7 @@ return ret; } -/* make_transparency_pixmap() +/* * Builds a pixmap of the same size as the terminal window that contains * the tiled portion of the root pixmap that is supposed to be covered by * our window.