fj-core 0.49.0

Early-stage b-rep CAD kernel.
Documentation
use crate::{
    objects::Region,
    operations::{derive::DeriveFrom, insert::Insert},
    Core,
};

use super::{Reverse, ReverseCurveCoordinateSystems};

impl Reverse for Region {
    fn reverse(&self, core: &mut Core) -> Self {
        let exterior = self
            .exterior()
            .reverse(core)
            .insert(core)
            .derive_from(self.exterior(), core);
        let interiors = self.interiors().iter().map(|cycle| {
            cycle.reverse(core).insert(core).derive_from(cycle, core)
        });

        Region::new(exterior, interiors)
    }
}

impl ReverseCurveCoordinateSystems for Region {
    fn reverse_curve_coordinate_systems(&self, core: &mut Core) -> Self {
        let exterior = self
            .exterior()
            .reverse_curve_coordinate_systems(core)
            .insert(core)
            .derive_from(self.exterior(), core);
        let interiors = self.interiors().iter().map(|cycle| {
            cycle
                .reverse_curve_coordinate_systems(core)
                .insert(core)
                .derive_from(cycle, core)
        });

        Region::new(exterior, interiors)
    }
}