Implement transform method for Geometry

This commit is contained in:
Héctor Ramón Jiménez 2023-10-23 03:14:22 +02:00
parent 5467c19c80
commit 9b8614a4e2
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
3 changed files with 29 additions and 13 deletions

View file

@ -7,4 +7,4 @@ publish = false
[dependencies] [dependencies]
iced.workspace = true iced.workspace = true
iced.features = ["canvas"] iced.features = ["canvas", "debug"]

View file

@ -4,20 +4,9 @@ pub use cache::Cache;
use crate::core::{Point, Rectangle, Size, Vector}; use crate::core::{Point, Rectangle, Size, Vector};
use crate::graphics::geometry::{Fill, Path, Stroke, Text}; use crate::graphics::geometry::{Fill, Path, Stroke, Text};
use crate::graphics::Transformation;
use crate::Renderer; use crate::Renderer;
pub enum Frame {
TinySkia(iced_tiny_skia::geometry::Frame),
#[cfg(feature = "wgpu")]
Wgpu(iced_wgpu::geometry::Frame),
}
pub enum Geometry {
TinySkia(iced_tiny_skia::Primitive),
#[cfg(feature = "wgpu")]
Wgpu(iced_wgpu::Primitive),
}
macro_rules! delegate { macro_rules! delegate {
($frame:expr, $name:ident, $body:expr) => { ($frame:expr, $name:ident, $body:expr) => {
match $frame { match $frame {
@ -28,6 +17,32 @@ macro_rules! delegate {
}; };
} }
pub enum Geometry {
TinySkia(iced_tiny_skia::Primitive),
#[cfg(feature = "wgpu")]
Wgpu(iced_wgpu::Primitive),
}
impl Geometry {
pub fn transform(self, transformation: Transformation) -> Self {
match self {
Self::TinySkia(primitive) => {
Self::TinySkia(primitive.transform(transformation))
}
#[cfg(feature = "wgpu")]
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 { impl Frame {
pub fn new(renderer: &Renderer, size: Size) -> Self { pub fn new(renderer: &Renderer, size: Size) -> Self {
match renderer { match renderer {

View file

@ -7,6 +7,7 @@ pub use event::Event;
pub use program::Program; pub use program::Program;
pub use crate::graphics::geometry::*; pub use crate::graphics::geometry::*;
pub use crate::graphics::Transformation;
pub use crate::renderer::geometry::*; pub use crate::renderer::geometry::*;
use crate::core; use crate::core;