use crate::{Clipper, ClipperError, FillRule, Paths, PointScaler};
pub fn intersect<P: PointScaler>(
subject: impl Into<Paths<P>>,
clip: impl Into<Paths<P>>,
fill_rule: FillRule,
) -> Result<Paths<P>, ClipperError> {
Clipper::new()
.add_subject(subject)
.add_clip(clip)
.intersect(fill_rule)
}
#[cfg(test)]
mod test {
use crate::Centi;
use super::*;
#[test]
fn test_intersect() {
let path1 = vec![(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0)];
let path2 = vec![(0.5, 0.5), (1.5, 0.5), (1.5, 1.5), (0.5, 1.5)];
let expected_output = vec![vec![(1.0, 1.0), (0.5, 1.0), (0.5, 0.5), (1.0, 0.5)]];
let output: Vec<Vec<(f64, f64)>> = intersect::<Centi>(path1, path2, FillRule::default())
.unwrap()
.into();
assert_eq!(output, expected_output);
}
}