… | |
… | |
1111 | } |
1111 | } |
1112 | } |
1112 | } |
1113 | else |
1113 | else |
1114 | { |
1114 | { |
1115 | # if XRENDER |
1115 | # if XRENDER |
1116 | rgba c (rgba::MAX_CC,rgba::MAX_CC,rgba::MAX_CC); |
1116 | rgba c (rgba::MAX_CC, rgba::MAX_CC, rgba::MAX_CC); |
1117 | |
1117 | |
1118 | if (bg_flags & BG_TINT_SET) |
1118 | if (bg_flags & BG_TINT_SET) |
1119 | tint.get (c); |
1119 | tint.get (c); |
1120 | |
1120 | |
1121 | if (shade <= 100) |
1121 | if (shade <= 100) |
1122 | { |
1122 | { |
1123 | c.r = (c.r * shade) / 100; |
1123 | c.r = c.r * shade / 100; |
1124 | c.g = (c.g * shade) / 100; |
1124 | c.g = c.g * shade / 100; |
1125 | c.b = (c.b * shade) / 100; |
1125 | c.b = c.b * shade / 100; |
1126 | } |
1126 | } |
1127 | else |
1127 | else |
1128 | { |
1128 | { |
1129 | c.r = (c.r * (200 - shade)) / 100; |
1129 | c.r = c.r * (200 - shade) / 100; |
1130 | c.g = (c.g * (200 - shade)) / 100; |
1130 | c.g = c.g * (200 - shade) / 100; |
1131 | c.b = (c.b * (200 - shade)) / 100; |
1131 | c.b = c.b * (200 - shade) / 100; |
1132 | } |
1132 | } |
1133 | |
1133 | |
1134 | XRenderPictFormat *solid_format = XRenderFindStandardFormat (dpy, PictStandardARGB32); |
1134 | XRenderPictFormat *solid_format = XRenderFindStandardFormat (dpy, PictStandardARGB32); |
1135 | XRenderPictFormat *format = XRenderFindVisualFormat (dpy, visual); |
1135 | XRenderPictFormat *format = XRenderFindVisualFormat (dpy, visual); |
1136 | XRenderPictureAttributes pa; |
1136 | XRenderPictureAttributes pa; |
… | |
… | |
1143 | Picture overlay_pic = XRenderCreatePicture (dpy, overlay_pmap, solid_format, CPRepeat, &pa); |
1143 | Picture overlay_pic = XRenderCreatePicture (dpy, overlay_pmap, solid_format, CPRepeat, &pa); |
1144 | XFreePixmap (dpy, overlay_pmap); |
1144 | XFreePixmap (dpy, overlay_pmap); |
1145 | |
1145 | |
1146 | pa.component_alpha = True; |
1146 | pa.component_alpha = True; |
1147 | Pixmap mask_pmap = XCreatePixmap (dpy, pixmap, 1, 1, 32); |
1147 | Pixmap mask_pmap = XCreatePixmap (dpy, pixmap, 1, 1, 32); |
1148 | Picture mask_pic = XRenderCreatePicture (dpy, mask_pmap, solid_format, CPRepeat|CPComponentAlpha, &pa); |
1148 | Picture mask_pic = XRenderCreatePicture (dpy, mask_pmap, solid_format, CPRepeat | CPComponentAlpha, &pa); |
1149 | XFreePixmap (dpy, mask_pmap); |
1149 | XFreePixmap (dpy, mask_pmap); |
1150 | |
1150 | |
1151 | if (mask_pic && overlay_pic && back_pic) |
1151 | if (mask_pic && overlay_pic && back_pic) |
1152 | { |
1152 | { |
1153 | XRenderColor mask_c; |
1153 | XRenderColor mask_c; |
1154 | |
1154 | |
1155 | mask_c.red = mask_c.green = mask_c.blue = 0; |
|
|
1156 | mask_c.alpha = 0xffff; |
1155 | mask_c.alpha = 0xffff; |
|
|
1156 | mask_c.red = |
|
|
1157 | mask_c.green = |
|
|
1158 | mask_c.blue = 0; |
1157 | XRenderFillRectangle (dpy, PictOpSrc, overlay_pic, &mask_c, 0, 0, 1, 1); |
1159 | XRenderFillRectangle (dpy, PictOpSrc, overlay_pic, &mask_c, 0, 0, 1, 1); |
1158 | |
1160 | |
1159 | mask_c.alpha = 0; |
1161 | mask_c.alpha = 0; |
1160 | mask_c.red = 0xffff - c.r; |
1162 | mask_c.red = 0xffff - c.r; |
1161 | mask_c.green = 0xffff - c.g; |
1163 | mask_c.green = 0xffff - c.g; |
1162 | mask_c.blue = 0xffff - c.b; |
1164 | mask_c.blue = 0xffff - c.b; |
1163 | XRenderFillRectangle (dpy, PictOpSrc, mask_pic, &mask_c, 0, 0, 1, 1); |
1165 | XRenderFillRectangle (dpy, PictOpSrc, mask_pic, &mask_c, 0, 0, 1, 1); |
1164 | XRenderComposite (dpy, PictOpOver, overlay_pic, mask_pic, back_pic, 0, 0, 0, 0, 0, 0, width, height); |
1166 | XRenderComposite (dpy, PictOpOver, overlay_pic, mask_pic, back_pic, 0, 0, 0, 0, 0, 0, width, height); |
1165 | |
1167 | |
1166 | if (shade > 100) |
1168 | if (shade > 100) |
1167 | { |
1169 | { |