affine-rs 0.1.0

Two-dimensional affine transformations for Rust
Documentation
use core::fmt;

/// Errors produced by affine operations.
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum AffineError {
    /// The transform has a zero determinant and therefore has no inverse.
    NonInvertibleTransform,
    /// An operation requiring finite values received a non-finite matrix.
    NonFiniteTransform,
    /// A rotation angle is undefined for an improper or degenerate transform.
    UndefinedRotation,
    /// World File text did not contain exactly six valid floating-point values.
    InvalidWorldFile,
}

impl fmt::Display for AffineError {
    fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            Self::NonInvertibleTransform => {
                formatter.write_str("cannot invert a degenerate affine transform")
            }
            Self::NonFiniteTransform => {
                formatter.write_str("affine transform contains a non-finite value")
            }
            Self::UndefinedRotation => {
                formatter.write_str("rotation is undefined for this affine transform")
            }
            Self::InvalidWorldFile => {
                formatter.write_str("world file must contain exactly six finite numbers")
            }
        }
    }
}

impl std::error::Error for AffineError {}