# Struct gsk4::Transform [−][src]

`pub struct Transform(_);`

## Expand description

`Transform`

is an object to describe transform matrices.

Unlike `graphene_matrix_t`

, `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.

## Implementations

Inverts the given transform.

If `self`

is not invertible, `None`

is returned.
Note that inverting `None`

also returns `None`

, which is
the correct inverse of `None`

. If you need to differentiate
between those cases, you should check `self`

is not `None`

before calling this function.

##### Returns

The inverted 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.

`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

Scales `self`

in 2-dimensional space by the given factors.

Use `scale_3d()`

to scale in all 3 dimensions.

`factor_x`

scaling factor on the X axis

`factor_y`

scaling factor on the Y axis

##### Returns

The new transform

Converts a `Transform`

to a 2D transformation matrix.

`self`

must be a 2D transformation. If you are not
sure, use `category()`

>=
`TransformCategory::_2d`

to check.

The returned values 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

Converts a `Transform`

to 2D affine transformation factors.

`self`

must be a 2D transformation. If you are not
sure, use

`category()`

>= `TransformCategory::_2dAffine`

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

Computes the actual value of `self`

and stores it in `out_matrix`

.

The previous value of `out_matrix`

will be ignored.

##### Returns

`out_matrix`

The matrix to set

Converts a `Transform`

to a translation operation.

`self`

must be a 2D transformation. If you are not
sure, use

`category()`

>= `TransformCategory::_2dTranslate`

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

Parses the given `string`

into a transform and puts it in
`out_transform`

.

Strings printed via `Gsk::`

Transform::to_string()``
can be read in again successfully using this function.

If `string`

does not describe a valid transform, `false`

is
returned and `None`

is put in `out_transform`

.

`string`

the string to parse

##### Returns

`true`

if `string`

described a valid transform.

`out_transform`

The location to put the transform in

## Trait Implementations

This method returns an ordering between `self`

and `other`

values if one exists. Read more

This method tests less than (for `self`

and `other`

) and is used by the `<`

operator. Read more

This method tests less than or equal to (for `self`

and `other`

) and is used by the `<=`

operator. Read more

This method tests greater than (for `self`

and `other`

) and is used by the `>`

operator. Read more

Returns the type identifier of `Self`

.

## Auto Trait Implementations

### impl RefUnwindSafe for Transform

### impl UnwindSafe for Transform

## Blanket Implementations

Mutably borrows from an owned value. Read more