Programming environment for editing various of my live apps without restarting them.
animate_viewport_to = function(v)
	local global_viewport, globalw, globalh = initialize_global_viewport()
	local canvas = snapshot_canvas(global_viewport, globalw, globalh)
	v = v or global_viewport
	local initial = copy_viewport(Viewport)
	local final = v
	local step, frame_time = 0, 0
	while true do
		love.event.pump()
		for name, a,b,c,d,e,f in love.event.poll() do
			if name == "quit" then
				os.exit(0)
			end
			-- ignore other events
		end
		-- update
		dt = love.timer.step()
		frame_time = frame_time + dt
		if frame_time > 0.01 then
			frame_time = frame_time - 0.01
			step = step + 1
			if step > Num_animation_frames then
				break
			end
			interpolate_viewport(initial, final, step)
--? 			print('animation frame: Viewport is now', Viewport.x, Viewport.y, Viewport.zoom)
			B()
		end
		-- draw
		love.graphics.origin()
		love.graphics.clear(love.graphics.getBackgroundColor())
		local q = love.graphics.newQuad(
			(Viewport.x-global_viewport.x)*Viewport.zoom,
			(Viewport.y-global_viewport.y)*Viewport.zoom,
			App.screen.width,
			App.screen.height,
			globalw*Viewport.zoom,
			globalh*Viewport.zoom)
		App.color{r=1,g=1,b=1}
		love.graphics.draw(canvas, q, 0,0)
		love.graphics.present()
		love.timer.sleep(0.001)
	end
	A()
end