1*37da2899SCharles.Forsyth #include "lib9.h"
2*37da2899SCharles.Forsyth #include "draw.h"
3*37da2899SCharles.Forsyth #include "memdraw.h"
4*37da2899SCharles.Forsyth
5*37da2899SCharles.Forsyth int
unloadmemimage(Memimage * i,Rectangle r,uchar * data,int ndata)6*37da2899SCharles.Forsyth unloadmemimage(Memimage *i, Rectangle r, uchar *data, int ndata)
7*37da2899SCharles.Forsyth {
8*37da2899SCharles.Forsyth int y, l;
9*37da2899SCharles.Forsyth uchar *q;
10*37da2899SCharles.Forsyth
11*37da2899SCharles.Forsyth if(!rectinrect(r, i->r))
12*37da2899SCharles.Forsyth return -1;
13*37da2899SCharles.Forsyth l = bytesperline(r, i->depth);
14*37da2899SCharles.Forsyth if(ndata < l*Dy(r))
15*37da2899SCharles.Forsyth return -1;
16*37da2899SCharles.Forsyth ndata = l*Dy(r);
17*37da2899SCharles.Forsyth q = byteaddr(i, r.min);
18*37da2899SCharles.Forsyth for(y=r.min.y; y<r.max.y; y++){
19*37da2899SCharles.Forsyth memmove(data, q, l);
20*37da2899SCharles.Forsyth q += i->width*sizeof(ulong);
21*37da2899SCharles.Forsyth data += l;
22*37da2899SCharles.Forsyth }
23*37da2899SCharles.Forsyth return ndata;
24*37da2899SCharles.Forsyth }
25