Struct PdfMatrix

Source
pub struct PdfMatrix { /* private fields */ }
Expand description

Six floating-point values, labelled a, b, c, d, e, and f, that represent the six configurable elements of a nine-element 3x3 PDF transformation matrix.

Applying the matrix to any transformable object containing a set_matrix() function - such as a page, clip path, individual page object, or page object group - will result in a transformation of that object. Depending on the values specified in the matrix, the object can be moved, scaled, rotated, or skewed.

It is rare that a matrix needs to be used directly. All transformable objects provide convenient and expressive access to the most commonly used transformation operations without requiring a matrix.

However, a matrix can be convenient when the same transformation values need to be applied to a large set of transformable objects.

An overview of PDF transformation matrices can be found in the PDF Reference Manual version 1.7 on page 204; a detailed description can be founded in section 4.2.3 on page 207.

Implementations§

Source§

impl PdfMatrix

Source

pub const ZERO: PdfMatrix

A PdfMatrix object with all matrix values set to 0.0.

Source

pub const IDENTITY: PdfMatrix

A PdfMatrix object with matrix values a and d set to 1.0 and all other values set to 0.0.

Source

pub const fn new( a: PdfMatrixValue, b: PdfMatrixValue, c: PdfMatrixValue, d: PdfMatrixValue, e: PdfMatrixValue, f: PdfMatrixValue, ) -> Self

Creates a new PdfMatrix with the given matrix values.

Source

pub const fn zero() -> Self

Creates a new PdfMatrix object with all matrix values set to 0.0.

The return value of this function is identical to the constant PdfMatrix::ZERO.

Source

pub const fn identity() -> Self

Creates a new PdfMatrix object with matrix values a and d set to 1.0 and all other values set to 0.0.

The return value of this function is identical to the constant PdfMatrix::IDENTITY.

Source

pub fn a(&self) -> PdfMatrixValue

Returns the value of a, the first of six floating-point values that represent the six configurable elements of a nine-element 3x3 PDF transformation matrix.

Source

pub fn set_a(&mut self, a: PdfMatrixValue)

Sets the value of a, the first of six floating-point values that represent the six configurable elements of a nine-element 3x3 PDF transformation matrix.

Source

pub fn b(&self) -> PdfMatrixValue

Returns the value of b, the second of six floating-point values that represent the six configurable elements of a nine-element 3x3 PDF transformation matrix.

Source

pub fn set_b(&mut self, b: PdfMatrixValue)

Sets the value of b, the second of six floating-point values that represent the six configurable elements of a nine-element 3x3 PDF transformation matrix.

Source

pub fn c(&self) -> PdfMatrixValue

Returns the value of c, the third of six floating-point values that represent the six configurable elements of a nine-element 3x3 PDF transformation matrix.

Source

pub fn set_c(&mut self, c: PdfMatrixValue)

Sets the value of c, the third of six floating-point values that represent the six configurable elements of a nine-element 3x3 PDF transformation matrix.

Source

pub fn d(&self) -> PdfMatrixValue

Returns the value of d, the fourth of six floating-point values that represent the six configurable elements of a nine-element 3x3 PDF transformation matrix.

Source

pub fn set_d(&mut self, d: PdfMatrixValue)

Sets the value of d, the fourth of six floating-point values that represent the six configurable elements of a nine-element 3x3 PDF transformation matrix.

Source

pub fn e(&self) -> PdfMatrixValue

Returns the value of e, the fifth of six floating-point values that represent the six configurable elements of a nine-element 3x3 PDF transformation matrix.

Source

pub fn set_e(&mut self, e: PdfMatrixValue)

Sets the value of e, the fifth of six floating-point values that represent the six configurable elements of a nine-element 3x3 PDF transformation matrix.

Source

pub fn f(&self) -> PdfMatrixValue

Returns the value of f, the sixth of six floating-point values that represent the six configurable elements of a nine-element 3x3 PDF transformation matrix.

Source

pub fn set_f(&mut self, f: PdfMatrixValue)

Sets the value of f, the sixth of six floating-point values that represent the six configurable elements of a nine-element 3x3 PDF transformation matrix.

Source

