diff options
author | 2024-12-14 03:49:24 +0100 | |
---|---|---|
committer | 2024-12-14 03:49:24 +0100 | |
commit | 2cf4abf25bb5702635c19a22353399db8cef7be3 (patch) | |
tree | 3859d0fede59e92864c66c2ace89bc1d401769d6 /core | |
parent | 6572909ab5b004176f6d261b67b4caa99f1f54bb (diff) | |
download | iced-2cf4abf25bb5702635c19a22353399db8cef7be3.tar.gz iced-2cf4abf25bb5702635c19a22353399db8cef7be3.tar.bz2 iced-2cf4abf25bb5702635c19a22353399db8cef7be3.zip |
Support custom renderers in `iced_test` through `renderer::Headless` trait
Diffstat (limited to '')
-rw-r--r-- | core/src/lib.rs | 2 | ||||
-rw-r--r-- | core/src/renderer.rs | 19 | ||||
-rw-r--r-- | core/src/settings.rs (renamed from src/settings.rs) | 9 |
3 files changed, 20 insertions, 10 deletions
diff --git a/core/src/lib.rs b/core/src/lib.rs index df599f45..645f7a90 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -40,6 +40,7 @@ mod pixels; mod point; mod rectangle; mod rotation; +mod settings; mod shadow; mod shell; mod size; @@ -67,6 +68,7 @@ pub use point::Point; pub use rectangle::Rectangle; pub use renderer::Renderer; pub use rotation::Rotation; +pub use settings::Settings; pub use shadow::Shadow; pub use shell::Shell; pub use size::Size; diff --git a/core/src/renderer.rs b/core/src/renderer.rs index 6684517f..68e070e8 100644 --- a/core/src/renderer.rs +++ b/core/src/renderer.rs @@ -3,7 +3,8 @@ mod null; use crate::{ - Background, Border, Color, Rectangle, Shadow, Size, Transformation, Vector, + Background, Border, Color, Font, Pixels, Rectangle, Shadow, Size, + Transformation, Vector, }; /// A component that can be used by widgets to draw themselves on a screen. @@ -100,3 +101,19 @@ impl Default for Style { } } } + +/// A headless renderer is a renderer that can render offscreen without +/// a window nor a compositor. +pub trait Headless { + /// Creates a new [`Headless`] renderer; + fn new(default_font: Font, default_text_size: Pixels) -> Self; + + /// Draws offscreen into a screenshot, returning a collection of + /// bytes representing the rendered pixels in RGBA order. + fn screenshot( + &mut self, + size: Size<u32>, + scale_factor: f32, + background_color: Color, + ) -> Vec<u8>; +} diff --git a/src/settings.rs b/core/src/settings.rs index ebac7a86..36bbb699 100644 --- a/src/settings.rs +++ b/core/src/settings.rs @@ -48,12 +48,3 @@ impl Default for Settings { } } } - -impl From<Settings> for iced_winit::Settings { - fn from(settings: Settings) -> iced_winit::Settings { - iced_winit::Settings { - id: settings.id, - fonts: settings.fonts, - } - } -} |