6 loadimage(Image *i, Rectangle r, uchar *data, int ndata)
13 chunk = i->display->bufsize - 64;
15 if(!rectinrect(r, i->r)){
16 werrstr("loadimage: bad rectangle");
19 bpl = bytesperline(r, i->depth);
22 werrstr("loadimage: insufficient data");
26 while(r.max.y > r.min.y){
33 dx = ((chunk*dx)/bpl) & ~7;
34 n = bytesperline(Rect(r.min.x, r.min.y, r.min.x+dx, r.min.y+dy), i->depth);
35 if(loadimage(i, Rect(r.min.x+dx, r.min.y, r.max.x, r.min.y+dy), data+n, bpl-n) < 0)
39 a = bufimage(i->display, 21+n);
41 werrstr("loadimage: %r");
48 BPLONG(a+13, r.min.x+dx);
49 BPLONG(a+17, r.min.y+dy);
50 memmove(a+21, data, n);