fj_core/operations/reverse/
region.rs1use 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}