little tool for building Wardley maps
B = function(preserve_screen_top_of_cursor_node)
	-- recompute various aspects based on the current viewport settings
	love.graphics.setFont(love.graphics.newFont(scale(20)))  -- editor objects implicitly depend on current font so update it
	for _,obj in ipairs(Surface) do
		if obj.type == 'line' then
			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
		elseif obj.type == 'bezier' then
			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
			if obj.w then
				update_editor_box(obj, preserve_screen_top_of_cursor_node)
			else
				obj.text = love.graphics.newText(love.graphics.getFont(), obj.data)
			end
		end
	end
end