From: Ian Jackson Date: Mon, 22 Mar 2021 01:59:23 +0000 (+0000) Subject: shapelib refactoring: transpose with the Arc X-Git-Tag: otter-0.5.0~519 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=19ef0e46eaa6a1724017ccbe5b06c6401391f6a2;p=otter.git shapelib refactoring: transpose with the Arc Signed-off-by: Ian Jackson --- diff --git a/src/shapelib.rs b/src/shapelib.rs index c6708830..b06a9ab4 100644 --- a/src/shapelib.rs +++ b/src/shapelib.rs @@ -47,12 +47,13 @@ struct ItemData { d: Arc, group: Arc, outline: Outline, - occ: Option>, + occ: OccData, } -#[derive(Debug)] +#[derive(Debug,Clone)] enum OccData { - Internal(OccData_Internal), + None, + Internal(Arc), } #[allow(non_camel_case_types)] @@ -391,9 +392,9 @@ impl Contents { } faces.shrink_to_fit(); - let occultable = match idata.occ.as_ref().map(Deref::deref) { - None => None, - Some(OccData::Internal(occ)) => { + let occultable = match &idata.occ { + OccData::None => None, + OccData::Internal(occ) => { let name = occ.item_name.clone(); let svgd = { let mut svgd = occ.svgd.lock(); @@ -575,18 +576,18 @@ fn load_catalogue(libname: &str, dirname: &str, toml_path: &str) -> Contents { fe.item_spec, gdefn.item_suffix); let occ = match &group.d.occulted { - None => None, + None => OccData::None, Some(OccultationMethod::ByColour { colour }) => { if ! group.d.colours.contains_key(colour.as_str()) { throw!(LLE::OccultationColourMissing(colour.clone())); } - Some(Arc::new(OccData::Internal(OccData_Internal { + OccData::Internal(Arc::new(OccData_Internal { 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)?, svgd: default(), - }))) + })) }, };