summaryrefslogtreecommitdiffstats
path: root/renderer/src
diff options
context:
space:
mode:
Diffstat (limited to 'renderer/src')
-rw-r--r--renderer/src/geometry.rs36
-rw-r--r--renderer/src/lib.rs16
2 files changed, 34 insertions, 18 deletions
diff --git a/renderer/src/geometry.rs b/renderer/src/geometry.rs
index cd2140dc..f09ccfbf 100644
--- a/renderer/src/geometry.rs
+++ b/renderer/src/geometry.rs
@@ -2,14 +2,18 @@ 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::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 +22,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/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!(),
}