Support custom renderers in iced_test through renderer::Headless trait
This commit is contained in:
parent
6572909ab5
commit
2cf4abf25b
12 changed files with 191 additions and 80 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
}
|
||||
|
|
|
|||
50
core/src/settings.rs
Normal file
50
core/src/settings.rs
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
//! Configure your application.
|
||||
use crate::{Font, Pixels};
|
||||
|
||||
use std::borrow::Cow;
|
||||
|
||||
/// The settings of an iced program.
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Settings {
|
||||
/// The identifier of the application.
|
||||
///
|
||||
/// If provided, this identifier may be used to identify the application or
|
||||
/// communicate with it through the windowing system.
|
||||
pub id: Option<String>,
|
||||
|
||||
/// The fonts to load on boot.
|
||||
pub fonts: Vec<Cow<'static, [u8]>>,
|
||||
|
||||
/// The default [`Font`] to be used.
|
||||
///
|
||||
/// By default, it uses [`Family::SansSerif`](crate::font::Family::SansSerif).
|
||||
pub default_font: Font,
|
||||
|
||||
/// The text size that will be used by default.
|
||||
///
|
||||
/// The default value is `16.0`.
|
||||
pub default_text_size: Pixels,
|
||||
|
||||
/// If set to true, the renderer will try to perform antialiasing for some
|
||||
/// primitives.
|
||||
///
|
||||
/// Enabling it can produce a smoother result in some widgets, like the
|
||||
/// [`Canvas`], at a performance cost.
|
||||
///
|
||||
/// By default, it is disabled.
|
||||
///
|
||||
/// [`Canvas`]: crate::widget::Canvas
|
||||
pub antialiasing: bool,
|
||||
}
|
||||
|
||||
impl Default for Settings {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
id: None,
|
||||
fonts: Vec::new(),
|
||||
default_font: Font::default(),
|
||||
default_text_size: Pixels(16.0),
|
||||
antialiasing: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue