use glutin;
use imagefmt;
use std::{convert, ffi, io, string};
/// Nine errors should be enough for anyone
#[derive(Debug)]
pub enum Error {
BadCString,
InvalidShaderLog,
CompileError(String),
LinkError(String),
GlutinCreation(glutin::CreationError),
GlutinContext(glutin::ContextError),
ImageError(imagefmt::Error),
IOError(io::Error),
OtherError(String),
}
impl convert::From<glutin::CreationError> for Error {
fn from(err: glutin::CreationError) -> Error {
Error::GlutinCreation(err)
}
}
impl convert::From<glutin::ContextError> for Error {
fn from(err: glutin::ContextError) -> Error {
Error::GlutinContext(err)
}
}
impl convert::From<ffi::NulError> for Error {
fn from(_: ffi::NulError) -> Error {
Error::BadCString
}
}
impl convert::From<string::FromUtf8Error> for Error {
fn from(_: string::FromUtf8Error) -> Error {
Error::InvalidShaderLog
}
}
impl convert::From<imagefmt::Error> for Error {
fn from(image_error: imagefmt::Error) -> Error {
Error::ImageError(image_error)
}
}
impl convert::From<io::Error> for Error {
fn from(io_error: io::Error) -> Error {
Error::IOError(io_error)
}
}