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') 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