… | |
… | |
819 | } |
819 | } |
820 | |
820 | |
821 | #if XRENDER |
821 | #if XRENDER |
822 | if (tr_flags) |
822 | if (tr_flags) |
823 | { |
823 | { |
824 | XRenderPictureAttributes pa; |
|
|
825 | XRenderPictFormat *format = XRenderFindVisualFormat (dpy, visual); |
824 | XRenderPictFormat *format = XRenderFindVisualFormat (dpy, visual); |
826 | |
825 | |
827 | Picture src = XRenderCreatePicture (dpy, root_pmap, format, 0, &pa); |
826 | Picture src = XRenderCreatePicture (dpy, root_pmap, format, 0, 0); |
828 | |
827 | |
829 | Picture dst = XRenderCreatePicture (dpy, bg_pixmap, format, 0, &pa); |
828 | Picture dst = XRenderCreatePicture (dpy, bg_pixmap, format, 0, 0); |
830 | |
829 | |
831 | Picture mask = create_xrender_mask (dpy, vt, False, False); |
830 | Picture mask = create_xrender_mask (dpy, vt, False, False); |
832 | |
831 | |
833 | XRenderColor mask_c; |
832 | XRenderColor mask_c; |
834 | |
833 | |
835 | mask_c.alpha = 0x8000; |
834 | mask_c.alpha = 0x8000; |
836 | mask_c.red = 0; |
835 | mask_c.red = |
837 | mask_c.green = 0; |
836 | mask_c.green = |
838 | mask_c.blue = 0; |
837 | mask_c.blue = 0; |
839 | XRenderFillRectangle (dpy, PictOpSrc, mask, &mask_c, 0, 0, 1, 1); |
838 | XRenderFillRectangle (dpy, PictOpSrc, mask, &mask_c, 0, 0, 1, 1); |
|
|
839 | |
840 | XRenderComposite (dpy, PictOpOver, src, mask, dst, 0, 0, 0, 0, 0, 0, target_width, target_height); |
840 | XRenderComposite (dpy, PictOpOver, src, mask, dst, 0, 0, 0, 0, 0, 0, target_width, target_height); |
841 | |
841 | |
842 | XRenderFreePicture (dpy, src); |
842 | XRenderFreePicture (dpy, src); |
843 | XRenderFreePicture (dpy, dst); |
843 | XRenderFreePicture (dpy, dst); |
844 | XRenderFreePicture (dpy, mask); |
844 | XRenderFreePicture (dpy, mask); |
… | |
… | |
1054 | |
1054 | |
1055 | int size = max (h_blurRadius, v_blurRadius) * 2 + 1; |
1055 | int size = max (h_blurRadius, v_blurRadius) * 2 + 1; |
1056 | double *kernel = (double *)malloc (size * sizeof (double)); |
1056 | double *kernel = (double *)malloc (size * sizeof (double)); |
1057 | XFixed *params = (XFixed *)malloc ((size + 2) * sizeof (XFixed)); |
1057 | XFixed *params = (XFixed *)malloc ((size + 2) * sizeof (XFixed)); |
1058 | |
1058 | |
1059 | XRenderPictureAttributes pa; |
|
|
1060 | XRenderPictFormat *format = XRenderFindVisualFormat (dpy, visual); |
1059 | XRenderPictFormat *format = XRenderFindVisualFormat (dpy, visual); |
1061 | |
1060 | |
1062 | Picture src = XRenderCreatePicture (dpy, pixmap, format, 0, &pa); |
1061 | Picture src = XRenderCreatePicture (dpy, pixmap, format, 0, 0); |
1063 | Picture dst = XRenderCreatePicture (dpy, pixmap, format, 0, &pa); |
1062 | Picture dst = XRenderCreatePicture (dpy, pixmap, format, 0, 0); |
1064 | |
1063 | |
1065 | if (kernel && params) |
1064 | if (kernel && params) |
1066 | { |
1065 | { |
1067 | if (h_blurRadius) |
1066 | if (h_blurRadius) |
1068 | { |
1067 | { |
… | |
… | |
1153 | c.g = c.g * (200 - shade) / 100; |
1152 | c.g = c.g * (200 - shade) / 100; |
1154 | c.b = c.b * (200 - shade) / 100; |
1153 | c.b = c.b * (200 - shade) / 100; |
1155 | } |
1154 | } |
1156 | |
1155 | |
1157 | XRenderPictFormat *format = XRenderFindVisualFormat (dpy, visual); |
1156 | XRenderPictFormat *format = XRenderFindVisualFormat (dpy, visual); |
1158 | XRenderPictureAttributes pa; |
|
|
1159 | |
1157 | |
1160 | Picture back_pic = XRenderCreatePicture (dpy, pixmap, format, 0, &pa); |
1158 | Picture back_pic = XRenderCreatePicture (dpy, pixmap, format, 0, 0); |
1161 | |
1159 | |
1162 | Picture overlay_pic = create_xrender_mask (dpy, pixmap, True, False); |
1160 | Picture overlay_pic = create_xrender_mask (dpy, pixmap, True, False); |
1163 | |
1161 | |
1164 | Picture mask_pic = create_xrender_mask (dpy, pixmap, True, True); |
1162 | Picture mask_pic = create_xrender_mask (dpy, pixmap, True, True); |
1165 | |
1163 | |
… | |
… | |
1174 | mask_c.alpha = 0; |
1172 | mask_c.alpha = 0; |
1175 | mask_c.red = 0xffff - c.r; |
1173 | mask_c.red = 0xffff - c.r; |
1176 | mask_c.green = 0xffff - c.g; |
1174 | mask_c.green = 0xffff - c.g; |
1177 | mask_c.blue = 0xffff - c.b; |
1175 | mask_c.blue = 0xffff - c.b; |
1178 | XRenderFillRectangle (dpy, PictOpSrc, mask_pic, &mask_c, 0, 0, 1, 1); |
1176 | XRenderFillRectangle (dpy, PictOpSrc, mask_pic, &mask_c, 0, 0, 1, 1); |
|
|
1177 | |
1179 | XRenderComposite (dpy, PictOpOver, overlay_pic, mask_pic, back_pic, 0, 0, 0, 0, 0, 0, width, height); |
1178 | XRenderComposite (dpy, PictOpOver, overlay_pic, mask_pic, back_pic, 0, 0, 0, 0, 0, 0, width, height); |
1180 | |
1179 | |
1181 | if (shade > 100) |
1180 | if (shade > 100) |
1182 | { |
1181 | { |
1183 | mask_c.red = mask_c.green = mask_c.blue = 0xffff * (shade - 100) / 100; |
|
|
1184 | mask_c.alpha = 0; |
1182 | mask_c.alpha = 0; |
|
|
1183 | mask_c.red = |
|
|
1184 | mask_c.green = |
|
|
1185 | mask_c.blue = 0xffff * (shade - 100) / 100; |
1185 | XRenderFillRectangle (dpy, PictOpSrc, overlay_pic, &mask_c, 0, 0, 1, 1); |
1186 | XRenderFillRectangle (dpy, PictOpSrc, overlay_pic, &mask_c, 0, 0, 1, 1); |
1186 | |
1187 | |
1187 | XRenderComposite (dpy, PictOpOver, overlay_pic, None, back_pic, 0, 0, 0, 0, 0, 0, width, height); |
1188 | XRenderComposite (dpy, PictOpOver, overlay_pic, None, back_pic, 0, 0, 0, 0, 0, 0, width, height); |
1188 | } |
1189 | } |
1189 | |
1190 | |
… | |
… | |
1252 | #if XRENDER |
1253 | #if XRENDER |
1253 | if (bg_flags & BG_HAS_RENDER) |
1254 | if (bg_flags & BG_HAS_RENDER) |
1254 | { |
1255 | { |
1255 | recoded_root_pmap = XCreatePixmap (dpy, vt, root_pmap_width, root_pmap_height, depth); |
1256 | recoded_root_pmap = XCreatePixmap (dpy, vt, root_pmap_width, root_pmap_height, depth); |
1256 | |
1257 | |
1257 | XRenderPictureAttributes pa; |
|
|
1258 | |
|
|
1259 | XRenderPictFormat *src_format = XRenderFindVisualFormat (dpy, DefaultVisual (dpy, screen)); |
1258 | XRenderPictFormat *src_format = XRenderFindVisualFormat (dpy, DefaultVisual (dpy, screen)); |
1260 | Picture src = XRenderCreatePicture (dpy, root_pixmap, src_format, 0, &pa); |
1259 | Picture src = XRenderCreatePicture (dpy, root_pixmap, src_format, 0, 0); |
1261 | |
1260 | |
1262 | XRenderPictFormat *dst_format = XRenderFindVisualFormat (dpy, visual); |
1261 | XRenderPictFormat *dst_format = XRenderFindVisualFormat (dpy, visual); |
1263 | Picture dst = XRenderCreatePicture (dpy, recoded_root_pmap, dst_format, 0, &pa); |
1262 | Picture dst = XRenderCreatePicture (dpy, recoded_root_pmap, dst_format, 0, 0); |
1264 | |
1263 | |
1265 | XRenderComposite (dpy, PictOpSrc, src, None, dst, 0, 0, 0, 0, 0, 0, root_pmap_width, root_pmap_height); |
1264 | XRenderComposite (dpy, PictOpSrc, src, None, dst, 0, 0, 0, 0, 0, 0, root_pmap_width, root_pmap_height); |
1266 | |
1265 | |
1267 | XRenderFreePicture (dpy, src); |
1266 | XRenderFreePicture (dpy, src); |
1268 | XRenderFreePicture (dpy, dst); |
1267 | XRenderFreePicture (dpy, dst); |