on.draw = function() love.graphics.setColor(1,0,0) for y=0,1000,100 do love.graphics.line(vx(-5),vy(y), vx(5),vy(y)) end for x=0,1000,100 do love.graphics.line(vx(x),vy(-5), vx(x),vy(5)) end 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 print('setting font', scaled_fontsize) love.graphics.setFont(font(scaled_fontsize)) obj.text = love.graphics.newText(love.graphics.getFont(), 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}, not obj.show_cursor) end end end end