Update cosmic-text and glyphon
This commit is contained in:
parent
fd077918db
commit
95ff96f71f
4 changed files with 21 additions and 61 deletions
|
|
@ -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,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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...
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue