diff -r 230dc46487ea -r 33798b649d9c rust/land2d/src/lib.rs --- a/rust/land2d/src/lib.rs Wed Jan 04 10:40:40 2023 +0100 +++ b/rust/land2d/src/lib.rs Wed Jan 04 10:42:21 2023 +0100 @@ -1,5 +1,5 @@ use std::{cmp, ops::Index, ops::IndexMut}; - +use vec2d::Vec2D; use integral_geometry::{ArcPoints, EquidistantPoints, Line, Point, PotSize, Rect, Size, SizeMask}; pub struct Land2D { @@ -295,6 +295,23 @@ } } +impl From> for Land2D { + fn from(vec: Vec2D) -> Self { + let actual_size = vec.size(); + let pot_size = actual_size.next_power_of_two(); + + assert_eq!(actual_size, pot_size.size()); + + let top_left = Point::new(0, 0); + let play_box = Rect::from_size(top_left, actual_size); + Self { + play_box, + pixels: vec, + mask: pot_size.to_mask(), + } + } +} + #[cfg(test)] mod tests { use super::*;