… | |
… | |
765 | rxvt_img::reify () |
765 | rxvt_img::reify () |
766 | { |
766 | { |
767 | if (x == 0 && y == 0 && w == ref->w && h == ref->h) |
767 | if (x == 0 && y == 0 && w == ref->w && h == ref->h) |
768 | return clone (); |
768 | return clone (); |
769 | |
769 | |
770 | Display *dpy = s->dpy; |
|
|
771 | |
|
|
772 | // add an alpha channel if... |
770 | // add an alpha channel if... |
773 | bool alpha = !format->direct.alphaMask // pixmap has none yet |
771 | bool alpha = !format->direct.alphaMask // pixmap has none yet |
774 | && (x || y) // we need one because of non-zero offset |
772 | && (x || y) // we need one because of non-zero offset |
775 | && repeat == RepeatNone; // and we have no good pixels to fill with |
773 | && repeat == RepeatNone; // and we have no good pixels to fill with |
776 | |
774 | |
777 | composer cc (this, new rxvt_img (s, alpha ? find_alpha_format_for (s->dpy, format) : format, |
775 | composer cc (this, new rxvt_img (s, alpha ? find_alpha_format_for (s->dpy, format) : format, |
778 | 0, 0, w, h, repeat)); |
776 | 0, 0, w, h, repeat)); |
779 | |
777 | |
780 | if (alpha) |
778 | if (repeat == RepeatNone) |
781 | { |
779 | { |
782 | XRenderColor rc = { 0, 0, 0, 0 }; |
780 | XRenderColor rc = { 0, 0, 0, 0 }; |
783 | XRenderFillRectangle (cc.dpy, PictOpSrc, cc.dst, &rc, 0, 0, w, h);//TODO: split into four fillrectangles |
781 | XRenderFillRectangle (cc.dpy, PictOpSrc, cc.dst, &rc, 0, 0, w, h);//TODO: split into four fillrectangles |
784 | XRenderComposite (cc.dpy, PictOpSrc, cc.src, None, cc.dst, 0, 0, 0, 0, x, y, ref->w, ref->h); |
782 | XRenderComposite (cc.dpy, PictOpSrc, cc.src, None, cc.dst, 0, 0, 0, 0, x, y, ref->w, ref->h); |
785 | } |
783 | } |