summaryrefslogtreecommitdiffstats
path: root/renderer/src/lib.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-01-19 20:41:52 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-01-19 20:41:52 +0100
commit1781068e1c3a65551db1e832fdbaddba99124051 (patch)
tree60e0b3854cc0541712572fbb0e56f14435951ea9 /renderer/src/lib.rs
parent41dec5bd203ff5b1574a33a17d5f7358ae1beea2 (diff)
parent7ae7fcb89855002519bab752fd3686106ce448db (diff)
downloadiced-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.rs80
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);
+ }
+ }
+ }
+}