summaryrefslogtreecommitdiffstats
path: root/renderer
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-12-14 03:49:24 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-12-14 03:49:24 +0100
commit2cf4abf25bb5702635c19a22353399db8cef7be3 (patch)
tree3859d0fede59e92864c66c2ace89bc1d401769d6 /renderer
parent6572909ab5b004176f6d261b67b4caa99f1f54bb (diff)
downloadiced-2cf4abf25bb5702635c19a22353399db8cef7be3.tar.gz
iced-2cf4abf25bb5702635c19a22353399db8cef7be3.tar.bz2
iced-2cf4abf25bb5702635c19a22353399db8cef7be3.zip
Support custom renderers in `iced_test` through `renderer::Headless` trait
Diffstat (limited to 'renderer')
-rw-r--r--renderer/src/lib.rs28
1 files changed, 28 insertions, 0 deletions
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")))]