pub fn invert(&self) -> PdfMatrix

Returns the inverse of this PdfMatrix.

Source

pub fn transpose(&self) -> PdfMatrix

Returns the transpose of this PdfMatrix.

Source

pub fn determinant(&self) -> PdfMatrixValue

Returns the determinant of this PdfMatrix.

Source

pub fn add(&self, other: PdfMatrix) -> PdfMatrix

Returns the result of adding the given PdfMatrix to this PdfMatrix.

Source

pub fn subtract(&self, other: PdfMatrix) -> PdfMatrix

Returns the result of subtracting the given PdfMatrix from this PdfMatrix.

Source

pub fn multiply(&self, other: PdfMatrix) -> PdfMatrix

Returns the result of multiplying this PdfMatrix by the given PdfMatrix.

Source

pub fn apply_to_points( &self, x: PdfPoints, y: PdfPoints, ) -> (PdfPoints, PdfPoints)

Returns the result of applying this PdfMatrix to the given coordinate pair expressed as PdfPoints.

Source

pub fn transform( self, a: PdfMatrixValue, b: PdfMatrixValue, c: PdfMatrixValue, d: PdfMatrixValue, e: PdfMatrixValue, f: PdfMatrixValue, ) -> Result<Self, PdfiumError>

Applies the given transformation, expressed as six values representing the six configurable elements of a nine-element 3x3 PDF transformation matrix, to this PdfMatrix.

To move, scale, rotate, or skew this PdfMatrix, consider using one or more of the following functions. Internally they all use Self::transform(), but are probably easier to use (and certainly clearer in their intent) in most situations.

The order in which transformations are applied is significant. For example, the result of rotating then translating an object may be vastly different from translating then rotating the same object.

An overview of PDF transformation matrices can be found in the PDF Reference Manual version 1.7 on page 204; a detailed description can be found in section 4.2.3 on page 207.

Source

pub fn apply_matrix(self, matrix: PdfMatrix) -> Result<Self, PdfiumError>

Applies the given transformation, expressed as a PdfMatrix, to this PdfMatrix.

Source

pub fn reset_matrix(self, matrix: PdfMatrix) -> Result<Self, PdfiumError>

Resets the transform matrix for this PdfMatrix to the the given PdfMatrix, overriding any previously applied transformations.

Source

pub fn reset_matrix_to_identity(self) -> Result<Self, PdfiumError>

Resets the transformation matrix for this PdfMatrix to the identity matrix, undoing any previously applied transformations.

Source

pub fn translate( self, delta_x: PdfPoints, delta_y: PdfPoints, ) -> Result<Self, PdfiumError>

Moves the origin of this PdfMatrix by the given horizontal and vertical delta distances.

Source

pub fn scale( self, horizontal_scale_factor: PdfMatrixValue, vertical_scale_factor: PdfMatrixValue, ) -> Result<Self, PdfiumError>

Changes the size of this PdfMatrix, scaling it by the given horizontal and vertical scale factors.

Source

pub fn flip_horizontally(self) -> Result<Self, PdfiumError>

Flips this PdfMatrix horizontally around its origin by applying a horizontal scale factor of -1.

Source

pub fn flip_vertically(self) -> Result<Self, PdfiumError>

Flips this PdfMatrix vertically around its origin by applying a vertical scale factor of -1.

Source

pub fn reflect(self) -> Result<Self, PdfiumError>

Reflects this PdfMatrix by flipping it both horizontally and vertically around its origin.

Source

pub fn rotate_counter_clockwise_degrees( self, degrees: PdfMatrixValue, ) -> Result<Self, PdfiumError>

Rotates this PdfMatrix counter-clockwise by the given number of degrees.

Source

pub fn rotate_clockwise_degrees( self, degrees: PdfMatrixValue, ) -> Result<Self, PdfiumError>

Rotates this PdfMatrix clockwise by the given number of degrees.

Source

pub fn rotate_counter_clockwise_radians( self, radians: PdfMatrixValue, ) -> Result<Self, PdfiumError>

Rotates this PdfMatrix counter-clockwise by the given number of radians.

Source

pub fn rotate_clockwise_radians( self, radians: PdfMatrixValue, ) -> Result<Self, PdfiumError>

