54 lines
2.2 KiB
Plaintext
54 lines
2.2 KiB
Plaintext
|
on.draw = function()
|
||
|
for _,obj in ipairs(Surface) do
|
||
|
love.graphics.setColor(obj.r or 0, obj.g or 0, obj.b or 0)
|
||
|
if obj.type == 'rectangle' then
|
||
|
love.graphics.rectangle(obj.drawmode or 'fill', vx(obj.x),vy(obj.y), scale(obj.w),scale(obj.h))
|
||
|
elseif obj.type == 'line' then
|
||
|
if obj.saved_zoom ~= Viewport.zoom or obj.saved_x ~= Viewport.x or obj.saved_y ~= Viewport.y then
|
||
|
obj.saved_zoom = Viewport.zoom
|
||
|
obj.saved_x = Viewport.x
|
||
|
obj.saved_y = Viewport.y
|
||
|
obj.zdata = {}
|
||
|
for i=1,#obj.data,2 do
|
||
|
table.insert(obj.zdata, vx(obj.data[i]))
|
||
|
table.insert(obj.zdata, vy(obj.data[i+1]))
|
||
|
end
|
||
|
end
|
||
|
love.graphics.line(unpack(obj.zdata))
|
||
|
elseif obj.type == 'circle' then
|
||
|
love.graphics.circle(obj.drawmode or 'fill', vx(obj.x), vy(obj.y), scale(obj.radius))
|
||
|
elseif obj.type == 'arc' then
|
||
|
love.graphics.arc(obj.drawmode or 'line', obj.arctype or 'open', vx(obj.x), vy(obj.y), scale(obj.radius), obj.angle1, obj.angle2, obj.segments)
|
||
|
elseif obj.type == 'ellipse' then
|
||
|
love.graphics.ellipse(obj.drawmode or 'fill', vx(obj.x), vy(obj.y), scale(obj.radiusx), scale(obj.radiusy))
|
||
|
elseif obj.type == 'bezier' then
|
||
|
if obj.saved_zoom ~= Viewport.zoom or obj.saved_x ~= Viewport.x or obj.saved_y ~= Viewport.y then
|
||
|
obj.saved_zoom = Viewport.zoom
|
||
|
obj.saved_x = Viewport.x
|
||
|
obj.saved_y = Viewport.y
|
||
|
zdata = {}
|
||
|
for i=1,#obj.data,2 do
|
||
|
table.insert(zdata, vx(obj.data[i]))
|
||
|
table.insert(zdata, vy(obj.data[i+1]))
|
||
|
end
|
||
|
obj.zdata = love.math.newBezierCurve(zdata):render()
|
||
|
end
|
||
|
love.graphics.line(unpack(obj.zdata))
|
||
|
elseif obj.type == 'text' then
|
||
|
local scaled_fontsize = scale(obj.fontsize or 20)
|
||
|
if obj.saved_zoom ~= Viewport.zoom or obj.saved_x ~= Viewport.x or obj.saved_y ~= Viewport.y or obj.scaled_fontsize ~= scaled_fontsize then
|
||
|
obj.saved_zoom = Viewport.zoom
|
||
|
obj.saved_x = Viewport.x
|
||
|
obj.saved_y = Viewport.y
|
||
|
obj.scaled_fontsize = scaled_fontsize
|
||
|
obj.text = love.graphics.newText(font(obj, scaled_fontsize), obj.data)
|
||
|
initialize_editor(obj)
|
||
|
end
|
||
|
if obj.w == nil then
|
||
|
love.graphics.draw(obj.text, vx(obj.x), vy(obj.y))
|
||
|
else
|
||
|
edit.draw(obj.editor, obj.fg or {r=0,g=0,b=0}, true) -- hide cursor
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|