diff options
author | 2023-07-20 21:12:54 +0200 | |
---|---|---|
committer | 2023-07-20 21:12:54 +0200 | |
commit | 9801c930f02489b893aecdc6ebb3b524b7484b6c (patch) | |
tree | 7e245773d3b9a8c700d2713cbf4aba3d347b3167 /wgpu | |
parent | fd077918db7643530c3a7318ed5777d2f3d8761b (diff) | |
parent | 1006206fb260e6382ddf50a543846ccb9ffa957b (diff) | |
download | iced-9801c930f02489b893aecdc6ebb3b524b7484b6c.tar.gz iced-9801c930f02489b893aecdc6ebb3b524b7484b6c.tar.bz2 iced-9801c930f02489b893aecdc6ebb3b524b7484b6c.zip |
Merge pull request #1961 from iced-rs/update-glyphon-and-cosmic-text
Update `cosmic-text` and `glyphon`
Diffstat (limited to '')
-rw-r--r-- | wgpu/Cargo.toml | 4 | ||||
-rw-r--r-- | wgpu/src/backend.rs | 53 | ||||
-rw-r--r-- | wgpu/src/text.rs | 22 |
3 files changed, 21 insertions, 58 deletions
diff --git a/wgpu/Cargo.toml b/wgpu/Cargo.toml index 22cfad55..a0500f83 100644 --- a/wgpu/Cargo.toml +++ b/wgpu/Cargo.toml @@ -44,8 +44,8 @@ path = "../graphics" [dependencies.glyphon] version = "0.2" -git = "https://github.com/hecrj/glyphon.git" -rev = "8324f20158a62f8520bad4ed09f6aa5552f8f2a6" +git = "https://github.com/grovesNL/glyphon.git" +rev = "81dedbd04237e181c2118931c5f37d341aeb6837" [dependencies.glam] version = "0.24" diff --git a/wgpu/src/backend.rs b/wgpu/src/backend.rs index 4a0c54f0..9966a38c 100644 --- a/wgpu/src/backend.rs +++ b/wgpu/src/backend.rs @@ -94,18 +94,11 @@ impl Backend { queue, encoder, scale_factor, + target_size, transformation, &layers, ); - while !self.prepare_text( - device, - queue, - scale_factor, - target_size, - &layers, - ) {} - self.render( device, encoder, @@ -124,44 +117,13 @@ impl Backend { self.image_pipeline.end_frame(); } - fn prepare_text( - &mut self, - device: &wgpu::Device, - queue: &wgpu::Queue, - scale_factor: f32, - target_size: Size<u32>, - layers: &[Layer<'_>], - ) -> bool { - for layer in layers { - let bounds = (layer.bounds * scale_factor).snap(); - - if bounds.width < 1 || bounds.height < 1 { - continue; - } - - if !layer.text.is_empty() - && !self.text_pipeline.prepare( - device, - queue, - &layer.text, - layer.bounds, - scale_factor, - target_size, - ) - { - return false; - } - } - - true - } - fn prepare( &mut self, device: &wgpu::Device, queue: &wgpu::Queue, _encoder: &mut wgpu::CommandEncoder, scale_factor: f32, + target_size: Size<u32>, transformation: Transformation, layers: &[Layer<'_>], ) { @@ -210,6 +172,17 @@ impl Backend { ); } } + + if !layer.text.is_empty() { + self.text_pipeline.prepare( + device, + queue, + &layer.text, + layer.bounds, + scale_factor, + target_size, + ); + } } } diff --git a/wgpu/src/text.rs b/wgpu/src/text.rs index 65d3b818..ef910c39 100644 --- a/wgpu/src/text.rs +++ b/wgpu/src/text.rs @@ -35,7 +35,7 @@ impl Pipeline { .into_iter(), )), renderers: Vec::new(), - atlas: glyphon::TextAtlas::new( + atlas: glyphon::TextAtlas::with_color_mode( device, queue, format, @@ -66,7 +66,7 @@ impl Pipeline { bounds: Rectangle, scale_factor: f32, target_size: Size<u32>, - ) -> bool { + ) { if self.renderers.len() <= self.prepare_layer { self.renderers.push(glyphon::TextRenderer::new( &mut self.atlas, @@ -188,21 +188,11 @@ impl Pipeline { match result { Ok(()) => { self.prepare_layer += 1; - - true } - Err(glyphon::PrepareError::AtlasFull(content_type)) => { - self.prepare_layer = 0; - - #[allow(clippy::needless_bool)] - if self.atlas.grow(device, content_type) { - false - } else { - // If the atlas cannot grow, then all bets are off. - // Instead of panicking, we will just pray that the result - // will be somewhat readable... - true - } + Err(glyphon::PrepareError::AtlasFull) => { + // If the atlas cannot grow, then all bets are off. + // Instead of panicking, we will just pray that the result + // will be somewhat readable... } } } |