66 lines
2.8 KiB
Plaintext
66 lines
2.8 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.width),scale(obj.height))
|
|
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()
|
|
elseif obj.type == 'text' then
|
|
local scaled_fontsize = scale(obj.fontsize or 20)
|
|
if obj.scaled_fontsize ~= scaled_fontsize then
|
|
obj.scaled_fontsize = scaled_fontsize
|
|
if Font == nil then Font = {} end
|
|
if Font[scaled_fontsize] == nil then
|
|
Font[scaled_fontsize] = love.graphics.newFont(scaled_fontsize)
|
|
end
|
|
obj.text = love.graphics.newText(Font[scaled_fontsize], obj.data)
|
|
end
|
|
love.graphics.draw(obj.text, vx(obj.x), vy(obj.y))
|
|
end
|
|
love.graphics.line(unpack(obj.zdata))
|
|
elseif obj.type == 'edit' 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
|
|
if Font == nil then Font = {} end
|
|
if Font[scaled_fontsize] == nil then
|
|
Font[scaled_fontsize] = love.graphics.newFont(scaled_fontsize)
|
|
end
|
|
obj.editor = edit.initialize_state(vy(obj.y), vx(obj.x), vx(obj.x+obj.w), scaled_fontsize, math.floor(scaled_fontsize*1.3))
|
|
obj.editor.lines = load_array(obj.data)
|
|
Text.redraw_all(obj.editor)
|
|
end
|
|
edit.draw(obj.editor, obj.fg or {r=0,g=0,b=0})
|
|
end
|
|
end
|
|
end |