rust/land2d/src/lib.rs
changeset 14137 3119d665d3c6
parent 14135 7f5a591e1c43
child 14140 3078123e84ea
equal deleted inserted replaced
14135:7f5a591e1c43 14137:3119d665d3c6
     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, RectInclusive, Size, SizeMask};
     6 use integral_geometry::{ArcPoints, EquidistantPoints, Line, Point, Rect, 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_box: RectInclusive,
    10     play_box: Rect,
    11 
       
    12     mask: SizeMask,
    11     mask: SizeMask,
    13 }
    12 }
    14 
    13 
    15 impl<T: Copy + PartialEq> Land2D<T> {
    14 impl<T: Copy + PartialEq> Land2D<T> {
    16     pub fn new(play_size: Size, fill_value: T) -> Self {
    15     pub fn new(play_size: Size, fill_value: T) -> Self {
    17         let real_size = play_size.next_power_of_two();
    16         let real_size = play_size.next_power_of_two();
    18         let top_left = Point::new(
    17         let top_left = Point::new(
    19             ((real_size.width - play_size.width) / 2) as i32,
    18             ((real_size.width - play_size.width) / 2) as i32,
    20             (real_size.height - play_size.height) as i32,
    19             (real_size.height - play_size.height) as i32,
    21         );
    20         );
    22         let play_box = RectInclusive::from_size(top_left, play_size);
    21         let play_box = Rect::from_size(top_left, play_size);
    23         Self {
    22         Self {
    24             play_box,
    23             play_box,
    25             pixels: vec2d::Vec2D::new(real_size, fill_value),
    24             pixels: vec2d::Vec2D::new(real_size, fill_value),
    26             mask: real_size.to_mask(),
    25             mask: real_size.to_mask(),
    27         }
    26         }
    60     pub fn play_size(&self) -> Size {
    59     pub fn play_size(&self) -> Size {
    61         self.play_box.size()
    60         self.play_box.size()
    62     }
    61     }
    63 
    62 
    64     #[inline]
    63     #[inline]
    65     pub fn play_box(&self) -> RectInclusive {
    64     pub fn play_box(&self) -> Rect {
    66         self.play_box
    65         self.play_box
    67     }
    66     }
    68 
    67 
    69     #[inline]
    68     #[inline]
    70     pub fn is_valid_x(&self, x: i32) -> bool {
    69     pub fn is_valid_x(&self, x: i32) -> bool {