Undo & Redo
BlowHistory holds snapshots and hands back the one to restore. It is something you drive rather than something the canvas does for you, because only your app knows what counts as one undoable step - dragging five nodes is one step, not five hundred pointer moves. Capture when a gesture ends; identical captures are ignored, so pressing undo always does something.