Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. --SCENE: Remap pic 2 RGB, 1lineED-dith. (Same line simple error-diffusion dither)
  2. --by Richard Fhager
  3. --http://hem.fyristorg.com/dawnbringer/
  4.  
  5. -- Copyright 2010 Richard Fhager
  6. --
  7. -- This program is free software; you can redistribute it and/or
  8. -- modify it under the terms of the GNU General Public License
  9. -- as published by the Free Software Foundation; version 2
  10. -- of the License. See <http://www.gnu.org/licenses/>
  11.  
  12.  
  13. power = 0.615
  14.  
  15. c1 = 0.8 -- Error weight (white is green)
  16. c2 = 0.2 -- RGB weight (white is r+g+b)
  17.  
  18. -- Set Palette (to a predefined one)
  19.  
  20. colors = {{  0,  0,  0},
  21.           {255,  0,  0},
  22.           {  0,255,  0},
  23.           {  0,  0,255}
  24.          }
  25.  
  26.  
  27. chm = {1,0,0}
  28.  
  29. for c = 1, #colors, 1 do
  30.   setcolor(c-1,colors[c][1],colors[c][2],colors[c][3])
  31. end
  32.  
  33. for c = #colors, 255, 1 do
  34.   setcolor(c,0,0,0)
  35. end
  36.  
  37.  
  38.  
  39. w, h = getpicturesize()
  40.  
  41. for y = 0, h - 1, 1 do
  42.  
  43.   re = 0
  44.   ge = 0
  45.   be = 0
  46.  
  47.   for x = (y%2), w - 1, 1 do
  48.    
  49.     r,g,b = getbackupcolor(getbackuppixel(x,y));
  50.  
  51.       rn = re * c1 + r * chm[1+(y+0+x)%3] * c2
  52.       gn = ge * c1 + g * chm[1+(y+1+x)%3] * c2
  53.       bn = be * c1 + b * chm[1+(y+2+x)%3] * c2
  54.  
  55.       n = matchcolor(rn,gn,bn);
  56.  
  57.     putpicturepixel(x, y, n);
  58.  
  59.    
  60.     rn,gn,bn =  getcolor(getpicturepixel(x,y));
  61.    
  62.     re = (re + (r - rn)) * power
  63.     ge = (ge + (g - gn)) * power
  64.     be = (be + (b - bn)) * power
  65.  
  66.    
  67.  
  68.   end
  69. end
  70.