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