diff --git a/core/src/renderer/null.rs b/core/src/renderer/null.rs index 34d1ffc1..8c4b328a 100644 --- a/core/src/renderer/null.rs +++ b/core/src/renderer/null.rs @@ -41,7 +41,6 @@ impl text::Renderer for () { type Font = Font; type Paragraph = (); type Editor = (); - type Raw = (); const ICON_FONT: Font = Font::DEFAULT; const CHECKMARK_ICON: char = '0'; @@ -74,8 +73,6 @@ impl text::Renderer for () { ) { } - fn fill_raw(&mut self, _raw: Self::Raw) {} - fn fill_text( &mut self, _paragraph: Text, diff --git a/core/src/text.rs b/core/src/text.rs index b642c243..eddc0532 100644 --- a/core/src/text.rs +++ b/core/src/text.rs @@ -299,9 +299,6 @@ pub trait Renderer: crate::Renderer { /// The [`Editor`] of this [`Renderer`]. type Editor: Editor + 'static; - /// The `Raw` text of this [`Renderer`]. - type Raw: 'static; - /// The icon font of the backend. const ICON_FONT: Self::Font; @@ -346,9 +343,6 @@ pub trait Renderer: crate::Renderer { clip_bounds: Rectangle, ); - /// Draws the given `Raw` text. - fn fill_raw(&mut self, raw: Self::Raw); - /// Draws the given [`Text`] at the given position and with the given /// [`Color`]. fn fill_text( diff --git a/graphics/src/text.rs b/graphics/src/text.rs index 74ab6b84..35ff24fb 100644 --- a/graphics/src/text.rs +++ b/graphics/src/text.rs @@ -352,3 +352,9 @@ pub fn to_color(color: Color) -> cosmic_text::Color { cosmic_text::Color::rgba(r, g, b, a) } + +/// A text renderer coupled to `iced_graphics`. +pub trait Renderer { + /// Draws the given [`Raw`] text. + fn fill_raw(&mut self, raw: Raw); +} diff --git a/renderer/src/fallback.rs b/renderer/src/fallback.rs index fee0d462..61312bb0 100644 --- a/renderer/src/fallback.rs +++ b/renderer/src/fallback.rs @@ -8,6 +8,7 @@ use crate::core::{ }; use crate::graphics::compositor; use crate::graphics::mesh; +use crate::graphics::text; use crate::graphics::{self, Shell}; use std::borrow::Cow; @@ -88,13 +89,11 @@ where Font = A::Font, Paragraph = A::Paragraph, Editor = A::Editor, - Raw = A::Raw, >, { type Font = A::Font; type Paragraph = A::Paragraph; type Editor = A::Editor; - type Raw = A::Raw; const ICON_FONT: Self::Font = A::ICON_FONT; const CHECKMARK_ICON: char = A::CHECKMARK_ICON; @@ -137,10 +136,6 @@ where ); } - fn fill_raw(&mut self, raw: Self::Raw) { - delegate!(self, renderer, renderer.fill_raw(raw)); - } - fn fill_text( &mut self, text: core::Text, @@ -156,6 +151,16 @@ where } } +impl text::Renderer for Renderer +where + A: text::Renderer, + B: text::Renderer, +{ + fn fill_raw(&mut self, raw: text::Raw) { + delegate!(self, renderer, renderer.fill_raw(raw)); + } +} + impl image::Renderer for Renderer where A: image::Renderer, diff --git a/tiny_skia/src/lib.rs b/tiny_skia/src/lib.rs index 9a190f27..878c7a4e 100644 --- a/tiny_skia/src/lib.rs +++ b/tiny_skia/src/lib.rs @@ -35,7 +35,7 @@ use crate::core::{ use crate::engine::Engine; use crate::graphics::Viewport; use crate::graphics::compositor; -use crate::graphics::text::{Editor, Paragraph, Raw}; +use crate::graphics::text::{Editor, Paragraph}; /// A [`tiny-skia`] graphics renderer for [`iced`]. /// @@ -250,7 +250,6 @@ impl core::text::Renderer for Renderer { type Font = Font; type Paragraph = Paragraph; type Editor = Editor; - type Raw = Raw; const ICON_FONT: Font = Font::with_name("Iced-Icons"); const CHECKMARK_ICON: char = '\u{f00c}'; @@ -294,11 +293,6 @@ impl core::text::Renderer for Renderer { layer.draw_editor(editor, position, color, clip_bounds, transformation); } - fn fill_raw(&mut self, raw: Self::Raw) { - let (layer, transformation) = self.layers.current_mut(); - layer.draw_raw(raw, transformation); - } - fn fill_text( &mut self, text: core::Text, @@ -311,6 +305,13 @@ impl core::text::Renderer for Renderer { } } +impl graphics::text::Renderer for Renderer { + fn fill_raw(&mut self, raw: graphics::text::Raw) { + let (layer, transformation) = self.layers.current_mut(); + layer.draw_raw(raw, transformation); + } +} + #[cfg(feature = "geometry")] impl graphics::geometry::Renderer for Renderer { type Geometry = Geometry; diff --git a/wgpu/src/lib.rs b/wgpu/src/lib.rs index 61908637..40ace65f 100644 --- a/wgpu/src/lib.rs +++ b/wgpu/src/lib.rs @@ -65,7 +65,7 @@ use crate::core::renderer; use crate::core::{ Background, Color, Font, Pixels, Point, Rectangle, Size, Transformation, }; -use crate::graphics::text::{Editor, Paragraph, Raw}; +use crate::graphics::text::{Editor, Paragraph}; use crate::graphics::{Shell, Viewport}; /// A [`wgpu`] graphics renderer for [`iced`]. @@ -717,7 +717,6 @@ impl core::text::Renderer for Renderer { type Font = Font; type Paragraph = Paragraph; type Editor = Editor; - type Raw = Raw; const ICON_FONT: Font = Font::with_name("Iced-Icons"); const CHECKMARK_ICON: char = '\u{f00c}'; @@ -761,11 +760,6 @@ impl core::text::Renderer for Renderer { layer.draw_editor(editor, position, color, clip_bounds, transformation); } - fn fill_raw(&mut self, raw: Self::Raw) { - let (layer, transformation) = self.layers.current_mut(); - layer.draw_raw(raw, transformation); - } - fn fill_text( &mut self, text: core::Text, @@ -778,6 +772,13 @@ impl core::text::Renderer for Renderer { } } +impl graphics::text::Renderer for Renderer { + fn fill_raw(&mut self, raw: graphics::text::Raw) { + let (layer, transformation) = self.layers.current_mut(); + layer.draw_raw(raw, transformation); + } +} + #[cfg(feature = "image")] impl core::image::Renderer for Renderer { type Handle = core::image::Handle;