From 9d91f938b14075dba4ad1640f8bb430ef1dce0f0 Mon Sep 17 00:00:00 2001 From: Michael Sippel Date: Sat, 12 Jun 2021 04:15:32 +0200 Subject: [PATCH] grid view: better range() --- nested/src/grid/mod.rs | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/nested/src/grid/mod.rs b/nested/src/grid/mod.rs index e2692a4..29ea36d 100644 --- a/nested/src/grid/mod.rs +++ b/nested/src/grid/mod.rs @@ -9,6 +9,7 @@ use { }; pub mod offset; +pub mod flatten; //<<<<>>>><<>><><<>><<<*>>><<>><><<>><<<<>>>> @@ -17,21 +18,22 @@ pub trait GridView = IndexView>; //<<<<>>>><<>><><<>><<<*>>><<>><><<>><<<<>>>> impl dyn GridView { - pub fn range(&self) -> RangeInclusive> { - let area = self.area().unwrap_or(Vec::new()); - - Point2::new( - area.iter().map(|p| p.x).min().unwrap_or(i16::MIN), - area.iter().map(|p| p.y).min().unwrap_or(i16::MIN) - ) ..= - Point2::new( - area.iter().map(|p| p.x).max().unwrap_or(i16::MAX), - area.iter().map(|p| p.y).max().unwrap_or(i16::MAX) - ) + pub fn range(&self) -> Range> { + if let Some(area) = self.area() { + Point2::new( + area.iter().map(|p| p.x).min().unwrap_or(0), + area.iter().map(|p| p.y).min().unwrap_or(0) + ) .. + Point2::new( + area.iter().map(|p| p.x+1).max().unwrap_or(0), + area.iter().map(|p| p.y+1).max().unwrap_or(0) + ) + } else { + Point2::new(i16::MIN, i16::MIN) .. Point2::new(i16::MAX, i16::MAX) + } } } - //<<<<>>>><<>><><<>><<<*>>><<>><><<>><<<<>>>> pub struct GridWindowIterator {