chiark / gitweb /
shapelib: Allow FaceTransform::from_group to throw
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 21 Mar 2021 22:13:45 +0000 (22:13 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 21 Mar 2021 22:57:14 +0000 (22:57 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/shapelib.rs

index 708d48a92576bfd81b130ae25ba9c8efb24ddff2..dee0c05761fe905d41c476c6af6e3815b612fd6e 100644 (file)
@@ -194,6 +194,7 @@ impl OutlineTrait for Item { delegate! { to self.outline {
 }}}
 
 impl FaceTransform {
+  #[throws(LLE)]
   fn from_group(d: &GroupDetails) -> Self {
     let centre = d.centre;
     let scale = d.scale;
@@ -323,7 +324,8 @@ impl Contents {
     let desc = descs.push(idata.d.desc.clone());
     descs.shrink_to_fit();
 
-    let xform = FaceTransform::from_group(&idata.group.d);
+    let xform = FaceTransform::from_group(&idata.group.d)
+      .map_err(|e| SpE::InternalError(format!("reckoning transform: {}",&e)))?;
     let mut face = ItemFace { svg, desc, xform };
     let mut faces = index_vec![ face ];
     if idata.group.d.flip {
@@ -485,7 +487,7 @@ fn load_catalogue(libname: &str, dirname: &str, toml_path: &str) -> Contents {
             item_name: Arc::new(subst(&item_name, "_c", &colour)?),
             desc: Html(subst(&fe.desc.0, "_colour", "")?),
             outline: outline.clone(),
-            xform: FaceTransform::from_group(&group.d),
+            xform: FaceTransform::from_group(&group.d)?,
             svgd: default(),
           }))
         },