pub(crate) mod corridor;
pub(crate) mod curve;
use super::ortho::{Chain, geometry, request::EdgeReq, scene::SceneIndex};
use crate::layout::ir::Cubic;
pub(crate) fn lower(
index: &SceneIndex,
req: &EdgeReq,
chain: &Chain,
c: f64,
) -> (Vec<(f64, f64)>, Vec<Cubic>) {
let poly = geometry::polyline(chain);
let fitted = curve::fit(&poly, req.stub_a, req.stub_b);
let keep = corridor::Keepouts::build(
index,
[(&req.a_path, req.a_rect), (&req.b_path, req.b_rect)],
c,
);
corridor::tighten(&poly, req.stub_a, req.stub_b, &keep, fitted)
}