6 #include "x11-memdraw.h"
9 addrect(Rectangle *rp, Rectangle r)
11 if(rp->min.x >= rp->max.x)
18 _xgetxdata(Memimage *m, Rectangle r)
22 Point tp, xdelta, delta;
32 abort(); /* should never call this now */
35 if(Dx(r)==0 || Dy(r)==0)
38 delta = subpt(r.min, m->r.min);
40 tp = xm->r.min; /* need temp for Digital UNIX */
41 xdelta = subpt(r.min, tp);
43 XGetSubImage(_x.display, xm->pixmap, delta.x, delta.y, Dx(r), Dy(r),
44 AllPlanes, ZPixmap, xm->xi, xdelta.x, delta.y);
46 if(_x.usetable && m->chan==CMAP8){
47 for(y=r.min.y; y<r.max.y; y++)
48 for(x=r.min.x, p=byteaddr(m, Pt(x,y)); x<r.max.x; x++, p++)
52 xm->dirtyr = Rect(0,0,0,0);
57 _xputxdata(Memimage *m, Rectangle r)
61 Point tp, xdelta, delta;
71 gc = m->chan==GREY1 ? _x.gccopy0 : _x.gccopy;
73 delta = subpt(r.min, m->r.min);
75 tp = xm->r.min; /* need temporary on Digital UNIX */
76 xdelta = subpt(r.min, tp);
78 if(_x.usetable && m->chan==CMAP8){
79 for(y=r.min.y; y<r.max.y; y++)
80 for(x=r.min.x, p=byteaddr(m, Pt(x,y)); x<r.max.x; x++, p++)
84 XPutImage(_x.display, xm->pixmap, gc, xi, xdelta.x, xdelta.y, delta.x, delta.y,
87 if(_x.usetable && m->chan==CMAP8){
88 for(y=r.min.y; y<r.max.y; y++)
89 for(x=r.min.x, p=byteaddr(m, Pt(x,y)); x<r.max.x; x++, p++)
95 _xdirtyxdata(Memimage *m, Rectangle r)
104 addrect(&xm->dirtyr, r);