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