… | |
… | |
209 | rxvt_img::unshare () |
209 | rxvt_img::unshare () |
210 | { |
210 | { |
211 | if (ref->cnt == 1 && ref->ours) |
211 | if (ref->cnt == 1 && ref->ours) |
212 | return; |
212 | return; |
213 | |
213 | |
214 | //TODO: maybe should reify instead |
|
|
215 | Pixmap pm2 = XCreatePixmap (s->display->dpy, s->display->root, ref->w, ref->h, format->depth); |
214 | Pixmap pm2 = XCreatePixmap (s->display->dpy, s->display->root, ref->w, ref->h, format->depth); |
216 | GC gc = XCreateGC (s->display->dpy, pm, 0, 0); |
215 | GC gc = XCreateGC (s->display->dpy, pm, 0, 0); |
217 | XCopyArea (s->display->dpy, pm, pm2, gc, 0, 0, ref->w, ref->h, 0, 0); |
216 | XCopyArea (s->display->dpy, pm, pm2, gc, 0, 0, ref->w, ref->h, 0, 0); |
218 | XFreeGC (s->display->dpy, gc); |
217 | XFreeGC (s->display->dpy, gc); |
219 | |
218 | |
… | |
… | |
473 | |
472 | |
474 | for (int i = 0; i < 3; ++i) |
473 | for (int i = 0; i < 3; ++i) |
475 | for (int j = 0; j < 3; ++j) |
474 | for (int j = 0; j < 3; ++j) |
476 | xfrm.matrix [i][j] = XDoubleToFixed (matrix [i * 3 + j]); |
475 | xfrm.matrix [i][j] = XDoubleToFixed (matrix [i * 3 + j]); |
477 | |
476 | |
478 | #if 0 |
|
|
479 | xfrm.matrix [0][2] -= XDoubleToFixed (x);//TODO |
477 | xfrm.matrix [0][2] -= XDoubleToFixed (x);//TODO |
480 | xfrm.matrix [1][2] -= XDoubleToFixed (y); |
478 | xfrm.matrix [1][2] -= XDoubleToFixed (y); |
481 | #endif |
|
|
482 | |
479 | |
483 | XRenderSetPictureFilter (dpy, src, "good", 0, 0); |
480 | XRenderSetPictureFilter (dpy, src, "good", 0, 0); |
484 | XRenderSetPictureTransform (dpy, src, &xfrm); |
481 | XRenderSetPictureTransform (dpy, src, &xfrm); |
485 | XRenderComposite (dpy, PictOpSrc, src, None, dst, 0, 0, 0, 0, 0, 0, new_width, new_height); |
482 | XRenderComposite (dpy, PictOpSrc, src, None, dst, 0, 0, 0, 0, 0, 0, new_width, new_height); |
486 | |
483 | |