mirror of https://codeberg.org/topola/topola.git
refactor(drawing,geometry): move GetLayer from drawing::graph to geometry
This commit is contained in:
parent
61c7b5450f
commit
0fde34204f
|
|
@ -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},
|
||||||
|
|
|
||||||
|
|
@ -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},
|
||||||
|
|
|
||||||
|
|
@ -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},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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) => {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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)]
|
||||||
|
|
|
||||||
|
|
@ -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},
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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},
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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::{
|
||||||
|
|
|
||||||
|
|
@ -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},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue