i_overlay/split/
fragment.rs1use 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}