From: Ian Jackson Date: Tue, 6 Apr 2021 20:23:55 +0000 (+0100) Subject: organise: Apply overlap limit positon to all methods X-Git-Tag: otter-0.5.0~140 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=d045db0ea5f651122fdb9dd18e778c5ef11186b3;p=otter.git organise: Apply overlap limit positon to all methods Signed-off-by: Ian Jackson --- 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) + ) + ) } }