Image noise: Difference between revisions

m (added whitespace to task's preamble (before the TOC), centered the sample image.)
Line 2,197:
end;
end.</lang>
 
=={{header|Phix}}==
Not optimised, gets about 130 fps.
<lang Phix>-- demo\rosetta\ImageNoise.exw
include pGUI.e
 
Ihandle dlg, canvas, timer
cdCanvas cddbuffer, cdcanvas
 
constant TITLE = "Image noise"
 
integer fps = 129 -- (typical value)
 
function redraw_cb(Ihandle /*ih*/, integer /*posx*/, integer /*posy*/)
integer {w, h} = IupGetIntInt(canvas, "DRAWSIZE")
cdCanvasActivate(cddbuffer)
sequence bw = repeat(0,w*h)
for x=0 to w-1 do
for y=0 to h-1 do
if rand(2)=2 then bw[x*h+y+1] = 255 end if
end for
end for
cdCanvasPutImageRectRGB(cddbuffer, w, h, {bw,bw,bw})
cdCanvasFlush(cddbuffer)
fps += 1
return IUP_DEFAULT
end function
 
atom t1 = time()
 
function timer_cb(Ihandle /*ih*/)
if time()>t1 then
IupSetStrAttribute(dlg, "TITLE", "%s [%g FPS])",{TITLE,fps})
fps = 0
t1 = time()+1
end if
IupUpdate(canvas)
return IUP_IGNORE
end function
 
function map_cb(Ihandle ih)
cdcanvas = cdCreateCanvas(CD_IUP, ih)
cddbuffer = cdCreateCanvas(CD_DBUFFER, cdcanvas)
return IUP_DEFAULT
end function
 
procedure main()
IupOpen()
 
canvas = IupCanvas(NULL)
IupSetAttribute(canvas, "RASTERSIZE", "320x240")
IupSetCallback(canvas, "MAP_CB", Icallback("map_cb"))
IupSetCallback(canvas, "ACTION", Icallback("redraw_cb"))
 
timer = IupTimer(Icallback("timer_cb"), 10)
 
dlg = IupDialog(canvas)
IupSetAttribute(dlg, "TITLE", TITLE)
IupCloseOnEscape(dlg)
 
IupShow(dlg)
IupSetAttribute(canvas, "RASTERSIZE", NULL)
IupMainLoop()
IupClose()
end procedure
 
main()</lang>
 
=={{header|PicoLisp}}==
7,796

edits