From 0ceee1cf3ae49f5bd0e3f2b346a4b34076e4523a Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sun, 4 Aug 2024 03:28:43 +0200 Subject: Implement image support for `canvas` widget --- renderer/src/fallback.rs | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) (limited to 'renderer/src') diff --git a/renderer/src/fallback.rs b/renderer/src/fallback.rs index 6a169692..ddf7fd95 100644 --- a/renderer/src/fallback.rs +++ b/renderer/src/fallback.rs @@ -572,6 +572,42 @@ mod geometry { delegate!(self, frame, frame.fill_text(text)); } + fn draw_image( + &mut self, + handle: &iced_wgpu::core::image::Handle, + bounds: Rectangle, + filter_method: iced_wgpu::core::image::FilterMethod, + rotation: Radians, + opacity: f32, + ) { + delegate!( + self, + frame, + frame.draw_image( + handle, + bounds, + filter_method, + rotation, + opacity + ) + ); + } + + fn draw_svg( + &mut self, + handle: &iced_wgpu::core::svg::Handle, + bounds: Rectangle, + color: Option, + rotation: Radians, + opacity: f32, + ) { + delegate!( + self, + frame, + frame.draw_svg(handle, bounds, color, rotation, opacity) + ); + } + fn push_transform(&mut self) { delegate!(self, frame, frame.push_transform()); } @@ -587,13 +623,13 @@ mod geometry { } } - fn paste(&mut self, frame: Self, at: Point) { + fn paste(&mut self, frame: Self) { match (self, frame) { (Self::Primary(target), Self::Primary(source)) => { - target.paste(source, at); + target.paste(source); } (Self::Secondary(target), Self::Secondary(source)) => { - target.paste(source, at); + target.paste(source); } _ => unreachable!(), } -- cgit From 974ae6d1e7cd9df6967762a6d308106f4fe03edc Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sun, 4 Aug 2024 03:39:53 +0200 Subject: Fix broken imports in `iced_renderer` --- renderer/src/fallback.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'renderer/src') diff --git a/renderer/src/fallback.rs b/renderer/src/fallback.rs index ddf7fd95..73e91dc6 100644 --- a/renderer/src/fallback.rs +++ b/renderer/src/fallback.rs @@ -441,7 +441,9 @@ where #[cfg(feature = "geometry")] mod geometry { use super::Renderer; - use crate::core::{Point, Radians, Rectangle, Size, Vector}; + use crate::core::image; + use crate::core::svg; + use crate::core::{Color, Point, Radians, Rectangle, Size, Vector}; use crate::graphics::cache::{self, Cached}; use crate::graphics::geometry::{self, Fill, Path, Stroke, Text}; @@ -574,9 +576,9 @@ mod geometry { fn draw_image( &mut self, - handle: &iced_wgpu::core::image::Handle, + handle: &image::Handle, bounds: Rectangle, - filter_method: iced_wgpu::core::image::FilterMethod, + filter_method: image::FilterMethod, rotation: Radians, opacity: f32, ) { @@ -595,9 +597,9 @@ mod geometry { fn draw_svg( &mut self, - handle: &iced_wgpu::core::svg::Handle, + handle: &svg::Handle, bounds: Rectangle, - color: Option, + color: Option, rotation: Radians, opacity: f32, ) { -- cgit From 92bd3ecd6b4a6618f0fc725dea3694c3b40e5314 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sun, 4 Aug 2024 04:30:12 +0200 Subject: Introduce `Image` struct in `core::image` --- renderer/src/fallback.rs | 48 +++++++----------------------------------------- 1 file changed, 7 insertions(+), 41 deletions(-) (limited to 'renderer/src') diff --git a/renderer/src/fallback.rs b/renderer/src/fallback.rs index 73e91dc6..dc8a4107 100644 --- a/renderer/src/fallback.rs +++ b/renderer/src/fallback.rs @@ -3,7 +3,8 @@ use crate::core::image; use crate::core::renderer; use crate::core::svg; use crate::core::{ - self, Background, Color, Point, Radians, Rectangle, Size, Transformation, + self, Background, Color, Image, Point, Radians, Rectangle, Size, + Transformation, }; use crate::graphics; use crate::graphics::compositor; @@ -149,25 +150,8 @@ where delegate!(self, renderer, renderer.measure_image(handle)) } - fn draw_image( - &mut self, - handle: Self::Handle, - filter_method: image::FilterMethod, - bounds: Rectangle, - rotation: Radians, - opacity: f32, - ) { - delegate!( - self, - renderer, - renderer.draw_image( - handle, - filter_method, - bounds, - rotation, - opacity - ) - ); + fn draw_image(&mut self, image: Image, bounds: Rectangle) { + delegate!(self, renderer, renderer.draw_image(image, bounds)); } } @@ -441,11 +425,10 @@ where #[cfg(feature = "geometry")] mod geometry { use super::Renderer; - use crate::core::image; use crate::core::svg; use crate::core::{Color, Point, Radians, Rectangle, Size, Vector}; use crate::graphics::cache::{self, Cached}; - use crate::graphics::geometry::{self, Fill, Path, Stroke, Text}; + use crate::graphics::geometry::{self, Fill, Image, Path, Stroke, Text}; impl geometry::Renderer for Renderer where @@ -574,25 +557,8 @@ mod geometry { delegate!(self, frame, frame.fill_text(text)); } - fn draw_image( - &mut self, - handle: &image::Handle, - bounds: Rectangle, - filter_method: image::FilterMethod, - rotation: Radians, - opacity: f32, - ) { - delegate!( - self, - frame, - frame.draw_image( - handle, - bounds, - filter_method, - rotation, - opacity - ) - ); + fn draw_image(&mut self, bounds: Rectangle, image: impl Into) { + delegate!(self, frame, frame.draw_image(bounds, image)); } fn draw_svg( -- cgit From d4b08462e5a25929ec4df32f242898986902af56 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sun, 4 Aug 2024 04:52:55 +0200 Subject: Introduce `Svg` struct in `core::svg` --- renderer/src/fallback.rs | 36 ++++++------------------------------ 1 file changed, 6 insertions(+), 30 deletions(-) (limited to 'renderer/src') diff --git a/renderer/src/fallback.rs b/renderer/src/fallback.rs index dc8a4107..fbd285db 100644 --- a/renderer/src/fallback.rs +++ b/renderer/src/fallback.rs @@ -3,8 +3,7 @@ use crate::core::image; use crate::core::renderer; use crate::core::svg; use crate::core::{ - self, Background, Color, Image, Point, Radians, Rectangle, Size, - Transformation, + self, Background, Color, Image, Point, Rectangle, Size, Svg, Transformation, }; use crate::graphics; use crate::graphics::compositor; @@ -164,19 +163,8 @@ where delegate!(self, renderer, renderer.measure_svg(handle)) } - fn draw_svg( - &mut self, - handle: svg::Handle, - color: Option, - bounds: Rectangle, - rotation: Radians, - opacity: f32, - ) { - delegate!( - self, - renderer, - renderer.draw_svg(handle, color, bounds, rotation, opacity) - ); + fn draw_svg(&mut self, svg: Svg, bounds: Rectangle) { + delegate!(self, renderer, renderer.draw_svg(svg, bounds)); } } @@ -425,8 +413,7 @@ where #[cfg(feature = "geometry")] mod geometry { use super::Renderer; - use crate::core::svg; - use crate::core::{Color, Point, Radians, Rectangle, Size, Vector}; + use crate::core::{Point, Radians, Rectangle, Size, Svg, Vector}; use crate::graphics::cache::{self, Cached}; use crate::graphics::geometry::{self, Fill, Image, Path, Stroke, Text}; @@ -561,19 +548,8 @@ mod geometry { delegate!(self, frame, frame.draw_image(bounds, image)); } - fn draw_svg( - &mut self, - handle: &svg::Handle, - bounds: Rectangle, - color: Option, - rotation: Radians, - opacity: f32, - ) { - delegate!( - self, - frame, - frame.draw_svg(handle, bounds, color, rotation, opacity) - ); + fn draw_svg(&mut self, bounds: Rectangle, svg: impl Into) { + delegate!(self, frame, frame.draw_svg(bounds, svg)); } fn push_transform(&mut self) { -- cgit