unload.c 420 B

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