diff options
Diffstat (limited to 'src/render_helpers/mod.rs')
| -rw-r--r-- | src/render_helpers/mod.rs | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/render_helpers/mod.rs b/src/render_helpers/mod.rs index bf834d58..36df83dc 100644 --- a/src/render_helpers/mod.rs +++ b/src/render_helpers/mod.rs @@ -157,6 +157,16 @@ impl ToRenderElement for BakedBuffer<SolidColorBuffer> { } } +pub fn encompassing_geo( + scale: Scale<f64>, + elements: impl Iterator<Item = impl RenderElement<GlesRenderer>>, +) -> Rectangle<i32, Physical> { + elements + .map(|ele| ele.geometry(scale)) + .reduce(|a, b| a.merge(b)) + .unwrap_or_default() +} + pub fn render_to_encompassing_texture( renderer: &mut GlesRenderer, scale: Scale<f64>, @@ -164,11 +174,7 @@ pub fn render_to_encompassing_texture( fourcc: Fourcc, elements: &[impl RenderElement<GlesRenderer>], ) -> anyhow::Result<(GlesTexture, SyncPoint, Rectangle<i32, Physical>)> { - let geo = elements - .iter() - .map(|ele| ele.geometry(scale)) - .reduce(|a, b| a.merge(b)) - .unwrap_or_default(); + let geo = encompassing_geo(scale, elements.iter()); let elements = elements.iter().rev().map(|ele| { RelocateRenderElement::from_element(ele, geo.loc.upscale(-1), Relocate::Relative) }); |
