Skip to main content

affine_rs/
error.rs

1use core::fmt;
2
3/// Errors produced by affine operations.
4#[derive(Clone, Copy, Debug, PartialEq, Eq)]
5pub enum AffineError {
6    /// The transform has a zero determinant and therefore has no inverse.
7    NonInvertibleTransform,
8    /// An operation requiring finite values received a non-finite matrix.
9    NonFiniteTransform,
10    /// A rotation angle is undefined for an improper or degenerate transform.
11    UndefinedRotation,
12    /// World File text did not contain exactly six valid floating-point values.
13    InvalidWorldFile,
14}
15
16impl fmt::Display for AffineError {
17    fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
18        match self {
19            Self::NonInvertibleTransform => {
20                formatter.write_str("cannot invert a degenerate affine transform")
21            }
22            Self::NonFiniteTransform => {
23                formatter.write_str("affine transform contains a non-finite value")
24            }
25            Self::UndefinedRotation => {
26                formatter.write_str("rotation is undefined for this affine transform")
27            }
28            Self::InvalidWorldFile => {
29                formatter.write_str("world file must contain exactly six finite numbers")
30            }
31        }
32    }
33}
34
35impl std::error::Error for AffineError {}