fliprotatepicture.lua 1.5 KB

123456789101112131415161718192021222324252627282930313233343536
  1. -- flip and rotate picture - Paulo Silva, July 2012
  2. -- This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. See <http://www.gnu.org/licenses/>
  3. w,h=getpicturesize();
  4. ok,ibnorot,ibrotcw,ibrotccw,ibrotupdn,ibflipx,ibflipy=inputbox("flip picture","0º",0,0,1,-1,"90ºcw",1,0,1,-1,"90ºccw",0,0,1,-1,"180º",0,0,1,-1,"flip x",0,0,1,0,"flip y",0,0,1,0); -- note: this file needed to be save in iso encoding, because the 'º' character
  5. flipx=ibflipx;flipy=ibflipy;rotxy=0
  6. if ibrotcw==1 then rotxy=(1+rotxy)%2;flipx=(1+flipx)%2;end
  7. if ibrotccw==1 then rotxy=(1+rotxy)%2;flipy=(1+flipy)%2;end
  8. if ibrotupdn==1 then flipx=(1+flipx)%2;flipy=(1+flipy)%2;end
  9. wh=w;if h>wh then wh=h;end
  10. if ok==true then
  11. if rotxy==1 then
  12. setpicturesize(wh,wh)
  13. for x=1,wh-1,1 do
  14. for y=0,x-1,1 do
  15. c1=getpicturepixel(x,y);c2=getpicturepixel(y,x)
  16. putpicturepixel(x,y,c2);putpicturepixel(y,x,c1)
  17. end;end
  18. finalizepicture()
  19. setpicturesize(h,w)
  20. tm=h;h=w;w=tm
  21. end
  22. if flipx==1 then
  23. for y=0,h-1,1 do
  24. for x=0,w/2,1 do
  25. c1=getpicturepixel(x,y);c2=getpicturepixel(w-x-1,y)
  26. putpicturepixel(x,y,c2);putpicturepixel(w-x-1,y,c1)
  27. end;end;end
  28. if flipy==1 then
  29. for y=0,h/2,1 do
  30. for x=0,w-1,1 do
  31. c1=getpicturepixel(x,y);c2=getpicturepixel(x,h-y-1)
  32. putpicturepixel(x,y,c2);putpicturepixel(x,h-y-1,c1)
  33. end;end;end
  34. end