From 664251f3f5c7b76f69a97683af1468094bba887f Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sat, 14 May 2022 01:47:55 +0200 Subject: Draft first-class `Theme` support RFC: https://github.com/iced-rs/rfcs/pull/6 --- graphics/src/renderer.rs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'graphics/src/renderer.rs') diff --git a/graphics/src/renderer.rs b/graphics/src/renderer.rs index cb31ea5f..3c19fbfb 100644 --- a/graphics/src/renderer.rs +++ b/graphics/src/renderer.rs @@ -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 { +pub struct Renderer { backend: B, primitives: Vec, + theme: PhantomData, } -impl Renderer { +impl Renderer { /// 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 Renderer { } } -impl iced_native::Renderer for Renderer +impl iced_native::Renderer for Renderer where B: Backend, { + type Theme = T; + fn layout<'a, Message>( &mut self, element: &Element<'a, Message, Self>, @@ -114,7 +120,7 @@ where } } -impl text::Renderer for Renderer +impl text::Renderer for Renderer where B: Backend + backend::Text, { @@ -171,7 +177,7 @@ where } } -impl image::Renderer for Renderer +impl image::Renderer for Renderer where B: Backend + backend::Image, { @@ -186,7 +192,7 @@ where } } -impl svg::Renderer for Renderer +impl svg::Renderer for Renderer where B: Backend + backend::Svg, { -- cgit