Gravity waves on water with non-uniform depth and current