aboutsummaryrefslogtreecommitdiff
path: root/src/error.rs
blob: 1d6790bf337ce5275a81992084e93f6d4fbd861c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use cairo::{Error as CairoError, IoError};
use std::io::Error as StdError;
use thiserror::Error;

/// Error types for rendering
#[derive(Debug, Error)]
pub enum RenderError {
    #[error("Cairo rendering error: {0}")]
    Cairo(String),

    #[error("Invalid configuration: {0}")]
    InvalidConfig(String),

    #[error("Concave hull calculation failed")]
    GeometryError,

    #[error("IO error: {0}")]
    Io(#[from] StdError),
}

impl From<CairoError> for RenderError {
    fn from(err: CairoError) -> Self {
        RenderError::Cairo(err.to_string())
    }
}

impl From<IoError> for RenderError {
    fn from(err: IoError) -> Self {
        RenderError::Cairo(err.to_string())
    }
}