geometry: make the R-tree private with read-only ref getter

This commit is contained in:
Mikolaj Wielgus 2024-02-01 00:40:06 +00:00
parent 4be2a0ca73
commit 847309adae
2 changed files with 9 additions and 5 deletions

View File

@ -29,7 +29,7 @@ pub struct GeometryWithRtree<
BI: GetNodeIndex + Into<GI> + Copy,
> {
geometry: Geometry<GW, DW, SW, BW, GI, DI, SI, BI>,
pub rtree: RTree<BboxedShapeAndIndex<GI>>,
rtree: RTree<BboxedShapeAndIndex<GI>>,
weight_marker: PhantomData<GW>,
dot_weight_marker: PhantomData<DW>,
seg_weight_marker: PhantomData<SW>,
@ -210,6 +210,10 @@ impl<
&self.geometry
}
pub fn rtree(&self) -> &RTree<BboxedShapeAndIndex<GI>> {
&self.rtree
}
pub fn graph(&self) -> &StableDiGraph<GW, GeometryLabel, usize> {
self.geometry.graph()
}

View File

@ -748,7 +748,7 @@ impl Layout {
pub fn nodes(&self) -> impl Iterator<Item = GeometryIndex> + '_ {
self.geometry_with_rtree
.rtree
.rtree()
.iter()
.map(|wrapper| wrapper.data)
}
@ -763,7 +763,7 @@ impl Layout {
fn node_indices(&self) -> impl Iterator<Item = GeometryIndex> + '_ {
self.geometry_with_rtree
.rtree
.rtree()
.iter()
.map(|wrapper| wrapper.data)
}
@ -813,7 +813,7 @@ impl Layout {
let shape = node.primitive(self).shape();
self.geometry_with_rtree
.rtree
.rtree()
.locate_in_envelope_intersecting(&RTreeObject::envelope(&shape))
.filter(|wrapper| {
let other_index = wrapper.data;
@ -833,7 +833,7 @@ impl Layout {
let shape = node.primitive(self).shape();
self.geometry_with_rtree
.rtree
.rtree()
.locate_in_envelope_intersecting(&RTreeObject::envelope(&shape))
.filter(|wrapper| {
let other_index = wrapper.data;