fj_core/operations/reverse/
region.rs

1use crate::{
2    objects::Region,
3    operations::{derive::DeriveFrom, insert::Insert},
4    Core,
5};
6
7use super::{Reverse, ReverseCurveCoordinateSystems};
8
9impl Reverse for Region {
10    fn reverse(&self, core: &mut Core) -> Self {
11        let exterior = self
12            .exterior()
13            .reverse(core)
14            .insert(core)
15            .derive_from(self.exterior(), core);
16        let interiors = self.interiors().iter().map(|cycle| {
17            cycle.reverse(core).insert(core).derive_from(cycle, core)
18        });
19
20        Region::new(exterior, interiors)
21    }
22}
23
24impl ReverseCurveCoordinateSystems for Region {
25    fn reverse_curve_coordinate_systems(&self, core: &mut Core) -> Self {
26        let exterior = self
27            .exterior()
28            .reverse_curve_coordinate_systems(core)
29            .insert(core)
30            .derive_from(self.exterior(), core);
31        let interiors = self.interiors().iter().map(|cycle| {
32            cycle
33                .reverse_curve_coordinate_systems(core)
34                .insert(core)
35                .derive_from(cycle, core)
36        });
37
38        Region::new(exterior, interiors)
39    }
40}