rust/land2d/src/lib.rs
changeset 14135 7f5a591e1c43
parent 14121 69db1d2e4cec
child 14137 3119d665d3c6
equal deleted inserted replaced
14134:09f62bb046ef 14135:7f5a591e1c43
     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 {