ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/xpm.C
(Generate patch)

Comparing rxvt-unicode/src/xpm.C (file contents):
Revision 1.66 by sasha, Mon Aug 13 22:41:34 2007 UTC vs.
Revision 1.67 by sasha, Tue Aug 14 14:06:51 2007 UTC

848 } 848 }
849 return false; 849 return false;
850} 850}
851# endif /* ENABLE_TRANSPARENCY */ 851# endif /* ENABLE_TRANSPARENCY */
852 852
853# ifndef HAVE_AFTERIMAGE
854static void ShadeXImage(rxvt_term *term, XImage* srcImage, int shade, int rm, int gm, int bm);
855#endif
856
857
853bool 858bool
854bgPixmap_t::render () 859bgPixmap_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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines