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
32
33
34
35
36
37
38
39
40
use sdl2::render::Canvas;
use sdl2::render::RenderTarget;
use super::*;
use util::RenderSurface;

pub mod imp;
pub mod font;
pub mod util;

pub struct Render<C> where C: RenderTarget, Canvas<C>: RenderSurface {
    pub c: Canvas<C>,
}

impl<C> Render<C> where C: RenderTarget, Canvas<C>: RenderSurface {
    pub fn from_canvas(c: Canvas<C>) -> Self {
        Self{
            c
        }
    }
}

impl<C> Deref for Render<C> where C: RenderTarget, Canvas<C>: RenderSurface {
    type Target = Canvas<C>;
    fn deref(&self) -> &Self::Target {
        &self.c
    }
}
impl<C> DerefMut for Render<C> where C: RenderTarget, Canvas<C>: RenderSurface {
    fn deref_mut(&mut self) -> &mut Self::Target {
        &mut self.c
    }
}
impl<C> AsRefMut<Canvas<C>> for Render<C> where C: RenderTarget, Canvas<C>: RenderSurface {
    fn as_ref(&self) -> &Canvas<C> {
        &self.c
    }
    fn as_mut(&mut self) -> &mut Canvas<C> {
        &mut self.c
    }
}