Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6581 leency 1
-- cell colour reducer - jan'11, from Paulo Silva, with help from people from GrafX2 google group (DawnBringer, Adrien Destugues (PulkoMandy), and Yves Rizoud)
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 
3
w,h=getpicturesize()
4
ok,xcell,ycell=inputbox("Modify cell pixel size","xcell",8,1,16,4,"ycell",8,1,16,4);
5
if ok==true then
6
  function grayscaleindexed(c)
7
    r,g,b=getcolor(c);return math.floor((b*11+r*30+g*59)/100);end
8
  celcnt={};for n=0,255,1 do celcnt[n+1]=0;end -- Arraycounter must have initial value
9
  for y1=0,h-1,ycell do
10
    for x1=0,w-1,xcell do
11
      for i=0,255,1 do
12
        celcnt[i+1]=0;end
13
      for y2=0,ycell-1,1 do
14
        for x2=0,xcell-1,1 do
15
           x=x1+x2;y=y1+y2;u=getpicturepixel(x,y)
16
           celcnt[u+1]=celcnt[u+1]+(1000*xcell*ycell)+math.random(0,950);end;end
17
      ikattr=0;paattr=0;ikcnt=0;pacnt=0
18
      for i=0,255,1 do
19
        if ikcnt
20
      celcnt[ikattr+1]=0
21
      for i=0,255,1 do
22
        if pacnt
23
      if grayscaleindexed(ikattr)>grayscaleindexed(paattr) then tmpr=ikattr;ikattr=paattr;paattr=tmpr;end
24
      wmid=math.floor((grayscaleindexed(paattr)+grayscaleindexed(ikattr))/2)
25
      for y2=0,ycell-1,1 do
26
        for x2=0,xcell-1,1 do
27
          x=x1+x2;y=y1+y2;u=getpicturepixel(x,y)
28
          if u==ikattr then
29
            idou=ikattr
30
          elseif u==paattr then
31
            idou=paattr
32
          else
33
            idou=ikattr
34
            if grayscaleindexed(u)>wmid then idou=paattr;end
35
            end
36
          putpicturepixel(x,y,idou)
37
          end;end;end;end;end