fillLine = (function()
local POW = math.pow
local ATAN = math.atan2
local MIN = math.min
local SQRT = math.sqrt
local SIN = math.sin
local COS = math.cos
return function(gc, x1, y1, x2, y2, area)
local angle = ATAN(y2 - y1, x2 - x1)
local r = MIN(30000, area/(2 * SQRT(POW((x2 - x1), 2) + POW((y2 - y1), 2))))
local rSin = r * SIN(angle)
local rCos = r * COS(angle)
local p1x, p1y = x1 - rSin, y1 + rCos
local p2x, p2y = x2 - rSin, y2 + rCos
local p3x, p3y = x2 + rSin, y2 - rCos
local p4x, p4y = x1 + rSin, y1 - rCos
gc:fillPolygon({p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y})
end
end)()
function on.paint(gc)
fillLine(gc, 50, 20 , 100, 20 , 1000)
fillLine(gc, 50, 70 , 150, 70 , 1000)
fillLine(gc, 50, 120, 200, 120, 1000)
fillLine(gc, 50, 170, 300, 170, 1000)
end