diff --git a/committed.toml b/committed.toml index 82712d6..1f41ad8 100644 --- a/committed.toml +++ b/committed.toml @@ -33,7 +33,6 @@ allowed_scopes = [ "drawing/band", "drawing/bend", "drawing/cane", - "drawing/collect", "drawing/dot", "drawing/drawing", "drawing/gear", @@ -42,6 +41,7 @@ allowed_scopes = [ "drawing/head", "drawing/loose", "drawing/primitive", + "drawing/query", "drawing/seg", "geometry/compound", "geometry/edit", diff --git a/src/autorouter/autoroute.rs b/src/autorouter/autoroute.rs index e6ea90b..b76545c 100644 --- a/src/autorouter/autoroute.rs +++ b/src/autorouter/autoroute.rs @@ -13,7 +13,7 @@ use crate::{ edit::{BoardDataEdit, BoardEdit}, AccessMesadata, }, - drawing::{band::BandTermsegIndex, graph::PrimitiveIndex, Collect}, + drawing::{band::BandTermsegIndex, graph::PrimitiveIndex}, geometry::{edit::Edit, primitive::PrimitiveShape}, graph::MakeRef, layout::LayoutEdit, diff --git a/src/autorouter/selection.rs b/src/autorouter/selection.rs index 959d25b..afd639b 100644 --- a/src/autorouter/selection.rs +++ b/src/autorouter/selection.rs @@ -9,10 +9,7 @@ use serde::{Deserialize, Serialize}; use crate::{ board::{AccessMesadata, BandName, Board, ResolvedSelector}, - drawing::{ - graph::{MakePrimitive, PrimitiveIndex}, - Collect, - }, + drawing::graph::{MakePrimitive, PrimitiveIndex}, geometry::{ shape::{AccessShape, Shape}, GenericNode, GetLayer, diff --git a/src/board/mod.rs b/src/board/mod.rs index 666cc02..939f91e 100644 --- a/src/board/mod.rs +++ b/src/board/mod.rs @@ -21,7 +21,7 @@ use crate::{ dot::{FixedDotIndex, FixedDotWeight}, graph::PrimitiveIndex, seg::{FixedSegIndex, FixedSegWeight}, - Collect, DrawingException, + DrawingException, }, geometry::{edit::ApplyGeometryEdit, GenericNode, GetLayer}, graph::{GenericIndex, MakeRef}, diff --git a/src/drawing/drawing.rs b/src/drawing/drawing.rs index 6b4f9e9..4379f21 100644 --- a/src/drawing/drawing.rs +++ b/src/drawing/drawing.rs @@ -16,7 +16,6 @@ use crate::{ band::BandTermsegIndex, bend::{BendIndex, BendWeight, FixedBendIndex, LooseBendIndex, LooseBendWeight}, cane::Cane, - collect::Collect, dot::{DotIndex, DotWeight, FixedDotIndex, FixedDotWeight, LooseDotIndex, LooseDotWeight}, gear::GearIndex, graph::{GetMaybeNet, IsInLayer, MakePrimitive, PrimitiveIndex, PrimitiveWeight}, diff --git a/src/drawing/mod.rs b/src/drawing/mod.rs index fb490da..f6a2f87 100644 --- a/src/drawing/mod.rs +++ b/src/drawing/mod.rs @@ -7,7 +7,6 @@ pub mod graph; pub mod band; pub mod bend; mod cane; -mod collect; pub mod dot; mod drawing; pub mod gear; @@ -15,9 +14,9 @@ pub mod guide; pub mod head; pub mod loose; pub mod primitive; +mod query; pub use specctra_core::rules; pub mod seg; pub use cane::Cane; -pub use collect::Collect; pub use drawing::*; diff --git a/src/drawing/collect.rs b/src/drawing/query.rs similarity index 77% rename from src/drawing/collect.rs rename to src/drawing/query.rs index c08a23b..e16c289 100644 --- a/src/drawing/collect.rs +++ b/src/drawing/query.rs @@ -21,16 +21,10 @@ pub struct BandUidError { pub maybe_end: Option, } -pub trait Collect { - fn loose_band_uid(&self, start_loose: LooseIndex) -> Result; - - fn bend_bow(&self, bend: LooseBendIndex) -> Vec; - - fn bend_outward_bows(&self, bend: LooseBendIndex) -> Vec; -} - -impl Collect for Drawing { - fn loose_band_uid(&self, start_loose: LooseIndex) -> Result { +/// Routines implementing various queries on drawing. A query is a routine that +/// returns indices of one or more primitives. +impl Drawing { + pub fn loose_band_uid(&self, start_loose: LooseIndex) -> Result { match ( self.loose_band_first_seg(start_loose), self.loose_band_last_seg(start_loose), @@ -41,6 +35,17 @@ impl Collect for Drawing { } } + pub fn bend_outward_bows(&self, bend: LooseBendIndex) -> Vec { + let mut v = vec![]; + + let mut outwards = self.primitive(bend).outwards(); + while let Some(next) = outwards.walk_next(self) { + v.append(&mut self.bend_bow(next)); + } + + v + } + fn bend_bow(&self, bend: LooseBendIndex) -> Vec { let mut v: Vec = vec![]; v.push(bend.into()); @@ -60,24 +65,6 @@ impl Collect for Drawing { v } - fn bend_outward_bows(&self, bend: LooseBendIndex) -> Vec { - let mut v = vec![]; - - let mut outwards = self.primitive(bend).outwards(); - while let Some(next) = outwards.walk_next(self) { - v.append(&mut self.bend_bow(next)); - } - - v - } -} - -trait CollectPrivate { - fn loose_band_first_seg(&self, start_loose: LooseIndex) -> Option; - fn loose_band_last_seg(&self, start_loose: LooseIndex) -> Option; -} - -impl CollectPrivate for Drawing { fn loose_band_first_seg(&self, start_loose: LooseIndex) -> Option { if let LooseIndex::LoneSeg(seg) = start_loose { return Some(BandTermsegIndex::Lone(seg)); diff --git a/src/layout/collect_bands.rs b/src/layout/collect_bands.rs index 66eebdb..dcc27b6 100644 --- a/src/layout/collect_bands.rs +++ b/src/layout/collect_bands.rs @@ -16,7 +16,6 @@ use crate::{ loose::LooseIndex, primitive::MakePrimitiveShape, rules::AccessRules, - Collect, }, geometry::{ compound::ManageCompounds, diff --git a/src/router/ng/eval.rs b/src/router/ng/eval.rs index f7ea7c0..9bcb147 100644 --- a/src/router/ng/eval.rs +++ b/src/router/ng/eval.rs @@ -14,7 +14,6 @@ use crate::{ head::{BareHead, GetFace as _, Head}, primitive::MakePrimitiveShape as _, rules::AccessRules, - Collect, }, geometry::{primitive::PrimitiveShape, shape::AccessShape as _, shape::MeasureLength as _}, graph::{GenericIndex, GetPetgraphIndex as _}, diff --git a/src/router/ng/mod.rs b/src/router/ng/mod.rs index cab54c7..13bc3ba 100644 --- a/src/router/ng/mod.rs +++ b/src/router/ng/mod.rs @@ -25,7 +25,6 @@ use crate::{ head::{CaneHead, GetFace as _, Head}, primitive::MakePrimitiveShape as _, rules::AccessRules, - Collect as _, }, geometry::{ edit::ApplyGeometryEdit as _,