diff -r 85645992bc8a -r c6e1769ac9aa rust/land2d/src/lib.rs --- a/rust/land2d/src/lib.rs Fri Oct 19 00:09:45 2018 +0200 +++ b/rust/land2d/src/lib.rs Fri Oct 19 00:28:16 2018 +0200 @@ -82,9 +82,9 @@ self.fill_from_iter(LinePoints::new(from, to), value) } - pub fn fill(&mut self, start_x: i32, start_y: i32, border_value: T, fill_value: T) { - debug_assert!(self.is_valid_coordinate(start_x - 1, start_y)); - debug_assert!(self.is_valid_coordinate(start_x, start_y)); + pub fn fill(&mut self, start_point: Point, border_value: T, fill_value: T) { + debug_assert!(self.is_valid_coordinate(start_point.x - 1, start_point.y)); + debug_assert!(self.is_valid_coordinate(start_point.x, start_point.y)); let mut stack: Vec<(usize, usize, usize, isize)> = Vec::new(); fn push( @@ -102,10 +102,24 @@ } }; - let start_x_l = (start_x - 1) as usize; - let start_x_r = start_x as usize; - push(self, &mut stack, start_x_l, start_x_r, start_y as usize, -1); - push(self, &mut stack, start_x_l, start_x_r, start_y as usize, 1); + let start_x_l = (start_point.x - 1) as usize; + let start_x_r = start_point.x as usize; + push( + self, + &mut stack, + start_x_l, + start_x_r, + start_point.y as usize, + -1, + ); + push( + self, + &mut stack, + start_x_l, + start_x_r, + start_point.y as usize, + 1, + ); loop { let a = stack.pop(); @@ -256,9 +270,9 @@ l.draw_line(Point::new(0, 128), Point::new(64, 96), 1); l.draw_line(Point::new(128, 128), Point::new(64, 96), 1); - l.fill(32, 32, 1, 2); - l.fill(16, 96, 1, 3); - l.fill(60, 100, 1, 4); + l.fill(Point::new(32, 32), 1, 2); + l.fill(Point::new(16, 96), 1, 3); + l.fill(Point::new(60, 100), 1, 4); assert_eq!(l.pixels[0][0], 1); assert_eq!(l.pixels[96][64], 1);