62 lines
2.4 KiB
Rust
62 lines
2.4 KiB
Rust
use crate::layer::Rgba;
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub struct Palette {
|
|
pub default: Rgba,
|
|
pub overrides: Vec<(String, Rgba)>,
|
|
pub via_body: Rgba,
|
|
pub via_drill: Rgba,
|
|
}
|
|
|
|
impl Palette {
|
|
pub fn colour(&self, layer: &str) -> Rgba {
|
|
self.overrides
|
|
.iter()
|
|
.find(|(n, _)| n == layer)
|
|
.map(|(_, c)| *c)
|
|
.unwrap_or(self.default)
|
|
}
|
|
|
|
pub fn with_override(mut self, layer: impl Into<String>, colour: Rgba) -> Self {
|
|
self.overrides.push((layer.into(), colour));
|
|
self
|
|
}
|
|
|
|
pub fn via_body(&self) -> Rgba { self.via_body }
|
|
pub fn via_drill(&self) -> Rgba { self.via_drill }
|
|
}
|
|
|
|
impl Default for Palette {
|
|
fn default() -> Self {
|
|
Self {
|
|
default: Rgba::opaque(180, 180, 180),
|
|
overrides: vec![
|
|
("F.Cu".into(), Rgba::opaque(200, 52, 52)),
|
|
("B.Cu".into(), Rgba::opaque(77, 127, 196)),
|
|
("In1.Cu".into(), Rgba::opaque(127, 200, 127)),
|
|
("In2.Cu".into(), Rgba::opaque(206, 125, 188)),
|
|
("F.Silkscreen".into(), Rgba::opaque(220, 200, 200)),
|
|
("B.Silkscreen".into(), Rgba::opaque(200, 220, 220)),
|
|
("F.SilkS".into(), Rgba::opaque(220, 200, 200)),
|
|
("B.SilkS".into(), Rgba::opaque(200, 220, 220)),
|
|
("F.Mask".into(), Rgba::opaque(102, 0, 102)),
|
|
("B.Mask".into(), Rgba::opaque(102, 0, 102)),
|
|
("F.Paste".into(), Rgba::opaque(180, 180, 180)),
|
|
("B.Paste".into(), Rgba::opaque(180, 180, 180)),
|
|
("F.Fab".into(), Rgba::opaque(150, 115, 60)),
|
|
("B.Fab".into(), Rgba::opaque(150, 115, 60)),
|
|
("F.Courtyard".into(), Rgba::opaque(255, 38, 226)),
|
|
("B.Courtyard".into(), Rgba::opaque(38, 233, 255)),
|
|
("F.CrtYd".into(), Rgba::opaque(255, 38, 226)),
|
|
("B.CrtYd".into(), Rgba::opaque(38, 233, 255)),
|
|
("Edge.Cuts".into(), Rgba::opaque(255, 240, 150)),
|
|
("Margin".into(), Rgba::opaque(255, 120, 120)),
|
|
("Dwgs.User".into(), Rgba::opaque(194, 194, 194)),
|
|
("Cmts.User".into(), Rgba::opaque(89, 148, 220)),
|
|
],
|
|
via_body: Rgba::opaque(200, 170, 80),
|
|
via_drill: Rgba::opaque(30, 30, 30),
|
|
}
|
|
}
|
|
}
|