diff --git a/src/glium_renderer.rs b/src/glium_renderer.rs index 8288cf5..5c07bb0 100644 --- a/src/glium_renderer.rs +++ b/src/glium_renderer.rs @@ -9,6 +9,7 @@ use glium::texture::{ClientFormat, RawImage2d}; use glium::vertex::{Attribute, AttributeType, Vertex, VertexFormat}; use libc::c_float; use std::borrow::Cow; +use std::fmt; use std::mem; use std::rc::Rc; @@ -16,6 +17,7 @@ use super::{DrawList, Frame, ImDrawIdx, ImDrawVert, ImGui, ImVec2, ImVec4}; pub type RendererResult = Result; +#[derive(Clone, Debug)] pub enum RendererError { Vertex(vertex::BufferCreationError), Index(index::BufferCreationError), @@ -24,6 +26,19 @@ pub enum RendererError { Draw(DrawError) } +impl fmt::Display for RendererError { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + use self::RendererError::*; + match *self { + Vertex(_) => write!(f, "Vertex buffer creation failed"), + Index(_) => write!(f, "Index buffer creation failed"), + Program(ref e) => write!(f, "Program creation failed: {}", e), + Texture(_) => write!(f, "Texture creation failed"), + Draw(ref e) => write!(f, "Drawing failed: {}", e) + } + } +} + impl From for RendererError { fn from(e: vertex::BufferCreationError) -> RendererError { RendererError::Vertex(e)