Copy.c 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /*
  2. * The Python Imaging Library
  3. * $Id$
  4. *
  5. * copy image
  6. *
  7. * history:
  8. * 95-11-26 fl Moved from Imaging.c
  9. * 97-05-12 fl Added ImagingCopy2
  10. * 97-08-28 fl Allow imOut == NULL in ImagingCopy2
  11. *
  12. * Copyright (c) Fredrik Lundh 1995-97.
  13. * Copyright (c) Secret Labs AB 1997.
  14. *
  15. * See the README file for details on usage and redistribution.
  16. */
  17. #include "Imaging.h"
  18. static Imaging
  19. _copy(Imaging imOut, Imaging imIn)
  20. {
  21. ImagingSectionCookie cookie;
  22. int y;
  23. if (!imIn)
  24. return (Imaging) ImagingError_ValueError(NULL);
  25. imOut = ImagingNew2Dirty(imIn->mode, imOut, imIn);
  26. if (!imOut)
  27. return NULL;
  28. ImagingCopyPalette(imOut, imIn);
  29. ImagingSectionEnter(&cookie);
  30. if (imIn->block != NULL && imOut->block != NULL)
  31. memcpy(imOut->block, imIn->block, imIn->ysize * imIn->linesize);
  32. else
  33. for (y = 0; y < imIn->ysize; y++)
  34. memcpy(imOut->image[y], imIn->image[y], imIn->linesize);
  35. ImagingSectionLeave(&cookie);
  36. return imOut;
  37. }
  38. Imaging
  39. ImagingCopy(Imaging imIn)
  40. {
  41. return _copy(NULL, imIn);
  42. }
  43. Imaging
  44. ImagingCopy2(Imaging imOut, Imaging imIn)
  45. {
  46. return _copy(imOut, imIn);
  47. }