Rotates this PdfMatrix clockwise by the given number of radians.

Source

pub fn skew_degrees( self, x_axis_skew: PdfMatrixValue, y_axis_skew: PdfMatrixValue, ) -> Result<Self, PdfiumError>

Skews the axes of this PdfMatrix by the given angles in degrees.

Source

pub fn skew_radians( self, x_axis_skew: PdfMatrixValue, y_axis_skew: PdfMatrixValue, ) -> Result<Self, PdfiumError>

Skews the axes of this PdfMatrix by the given angles in radians.

Source

pub fn matrix(&self) -> Result<PdfMatrix, PdfiumError>

Returns the transformation matrix currently applied to this PdfMatrix.

Source

pub fn get_translation(&self) -> (PdfPoints, PdfPoints)

Returns the current horizontal and vertical translation of the origin of this PdfMatrix.

Source

pub fn get_horizontal_translation(&self) -> PdfPoints

Returns the current horizontal translation of the origin of this PdfMatrix.

Source

pub fn get_vertical_translation(&self) -> PdfPoints

Returns the current vertical translation of the origin of this PdfMatrix.

Source

pub fn get_scale(&self) -> (PdfMatrixValue, PdfMatrixValue)

Returns the current horizontal and vertical scale factors applied to this PdfMatrix.

Source

pub fn get_horizontal_scale(&self) -> PdfMatrixValue

Returns the current horizontal scale factor applied to this PdfMatrix.

Source

pub fn get_vertical_scale(&self) -> PdfMatrixValue

Returns the current vertical scale factor applied to this PdfMatrix.

Source

pub fn get_rotation_counter_clockwise_degrees(&self) -> PdfMatrixValue

Returns the counter-clockwise rotation applied to this PdfMatrix, in degrees.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Source

pub fn get_rotation_clockwise_degrees(&self) -> PdfMatrixValue

Returns the clockwise rotation applied to this PdfMatrix, in degrees.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Source

pub fn get_rotation_counter_clockwise_radians(&self) -> PdfMatrixValue

Returns the counter-clockwise rotation applied to this PdfMatrix, in radians.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Source

pub fn get_rotation_clockwise_radians(&self) -> PdfMatrixValue

Returns the clockwise rotation applied to this PdfMatrix, in radians.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Source

pub fn get_skew_degrees(&self) -> (PdfMatrixValue, PdfMatrixValue)

Returns the current x axis and y axis skew angles applied to this PdfMatrix, in degrees.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Source

pub fn get_x_axis_skew_degrees(&self) -> PdfMatrixValue

Returns the current x axis skew angle applied to this PdfMatrix, in degrees.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Source

pub fn get_y_axis_skew_degrees(&self) -> PdfMatrixValue

Returns the current y axis skew applied to this PdfMatrix, in degrees.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Source

pub fn get_skew_radians(&self) -> (PdfMatrixValue, PdfMatrixValue)

Returns the current x axis and y axis skew angles applied to this PdfMatrix, in radians.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Source

pub fn get_x_axis_skew_radians(&self) -> PdfMatrixValue

Returns the current x axis skew applied to this PdfMatrix, in radians.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Source

pub fn get_y_axis_skew_radians(&self) -> PdfMatrixValue

Returns the current y axis skew applied to this PdfMatrix, in radians.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Trait Implementations§

Source§

impl Add for PdfMatrix

Source§

type Output = PdfMatrix

The resulting type after applying the + operator.
Source§

fn add(self, rhs: Self) -> Self::Output

Performs the + operation. Read more
Source§

impl Clone for PdfMatrix

Source§

fn clone(&self) -> PdfMatrix

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for PdfMatrix

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for PdfMatrix

Source§

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

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

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

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Mul for PdfMatrix

Source§

type Output = PdfMatrix

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: Self) -> Self::Output

Performs the * operation. Read more
Source§

impl PartialEq for PdfMatrix

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Sub for PdfMatrix

Source§

type Output = PdfMatrix

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: Self) -> Self::Output

Performs the - operation. Read more
Source§

impl Copy for PdfMatrix

Source§

impl Eq for PdfMatrix

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

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

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.