diff options
-rw-r--r-- | graphics/src/backend.rs | 6 | ||||
-rw-r--r-- | graphics/src/compositor.rs | 7 | ||||
-rw-r--r-- | graphics/src/renderer.rs | 2 | ||||
-rw-r--r-- | renderer/src/fallback.rs | 6 | ||||
-rw-r--r-- | src/application.rs | 4 | ||||
-rw-r--r-- | src/lib.rs | 2 | ||||
-rw-r--r-- | src/program.rs | 12 | ||||
-rw-r--r-- | tiny_skia/src/backend.rs | 4 | ||||
-rw-r--r-- | wgpu/src/backend.rs | 4 |
9 files changed, 26 insertions, 21 deletions
diff --git a/graphics/src/backend.rs b/graphics/src/backend.rs index aa7bf4e8..7abc42c5 100644 --- a/graphics/src/backend.rs +++ b/graphics/src/backend.rs @@ -10,11 +10,11 @@ use std::borrow::Cow; /// /// [`Renderer`]: crate::Renderer pub trait Backend: Sized { - /// The compositor of this [`Backend`]. - type Compositor: Compositor<Renderer = Renderer<Self>>; - /// The custom kind of primitives this [`Backend`] supports. type Primitive: TryFrom<Mesh, Error = &'static str>; + + /// The default compositor of this [`Backend`]. + type Compositor: Compositor<Renderer = Renderer<Self>>; } /// A graphics backend that supports text rendering. diff --git a/graphics/src/compositor.rs b/graphics/src/compositor.rs index 4d548f30..8c67cd16 100644 --- a/graphics/src/compositor.rs +++ b/graphics/src/compositor.rs @@ -1,6 +1,5 @@ //! A compositor is responsible for initializing a renderer and managing window //! surfaces. -use crate::core; use crate::core::Color; use crate::futures::{MaybeSend, MaybeSync}; use crate::{Error, Settings, Viewport}; @@ -90,8 +89,8 @@ impl<T> Window for T where { } -/// A renderer that supports composition. -pub trait Renderer: core::Renderer { +/// Defines the default compositor of a renderer. +pub trait Default { /// The compositor of the renderer. type Compositor: Compositor<Renderer = Self>; } @@ -187,6 +186,6 @@ impl Compositor for () { } #[cfg(debug_assertions)] -impl Renderer for () { +impl Default for () { type Compositor = (); } diff --git a/graphics/src/renderer.rs b/graphics/src/renderer.rs index 5de7f97f..f517ff3e 100644 --- a/graphics/src/renderer.rs +++ b/graphics/src/renderer.rs @@ -261,7 +261,7 @@ where } } -impl<B> compositor::Renderer for Renderer<B> +impl<B> compositor::Default for Renderer<B> where B: Backend, { diff --git a/renderer/src/fallback.rs b/renderer/src/fallback.rs index 8daab74f..ca445746 100644 --- a/renderer/src/fallback.rs +++ b/renderer/src/fallback.rs @@ -524,10 +524,10 @@ mod geometry { } } -impl<L, R> compositor::Renderer for Renderer<L, R> +impl<L, R> compositor::Default for Renderer<L, R> where - L: compositor::Renderer, - R: compositor::Renderer, + L: compositor::Default, + R: compositor::Default, { type Compositor = Compositor<L::Compositor, R::Compositor>; } diff --git a/src/application.rs b/src/application.rs index 62fe77da..9197834b 100644 --- a/src/application.rs +++ b/src/application.rs @@ -113,7 +113,7 @@ where type Theme: Default; /// The renderer of your [`Application`]. - type Renderer: text::Renderer + compositor::Renderer; + type Renderer: text::Renderer + compositor::Default; /// The data needed to initialize your [`Application`]. type Flags; @@ -215,7 +215,7 @@ where let run = crate::shell::application::run::< Instance<Self>, Self::Executor, - <Self::Renderer as compositor::Renderer>::Compositor, + <Self::Renderer as compositor::Default>::Compositor, >(settings.into(), renderer_settings); #[cfg(target_arch = "wasm32")] @@ -381,7 +381,7 @@ where State: Default + 'static, Message: std::fmt::Debug + Send + 'static, Theme: Default + program::DefaultStyle + 'static, - Renderer: graphics::compositor::Renderer + core::text::Renderer + 'static, + Renderer: program::Renderer + 'static, { program(title, update, view).run() } diff --git a/src/program.rs b/src/program.rs index f5a2bc53..705e140d 100644 --- a/src/program.rs +++ b/src/program.rs @@ -31,6 +31,7 @@ //! } //! ``` use crate::application::Application; +use crate::core::text; use crate::executor::{self, Executor}; use crate::graphics::compositor; use crate::window; @@ -77,7 +78,7 @@ where State: 'static, Message: Send + std::fmt::Debug, Theme: Default + DefaultStyle, - Renderer: compositor::Renderer + crate::core::text::Renderer, + Renderer: self::Renderer, { use std::marker::PhantomData; @@ -95,7 +96,7 @@ where where Message: Send + std::fmt::Debug, Theme: Default + DefaultStyle, - Renderer: compositor::Renderer + crate::core::text::Renderer, + Renderer: self::Renderer, Update: self::Update<State, Message>, View: for<'a> self::View<'a, State, Message, Theme, Renderer>, { @@ -425,7 +426,7 @@ pub trait Definition: Sized { type Theme: Default + DefaultStyle; /// The renderer of the program. - type Renderer: compositor::Renderer + crate::core::text::Renderer; + type Renderer: Renderer + crate::core::text::Renderer; /// The executor of the program. type Executor: Executor; @@ -871,3 +872,8 @@ where self(state) } } + +/// The renderer of some [`Program`]. +pub trait Renderer: text::Renderer + compositor::Default {} + +impl<T> Renderer for T where T: text::Renderer + compositor::Default {} diff --git a/tiny_skia/src/backend.rs b/tiny_skia/src/backend.rs index 6d4e6cda..8c8781e3 100644 --- a/tiny_skia/src/backend.rs +++ b/tiny_skia/src/backend.rs @@ -990,9 +990,9 @@ fn rounded_box_sdf( (x.powf(2.0) + y.powf(2.0)).sqrt() - radius } -impl iced_graphics::Backend for Backend { - type Compositor = window::Compositor; +impl backend::Backend for Backend { type Primitive = primitive::Custom; + type Compositor = window::Compositor; } impl backend::Text for Backend { diff --git a/wgpu/src/backend.rs b/wgpu/src/backend.rs index 3675d50b..5019191c 100644 --- a/wgpu/src/backend.rs +++ b/wgpu/src/backend.rs @@ -372,9 +372,9 @@ impl Backend { } } -impl crate::graphics::Backend for Backend { - type Compositor = window::Compositor; +impl backend::Backend for Backend { type Primitive = primitive::Custom; + type Compositor = window::Compositor; } impl backend::Text for Backend { |