equal
deleted
inserted
replaced
1 extern crate integral_geometry; |
1 extern crate integral_geometry; |
2 extern crate vec2d; |
2 extern crate vec2d; |
3 |
3 |
4 use std::cmp; |
4 use std::cmp; |
5 |
5 |
6 use integral_geometry::{ArcPoints, EquidistantPoints, Line, Point, Rect, Size, SizeMask}; |
6 use integral_geometry::{ArcPoints, EquidistantPoints, Line, Point, RectInclusive, Size, SizeMask}; |
7 |
7 |
8 pub struct Land2D<T> { |
8 pub struct Land2D<T> { |
9 pixels: vec2d::Vec2D<T>, |
9 pixels: vec2d::Vec2D<T>, |
10 play_size: Size, |
10 play_box: RectInclusive, |
11 play_box: Rect, |
|
12 |
11 |
13 mask: SizeMask, |
12 mask: SizeMask, |
14 } |
13 } |
15 |
14 |
16 impl<T: Copy + PartialEq> Land2D<T> { |
15 impl<T: Copy + PartialEq> Land2D<T> { |
18 let real_size = play_size.next_power_of_two(); |
17 let real_size = play_size.next_power_of_two(); |
19 let top_left = Point::new( |
18 let top_left = Point::new( |
20 ((real_size.width - play_size.width) / 2) as i32, |
19 ((real_size.width - play_size.width) / 2) as i32, |
21 (real_size.height - play_size.height) as i32, |
20 (real_size.height - play_size.height) as i32, |
22 ); |
21 ); |
23 let play_box = Rect::from_size(top_left, play_size); |
22 let play_box = RectInclusive::from_size(top_left, play_size); |
24 Self { |
23 Self { |
25 play_size, |
|
26 play_box, |
24 play_box, |
27 pixels: vec2d::Vec2D::new(real_size, fill_value), |
25 pixels: vec2d::Vec2D::new(real_size, fill_value), |
28 mask: real_size.to_mask(), |
26 mask: real_size.to_mask(), |
29 } |
27 } |
30 } |
28 } |
48 self.pixels.size() |
46 self.pixels.size() |
49 } |
47 } |
50 |
48 |
51 #[inline] |
49 #[inline] |
52 pub fn play_width(&self) -> usize { |
50 pub fn play_width(&self) -> usize { |
53 self.play_size.width |
51 self.play_box.width() |
54 } |
52 } |
55 |
53 |
56 #[inline] |
54 #[inline] |
57 pub fn play_height(&self) -> usize { |
55 pub fn play_height(&self) -> usize { |
58 self.play_size.height |
56 self.play_box.height() |
59 } |
57 } |
60 |
58 |
61 #[inline] |
59 #[inline] |
62 pub fn play_size(&self) -> Size { |
60 pub fn play_size(&self) -> Size { |
63 self.play_size |
61 self.play_box.size() |
64 } |
62 } |
65 |
63 |
66 #[inline] |
64 #[inline] |
67 pub fn play_box(&self) -> Rect { |
65 pub fn play_box(&self) -> RectInclusive { |
68 self.play_box |
66 self.play_box |
69 } |
67 } |
70 |
68 |
71 #[inline] |
69 #[inline] |
72 pub fn is_valid_x(&self, x: i32) -> bool { |
70 pub fn is_valid_x(&self, x: i32) -> bool { |