Do rendering via a renderer instead of sdl
[kaka/rust-sdl-test.git] / src / boll.rs
index b8e21a7..abf6c87 100644 (file)
@@ -1,8 +1,5 @@
-use sdl2::pixels::Color;
-use sdl2::rect::Point;
+use core::render::Renderer;
 use sdl2::rect::Rect;
-use sdl2::render::Canvas;
-use sdl2::video::Window;
 
 use common::Point2D;
 use sdl2::gfx::primitives::DrawRenderer;
@@ -10,7 +7,7 @@ use {SCREEN_HEIGHT, SCREEN_WIDTH};
 
 pub trait Boll {
     fn update(&mut self);
-    fn draw(&self, canvas: &mut Canvas<Window>, size: u32);
+    fn draw(&self, renderer: &mut Renderer, size: u32);
 }
 
 pub struct SquareBoll {
@@ -41,16 +38,16 @@ impl Boll for SquareBoll {
         }
     }
 
-    fn draw(&self, canvas: &mut Canvas<Window>, size: u32) {
-        canvas.set_draw_color(Color::RGBA(
+    fn draw(&self, renderer: &mut Renderer, size: u32) {
+        renderer.canvas().set_draw_color((
             255 - std::cmp::min(255, (self.vel.length() * 25.0) as u8),
             (255.0 * (self.pos.x / SCREEN_WIDTH as f64)) as u8,
             (255.0 * (self.pos.y / SCREEN_HEIGHT as f64)) as u8,
             128,
         ));
         let mut r = Rect::new(0, 0, size, size);
-        r.center_on(Point::new(self.pos.x as i32, self.pos.y as i32));
-        canvas.fill_rect(r).unwrap();
+        r.center_on((self.pos.x as i32, self.pos.y as i32));
+        renderer.canvas().fill_rect(r).unwrap();
     }
 }
 
@@ -71,14 +68,15 @@ impl Boll for CircleBoll {
         self.boll.update();
     }
 
-    fn draw(&self, canvas: &mut Canvas<Window>, size: u32) {
+    fn draw(&self, renderer: &mut Renderer, size: u32) {
         let val = 255 - std::cmp::min(255, (self.boll.vel.length() * 20.0) as u8);
-        canvas
+        renderer
+           .canvas()
             .filled_circle(
                 self.boll.pos.x as i16,
                 self.boll.pos.y as i16,
                 size as i16,
-                Color::RGBA(val, val, val, 128),
+                (val, val, val, 128),
             )
             .unwrap();
     }