From 0fde34204fd81cf0903a7b8d5bc2c45fb8767777 Mon Sep 17 00:00:00 2001 From: Ellen Emilia Anna Zscheile Date: Sun, 19 Jan 2025 21:58:59 +0100 Subject: [PATCH] refactor(drawing,geometry): move GetLayer from drawing::graph to geometry --- src/autorouter/selection.rs | 4 ++-- src/board/mod.rs | 4 ++-- src/drawing/bend.rs | 4 ++-- src/drawing/dot.rs | 4 ++-- src/drawing/drawing.rs | 5 ++--- src/drawing/graph.rs | 17 +++++------------ src/drawing/primitive.rs | 4 ++-- src/drawing/seg.rs | 4 ++-- src/geometry/edit.rs | 7 ++----- src/geometry/geometry.rs | 20 +++++++++++++++----- src/geometry/recording_with_rtree.rs | 7 ++----- src/geometry/with_rtree.rs | 3 +-- src/layout/poly.rs | 4 ++-- src/router/draw.rs | 3 ++- src/router/navmesh.rs | 4 ++-- src/specctra/design.rs | 4 ++-- tests/common/mod.rs | 4 ++-- 17 files changed, 49 insertions(+), 53 deletions(-) diff --git a/src/autorouter/selection.rs b/src/autorouter/selection.rs index a3678cf..89b6896 100644 --- a/src/autorouter/selection.rs +++ b/src/autorouter/selection.rs @@ -10,12 +10,12 @@ use serde::{Deserialize, Serialize}; use crate::{ board::{AccessMesadata, BandName, Board, ResolvedSelector}, drawing::{ - graph::{GetLayer, MakePrimitive, PrimitiveIndex}, + graph::{MakePrimitive, PrimitiveIndex}, Collect, }, geometry::{ shape::{AccessShape, Shape}, - GenericNode, + GenericNode, GetLayer, }, graph::{GenericIndex, GetPetgraphIndex}, layout::{poly::PolyWeight, CompoundWeight, NodeIndex}, diff --git a/src/board/mod.rs b/src/board/mod.rs index f009f55..3cb6bdc 100644 --- a/src/board/mod.rs +++ b/src/board/mod.rs @@ -19,11 +19,11 @@ use crate::{ band::BandUid, bend::{BendIndex, BendWeight}, dot::{DotIndex, DotWeight, FixedDotIndex, FixedDotWeight, GeneralDotWeight}, - graph::{GetLayer, GetMaybeNet, PrimitiveIndex, PrimitiveWeight}, + graph::{GetMaybeNet, PrimitiveIndex, PrimitiveWeight}, seg::{FixedSegIndex, FixedSegWeight, SegIndex, SegWeight}, Collect, }, - geometry::{edit::ApplyGeometryEdit, shape::AccessShape, GenericNode}, + geometry::{edit::ApplyGeometryEdit, shape::AccessShape, GenericNode, GetLayer}, graph::GenericIndex, layout::{ poly::{GetMaybeApex, MakePolygon, PolyWeight}, diff --git a/src/drawing/bend.rs b/src/drawing/bend.rs index 067086f..c4d50e0 100644 --- a/src/drawing/bend.rs +++ b/src/drawing/bend.rs @@ -6,12 +6,12 @@ use enum_dispatch::enum_dispatch; use crate::{ drawing::{ - graph::{GetLayer, GetMaybeNet, MakePrimitive, PrimitiveIndex, PrimitiveWeight}, + graph::{GetMaybeNet, MakePrimitive, PrimitiveIndex, PrimitiveWeight}, primitive::{GenericPrimitive, Primitive}, rules::AccessRules, Drawing, }, - geometry::{GetOffset, GetWidth, SetOffset}, + geometry::{GetLayer, GetOffset, GetWidth, SetOffset}, graph::{GenericIndex, GetPetgraphIndex}, }; diff --git a/src/drawing/dot.rs b/src/drawing/dot.rs index 71195f1..66d98e9 100644 --- a/src/drawing/dot.rs +++ b/src/drawing/dot.rs @@ -9,12 +9,12 @@ use petgraph::stable_graph::NodeIndex; use crate::{ drawing::{ - graph::{GetLayer, GetMaybeNet, MakePrimitive, PrimitiveIndex, PrimitiveWeight}, + graph::{GetMaybeNet, MakePrimitive, PrimitiveIndex, PrimitiveWeight}, primitive::{GenericPrimitive, Primitive}, rules::AccessRules, Drawing, }, - geometry::{GetSetPos, GetWidth}, + geometry::{GetLayer, GetSetPos, GetWidth}, graph::{GenericIndex, GetPetgraphIndex}, math::Circle, }; diff --git a/src/drawing/drawing.rs b/src/drawing/drawing.rs index 8e136bb..5d176f6 100644 --- a/src/drawing/drawing.rs +++ b/src/drawing/drawing.rs @@ -16,7 +16,7 @@ use crate::geometry::{ recording_with_rtree::RecordingGeometryWithRtree, with_rtree::BboxedIndex, AccessBendWeight, AccessDotWeight, AccessSegWeight, GenericNode, Geometry, GeometryLabel, - GetOffset, GetSetPos, GetWidth, + GetLayer, GetOffset, GetSetPos, GetWidth, }; use crate::graph::{GenericIndex, GetPetgraphIndex}; use crate::math::NoTangents; @@ -28,7 +28,7 @@ use crate::{ collect::Collect, dot::{DotIndex, DotWeight, FixedDotIndex, FixedDotWeight, LooseDotIndex, LooseDotWeight}, gear::{GearIndex, GetNextGear}, - graph::{GetLayer, GetMaybeNet, IsInLayer, MakePrimitive, PrimitiveIndex, PrimitiveWeight}, + graph::{GetMaybeNet, IsInLayer, MakePrimitive, PrimitiveIndex, PrimitiveWeight}, guide::Guide, loose::{GetPrevNextLoose, Loose, LooseIndex}, primitive::{ @@ -1039,7 +1039,6 @@ impl Drawing { where CW: super::graph::IsInLayer, { - use super::graph::GetLayer; match index { GenericNode::Primitive(primitive) => primitive.primitive(self).layer() == active_layer, GenericNode::Compound(compound) => { diff --git a/src/drawing/graph.rs b/src/drawing/graph.rs index 1cce166..af092ad 100644 --- a/src/drawing/graph.rs +++ b/src/drawing/graph.rs @@ -5,7 +5,10 @@ use enum_dispatch::enum_dispatch; use petgraph::stable_graph::NodeIndex; -use crate::graph::{GenericIndex, GetPetgraphIndex}; +use crate::{ + geometry::GetLayer, + graph::{GenericIndex, GetPetgraphIndex}, +}; use super::{ bend::{FixedBendIndex, FixedBendWeight, LooseBendIndex, LooseBendWeight}, @@ -19,16 +22,6 @@ use super::{ Drawing, }; -pub trait Retag { - type Index: Sized + GetPetgraphIndex + PartialEq + Copy; - fn retag(&self, index: NodeIndex) -> Self::Index; -} - -#[enum_dispatch] -pub trait GetLayer { - fn layer(&self) -> usize; -} - #[enum_dispatch] pub trait IsInLayer { fn is_in_layer(&self, layer: usize) -> bool; @@ -119,7 +112,7 @@ pub enum PrimitiveWeight { LooseBend(LooseBendWeight), } -impl Retag for PrimitiveWeight { +impl crate::geometry::Retag for PrimitiveWeight { type Index = PrimitiveIndex; fn retag(&self, index: NodeIndex) -> PrimitiveIndex { diff --git a/src/drawing/primitive.rs b/src/drawing/primitive.rs index 585e920..03d8d16 100644 --- a/src/drawing/primitive.rs +++ b/src/drawing/primitive.rs @@ -9,11 +9,11 @@ use crate::{ drawing::{ bend::{BendIndex, FixedBendWeight, LooseBendIndex, LooseBendWeight}, dot::{DotIndex, DotWeight, FixedDotIndex, FixedDotWeight, LooseDotIndex, LooseDotWeight}, - graph::{GetLayer, GetMaybeNet, PrimitiveIndex, PrimitiveWeight, Retag}, + graph::{GetMaybeNet, PrimitiveIndex, PrimitiveWeight}, seg::{FixedSegWeight, LoneLooseSegWeight, SegIndex, SeqLooseSegIndex, SeqLooseSegWeight}, Drawing, }, - geometry::{primitive::PrimitiveShape, GenericNode, GetOffset, GetWidth}, + geometry::{primitive::PrimitiveShape, GenericNode, GetLayer, GetOffset, GetWidth, Retag}, graph::{GenericIndex, GetPetgraphIndex}, }; diff --git a/src/drawing/seg.rs b/src/drawing/seg.rs index bb0844b..9626fac 100644 --- a/src/drawing/seg.rs +++ b/src/drawing/seg.rs @@ -6,12 +6,12 @@ use enum_dispatch::enum_dispatch; use crate::{ drawing::{ - graph::{GetLayer, GetMaybeNet, MakePrimitive, PrimitiveIndex, PrimitiveWeight}, + graph::{GetMaybeNet, MakePrimitive, PrimitiveIndex, PrimitiveWeight}, primitive::{GenericPrimitive, Primitive}, rules::AccessRules, Drawing, }, - geometry::GetWidth, + geometry::{GetLayer, GetWidth}, graph::{GenericIndex, GetPetgraphIndex}, }; diff --git a/src/geometry/edit.rs b/src/geometry/edit.rs index cb5496f..e799578 100644 --- a/src/geometry/edit.rs +++ b/src/geometry/edit.rs @@ -4,12 +4,9 @@ use std::{collections::BTreeMap, marker::PhantomData}; -use crate::{ - drawing::graph::{GetLayer, Retag}, - graph::{GenericIndex, GetPetgraphIndex}, -}; +use crate::graph::{GenericIndex, GetPetgraphIndex}; -use super::{AccessBendWeight, AccessDotWeight, AccessSegWeight, GetWidth}; +use super::{AccessBendWeight, AccessDotWeight, AccessSegWeight, GetLayer, GetWidth, Retag}; pub trait ApplyGeometryEdit< PW: GetWidth + GetLayer + TryInto + TryInto + TryInto + Retag + Copy, diff --git a/src/geometry/geometry.rs b/src/geometry/geometry.rs index 51a7348..f0506ad 100644 --- a/src/geometry/geometry.rs +++ b/src/geometry/geometry.rs @@ -11,15 +11,15 @@ use petgraph::{ Direction::{self, Incoming}, }; use serde::{Deserialize, Serialize}; +use specctra_core::rules::AccessRules; use crate::{ drawing::{ - bend::BendWeight, - dot::DotWeight, - graph::{PrimitiveWeight, Retag}, + bend::{BendWeight, FixedBendWeight, LooseBendWeight}, + dot::{DotWeight, FixedDotWeight, LooseDotWeight}, + graph::PrimitiveWeight, primitive::Primitive, - rules::AccessRules, - seg::SegWeight, + seg::{FixedSegWeight, LoneLooseSegWeight, SegWeight, SeqLooseSegWeight}, }, geometry::{ compound::ManageCompounds, @@ -29,6 +29,16 @@ use crate::{ math::Circle, }; +pub trait Retag { + type Index: Sized + GetPetgraphIndex + PartialEq + Copy; + fn retag(&self, index: NodeIndex) -> Self::Index; +} + +#[enum_dispatch] +pub trait GetLayer { + fn layer(&self) -> usize; +} + #[enum_dispatch] pub trait GetSetPos { fn pos(&self) -> Point; diff --git a/src/geometry/recording_with_rtree.rs b/src/geometry/recording_with_rtree.rs index f8ee146..6dc2262 100644 --- a/src/geometry/recording_with_rtree.rs +++ b/src/geometry/recording_with_rtree.rs @@ -8,17 +8,14 @@ use geo::Point; use petgraph::stable_graph::StableDiGraph; use rstar::RTree; -use crate::{ - drawing::graph::{GetLayer, Retag}, - graph::{GenericIndex, GetPetgraphIndex}, -}; +use crate::graph::{GenericIndex, GetPetgraphIndex}; use super::{ compound::ManageCompounds, edit::{ApplyGeometryEdit, GeometryEdit}, with_rtree::{BboxedIndex, GeometryWithRtree}, AccessBendWeight, AccessDotWeight, AccessSegWeight, GenericNode, Geometry, GeometryLabel, - GetWidth, + GetLayer, GetWidth, Retag, }; #[derive(Debug)] diff --git a/src/geometry/with_rtree.rs b/src/geometry/with_rtree.rs index 08fb47d..338f7f9 100644 --- a/src/geometry/with_rtree.rs +++ b/src/geometry/with_rtree.rs @@ -9,12 +9,11 @@ use petgraph::stable_graph::StableDiGraph; use rstar::{primitives::GeomWithData, Envelope, RTree, RTreeObject, AABB}; use crate::{ - drawing::graph::{GetLayer, Retag}, geometry::{ compound::ManageCompounds, primitive::{AccessPrimitiveShape, PrimitiveShape}, AccessBendWeight, AccessDotWeight, AccessSegWeight, GenericNode, Geometry, GeometryLabel, - GetWidth, + GetLayer, GetWidth, Retag, }, graph::{GenericIndex, GetPetgraphIndex}, }; diff --git a/src/layout/poly.rs b/src/layout/poly.rs index 89ea4a7..09b5d81 100644 --- a/src/layout/poly.rs +++ b/src/layout/poly.rs @@ -11,13 +11,13 @@ use geo::{LineString, Point, Polygon}; use crate::{ drawing::{ dot::FixedDotIndex, - graph::{GetLayer, GetMaybeNet, PrimitiveIndex}, + graph::{GetMaybeNet, PrimitiveIndex}, primitive::GetLimbs, rules::AccessRules, seg::SegIndex, Drawing, }, - geometry::GetSetPos, + geometry::{GetLayer, GetSetPos}, graph::{GenericIndex, GetPetgraphIndex}, layout::CompoundWeight, }; diff --git a/src/router/draw.rs b/src/router/draw.rs index 6ec362d..8729e64 100644 --- a/src/router/draw.rs +++ b/src/router/draw.rs @@ -14,13 +14,14 @@ use crate::{ bend::{BendIndex, GeneralBendWeight, LooseBendWeight}, dot::{DotIndex, FixedDotIndex, GeneralDotWeight, LooseDotIndex, LooseDotWeight}, gear::GearIndex, - graph::{GetLayer, GetMaybeNet, MakePrimitive}, + graph::{GetMaybeNet, MakePrimitive}, head::{CaneHead, GetFace, Head}, primitive::GetOtherJoint, rules::AccessRules, seg::{GeneralSegWeight, LoneLooseSegWeight, SeqLooseSegWeight}, DrawingException, Guide, Infringement, }, + geometry::GetLayer, layout::{Layout, LayoutEdit}, math::{Circle, NoTangents}, }; diff --git a/src/router/navmesh.rs b/src/router/navmesh.rs index 357c9f5..a00df94 100644 --- a/src/router/navmesh.rs +++ b/src/router/navmesh.rs @@ -23,12 +23,12 @@ use crate::{ bend::{FixedBendIndex, LooseBendIndex}, dot::FixedDotIndex, gear::{GearIndex, GetNextGear}, - graph::{GetLayer, GetMaybeNet, MakePrimitive, PrimitiveIndex}, + graph::{GetMaybeNet, MakePrimitive, PrimitiveIndex}, primitive::{MakePrimitiveShape, Primitive}, rules::AccessRules, Drawing, }, - geometry::shape::AccessShape, + geometry::{shape::AccessShape, GetLayer}, graph::{GetPetgraphIndex, MakeRef}, layout::Layout, router::astar::MakeEdgeRef, diff --git a/src/specctra/design.rs b/src/specctra/design.rs index f386d42..7d9fbda 100644 --- a/src/specctra/design.rs +++ b/src/specctra/design.rs @@ -14,12 +14,12 @@ use crate::{ board::{AccessMesadata, Board}, drawing::{ dot::{FixedDotWeight, GeneralDotWeight}, - graph::{GetLayer, GetMaybeNet, MakePrimitive}, + graph::{GetMaybeNet, MakePrimitive}, primitive::MakePrimitiveShape, seg::{FixedSegWeight, GeneralSegWeight}, Drawing, }, - geometry::{primitive::PrimitiveShape, GetWidth}, + geometry::{primitive::PrimitiveShape, GetLayer, GetWidth}, layout::{poly::SolidPolyWeight, Layout, LayoutEdit}, math::{Circle, PointWithRotation}, specctra::{ diff --git a/tests/common/mod.rs b/tests/common/mod.rs index 87209c3..738a4a2 100644 --- a/tests/common/mod.rs +++ b/tests/common/mod.rs @@ -12,8 +12,8 @@ use topola::{ Autorouter, }, board::{AccessMesadata, Board}, - drawing::graph::{GetLayer, GetMaybeNet}, - geometry::{shape::MeasureLength, GenericNode}, + drawing::graph::GetMaybeNet, + geometry::{shape::MeasureLength, GenericNode, GetLayer}, graph::{GetPetgraphIndex, MakeRef}, layout::LayoutEdit, router::{navmesh::Navmesh, RouterOptions},