summaryrefslogtreecommitdiffstats
path: root/renderer/src
diff options
context:
space:
mode:
Diffstat (limited to 'renderer/src')
-rw-r--r--renderer/src/fallback.rs41
-rw-r--r--renderer/src/lib.rs28
2 files changed, 45 insertions, 24 deletions
diff --git a/renderer/src/fallback.rs b/renderer/src/fallback.rs
index 8cb18bde..52b8317f 100644
--- a/renderer/src/fallback.rs
+++ b/renderer/src/fallback.rs
@@ -353,34 +353,27 @@ where
fn screenshot<T: AsRef<str>>(
&mut self,
renderer: &mut Self::Renderer,
- surface: &mut Self::Surface,
viewport: &graphics::Viewport,
background_color: Color,
overlay: &[T],
) -> Vec<u8> {
- match (self, renderer, surface) {
- (
- Self::Primary(compositor),
- Renderer::Primary(renderer),
- Surface::Primary(surface),
- ) => compositor.screenshot(
- renderer,
- surface,
- viewport,
- background_color,
- overlay,
- ),
- (
- Self::Secondary(compositor),
- Renderer::Secondary(renderer),
- Surface::Secondary(surface),
- ) => compositor.screenshot(
- renderer,
- surface,
- viewport,
- background_color,
- overlay,
- ),
+ match (self, renderer) {
+ (Self::Primary(compositor), Renderer::Primary(renderer)) => {
+ compositor.screenshot(
+ renderer,
+ viewport,
+ background_color,
+ overlay,
+ )
+ }
+ (Self::Secondary(compositor), Renderer::Secondary(renderer)) => {
+ compositor.screenshot(
+ renderer,
+ viewport,
+ background_color,
+ overlay,
+ )
+ }
_ => unreachable!(),
}
}
diff --git a/renderer/src/lib.rs b/renderer/src/lib.rs
index 220542e1..ee20a458 100644
--- a/renderer/src/lib.rs
+++ b/renderer/src/lib.rs
@@ -23,6 +23,9 @@ pub type Compositor = renderer::Compositor;
#[cfg(all(feature = "wgpu", feature = "tiny-skia"))]
mod renderer {
+ use crate::core::renderer;
+ use crate::core::{Color, Font, Pixels, Size};
+
pub type Renderer = crate::fallback::Renderer<
iced_wgpu::Renderer,
iced_tiny_skia::Renderer,
@@ -32,6 +35,31 @@ mod renderer {
iced_wgpu::window::Compositor,
iced_tiny_skia::window::Compositor,
>;
+
+ impl renderer::Headless for Renderer {
+ fn new(default_font: Font, default_text_size: Pixels) -> Self {
+ Self::Secondary(iced_tiny_skia::Renderer::new(
+ default_font,
+ default_text_size,
+ ))
+ }
+
+ fn screenshot(
+ &mut self,
+ size: Size<u32>,
+ scale_factor: f32,
+ background_color: Color,
+ ) -> Vec<u8> {
+ match self {
+ crate::fallback::Renderer::Primary(_) => unreachable!(
+ "iced_wgpu does not support headless mode yet!"
+ ),
+ crate::fallback::Renderer::Secondary(renderer) => {
+ renderer.screenshot(size, scale_factor, background_color)
+ }
+ }
+ }
+ }
}
#[cfg(all(feature = "wgpu", not(feature = "tiny-skia")))]