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

View File

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