aboutsummaryrefslogtreecommitdiff
path: root/src/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/error.rs')
-rw-r--r--src/error.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/error.rs b/src/error.rs
new file mode 100644
index 0000000..1d6790b
--- /dev/null
+++ b/src/error.rs
@@ -0,0 +1,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())
+ }
+}