i_overlay/split/
fragment.rs

1use i_float::int::rect::IntRect;
2use crate::geom::x_segment::XSegment;
3
4#[derive(Debug, Clone)]
5pub(super) struct Fragment {
6    pub(super) index: usize,
7    pub(super) rect: IntRect,
8    pub(super) x_segment: XSegment,
9}
10
11impl Fragment {
12
13    #[inline]
14    pub(super) fn with_index_and_segment(index: usize, x_segment: XSegment) -> Self {
15        let (min_y, max_y) = if x_segment.a.y < x_segment.b.y {
16            (x_segment.a.y, x_segment.b.y)
17        } else {
18            (x_segment.b.y, x_segment.a.y)
19        };
20
21        let rect = IntRect {
22            min_x: x_segment.a.x,
23            max_x: x_segment.b.x,
24            min_y,
25            max_y,
26        };
27
28        Self {
29            index,
30            rect,
31            x_segment,
32        }
33    }
34}