1*8ccd4a63SDavid du Colombier #include <u.h>
2*8ccd4a63SDavid du Colombier #include <libc.h>
3*8ccd4a63SDavid du Colombier #include <draw.h>
4*8ccd4a63SDavid du Colombier #include <memdraw.h>
57dd7cddfSDavid du Colombier
67dd7cddfSDavid du Colombier int
unloadmemimage(Memimage * i,Rectangle r,uchar * data,int ndata)77dd7cddfSDavid du Colombier unloadmemimage(Memimage *i, Rectangle r, uchar *data, int ndata)
87dd7cddfSDavid du Colombier {
97dd7cddfSDavid du Colombier int y, l;
107dd7cddfSDavid du Colombier uchar *q;
117dd7cddfSDavid du Colombier
127dd7cddfSDavid du Colombier if(!rectinrect(r, i->r))
137dd7cddfSDavid du Colombier return -1;
147dd7cddfSDavid du Colombier l = bytesperline(r, i->depth);
157dd7cddfSDavid du Colombier if(ndata < l*Dy(r))
167dd7cddfSDavid du Colombier return -1;
177dd7cddfSDavid du Colombier ndata = l*Dy(r);
187dd7cddfSDavid du Colombier q = byteaddr(i, r.min);
197dd7cddfSDavid du Colombier for(y=r.min.y; y<r.max.y; y++){
207dd7cddfSDavid du Colombier memmove(data, q, l);
217dd7cddfSDavid du Colombier q += i->width*sizeof(ulong);
227dd7cddfSDavid du Colombier data += l;
237dd7cddfSDavid du Colombier }
247dd7cddfSDavid du Colombier return ndata;
257dd7cddfSDavid du Colombier }
26