# [−]Struct pango::Matrix

A structure specifying a transformation between user-space coordinates and device coordinates. The transformation is given by

`<programlisting>`

x_device = x_user * matrix->xx + y_user * matrix->xy + matrix->x0;
y_device = x_user * matrix->yx + y_user * matrix->yy + matrix->y0;
`</programlisting>`

## Implementations

`impl Matrix`

[src]

`pub fn concat(&mut self, new_matrix: &Matrix)`

[src]

Changes the transformation represented by `self`

to be the
transformation given by first applying transformation
given by `new_matrix`

then applying the original transformation.

`new_matrix`

a `Matrix`

`pub fn get_font_scale_factor(&self) -> f64`

[src]

Returns the scale factor of a matrix on the height of the font.
That is, the scale factor in the direction perpendicular to the
vector that the X coordinate is mapped to. If the scale in the X
coordinate is needed as well, use `Matrix::get_font_scale_factors`

.

# Returns

the scale factor of `self`

on the height of the font,
or 1.0 if `self`

is `None`

.

`pub fn get_font_scale_factors(&self) -> (f64, f64)`

[src]

Calculates the scale factor of a matrix on the width and height of the font.
That is, `xscale`

is the scale factor in the direction of the X coordinate,
and `yscale`

is the scale factor in the direction perpendicular to the
vector that the X coordinate is mapped to.

Note that output numbers will always be non-negative.

Feature: `v1_38`

`xscale`

output scale factor in the x direction, or `None`

`yscale`

output scale factor perpendicular to the x direction, or `None`

`pub fn rotate(&mut self, degrees: f64)`

[src]

Changes the transformation represented by `self`

to be the
transformation given by first rotating by `degrees`

degrees
counter-clockwise then applying the original transformation.

`degrees`

degrees to rotate counter-clockwise

`pub fn scale(&mut self, scale_x: f64, scale_y: f64)`

[src]

Changes the transformation represented by `self`

to be the
transformation given by first scaling by `sx`

in the X direction
and `sy`

in the Y direction then applying the original
transformation.

`scale_x`

amount to scale by in X direction

`scale_y`

amount to scale by in Y direction

`pub fn transform_distance(&self, dx: &mut f64, dy: &mut f64)`

[src]

Transforms the distance vector (`dx`

,`dy`

) by `self`

. This is
similar to `Matrix::transform_point`

except that the translation
components of the transformation are ignored. The calculation of
the returned vector is as follows:

`<programlisting>`

dx2 = dx1 * xx + dy1 * xy;
dy2 = dx1 * yx + dy1 * yy;
`</programlisting>`

Affine transformations are position invariant, so the same vector
always transforms to the same vector. If (`x1`

,`y1`

) transforms
to (`x2`

,`y2`

) then (`x1`

+`dx1`

,`y1`

+`dy1`

) will transform to
(`x1`

+`dx2`

,`y1`

+`dy2`

) for all values of `x1`

and `x2`

.

`dx`

in/out X component of a distance vector

`dy`

in/out Y component of a distance vector

`pub fn transform_point(&self, x: &mut f64, y: &mut f64)`

[src]

`pub fn translate(&mut self, tx: f64, ty: f64)`

[src]

## Trait Implementations

`impl Clone for Matrix`

`fn clone(&self) -> Matrix`

`fn clone_from(&mut self, source: &Self)`

1.0.0[src]

`impl Debug for Matrix`

[src]

`impl Eq for Matrix`

[src]

`impl Hash for Matrix`

[src]

`fn hash<__H: Hasher>(&self, state: &mut __H)`

[src]

`fn hash_slice<H>(data: &[Self], state: &mut H) where`

H: Hasher,

1.3.0[src]

H: Hasher,

`impl Ord for Matrix`

[src]

`fn cmp(&self, other: &Matrix) -> Ordering`

[src]

`#[must_use]fn max(self, other: Self) -> Self`

1.21.0[src]

`#[must_use]fn min(self, other: Self) -> Self`

1.21.0[src]

`#[must_use]fn clamp(self, min: Self, max: Self) -> Self`

[src]

`impl PartialEq<Matrix> for Matrix`

[src]

`impl PartialOrd<Matrix> for Matrix`

[src]

`fn partial_cmp(&self, other: &Matrix) -> Option<Ordering>`

[src]

`fn lt(&self, other: &Matrix) -> bool`

[src]

`fn le(&self, other: &Matrix) -> bool`

[src]

`fn gt(&self, other: &Matrix) -> bool`

[src]

`fn ge(&self, other: &Matrix) -> bool`

[src]

`impl StaticType for Matrix`

`fn static_type() -> Type`

`impl StructuralEq for Matrix`

[src]

`impl StructuralPartialEq for Matrix`

[src]

## Auto Trait Implementations

`impl RefUnwindSafe for Matrix`

`impl !Send for Matrix`

`impl !Sync for Matrix`

`impl Unpin for Matrix`

`impl UnwindSafe for Matrix`

## Blanket Implementations

`impl<T> Any for T where`

T: 'static + ?Sized,

[src]

T: 'static + ?Sized,

`impl<T> Borrow<T> for T where`

T: ?Sized,

[src]

T: ?Sized,

`impl<T> BorrowMut<T> for T where`

T: ?Sized,

[src]

T: ?Sized,

`fn borrow_mut(&mut self) -> &mut T`

[src]

`impl<T> From<T> for T`

[src]

`impl<T, U> Into<U> for T where`

U: From<T>,

[src]

U: From<T>,

`impl<T> ToOwned for T where`

T: Clone,

[src]

T: Clone,

`type Owned = T`

The resulting type after obtaining ownership.

`fn to_owned(&self) -> T`

[src]

`fn clone_into(&self, target: &mut T)`

[src]

`impl<T> ToSendValue for T where`

T: ToValue + SetValue + Send + ?Sized,

T: ToValue + SetValue + Send + ?Sized,

`fn to_send_value(&self) -> SendValue`

`impl<T> ToValue for T where`

T: SetValue + ?Sized,

T: SetValue + ?Sized,

`fn to_value(&self) -> Value`

`fn to_value_type(&self) -> Type`

`impl<T, U> TryFrom<U> for T where`

U: Into<T>,

[src]

U: Into<T>,

`type Error = Infallible`

The type returned in the event of a conversion error.

`fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>`

[src]

`impl<T, U> TryInto<U> for T where`

U: TryFrom<T>,

[src]

U: TryFrom<T>,