pub struct Transform { /* private fields */ }
Expand description
An object to describe transform matrices.
Unlike graphene::Matrix
, Transform
retains the steps in how
a transform was constructed, and allows inspecting them. It is modeled
after the way CSS describes transforms.
Transform
objects are immutable and cannot be changed after creation.
This means code can safely expose them as properties of objects without
having to worry about others changing them.
GLib type: Shared boxed type with reference counted clone semantics.
Implementations§
Source§impl Transform
impl Transform
Sourcepub fn as_ptr(&self) -> *mut GskTransform
pub fn as_ptr(&self) -> *mut GskTransform
Return the inner pointer to the underlying C value.
Sourcepub unsafe fn from_glib_ptr_borrow(ptr: &*mut GskTransform) -> &Self
pub unsafe fn from_glib_ptr_borrow(ptr: &*mut GskTransform) -> &Self
Borrows the underlying C value.
Source§impl Transform
impl Transform
Sourcepub fn new() -> Transform
pub fn new() -> Transform
Creates a new identity transform.
This function is meant to be used by language
bindings. For C code, this is equivalent to using NULL
.
§Returns
A new identity transform
Sourcepub fn category(&self) -> TransformCategory
pub fn category(&self) -> TransformCategory
Sourcepub fn perspective(self, depth: f32) -> Transform
pub fn perspective(self, depth: f32) -> Transform
Applies a perspective projection transform.
This transform scales points in X and Y based on their Z value, scaling points with positive Z values away from the origin, and those with negative Z values towards the origin. Points on the z=0 plane are unchanged.
This function consumes @self. Use Gsk::Transform::ref()
first
if you want to keep it around.
§depth
distance of the z=0 plane. Lower values give a more flattened pyramid and therefore a more pronounced perspective effect.
§Returns
The new transform
Sourcepub fn to_2d(&self) -> (f32, f32, f32, f32, f32, f32)
pub fn to_2d(&self) -> (f32, f32, f32, f32, f32, f32)
Converts a transform to a 2D transformation matrix.
@self must be a 2D transformation. If you are not sure, use
gsk_transform_get_category() >= GSK_TRANSFORM_CATEGORY_2D
to check.
The returned values are a subset of the full 4x4 matrix that
is computed by to_matrix()
and have the
following layout:
| xx yx | | a b 0 |
| xy yy | = | c d 0 |
| dx dy | | tx ty 1 |
This function can be used to convert between a Transform
and a matrix type from other 2D drawing libraries, in particular
Cairo.
§Returns
§out_xx
return location for the xx member
§out_yx
return location for the yx member
§out_xy
return location for the xy member
§out_yy
return location for the yy member
§out_dx
return location for the x0 member
§out_dy
return location for the y0 member
Sourcepub fn to_2d_components(&self) -> (f32, f32, f32, f32, f32, f32, f32)
Available on crate feature v4_6
only.
pub fn to_2d_components(&self) -> (f32, f32, f32, f32, f32, f32, f32)
v4_6
only.Converts a transform to 2D transformation factors.
To recreate an equivalent transform from the factors returned by this function, use
gsk_transform_skew (
gsk_transform_scale (
gsk_transform_rotate (
gsk_transform_translate (NULL, &GRAPHENE_POINT_T (dx, dy)),
angle),
scale_x, scale_y),
skew_x, skew_y)
@self must be a 2D transformation. If you are not sure, use
gsk_transform_get_category() >= GSK_TRANSFORM_CATEGORY_2D
to check.
§Returns
§out_skew_x
return location for the skew factor in the x direction
§out_skew_y
return location for the skew factor in the y direction
§out_scale_x
return location for the scale factor in the x direction
§out_scale_y
return location for the scale factor in the y direction
§out_angle
return location for the rotation angle
§out_dx
return location for the translation in the x direction
§out_dy
return location for the translation in the y direction
Sourcepub fn to_affine(&self) -> (f32, f32, f32, f32)
pub fn to_affine(&self) -> (f32, f32, f32, f32)
Converts a transform to 2D affine transformation factors.
To recreate an equivalent transform from the factors returned by this function, use
gsk_transform_scale (
gsk_transform_translate (
NULL,
&GRAPHENE_POINT_T (dx, dy)),
sx, sy)
@self must be a 2D affine transformation. If you are not sure, use
gsk_transform_get_category() >= GSK_TRANSFORM_CATEGORY_2D_AFFINE
to check.
§Returns
§out_scale_x
return location for the scale factor in the x direction
§out_scale_y
return location for the scale factor in the y direction
§out_dx
return location for the translation in the x direction
§out_dy
return location for the translation in the y direction
Sourcepub fn to_translate(&self) -> (f32, f32)
pub fn to_translate(&self) -> (f32, f32)
Converts a transform to a translation operation.
@self must be a 2D transformation. If you are not sure, use
gsk_transform_get_category() >= GSK_TRANSFORM_CATEGORY_2D_TRANSLATE
to check.
§Returns
§out_dx
return location for the translation in the x direction
§out_dy
return location for the translation in the y direction
Sourcepub fn transform_bounds(&self, rect: &Rect) -> Rect
pub fn transform_bounds(&self, rect: &Rect) -> Rect
Source§impl Transform
impl Transform
Sourcepub fn parse(string: impl IntoGStr) -> Result<Self, BoolError>
pub fn parse(string: impl IntoGStr) -> Result<Self, BoolError>
Parses a given into a transform.
Strings printed via to_str()
can be read in again successfully using this function.
If @string does not describe a valid transform, false
is returned and NULL
is put in @out_transform.
§string
the string to parse
§Returns
true if @string described a valid transform
§out_transform
return location for the transform
Sourcepub fn invert(self) -> Result<Self, BoolError>
pub fn invert(self) -> Result<Self, BoolError>
Inverts the given transform.
If @self is not invertible, NULL
is returned.
Note that inverting NULL
also returns NULL
, which is
the correct inverse of NULL
. If you need to differentiate
between those cases, you should check @self is not NULL
before calling this function.
This function consumes @self. Use Gsk::Transform::ref()
first
if you want to keep it around.
§Returns
The inverted transform
Sourcepub fn scale(self, factor_x: f32, factor_y: f32) -> Self
pub fn scale(self, factor_x: f32, factor_y: f32) -> Self
Scales @self in 2-dimensional space by the given factors.
Use scale_3d()
to scale in all 3 dimensions.
This function consumes @self. Use Gsk::Transform::ref()
first
if you want to keep it around.
§factor_x
scaling factor on the X axis
§factor_y
scaling factor on the Y axis
§Returns
The new transform
Sourcepub fn translate_3d(self, point: &Point3D) -> Self
pub fn translate_3d(self, point: &Point3D) -> Self
Trait Implementations§
Source§impl HasParamSpec for Transform
impl HasParamSpec for Transform
Source§impl Ord for Transform
impl Ord for Transform
Source§impl PartialOrd for Transform
impl PartialOrd for Transform
Source§impl StaticType for Transform
impl StaticType for Transform
Source§fn static_type() -> Type
fn static_type() -> Type
Self
.