Draft first-class Theme support
RFC: https://github.com/iced-rs/rfcs/pull/6
This commit is contained in:
parent
5de337f214
commit
664251f3f5
113 changed files with 767 additions and 878 deletions
|
|
@ -10,19 +10,23 @@ use iced_native::{Background, Element, Font, Point, Rectangle, Size};
|
|||
|
||||
pub use iced_native::renderer::Style;
|
||||
|
||||
use std::marker::PhantomData;
|
||||
|
||||
/// A backend-agnostic renderer that supports all the built-in widgets.
|
||||
#[derive(Debug)]
|
||||
pub struct Renderer<B: Backend> {
|
||||
pub struct Renderer<B: Backend, Theme> {
|
||||
backend: B,
|
||||
primitives: Vec<Primitive>,
|
||||
theme: PhantomData<Theme>,
|
||||
}
|
||||
|
||||
impl<B: Backend> Renderer<B> {
|
||||
impl<B: Backend, T> Renderer<B, T> {
|
||||
/// Creates a new [`Renderer`] from the given [`Backend`].
|
||||
pub fn new(backend: B) -> Self {
|
||||
Self {
|
||||
backend,
|
||||
primitives: Vec::new(),
|
||||
theme: PhantomData,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -43,10 +47,12 @@ impl<B: Backend> Renderer<B> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<B> iced_native::Renderer for Renderer<B>
|
||||
impl<B, T> iced_native::Renderer for Renderer<B, T>
|
||||
where
|
||||
B: Backend,
|
||||
{
|
||||
type Theme = T;
|
||||
|
||||
fn layout<'a, Message>(
|
||||
&mut self,
|
||||
element: &Element<'a, Message, Self>,
|
||||
|
|
@ -114,7 +120,7 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
impl<B> text::Renderer for Renderer<B>
|
||||
impl<B, T> text::Renderer for Renderer<B, T>
|
||||
where
|
||||
B: Backend + backend::Text,
|
||||
{
|
||||
|
|
@ -171,7 +177,7 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
impl<B> image::Renderer for Renderer<B>
|
||||
impl<B, T> image::Renderer for Renderer<B, T>
|
||||
where
|
||||
B: Backend + backend::Image,
|
||||
{
|
||||
|
|
@ -186,7 +192,7 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
impl<B> svg::Renderer for Renderer<B>
|
||||
impl<B, T> svg::Renderer for Renderer<B, T>
|
||||
where
|
||||
B: Backend + backend::Svg,
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue