egml_core/model/common/
recompute_bounding_shape.rs1use crate::model::common::ComputeEnvelope;
2use crate::model::feature::AsAbstractFeatureMut;
3
4pub trait RecomputeBoundingShape {
5 fn recompute_bounding_shape(&mut self);
6}
7
8impl<T> RecomputeBoundingShape for T
9where
10 T: ComputeEnvelope + AsAbstractFeatureMut,
11{
12 fn recompute_bounding_shape(&mut self) {
13 let Some(recomputed_envelope) = self.compute_envelope() else {
14 return;
15 };
16
17 if let Some(bounding_shape) = self.bounded_by_mut() {
18 if let Some(envelope) = bounding_shape.envelope_mut() {
19 envelope.set_lower_corner(*recomputed_envelope.lower_corner());
20 envelope.set_upper_corner(*recomputed_envelope.upper_corner());
21 }
22 } else {
23 AsAbstractFeatureMut::set_bounding_shape_from_envelope(self, self.compute_envelope());
24 }
25 }
26}