From f16002a2cbc8a6972d60d81629d6ae67b21b09f2 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 21 Mar 2021 23:46:16 +0000 Subject: [PATCH] shapelib: Fix centre for `orig_size` pieces Signed-off-by: Ian Jackson --- src/shapelib.rs | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/shapelib.rs b/src/shapelib.rs index 13090a46..dff25205 100644 --- a/src/shapelib.rs +++ b/src/shapelib.rs @@ -197,21 +197,6 @@ impl FaceTransform { #[throws(LLE)] fn from_group(d: &GroupDetails) -> Self { // by this point d.size has already been scaled by scale - let centre = d.centre.map(Ok).unwrap_or_else(|| Ok::<_,LLE>({ - match d.size.as_slice() { - [a] => [a,a], - [a,b] => [a,b], - x => throw!(LLE::WrongNumberOfSizeDimensions { - got: x.len(), - expected: [1,2], - }), - }.iter().cloned().map(|size| { - size * 0.5 / d.scale - }) - .collect::>() - .into_inner() - .unwrap() - }))?; let scale = if ! d.orig_size.is_empty() && ! d.size.is_empty() { izip!(&d.orig_size, &d.size) .map(|(&orig_size, &target_size)| { @@ -226,6 +211,21 @@ impl FaceTransform { let s = d.scale; [s,s] }; + let centre = d.centre.map(Ok).unwrap_or_else(|| Ok::<_,LLE>({ + match d.size.as_slice() { + [a] => [a,a], + [a,b] => [a,b], + x => throw!(LLE::WrongNumberOfSizeDimensions { + got: x.len(), + expected: [1,2], + }), + }.iter().cloned().zip(&scale).map(|(size,scale)| { + size * 0.5 / scale + }) + .collect::>() + .into_inner() + .unwrap() + }))?; FaceTransform { centre, scale } } -- 2.30.2