Bitmap/Bresenham's line algorithm: Difference between revisions

imported>Chinhouse
imported>Chinhouse
 
(2 intermediate revisions by the same user not shown)
Line 2,836:
This GUI implementation is for use with [http://miniscript.org/MiniMicro Mini Micro].
<syntaxhighlight lang="miniscript">
Img.linedrawLine = function(x1img, y1x0, x2y0, x1, y1, y2colr)
Img = new Image
Img.create sign = function(wa,h,c b)
if ca ==< nullb then creturn = color.black1
return j-1
i = Image.create(w,h, c)
end function
j = new Img
j._handle = i._handle
dydx = abs(y2x1 - y1x0)
j.width = w
sx = sign(x0, x1)
j.height = h
return j
sydy = -1 * -abs(y1 <- y2y0)
end function
sy = sign(y0, y1)
Img.pixelColor = color.white
Img.line = function(x1, y1, x2, y2)
dxif =dx abs(x2> -dy x1)then
err = dx
sx = -1 * -(x1 < x2)
else
dy = abs(y2 - y1)
er err = -dy
sy = -1 * -(y1 < y2)
end if
er = -dy
ererr = floor(ererr / 2)
if dx > dy then er = dx
er = floor(er / 2)
while true
selfimg.setPixel x1x0, y1y0, self.pixelColorcolr
if x1x0 == x2x1 and y1y0 == y2y1 then break
e2 = ererr
if e2 > -dx then
ererr -= er - dy
x1x0 += x1 + sx
end if
if e2 < dy then
ererr += er + dx
y1y0 += y1 + sy
end if
end while
end function
 
img= ImgImage.create(320, 320)
drawLine img.line, 0, 0, 250, 300, color.red
gfx.clear
gfx.drawImage img, 0, 0
 
</syntaxhighlight>
 
Anonymous user