i_overlay 7.0.0

Boolean Operations for 2D Polygons: Supports intersection, union, difference, xor, and self-intersections for all polygon varieties.
Documentation
use crate::build::builder::GraphBuilder;
use crate::core::graph::OverlayNode;
use crate::core::overlay::Overlay;
use crate::segm::boolean::ShapeCountBoolean;
use crate::segm::segment::Segment;
use crate::split::solver::SplitSolver;
use alloc::vec::Vec;
use i_float::int::number::int::IntNumber;
use i_tree::Expiration;

impl<I: IntNumber + Expiration> Overlay<I> {
    #[inline]
    pub(crate) fn add_segments(&mut self, segments: &[Segment<ShapeCountBoolean, I>]) {
        self.segments.extend_from_slice(segments);
    }

    #[inline]
    pub(crate) fn with_segments(segments: Vec<Segment<ShapeCountBoolean, I>>) -> Self {
        Self {
            solver: Default::default(),
            options: Default::default(),
            boolean_buffer: None,
            segments,
            split_solver: SplitSolver::new(),
            graph_builder: GraphBuilder::<ShapeCountBoolean, OverlayNode, I>::new(),
        }
    }
}