From fa034554573f80c2c1bef1ae9f668e9d26555741 Mon Sep 17 00:00:00 2001 From: grovesNL Date: Fri, 21 Oct 2022 09:03:08 -0230 Subject: [PATCH] Allow borrowed layouts for `prepare` Allows either `&[layout, overflow]` or `&[&layout, overflow]` --- src/text_render.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/text_render.rs b/src/text_render.rs index 2f847ae..60c480b 100644 --- a/src/text_render.rs +++ b/src/text_render.rs @@ -3,7 +3,7 @@ use fontdue::{ layout::{GlyphRasterConfig, Layout}, Font, }; -use std::{collections::HashSet, iter, mem::size_of, num::NonZeroU32, slice}; +use std::{borrow::Borrow, collections::HashSet, iter, mem::size_of, num::NonZeroU32, slice}; use wgpu::{ Buffer, BufferDescriptor, BufferUsages, Device, Extent3d, ImageCopyTexture, ImageDataLayout, IndexFormat, Origin3d, Queue, RenderPass, TextureAspect, COPY_BUFFER_ALIGNMENT, @@ -59,14 +59,14 @@ impl TextRenderer { } /// Prepares all of the provided layouts for rendering. - pub fn prepare( + pub fn prepare( &mut self, device: &Device, queue: &Queue, atlas: &mut TextAtlas, screen_resolution: Resolution, fonts: &[Font], - layouts: &[(Layout, TextOverflow)], + layouts: &[(impl Borrow>, TextOverflow)], ) -> Result<(), PrepareError> { self.screen_resolution = screen_resolution; @@ -93,7 +93,7 @@ impl TextRenderer { self.glyphs_in_use.clear(); for (layout, _) in layouts.iter() { - for glyph in layout.glyphs() { + for glyph in layout.borrow().glyphs() { self.glyphs_in_use.insert(glyph.key); let already_on_gpu = atlas.glyph_cache.contains_key(&glyph.key); @@ -196,6 +196,7 @@ impl TextRenderer { let mut glyphs_added = 0; for (layout, overflow) in layouts.iter() { + let layout = layout.borrow(); let settings = layout.settings(); // Note: subpixel positioning is not currently handled, so we always truncate down to