From: Ian Jackson Date: Mon, 29 Mar 2021 20:37:16 +0000 (+0100) Subject: shapelib: Make the colour a ColourSpec X-Git-Tag: otter-0.5.0~382 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=6643e32f9a29949be71e3ca2ebf9f128ff92d28a;p=otter.git shapelib: Make the colour a ColourSpec Signed-off-by: Ian Jackson --- diff --git a/src/shapelib-toml.rs b/src/shapelib-toml.rs index ecbcbd04..de5bf79b 100644 --- a/src/shapelib-toml.rs +++ b/src/shapelib-toml.rs @@ -172,7 +172,7 @@ pub enum OccultationMethod { /// The description will be different too: `_colour` will be elided, /// along with up to one of any spaces either side of it. ByColour { - colour: String, + colour: ColourSpec, }, ByBack { ilk: OccultIlkName, diff --git a/src/shapelib.rs b/src/shapelib.rs index f5ad04d7..45e80710 100644 --- a/src/shapelib.rs +++ b/src/shapelib.rs @@ -107,6 +107,8 @@ pub enum LibraryLoadError { RepeatedSubstituionToken(&'static str), #[error("{:?}",&self)] MultipleMultipleFaceDefinitions, + #[error("{0}")] + UnsupportedColourSpec(#[from] UnsupportedColourSpec), } impl LibraryLoadError { @@ -636,11 +638,12 @@ fn load_catalogue(libname: &str, dirname: &str, toml_path: &str) -> Contents { let occ = match &group.d.occulted { None => OccData::None, Some(OccultationMethod::ByColour { colour }) => { - if ! group.d.colours.contains_key(colour.as_str()) { - throw!(LLE::OccultationColourMissing(colour.clone())); + if ! group.d.colours.contains_key(colour.0.as_str()) { + throw!(LLE::OccultationColourMissing(colour.0.clone())); } + let colour: Colour = colour.try_into()?; OccData::Internal(Arc::new(OccData_Internal { - item_name: Arc::new(subst(&item_name, "_c", &colour)?), + item_name: Arc::new(subst(&item_name, "_c", &colour.0)?), desc: Html(subst(&fe.desc.0, "_colour", "")?), outline: outline.clone(), xform: FaceTransform::from_group(&group.d)?,