summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/bezier_tool/Cargo.toml2
-rw-r--r--renderer/src/geometry.rs35
-rw-r--r--widget/src/canvas.rs1
3 files changed, 27 insertions, 11 deletions
diff --git a/examples/bezier_tool/Cargo.toml b/examples/bezier_tool/Cargo.toml
index b2547ff1..e5624097 100644
--- a/examples/bezier_tool/Cargo.toml
+++ b/examples/bezier_tool/Cargo.toml
@@ -7,4 +7,4 @@ publish = false
[dependencies]
iced.workspace = true
-iced.features = ["canvas"]
+iced.features = ["canvas", "debug"]
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 {
diff --git a/widget/src/canvas.rs b/widget/src/canvas.rs
index b95e6206..3e4a0928 100644
--- a/widget/src/canvas.rs
+++ b/widget/src/canvas.rs
@@ -7,6 +7,7 @@ pub use event::Event;
pub use program::Program;
pub use crate::graphics::geometry::*;
+pub use crate::graphics::Transformation;
pub use crate::renderer::geometry::*;
use crate::core;