use crate::int::CurveInt;
use crate::int::curve::segment::CurveSegment;
use alloc::vec::Vec;
use i_overlay::i_shape::int::IntPoint;
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct CurvePath<I: CurveInt> {
pub start: IntPoint<I>,
pub segments: Vec<CurveSegment<I>>,
}
impl<I: CurveInt> CurvePath<I> {
pub fn new(start: IntPoint<I>, segments: Vec<CurveSegment<I>>) -> Self {
Self { start, segments }
}
pub fn end_point(&self) -> Option<IntPoint<I>> {
self.segments.last().map(CurveSegment::end_point)
}
pub fn is_closed(&self) -> bool {
self.end_point() == Some(self.start)
}
}