diff options
author | 2024-02-02 14:54:56 +0100 | |
---|---|---|
committer | 2024-02-02 14:54:56 +0100 | |
commit | aea172543cb49f1f1e3625f60b49336f59e26c00 (patch) | |
tree | e99e7a55873678ac37fd695a0f46c1350b30dd2f /graphics/src/primitive.rs | |
parent | 759f0e922598504705b543185bc7140a652b726a (diff) | |
parent | b3adf3184594c9bf60e0548a0362d30c512f3966 (diff) | |
download | iced-aea172543cb49f1f1e3625f60b49336f59e26c00.tar.gz iced-aea172543cb49f1f1e3625f60b49336f59e26c00.tar.bz2 iced-aea172543cb49f1f1e3625f60b49336f59e26c00.zip |
Merge pull request #2120 from iced-rs/transform-primitive
`Transform` primitive
Diffstat (limited to '')
-rw-r--r-- | graphics/src/primitive.rs | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/graphics/src/primitive.rs b/graphics/src/primitive.rs index aed59e1a..6929b0a1 100644 --- a/graphics/src/primitive.rs +++ b/graphics/src/primitive.rs @@ -4,7 +4,8 @@ use crate::core::image; use crate::core::svg; use crate::core::text; use crate::core::{ - Background, Border, Color, Font, Pixels, Point, Rectangle, Shadow, Vector, + Background, Border, Color, Font, Pixels, Point, Rectangle, Shadow, + Transformation, Vector, }; use crate::text::editor; use crate::text::paragraph; @@ -104,12 +105,12 @@ pub enum Primitive<T> { /// The content of the clip content: Box<Primitive<T>>, }, - /// A primitive that applies a translation - Translate { - /// The translation vector - translation: Vector, + /// A primitive that applies a [`Transformation`] + Transform { + /// The [`Transformation`] + transformation: Transformation, - /// The primitive to translate + /// The primitive to transform content: Box<Primitive<T>>, }, /// A cached primitive. @@ -125,12 +126,12 @@ pub enum Primitive<T> { } impl<T> Primitive<T> { - /// Creates a [`Primitive::Group`]. + /// Groups the current [`Primitive`]. pub fn group(primitives: Vec<Self>) -> Self { Self::Group { primitives } } - /// Creates a [`Primitive::Clip`]. + /// Clips the current [`Primitive`]. pub fn clip(self, bounds: Rectangle) -> Self { Self::Clip { bounds, @@ -138,10 +139,21 @@ impl<T> Primitive<T> { } } - /// Creates a [`Primitive::Translate`]. + /// Translates the current [`Primitive`]. pub fn translate(self, translation: Vector) -> Self { - Self::Translate { - translation, + Self::Transform { + transformation: Transformation::translate( + translation.x, + translation.y, + ), + content: Box::new(self), + } + } + + /// Transforms the current [`Primitive`]. + pub fn transform(self, transformation: Transformation) -> Self { + Self::Transform { + transformation, content: Box::new(self), } } |