From d045db0ea5f651122fdb9dd18e778c5ef11186b3 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 6 Apr 2021 21:23:55 +0100 Subject: [PATCH] organise: Apply overlap limit positon to all methods Signed-off-by: Ian Jackson --- src/organise.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/organise.rs b/src/organise.rs index f7c7789f..e5050821 100644 --- a/src/organise.rs +++ b/src/organise.rs @@ -81,13 +81,19 @@ impl Attempt { #[throws(CoordinateOverflow)] fn br_tile(self, bbox: &Rect) -> Pos { let cnr = bbox.br(); - match self { - A::Nonoverlap => (cnr + PosC::both(MARGIN_INSIDE))?, + let atleast = (HANG_TILE_SHOW - PosC::both(HANG_INSIDE))?; + let want = match self { + A::Nonoverlap => return (cnr + PosC::both(MARGIN_INSIDE))?, A::Inside | A::Abut => (bbox.tl() - bbox.tl().map(|v| v/ 2 ))?, A::AbutCompr => (bbox.tl() - bbox.tl().map(|v| v/ 3 ))?, - A::Hanging => (HANG_TILE_SHOW - PosC::both(HANG_INSIDE))?, - } + A::Hanging => return atleast, + }; + PosC::from_iter_2( + izip!(atleast.coords.iter(), want.coords.iter()).map( + |(v, atleast)| Ord::max(*v,*atleast) + ) + ) } } -- 2.30.2