From 9b8614a4e2252f0b74d1a1b38b5e5bb55b1af995 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Mon, 23 Oct 2023 03:14:22 +0200 Subject: Implement `transform` method for `Geometry` --- renderer/src/geometry.rs | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) (limited to 'renderer/src') diff --git a/renderer/src/geometry.rs b/renderer/src/geometry.rs index cd2140dc..9cf506a8 100644 --- a/renderer/src/geometry.rs +++ b/renderer/src/geometry.rs @@ -4,12 +4,17 @@ pub use cache::Cache; use crate::core::{Point, Rectangle, Size, Vector}; use crate::graphics::geometry::{Fill, Path, Stroke, Text}; +use crate::graphics::Transformation; use crate::Renderer; -pub enum Frame { - TinySkia(iced_tiny_skia::geometry::Frame), - #[cfg(feature = "wgpu")] - Wgpu(iced_wgpu::geometry::Frame), +macro_rules! delegate { + ($frame:expr, $name:ident, $body:expr) => { + match $frame { + Self::TinySkia($name) => $body, + #[cfg(feature = "wgpu")] + Self::Wgpu($name) => $body, + } + }; } pub enum Geometry { @@ -18,14 +23,24 @@ pub enum Geometry { Wgpu(iced_wgpu::Primitive), } -macro_rules! delegate { - ($frame:expr, $name:ident, $body:expr) => { - match $frame { - Self::TinySkia($name) => $body, +impl Geometry { + pub fn transform(self, transformation: Transformation) -> Self { + match self { + Self::TinySkia(primitive) => { + Self::TinySkia(primitive.transform(transformation)) + } #[cfg(feature = "wgpu")] - Self::Wgpu($name) => $body, + Self::Wgpu(primitive) => { + Self::Wgpu(primitive.transform(transformation)) + } } - }; + } +} + +pub enum Frame { + TinySkia(iced_tiny_skia::geometry::Frame), + #[cfg(feature = "wgpu")] + Wgpu(iced_wgpu::geometry::Frame), } impl Frame { -- cgit From f4d66486016076bb339a338bc589645119962d1e Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Tue, 24 Oct 2023 05:34:03 +0200 Subject: Introduce `with_transformation` to `Renderer` trait --- renderer/src/geometry.rs | 3 +-- renderer/src/lib.rs | 16 +++++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) (limited to 'renderer/src') diff --git a/renderer/src/geometry.rs b/renderer/src/geometry.rs index 9cf506a8..f09ccfbf 100644 --- a/renderer/src/geometry.rs +++ b/renderer/src/geometry.rs @@ -2,9 +2,8 @@ mod cache; pub use cache::Cache; -use crate::core::{Point, Rectangle, Size, Vector}; +use crate::core::{Point, Rectangle, Size, Transformation, Vector}; use crate::graphics::geometry::{Fill, Path, Stroke, Text}; -use crate::graphics::Transformation; use crate::Renderer; macro_rules! delegate { diff --git a/renderer/src/lib.rs b/renderer/src/lib.rs index a7df414b..757c264d 100644 --- a/renderer/src/lib.rs +++ b/renderer/src/lib.rs @@ -22,7 +22,9 @@ pub use geometry::Geometry; use crate::core::renderer; use crate::core::text::{self, Text}; -use crate::core::{Background, Color, Font, Pixels, Point, Rectangle, Vector}; +use crate::core::{ + Background, Color, Font, Pixels, Point, Rectangle, Transformation, +}; use crate::graphics::text::Editor; use crate::graphics::text::Paragraph; use crate::graphics::Mesh; @@ -97,20 +99,20 @@ impl core::Renderer for Renderer { } } - fn with_translation( + fn with_transformation( &mut self, - translation: Vector, + transformation: Transformation, f: impl FnOnce(&mut Self), ) { match self { Self::TinySkia(renderer) => { - let primitives = renderer.start_translation(); + let primitives = renderer.start_transformation(); f(self); match self { Self::TinySkia(renderer) => { - renderer.end_translation(primitives, translation); + renderer.end_transformation(primitives, transformation); } #[cfg(feature = "wgpu")] _ => unreachable!(), @@ -118,14 +120,14 @@ impl core::Renderer for Renderer { } #[cfg(feature = "wgpu")] Self::Wgpu(renderer) => { - let primitives = renderer.start_translation(); + let primitives = renderer.start_transformation(); f(self); match self { #[cfg(feature = "wgpu")] Self::Wgpu(renderer) => { - renderer.end_translation(primitives, translation); + renderer.end_transformation(primitives, transformation); } _ => unreachable!(), } -- cgit