From 9fe7023e2f56c236dace42cbe71882f4b34ee494 Mon Sep 17 00:00:00 2001 From: Seppe Stas Date: Thu, 23 Mar 2017 17:22:41 +0100 Subject: [PATCH 1/2] Added support for Power, Mixed and Jumper layout layer types Fixes Redmine issue 1143 --- src/layout/data.rs | 6 ++++++ src/layout/de.rs | 3 +++ src/layout/ser.rs | 3 +++ 3 files changed, 12 insertions(+) diff --git a/src/layout/data.rs b/src/layout/data.rs index 1c16be2..05d0337 100644 --- a/src/layout/data.rs +++ b/src/layout/data.rs @@ -233,6 +233,12 @@ pub struct Layer { pub enum LayerType { /// signal layer Signal, + /// power layer + Power, + /// mixed layer + Mixed, + /// jumper layer + Jumper, /// user layer User, } diff --git a/src/layout/de.rs b/src/layout/de.rs index c1bba08..8e51e9c 100644 --- a/src/layout/de.rs +++ b/src/layout/de.rs @@ -161,6 +161,9 @@ impl FromSexp for LayerType { let x = s.string()?; match &x[..] { "signal" => Ok(LayerType::Signal), + "power" => Ok(LayerType::Power), + "mixed" => Ok(LayerType::Mixed), + "jumper" => Ok(LayerType::Jumper), "user" => Ok(LayerType::User), _ => Err(format!("unknown layertype {} in {}", x, s).into()), } diff --git a/src/layout/ser.rs b/src/layout/ser.rs index 1caa3fd..cf96c34 100644 --- a/src/layout/ser.rs +++ b/src/layout/ser.rs @@ -231,6 +231,9 @@ impl fmt::Display for LayerType { fn fmt(&self, f: &mut fmt::Formatter) -> result::Result<(), fmt::Error> { let s = match *self { LayerType::Signal => "signal", + LayerType::Power => "power", + LayerType::Mixed => "mixed", + LayerType::Jumper => "jumper", LayerType::User => "user", }; write!(f, "{}", s) From 26240bfc9d5a6ea7d5eefaf528b842a7bc35dd72 Mon Sep 17 00:00:00 2001 From: Seppe Stas Date: Thu, 23 Mar 2017 17:33:00 +0100 Subject: [PATCH 2/2] Added support for pad clearance overrides Fixes Redmine issue 1144 --- src/footprint/data.rs | 4 ++++ src/footprint/de.rs | 1 + src/footprint/ser.rs | 1 + 3 files changed, 6 insertions(+) diff --git a/src/footprint/data.rs b/src/footprint/data.rs index 1a8c20d..1cf895f 100644 --- a/src/footprint/data.rs +++ b/src/footprint/data.rs @@ -165,6 +165,8 @@ pub enum Element { At(At), /// 3D model information Model(Model), + /// Clearance override for module + Clearance(f64), /// is the module locked Locked, } @@ -186,6 +188,7 @@ impl BoundingBox for Element { Element::Model(_) | Element::Attr(_) | Element::SolderMaskMargin(_) | + Element::Clearance(_) | Element::Tags(_) | Element::Locked | Element::TStamp(_) => Bound::default(), @@ -211,6 +214,7 @@ impl Named for Element { Element::Model(_) => "Model", Element::TStamp(_) => "Tstamp", Element::SolderMaskMargin(_) => "SolderMaskMargin", + Element::Clearance(_) | Element::Tags(_) => "Tags", Element::Attr(_) => "Attr", Element::Locked => "Locked", diff --git a/src/footprint/de.rs b/src/footprint/de.rs index e7c242d..335e144 100644 --- a/src/footprint/de.rs +++ b/src/footprint/de.rs @@ -390,6 +390,7 @@ impl FromSexp for Element { "path" => wrap(s, parse_string_element, Element::Path), "at" => wrap(s, from_sexp, Element::At), "model" => wrap(s, from_sexp, Element::Model), + "clearance" => wrap(s, parse_float_element, Element::Clearance), _ => Err(format!("unknown element in module: {}", name).into()), } } diff --git a/src/footprint/ser.rs b/src/footprint/ser.rs index b38d25c..4c7b15d 100644 --- a/src/footprint/ser.rs +++ b/src/footprint/ser.rs @@ -35,6 +35,7 @@ impl IntoSexp for Element { Element::Path(ref p) => ("path", p).into(), Element::At(ref p) => p.into_sexp(), Element::Model(ref p) => p.into_sexp(), + Element::Clearance(ref s) => ("clearance", s).into(), Element::Locked => "locked".into(), } }