Split local state from Engine in iced_wgpu

This commit is contained in:
Héctor Ramón Jiménez 2025-03-24 01:28:39 +01:00
parent 4b075b9731
commit 576dd22733
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
22 changed files with 768 additions and 641 deletions

View file

@ -407,8 +407,11 @@ impl compositor::Default for Renderer {
}
impl renderer::Headless for Renderer {
fn new(default_font: Font, default_text_size: Pixels) -> Self {
Self::new(default_font, default_text_size)
async fn new(
default_font: Font,
default_text_size: Pixels,
) -> Option<Self> {
Some(Self::new(default_font, default_text_size))
}
fn screenshot(
@ -420,11 +423,6 @@ impl renderer::Headless for Renderer {
let viewport =
Viewport::with_physical_size(size, f64::from(scale_factor));
window::compositor::screenshot::<&str>(
self,
&viewport,
background_color,
&[],
)
window::compositor::screenshot(self, &viewport, background_color)
}
}

View file

@ -126,14 +126,13 @@ impl crate::graphics::Compositor for Compositor {
)
}
fn screenshot<T: AsRef<str>>(
fn screenshot(
&mut self,
renderer: &mut Self::Renderer,
viewport: &Viewport,
background_color: Color,
overlay: &[T],
) -> Vec<u8> {
screenshot(renderer, viewport, background_color, overlay)
screenshot(renderer, viewport, background_color)
}
}
@ -219,11 +218,10 @@ pub fn present<T: AsRef<str>>(
buffer.present().map_err(|_| compositor::SurfaceError::Lost)
}
pub fn screenshot<T: AsRef<str>>(
pub fn screenshot(
renderer: &mut Renderer,
viewport: &Viewport,
background_color: Color,
overlay: &[T],
) -> Vec<u8> {
let size = viewport.physical_size();
@ -233,7 +231,7 @@ pub fn screenshot<T: AsRef<str>>(
let mut clip_mask = tiny_skia::Mask::new(size.width, size.height)
.expect("Create clip mask");
renderer.draw(
renderer.draw::<&str>(
&mut tiny_skia::PixmapMut::from_bytes(
bytemuck::cast_slice_mut(&mut offscreen_buffer),
size.width,
@ -247,7 +245,7 @@ pub fn screenshot<T: AsRef<str>>(
size.height as f32,
))],
background_color,
overlay,
&[],
);
offscreen_buffer.iter().fold(