… | |
… | |
848 | } |
848 | } |
849 | return false; |
849 | return false; |
850 | } |
850 | } |
851 | # endif /* ENABLE_TRANSPARENCY */ |
851 | # endif /* ENABLE_TRANSPARENCY */ |
852 | |
852 | |
|
|
853 | # ifndef HAVE_AFTERIMAGE |
|
|
854 | static void ShadeXImage(rxvt_term *term, XImage* srcImage, int shade, int rm, int gm, int bm); |
|
|
855 | #endif |
|
|
856 | |
|
|
857 | |
853 | bool |
858 | bool |
854 | bgPixmap_t::render () |
859 | bgPixmap_t::render () |
855 | { |
860 | { |
856 | unsigned long background_flags = 0; |
861 | unsigned long background_flags = 0; |
857 | |
862 | |
… | |
… | |
864 | { |
869 | { |
865 | /* we need to re-generate transparency pixmap in that case ! */ |
870 | /* we need to re-generate transparency pixmap in that case ! */ |
866 | background_flags = make_transparency_pixmap (); |
871 | background_flags = make_transparency_pixmap (); |
867 | if (background_flags == 0) |
872 | if (background_flags == 0) |
868 | return false; |
873 | return false; |
|
|
874 | else if ((background_flags & transpTransformations) == (flags & transpTransformations) |
|
|
875 | && pmap_depth == target->depth) |
|
|
876 | flags = flags & ~isInvalid; |
869 | } |
877 | } |
870 | # endif |
878 | # endif |
871 | |
879 | |
872 | XImage *result = NULL; |
880 | XImage *result = NULL; |
873 | # ifdef HAVE_AFTERIMAGE |
881 | # ifdef HAVE_AFTERIMAGE |
… | |
… | |
900 | else if (background_flags && pmap_depth != target->depth) |
908 | else if (background_flags && pmap_depth != target->depth) |
901 | { |
909 | { |
902 | result = XGetImage (target->dpy, pixmap, 0, 0, pmap_width, pmap_height, AllPlanes, ZPixmap); |
910 | result = XGetImage (target->dpy, pixmap, 0, 0, pmap_width, pmap_height, AllPlanes, ZPixmap); |
903 | } |
911 | } |
904 | # else /* our own client-side tinting */ |
912 | # else /* our own client-side tinting */ |
905 | if (background_flags && |
913 | if (background_flags && (flags & isInvalid)) |
906 | (!(background_flags & transpPmapTinted) && (flags & tintNeeded)) || pmap_depth != target->depth) |
|
|
907 | { |
914 | { |
908 | result = XGetImage (target->dpy, pixmap, 0, 0, pmap_width, pmap_height, AllPlanes, ZPixmap); |
915 | result = XGetImage (target->dpy, pixmap, 0, 0, pmap_width, pmap_height, AllPlanes, ZPixmap); |
909 | success = False; |
|
|
910 | if (result != NULL && !(background_flags & transpPmapTinted) && (flags & tintNeeded)) |
916 | if (result != NULL && !(background_flags & transpPmapTinted) && (flags & tintNeeded)) |
911 | { |
917 | { |
912 | rgba c (rgba::MAX_CC,rgba::MAX_CC,rgba::MAX_CC); |
918 | rgba c (rgba::MAX_CC,rgba::MAX_CC,rgba::MAX_CC); |
913 | tint.get (c); |
919 | tint.get (c); |
914 | ShadeXImage (this, result, shade, c.r, c.g, c.b); |
920 | ShadeXImage (target, result, shade, c.r, c.g, c.b); |
915 | } |
921 | } |
916 | } |
922 | } |
917 | # endif |
923 | # endif |
918 | if (result != NULL) |
924 | if (result != NULL) |
919 | { |
925 | { |
… | |
… | |
1075 | unsigned int upper_lim_r, upper_lim_g, upper_lim_b; |
1081 | unsigned int upper_lim_r, upper_lim_g, upper_lim_b; |
1076 | int i; |
1082 | int i; |
1077 | |
1083 | |
1078 | Visual *visual = term->visual; |
1084 | Visual *visual = term->visual; |
1079 | |
1085 | |
1080 | if( visual->c_class != TrueColor || srcImage->format != ZPixmap ) return ; |
1086 | if (visual->c_class != TrueColor || srcImage->format != ZPixmap) return ; |
1081 | |
1087 | |
|
|
1088 | if (shade == 0) |
|
|
1089 | shade = 100; |
|
|
1090 | |
1082 | /* for convenience */ |
1091 | /* for convenience */ |
1083 | mask_r = visual->red_mask; |
1092 | mask_r = visual->red_mask; |
1084 | mask_g = visual->green_mask; |
1093 | mask_g = visual->green_mask; |
1085 | mask_b = visual->blue_mask; |
1094 | mask_b = visual->blue_mask; |
1086 | |
1095 | |