refactor(drawing,geometry): move GetLayer from drawing::graph to geometry

This commit is contained in:
Ellen Emilia Anna Zscheile 2025-01-19 21:58:59 +01:00
parent 61c7b5450f
commit 0fde34204f
17 changed files with 49 additions and 53 deletions

View File

@ -10,12 +10,12 @@ use serde::{Deserialize, Serialize};
use crate::{ use crate::{
board::{AccessMesadata, BandName, Board, ResolvedSelector}, board::{AccessMesadata, BandName, Board, ResolvedSelector},
drawing::{ drawing::{
graph::{GetLayer, MakePrimitive, PrimitiveIndex}, graph::{MakePrimitive, PrimitiveIndex},
Collect, Collect,
}, },
geometry::{ geometry::{
shape::{AccessShape, Shape}, shape::{AccessShape, Shape},
GenericNode, GenericNode, GetLayer,
}, },
graph::{GenericIndex, GetPetgraphIndex}, graph::{GenericIndex, GetPetgraphIndex},
layout::{poly::PolyWeight, CompoundWeight, NodeIndex}, layout::{poly::PolyWeight, CompoundWeight, NodeIndex},

View File

@ -19,11 +19,11 @@ use crate::{
band::BandUid, band::BandUid,
bend::{BendIndex, BendWeight}, bend::{BendIndex, BendWeight},
dot::{DotIndex, DotWeight, FixedDotIndex, FixedDotWeight, GeneralDotWeight}, dot::{DotIndex, DotWeight, FixedDotIndex, FixedDotWeight, GeneralDotWeight},
graph::{GetLayer, GetMaybeNet, PrimitiveIndex, PrimitiveWeight}, graph::{GetMaybeNet, PrimitiveIndex, PrimitiveWeight},
seg::{FixedSegIndex, FixedSegWeight, SegIndex, SegWeight}, seg::{FixedSegIndex, FixedSegWeight, SegIndex, SegWeight},
Collect, Collect,
}, },
geometry::{edit::ApplyGeometryEdit, shape::AccessShape, GenericNode}, geometry::{edit::ApplyGeometryEdit, shape::AccessShape, GenericNode, GetLayer},
graph::GenericIndex, graph::GenericIndex,
layout::{ layout::{
poly::{GetMaybeApex, MakePolygon, PolyWeight}, poly::{GetMaybeApex, MakePolygon, PolyWeight},

View File

@ -6,12 +6,12 @@ use enum_dispatch::enum_dispatch;
use crate::{ use crate::{
drawing::{ drawing::{
graph::{GetLayer, GetMaybeNet, MakePrimitive, PrimitiveIndex, PrimitiveWeight}, graph::{GetMaybeNet, MakePrimitive, PrimitiveIndex, PrimitiveWeight},
primitive::{GenericPrimitive, Primitive}, primitive::{GenericPrimitive, Primitive},
rules::AccessRules, rules::AccessRules,
Drawing, Drawing,
}, },
geometry::{GetOffset, GetWidth, SetOffset}, geometry::{GetLayer, GetOffset, GetWidth, SetOffset},
graph::{GenericIndex, GetPetgraphIndex}, graph::{GenericIndex, GetPetgraphIndex},
}; };

View File

@ -9,12 +9,12 @@ use petgraph::stable_graph::NodeIndex;
use crate::{ use crate::{
drawing::{ drawing::{
graph::{GetLayer, GetMaybeNet, MakePrimitive, PrimitiveIndex, PrimitiveWeight}, graph::{GetMaybeNet, MakePrimitive, PrimitiveIndex, PrimitiveWeight},
primitive::{GenericPrimitive, Primitive}, primitive::{GenericPrimitive, Primitive},
rules::AccessRules, rules::AccessRules,
Drawing, Drawing,
}, },
geometry::{GetSetPos, GetWidth}, geometry::{GetLayer, GetSetPos, GetWidth},
graph::{GenericIndex, GetPetgraphIndex}, graph::{GenericIndex, GetPetgraphIndex},
math::Circle, math::Circle,
}; };

View File

@ -16,7 +16,7 @@ use crate::geometry::{
recording_with_rtree::RecordingGeometryWithRtree, recording_with_rtree::RecordingGeometryWithRtree,
with_rtree::BboxedIndex, with_rtree::BboxedIndex,
AccessBendWeight, AccessDotWeight, AccessSegWeight, GenericNode, Geometry, GeometryLabel, AccessBendWeight, AccessDotWeight, AccessSegWeight, GenericNode, Geometry, GeometryLabel,
GetOffset, GetSetPos, GetWidth, GetLayer, GetOffset, GetSetPos, GetWidth,
}; };
use crate::graph::{GenericIndex, GetPetgraphIndex}; use crate::graph::{GenericIndex, GetPetgraphIndex};
use crate::math::NoTangents; use crate::math::NoTangents;
@ -28,7 +28,7 @@ use crate::{
collect::Collect, collect::Collect,
dot::{DotIndex, DotWeight, FixedDotIndex, FixedDotWeight, LooseDotIndex, LooseDotWeight}, dot::{DotIndex, DotWeight, FixedDotIndex, FixedDotWeight, LooseDotIndex, LooseDotWeight},
gear::{GearIndex, GetNextGear}, gear::{GearIndex, GetNextGear},
graph::{GetLayer, GetMaybeNet, IsInLayer, MakePrimitive, PrimitiveIndex, PrimitiveWeight}, graph::{GetMaybeNet, IsInLayer, MakePrimitive, PrimitiveIndex, PrimitiveWeight},
guide::Guide, guide::Guide,
loose::{GetPrevNextLoose, Loose, LooseIndex}, loose::{GetPrevNextLoose, Loose, LooseIndex},
primitive::{ primitive::{
@ -1039,7 +1039,6 @@ impl<CW: Copy, R: AccessRules> Drawing<CW, R> {
where where
CW: super::graph::IsInLayer, CW: super::graph::IsInLayer,
{ {
use super::graph::GetLayer;
match index { match index {
GenericNode::Primitive(primitive) => primitive.primitive(self).layer() == active_layer, GenericNode::Primitive(primitive) => primitive.primitive(self).layer() == active_layer,
GenericNode::Compound(compound) => { GenericNode::Compound(compound) => {

View File

@ -5,7 +5,10 @@
use enum_dispatch::enum_dispatch; use enum_dispatch::enum_dispatch;
use petgraph::stable_graph::NodeIndex; use petgraph::stable_graph::NodeIndex;
use crate::graph::{GenericIndex, GetPetgraphIndex}; use crate::{
geometry::GetLayer,
graph::{GenericIndex, GetPetgraphIndex},
};
use super::{ use super::{
bend::{FixedBendIndex, FixedBendWeight, LooseBendIndex, LooseBendWeight}, bend::{FixedBendIndex, FixedBendWeight, LooseBendIndex, LooseBendWeight},
@ -19,16 +22,6 @@ use super::{
Drawing, Drawing,
}; };
pub trait Retag {
type Index: Sized + GetPetgraphIndex + PartialEq + Copy;
fn retag(&self, index: NodeIndex<usize>) -> Self::Index;
}
#[enum_dispatch]
pub trait GetLayer {
fn layer(&self) -> usize;
}
#[enum_dispatch] #[enum_dispatch]
pub trait IsInLayer { pub trait IsInLayer {
fn is_in_layer(&self, layer: usize) -> bool; fn is_in_layer(&self, layer: usize) -> bool;
@ -119,7 +112,7 @@ pub enum PrimitiveWeight {
LooseBend(LooseBendWeight), LooseBend(LooseBendWeight),
} }
impl Retag for PrimitiveWeight { impl crate::geometry::Retag for PrimitiveWeight {
type Index = PrimitiveIndex; type Index = PrimitiveIndex;
fn retag(&self, index: NodeIndex<usize>) -> PrimitiveIndex { fn retag(&self, index: NodeIndex<usize>) -> PrimitiveIndex {

View File

@ -9,11 +9,11 @@ use crate::{
drawing::{ drawing::{
bend::{BendIndex, FixedBendWeight, LooseBendIndex, LooseBendWeight}, bend::{BendIndex, FixedBendWeight, LooseBendIndex, LooseBendWeight},
dot::{DotIndex, DotWeight, FixedDotIndex, FixedDotWeight, LooseDotIndex, LooseDotWeight}, dot::{DotIndex, DotWeight, FixedDotIndex, FixedDotWeight, LooseDotIndex, LooseDotWeight},
graph::{GetLayer, GetMaybeNet, PrimitiveIndex, PrimitiveWeight, Retag}, graph::{GetMaybeNet, PrimitiveIndex, PrimitiveWeight},
seg::{FixedSegWeight, LoneLooseSegWeight, SegIndex, SeqLooseSegIndex, SeqLooseSegWeight}, seg::{FixedSegWeight, LoneLooseSegWeight, SegIndex, SeqLooseSegIndex, SeqLooseSegWeight},
Drawing, Drawing,
}, },
geometry::{primitive::PrimitiveShape, GenericNode, GetOffset, GetWidth}, geometry::{primitive::PrimitiveShape, GenericNode, GetLayer, GetOffset, GetWidth, Retag},
graph::{GenericIndex, GetPetgraphIndex}, graph::{GenericIndex, GetPetgraphIndex},
}; };

View File

@ -6,12 +6,12 @@ use enum_dispatch::enum_dispatch;
use crate::{ use crate::{
drawing::{ drawing::{
graph::{GetLayer, GetMaybeNet, MakePrimitive, PrimitiveIndex, PrimitiveWeight}, graph::{GetMaybeNet, MakePrimitive, PrimitiveIndex, PrimitiveWeight},
primitive::{GenericPrimitive, Primitive}, primitive::{GenericPrimitive, Primitive},
rules::AccessRules, rules::AccessRules,
Drawing, Drawing,
}, },
geometry::GetWidth, geometry::{GetLayer, GetWidth},
graph::{GenericIndex, GetPetgraphIndex}, graph::{GenericIndex, GetPetgraphIndex},
}; };

View File

@ -4,12 +4,9 @@
use std::{collections::BTreeMap, marker::PhantomData}; use std::{collections::BTreeMap, marker::PhantomData};
use crate::{ use crate::graph::{GenericIndex, GetPetgraphIndex};
drawing::graph::{GetLayer, Retag},
graph::{GenericIndex, GetPetgraphIndex},
};
use super::{AccessBendWeight, AccessDotWeight, AccessSegWeight, GetWidth}; use super::{AccessBendWeight, AccessDotWeight, AccessSegWeight, GetLayer, GetWidth, Retag};
pub trait ApplyGeometryEdit< pub trait ApplyGeometryEdit<
PW: GetWidth + GetLayer + TryInto<DW> + TryInto<SW> + TryInto<BW> + Retag<Index = PI> + Copy, PW: GetWidth + GetLayer + TryInto<DW> + TryInto<SW> + TryInto<BW> + Retag<Index = PI> + Copy,

View File

@ -11,15 +11,15 @@ use petgraph::{
Direction::{self, Incoming}, Direction::{self, Incoming},
}; };
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use specctra_core::rules::AccessRules;
use crate::{ use crate::{
drawing::{ drawing::{
bend::BendWeight, bend::{BendWeight, FixedBendWeight, LooseBendWeight},
dot::DotWeight, dot::{DotWeight, FixedDotWeight, LooseDotWeight},
graph::{PrimitiveWeight, Retag}, graph::PrimitiveWeight,
primitive::Primitive, primitive::Primitive,
rules::AccessRules, seg::{FixedSegWeight, LoneLooseSegWeight, SegWeight, SeqLooseSegWeight},
seg::SegWeight,
}, },
geometry::{ geometry::{
compound::ManageCompounds, compound::ManageCompounds,
@ -29,6 +29,16 @@ use crate::{
math::Circle, math::Circle,
}; };
pub trait Retag {
type Index: Sized + GetPetgraphIndex + PartialEq + Copy;
fn retag(&self, index: NodeIndex<usize>) -> Self::Index;
}
#[enum_dispatch]
pub trait GetLayer {
fn layer(&self) -> usize;
}
#[enum_dispatch] #[enum_dispatch]
pub trait GetSetPos { pub trait GetSetPos {
fn pos(&self) -> Point; fn pos(&self) -> Point;

View File

@ -8,17 +8,14 @@ use geo::Point;
use petgraph::stable_graph::StableDiGraph; use petgraph::stable_graph::StableDiGraph;
use rstar::RTree; use rstar::RTree;
use crate::{ use crate::graph::{GenericIndex, GetPetgraphIndex};
drawing::graph::{GetLayer, Retag},
graph::{GenericIndex, GetPetgraphIndex},
};
use super::{ use super::{
compound::ManageCompounds, compound::ManageCompounds,
edit::{ApplyGeometryEdit, GeometryEdit}, edit::{ApplyGeometryEdit, GeometryEdit},
with_rtree::{BboxedIndex, GeometryWithRtree}, with_rtree::{BboxedIndex, GeometryWithRtree},
AccessBendWeight, AccessDotWeight, AccessSegWeight, GenericNode, Geometry, GeometryLabel, AccessBendWeight, AccessDotWeight, AccessSegWeight, GenericNode, Geometry, GeometryLabel,
GetWidth, GetLayer, GetWidth, Retag,
}; };
#[derive(Debug)] #[derive(Debug)]

View File

@ -9,12 +9,11 @@ use petgraph::stable_graph::StableDiGraph;
use rstar::{primitives::GeomWithData, Envelope, RTree, RTreeObject, AABB}; use rstar::{primitives::GeomWithData, Envelope, RTree, RTreeObject, AABB};
use crate::{ use crate::{
drawing::graph::{GetLayer, Retag},
geometry::{ geometry::{
compound::ManageCompounds, compound::ManageCompounds,
primitive::{AccessPrimitiveShape, PrimitiveShape}, primitive::{AccessPrimitiveShape, PrimitiveShape},
AccessBendWeight, AccessDotWeight, AccessSegWeight, GenericNode, Geometry, GeometryLabel, AccessBendWeight, AccessDotWeight, AccessSegWeight, GenericNode, Geometry, GeometryLabel,
GetWidth, GetLayer, GetWidth, Retag,
}, },
graph::{GenericIndex, GetPetgraphIndex}, graph::{GenericIndex, GetPetgraphIndex},
}; };

View File

@ -11,13 +11,13 @@ use geo::{LineString, Point, Polygon};
use crate::{ use crate::{
drawing::{ drawing::{
dot::FixedDotIndex, dot::FixedDotIndex,
graph::{GetLayer, GetMaybeNet, PrimitiveIndex}, graph::{GetMaybeNet, PrimitiveIndex},
primitive::GetLimbs, primitive::GetLimbs,
rules::AccessRules, rules::AccessRules,
seg::SegIndex, seg::SegIndex,
Drawing, Drawing,
}, },
geometry::GetSetPos, geometry::{GetLayer, GetSetPos},
graph::{GenericIndex, GetPetgraphIndex}, graph::{GenericIndex, GetPetgraphIndex},
layout::CompoundWeight, layout::CompoundWeight,
}; };

View File

@ -14,13 +14,14 @@ use crate::{
bend::{BendIndex, GeneralBendWeight, LooseBendWeight}, bend::{BendIndex, GeneralBendWeight, LooseBendWeight},
dot::{DotIndex, FixedDotIndex, GeneralDotWeight, LooseDotIndex, LooseDotWeight}, dot::{DotIndex, FixedDotIndex, GeneralDotWeight, LooseDotIndex, LooseDotWeight},
gear::GearIndex, gear::GearIndex,
graph::{GetLayer, GetMaybeNet, MakePrimitive}, graph::{GetMaybeNet, MakePrimitive},
head::{CaneHead, GetFace, Head}, head::{CaneHead, GetFace, Head},
primitive::GetOtherJoint, primitive::GetOtherJoint,
rules::AccessRules, rules::AccessRules,
seg::{GeneralSegWeight, LoneLooseSegWeight, SeqLooseSegWeight}, seg::{GeneralSegWeight, LoneLooseSegWeight, SeqLooseSegWeight},
DrawingException, Guide, Infringement, DrawingException, Guide, Infringement,
}, },
geometry::GetLayer,
layout::{Layout, LayoutEdit}, layout::{Layout, LayoutEdit},
math::{Circle, NoTangents}, math::{Circle, NoTangents},
}; };

View File

@ -23,12 +23,12 @@ use crate::{
bend::{FixedBendIndex, LooseBendIndex}, bend::{FixedBendIndex, LooseBendIndex},
dot::FixedDotIndex, dot::FixedDotIndex,
gear::{GearIndex, GetNextGear}, gear::{GearIndex, GetNextGear},
graph::{GetLayer, GetMaybeNet, MakePrimitive, PrimitiveIndex}, graph::{GetMaybeNet, MakePrimitive, PrimitiveIndex},
primitive::{MakePrimitiveShape, Primitive}, primitive::{MakePrimitiveShape, Primitive},
rules::AccessRules, rules::AccessRules,
Drawing, Drawing,
}, },
geometry::shape::AccessShape, geometry::{shape::AccessShape, GetLayer},
graph::{GetPetgraphIndex, MakeRef}, graph::{GetPetgraphIndex, MakeRef},
layout::Layout, layout::Layout,
router::astar::MakeEdgeRef, router::astar::MakeEdgeRef,

View File

@ -14,12 +14,12 @@ use crate::{
board::{AccessMesadata, Board}, board::{AccessMesadata, Board},
drawing::{ drawing::{
dot::{FixedDotWeight, GeneralDotWeight}, dot::{FixedDotWeight, GeneralDotWeight},
graph::{GetLayer, GetMaybeNet, MakePrimitive}, graph::{GetMaybeNet, MakePrimitive},
primitive::MakePrimitiveShape, primitive::MakePrimitiveShape,
seg::{FixedSegWeight, GeneralSegWeight}, seg::{FixedSegWeight, GeneralSegWeight},
Drawing, Drawing,
}, },
geometry::{primitive::PrimitiveShape, GetWidth}, geometry::{primitive::PrimitiveShape, GetLayer, GetWidth},
layout::{poly::SolidPolyWeight, Layout, LayoutEdit}, layout::{poly::SolidPolyWeight, Layout, LayoutEdit},
math::{Circle, PointWithRotation}, math::{Circle, PointWithRotation},
specctra::{ specctra::{

View File

@ -12,8 +12,8 @@ use topola::{
Autorouter, Autorouter,
}, },
board::{AccessMesadata, Board}, board::{AccessMesadata, Board},
drawing::graph::{GetLayer, GetMaybeNet}, drawing::graph::GetMaybeNet,
geometry::{shape::MeasureLength, GenericNode}, geometry::{shape::MeasureLength, GenericNode, GetLayer},
graph::{GetPetgraphIndex, MakeRef}, graph::{GetPetgraphIndex, MakeRef},
layout::LayoutEdit, layout::LayoutEdit,
router::{navmesh::Navmesh, RouterOptions}, router::{navmesh::Navmesh, RouterOptions},