graph,layout,primitive: Rename "layers" to "rails"

By "layer" we should be referring to the PCB layers. A "rail" shall be
one in a spatial sequence of parallel and topologically linked tracks,
which together shall be called a "railing".
This commit is contained in:
Mikolaj Wielgus 2023-12-13 17:10:57 +00:00
parent f2991af721
commit b8f6b32341
4 changed files with 33 additions and 33 deletions

View File

@ -34,7 +34,7 @@ pub enum VertexIndex {
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
struct TriangulationWeight { struct TriangulationWeight {
vertex: VertexIndex, vertex: VertexIndex,
layers: Vec<LooseBendIndex>, rails: Vec<LooseBendIndex>,
pos: Point, pos: Point,
} }
@ -71,14 +71,14 @@ impl Mesh {
Index::FixedDot(fixed_dot) => { Index::FixedDot(fixed_dot) => {
self.triangulation.add_vertex(TriangulationWeight { self.triangulation.add_vertex(TriangulationWeight {
vertex: fixed_dot.into(), vertex: fixed_dot.into(),
layers: vec![], rails: vec![],
pos: center, pos: center,
})?; })?;
} }
Index::FixedBend(fixed_bend) => { Index::FixedBend(fixed_bend) => {
self.triangulation.add_vertex(TriangulationWeight { self.triangulation.add_vertex(TriangulationWeight {
vertex: fixed_bend.into(), vertex: fixed_bend.into(),
layers: vec![], rails: vec![],
pos: center, pos: center,
})?; })?;
} }
@ -91,7 +91,7 @@ impl Mesh {
Index::LooseBend(loose_bend) => { Index::LooseBend(loose_bend) => {
self.triangulation self.triangulation
.weight_mut(layout.primitive(loose_bend).core().into()) .weight_mut(layout.primitive(loose_bend).core().into())
.layers .rails
.push(loose_bend.into()); .push(loose_bend.into());
} }
_ => (), _ => (),
@ -148,7 +148,7 @@ impl<'a> visit::IntoNeighbors for &'a Mesh {
iter::once(neighbor).chain( iter::once(neighbor).chain(
self.triangulation self.triangulation
.weight(neighbor) .weight(neighbor)
.layers .rails
.iter() .iter()
.map(|index| VertexIndex::from(*index)), .map(|index| VertexIndex::from(*index)),
) )
@ -164,7 +164,7 @@ fn edges(
from_vertices.extend( from_vertices.extend(
triangulation triangulation
.weight(edge.source()) .weight(edge.source())
.layers .rails
.iter() .iter()
.map(|bend| VertexIndex::from(*bend)), .map(|bend| VertexIndex::from(*bend)),
); );
@ -173,7 +173,7 @@ fn edges(
to_vertices.extend( to_vertices.extend(
triangulation triangulation
.weight(edge.target()) .weight(edge.target())
.layers .rails
.iter() .iter()
.map(|bend| VertexIndex::from(*bend)), .map(|bend| VertexIndex::from(*bend)),
); );

View File

@ -12,7 +12,7 @@ use crate::graph::{
}; };
use crate::math::{self, Circle}; use crate::math::{self, Circle};
use crate::shape::{BendShape, DotShape, SegShape, Shape, ShapeTrait}; use crate::shape::{BendShape, DotShape, SegShape, Shape, ShapeTrait};
use crate::traverser::OutwardLayerTraverser; use crate::traverser::OutwardRailTraverser;
#[enum_dispatch] #[enum_dispatch]
pub trait GetGraph { pub trait GetGraph {
@ -50,14 +50,14 @@ pub trait GetOtherEnd<F: GetNodeIndex, T: GetNodeIndex + Into<F>>: GetEnds<F, T>
} }
} }
pub trait TraverseOutward: GetFirstLayer { pub trait TraverseOutward: GetFirstRail {
fn traverse_outward(&self) -> OutwardLayerTraverser { fn traverse_outward(&self) -> OutwardRailTraverser {
OutwardLayerTraverser::new(self.first_layer(), self.graph()) OutwardRailTraverser::new(self.first_rail(), self.graph())
} }
} }
pub trait GetFirstLayer: GetGraph + GetNodeIndex { pub trait GetFirstRail: GetGraph + GetNodeIndex {
fn first_layer(&self) -> Option<LooseBendIndex> { fn first_rail(&self) -> Option<LooseBendIndex> {
self.graph() self.graph()
.neighbors_directed(self.node_index(), Incoming) .neighbors_directed(self.node_index(), Incoming)
.filter(|ni| self.graph().find_edge(self.node_index(), *ni).is_some()) .filter(|ni| self.graph().find_edge(self.node_index(), *ni).is_some())
@ -240,7 +240,7 @@ impl<'a> MakeShape for FixedDot<'a> {
} }
impl<'a> TraverseOutward for FixedDot<'a> {} impl<'a> TraverseOutward for FixedDot<'a> {}
impl<'a> GetFirstLayer for FixedDot<'a> {} impl<'a> GetFirstRail for FixedDot<'a> {}
pub type LooseDot<'a> = GenericPrimitive<'a, LooseDotWeight>; pub type LooseDot<'a> = GenericPrimitive<'a, LooseDotWeight>;
impl_primitive!(LooseDot, LooseDotWeight); impl_primitive!(LooseDot, LooseDotWeight);
@ -406,7 +406,7 @@ impl<'a> GetEnds<FixedDotIndex, FixedDotIndex> for FixedBend<'a> {
impl<'a> GetOtherEnd<FixedDotIndex, FixedDotIndex> for FixedBend<'a> {} impl<'a> GetOtherEnd<FixedDotIndex, FixedDotIndex> for FixedBend<'a> {}
impl<'a> TraverseOutward for FixedBend<'a> {} impl<'a> TraverseOutward for FixedBend<'a> {}
impl<'a> GetFirstLayer for FixedBend<'a> {} impl<'a> GetFirstRail for FixedBend<'a> {}
impl<'a> GetCore for FixedBend<'a> {} // TODO: Fixed bends don't have cores actually. impl<'a> GetCore for FixedBend<'a> {} // TODO: Fixed bends don't have cores actually.
//impl<'a> GetInnerOuter for FixedBend<'a> {} //impl<'a> GetInnerOuter for FixedBend<'a> {}
@ -416,11 +416,11 @@ impl_primitive!(LooseBend, LooseBendWeight);
impl<'a> LooseBend<'a> { impl<'a> LooseBend<'a> {
fn inner_radius(&self) -> f64 { fn inner_radius(&self) -> f64 {
let mut r = 0.0; let mut r = 0.0;
let mut layer = LooseBendIndex::new(self.index.node_index()); let mut rail = LooseBendIndex::new(self.index.node_index());
while let Some(inner) = self.primitive(layer).inner() { while let Some(inner) = self.primitive(rail).inner() {
r += self.primitive(inner).width(); r += self.primitive(inner).width();
layer = inner; rail = inner;
} }
let core_circle = self let core_circle = self

View File

@ -5,7 +5,7 @@ use crate::{
graph::{FixedDotIndex, LooseBendIndex}, graph::{FixedDotIndex, LooseBendIndex},
layout::Layout, layout::Layout,
mesh::{Mesh, VertexIndex}, mesh::{Mesh, VertexIndex},
primitive::{GetFirstLayer, GetInnerOuter}, primitive::{GetFirstRail, GetInnerOuter},
rules::Rules, rules::Rules,
}; };
@ -106,8 +106,8 @@ impl<'a> Tracer<'a> {
) -> Result<SegbendHead, ()> { ) -> Result<SegbendHead, ()> {
let head = self.draw().segbend_around_dot(head, around.into(), width)?; let head = self.draw().segbend_around_dot(head, around.into(), width)?;
if let Some(first_layer) = self.layout.primitive(around).first_layer() { if let Some(first_rail) = self.layout.primitive(around).first_rail() {
self.layout.reattach_bend(first_layer, head.segbend.bend); self.layout.reattach_bend(first_rail, head.segbend.bend);
self.update_outward(head.segbend.bend); self.update_outward(head.segbend.bend);
} }
@ -134,11 +134,11 @@ impl<'a> Tracer<'a> {
} }
fn update_outward(&mut self, bend: LooseBendIndex) { fn update_outward(&mut self, bend: LooseBendIndex) {
let mut layer = bend; let mut rail = bend;
while let Some(outer) = self.layout.primitive(layer).outer() { while let Some(outer) = self.layout.primitive(rail).outer() {
self.draw().update_bow(bend); self.draw().update_bow(bend);
layer = outer; rail = outer;
} }
} }

View File

@ -5,27 +5,27 @@ use crate::{
primitive::{GenericPrimitive, GetInnerOuter}, primitive::{GenericPrimitive, GetInnerOuter},
}; };
pub struct OutwardLayerTraverser<'a> { pub struct OutwardRailTraverser<'a> {
layer: Option<LooseBendIndex>, rail: Option<LooseBendIndex>,
graph: &'a StableDiGraph<Weight, Label, usize>, graph: &'a StableDiGraph<Weight, Label, usize>,
} }
impl<'a> OutwardLayerTraverser<'a> { impl<'a> OutwardRailTraverser<'a> {
pub fn new( pub fn new(
layer: Option<LooseBendIndex>, rail: Option<LooseBendIndex>,
graph: &'a StableDiGraph<Weight, Label, usize>, graph: &'a StableDiGraph<Weight, Label, usize>,
) -> Self { ) -> Self {
Self { layer, graph } Self { rail, graph }
} }
} }
impl<'a> Iterator for OutwardLayerTraverser<'a> { impl<'a> Iterator for OutwardRailTraverser<'a> {
type Item = LooseBendIndex; type Item = LooseBendIndex;
fn next(&mut self) -> Option<Self::Item> { fn next(&mut self) -> Option<Self::Item> {
self.layer.map(|layer| { self.rail.map(|rail| {
self.layer = GenericPrimitive::new(layer, self.graph).outer(); self.rail = GenericPrimitive::new(rail, self.graph).outer();
layer rail
}) })
} }
} }