diff options
author | 2024-01-19 20:41:52 +0100 | |
---|---|---|
committer | 2024-01-19 20:41:52 +0100 | |
commit | 1781068e1c3a65551db1e832fdbaddba99124051 (patch) | |
tree | 60e0b3854cc0541712572fbb0e56f14435951ea9 /renderer/src/lib.rs | |
parent | 41dec5bd203ff5b1574a33a17d5f7358ae1beea2 (diff) | |
parent | 7ae7fcb89855002519bab752fd3686106ce448db (diff) | |
download | iced-1781068e1c3a65551db1e832fdbaddba99124051.tar.gz iced-1781068e1c3a65551db1e832fdbaddba99124051.tar.bz2 iced-1781068e1c3a65551db1e832fdbaddba99124051.zip |
Merge branch 'master' into remove-vertex-indexing
Diffstat (limited to 'renderer/src/lib.rs')
-rw-r--r-- | renderer/src/lib.rs | 80 |
1 files changed, 58 insertions, 22 deletions
diff --git a/renderer/src/lib.rs b/renderer/src/lib.rs index 7594d532..f2acfa00 100644 --- a/renderer/src/lib.rs +++ b/renderer/src/lib.rs @@ -1,6 +1,9 @@ #![forbid(rust_2018_idioms)] #![deny(unsafe_code, unused_results, rustdoc::broken_intra_doc_links)] #![cfg_attr(docsrs, feature(doc_auto_cfg))] +#[cfg(feature = "wgpu")] +pub use iced_wgpu as wgpu; + pub mod compositor; #[cfg(feature = "geometry")] @@ -19,9 +22,8 @@ pub use geometry::Geometry; use crate::core::renderer; use crate::core::text::{self, Text}; -use crate::core::{ - Background, Color, Font, Pixels, Point, Rectangle, Size, Vector, -}; +use crate::core::{Background, Color, Font, Pixels, Point, Rectangle, Vector}; +use crate::graphics::text::Editor; use crate::graphics::text::Paragraph; use crate::graphics::Mesh; @@ -149,6 +151,7 @@ impl<T> core::Renderer for Renderer<T> { impl<T> text::Renderer for Renderer<T> { type Font = Font; type Paragraph = Paragraph; + type Editor = Editor; const ICON_FONT: Font = iced_tiny_skia::Renderer::<T>::ICON_FONT; const CHECKMARK_ICON: char = iced_tiny_skia::Renderer::<T>::CHECKMARK_ICON; @@ -163,36 +166,35 @@ impl<T> text::Renderer for Renderer<T> { delegate!(self, renderer, renderer.default_size()) } - fn create_paragraph(&self, text: Text<'_, Self::Font>) -> Self::Paragraph { - delegate!(self, renderer, renderer.create_paragraph(text)) + fn load_font(&mut self, bytes: Cow<'static, [u8]>) { + delegate!(self, renderer, renderer.load_font(bytes)); } - fn resize_paragraph( - &self, - paragraph: &mut Self::Paragraph, - new_bounds: Size, + fn fill_paragraph( + &mut self, + paragraph: &Self::Paragraph, + position: Point, + color: Color, + clip_bounds: Rectangle, ) { delegate!( self, renderer, - renderer.resize_paragraph(paragraph, new_bounds) + renderer.fill_paragraph(paragraph, position, color, clip_bounds) ); } - fn load_font(&mut self, bytes: Cow<'static, [u8]>) { - delegate!(self, renderer, renderer.load_font(bytes)); - } - - fn fill_paragraph( + fn fill_editor( &mut self, - text: &Self::Paragraph, + editor: &Self::Editor, position: Point, color: Color, + clip_bounds: Rectangle, ) { delegate!( self, renderer, - renderer.fill_paragraph(text, position, color) + renderer.fill_editor(editor, position, color, clip_bounds) ); } @@ -201,8 +203,13 @@ impl<T> text::Renderer for Renderer<T> { text: Text<'_, Self::Font>, position: Point, color: Color, + clip_bounds: Rectangle, ) { - delegate!(self, renderer, renderer.fill_text(text, position, color)); + delegate!( + self, + renderer, + renderer.fill_text(text, position, color, clip_bounds) + ); } } @@ -210,18 +217,26 @@ impl<T> text::Renderer for Renderer<T> { impl<T> crate::core::image::Renderer for Renderer<T> { type Handle = crate::core::image::Handle; - fn dimensions(&self, handle: &crate::core::image::Handle) -> Size<u32> { + fn dimensions( + &self, + handle: &crate::core::image::Handle, + ) -> core::Size<u32> { delegate!(self, renderer, renderer.dimensions(handle)) } - fn draw(&mut self, handle: crate::core::image::Handle, bounds: Rectangle) { - delegate!(self, renderer, renderer.draw(handle, bounds)); + fn draw( + &mut self, + handle: crate::core::image::Handle, + filter_method: crate::core::image::FilterMethod, + bounds: Rectangle, + ) { + delegate!(self, renderer, renderer.draw(handle, filter_method, bounds)); } } #[cfg(feature = "svg")] impl<T> crate::core::svg::Renderer for Renderer<T> { - fn dimensions(&self, handle: &crate::core::svg::Handle) -> Size<u32> { + fn dimensions(&self, handle: &crate::core::svg::Handle) -> core::Size<u32> { delegate!(self, renderer, renderer.dimensions(handle)) } @@ -247,6 +262,7 @@ impl<T> crate::graphics::geometry::Renderer for Renderer<T> { crate::Geometry::TinySkia(primitive) => { renderer.draw_primitive(primitive); } + #[cfg(feature = "wgpu")] crate::Geometry::Wgpu(_) => unreachable!(), } } @@ -265,3 +281,23 @@ impl<T> crate::graphics::geometry::Renderer for Renderer<T> { } } } + +#[cfg(feature = "wgpu")] +impl<T> iced_wgpu::primitive::pipeline::Renderer for Renderer<T> { + fn draw_pipeline_primitive( + &mut self, + bounds: Rectangle, + primitive: impl wgpu::primitive::pipeline::Primitive, + ) { + match self { + Self::TinySkia(_renderer) => { + log::warn!( + "Custom shader primitive is unavailable with tiny-skia." + ); + } + Self::Wgpu(renderer) => { + renderer.draw_pipeline_primitive(bounds, primitive); + } + } + } +} |