added a Frame::scale_nonuniform method

This commit is contained in:
ripytide 2023-09-05 10:49:50 +01:00
parent a56b25b909
commit 5371fae21a
No known key found for this signature in database
GPG key ID: B2629F9EC7C2FE8C
3 changed files with 20 additions and 2 deletions

View file

@ -168,12 +168,18 @@ impl Frame {
delegate!(self, frame, frame.rotate(angle));
}
/// Applies a scaling to the current transform of the [`Frame`].
/// Applies a uniform scaling to the current transform of the [`Frame`].
#[inline]
pub fn scale(&mut self, scale: f32) {
delegate!(self, frame, frame.scale(scale));
}
/// Applies a non-uniform scaling to the current transform of the [`Frame`].
#[inline]
pub fn scale_nonuniform(&mut self, scale: Vector) {
delegate!(self, frame, frame.scale_nonuniform(scale));
}
pub fn into_geometry(self) -> Geometry {
match self {
Self::TinySkia(frame) => Geometry::TinySkia(frame.into_primitive()),

View file

@ -158,6 +158,10 @@ impl Frame {
self.transform = self.transform.pre_scale(scale, scale);
}
pub fn scale_nonuniform(&mut self, scale: Vector) {
self.transform = self.transform.pre_scale(scale.x, scale.y);
}
pub fn into_primitive(self) -> Primitive {
Primitive::Clip {
bounds: Rectangle::new(Point::ORIGIN, self.size),

View file

@ -444,7 +444,7 @@ impl Frame {
self.transforms.current.is_identity = false;
}
/// Applies a scaling to the current transform of the [`Frame`].
/// Applies a uniform scaling to the current transform of the [`Frame`].
#[inline]
pub fn scale(&mut self, scale: f32) {
self.transforms.current.raw =
@ -452,6 +452,14 @@ impl Frame {
self.transforms.current.is_identity = false;
}
/// Applies a non-uniform scaling to the current transform of the [`Frame`].
#[inline]
pub fn scale_nonuniform(&mut self, scale: Vector) {
self.transforms.current.raw =
self.transforms.current.raw.pre_scale(scale.x, scale.y);
self.transforms.current.is_identity = false;
}
/// Produces the [`Primitive`] representing everything drawn on the [`Frame`].
pub fn into_primitive(self) -> Primitive {
Primitive::Group {