mirror of https://codeberg.org/topola/topola.git
invoker: added trait description
This commit is contained in:
parent
7a01a76738
commit
63804a0297
|
|
@ -28,28 +28,41 @@ use super::{
|
||||||
|
|
||||||
#[enum_dispatch]
|
#[enum_dispatch]
|
||||||
/// Getter trait to obtain Navigation Mesh
|
/// Getter trait to obtain Navigation Mesh
|
||||||
|
///
|
||||||
|
/// Navigation Mesh is possible routes between
|
||||||
|
/// two points
|
||||||
pub trait GetMaybeNavmesh {
|
pub trait GetMaybeNavmesh {
|
||||||
/// Returns navigation mesh if possible
|
/// Returns Navigation Mesh if possible
|
||||||
fn maybe_navmesh(&self) -> Option<&Navmesh>;
|
fn maybe_navmesh(&self) -> Option<&Navmesh>;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[enum_dispatch]
|
#[enum_dispatch]
|
||||||
/// TODO: Trait to require Navigation Cord implementation details
|
/// Getter for Navigation Cord
|
||||||
|
///
|
||||||
|
/// Navigation Cord is the possible path of
|
||||||
|
/// ongoing autorouting process
|
||||||
pub trait GetMaybeNavcord {
|
pub trait GetMaybeNavcord {
|
||||||
|
/// Gets the Navigation Cord if possible
|
||||||
fn maybe_navcord(&self) -> Option<&NavcordStepper>;
|
fn maybe_navcord(&self) -> Option<&NavcordStepper>;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[enum_dispatch]
|
#[enum_dispatch]
|
||||||
/// TODO: Requires Ghosts implementations
|
/// Requires Ghosts implementations
|
||||||
|
///
|
||||||
|
/// Ghosts are possible shapes of routing
|
||||||
|
/// bands
|
||||||
pub trait GetGhosts {
|
pub trait GetGhosts {
|
||||||
/// Retrieves the ghosts associated with the execution.
|
/// Retrieves the ghosts associated with the execution.
|
||||||
fn ghosts(&self) -> &[PrimitiveShape];
|
fn ghosts(&self) -> &[PrimitiveShape];
|
||||||
}
|
}
|
||||||
|
|
||||||
#[enum_dispatch]
|
#[enum_dispatch]
|
||||||
/// TODO: Defines Obstacles getter implementation
|
/// Getter for the Obstacles
|
||||||
|
///
|
||||||
|
/// Obstacles are shapes of existing bands
|
||||||
|
/// to be avoided by the new band
|
||||||
pub trait GetObstacles {
|
pub trait GetObstacles {
|
||||||
/// Returns possible obstacles
|
/// Returns possible Obstacles
|
||||||
fn obstacles(&self) -> &[PrimitiveIndex];
|
fn obstacles(&self) -> &[PrimitiveIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,13 @@ use crate::drawing::{
|
||||||
use super::rules::AccessRules;
|
use super::rules::AccessRules;
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy)]
|
#[derive(Debug, Clone, Copy)]
|
||||||
|
/// Geometrical structure to define Navigation Cord Head
|
||||||
pub struct Cane {
|
pub struct Cane {
|
||||||
|
/// Loose segment of the Cane
|
||||||
pub seg: SeqLooseSegIndex,
|
pub seg: SeqLooseSegIndex,
|
||||||
|
/// Loose dot of the Cane structure
|
||||||
pub dot: LooseDotIndex,
|
pub dot: LooseDotIndex,
|
||||||
|
/// Bend of the Cane
|
||||||
pub bend: LooseBendIndex,
|
pub bend: LooseBendIndex,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,11 @@ pub trait GetFace {
|
||||||
|
|
||||||
#[enum_dispatch(GetFace)]
|
#[enum_dispatch(GetFace)]
|
||||||
#[derive(Debug, Clone, Copy)]
|
#[derive(Debug, Clone, Copy)]
|
||||||
|
/// Defines possible Head objects
|
||||||
|
///
|
||||||
|
/// Head is the working end of routed band, which can be
|
||||||
|
/// either Bare when nothing has been routed yet, or Cane
|
||||||
|
/// when routed process has been started
|
||||||
pub enum Head {
|
pub enum Head {
|
||||||
Bare(BareHead),
|
Bare(BareHead),
|
||||||
Cane(CaneHead),
|
Cane(CaneHead),
|
||||||
|
|
@ -29,7 +34,9 @@ impl<'a, CW: Copy, R: AccessRules> MakeRef<'a, HeadRef<'a, CW, R>, Drawing<CW, R
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy)]
|
#[derive(Debug, Clone, Copy)]
|
||||||
|
/// Defines not started Head
|
||||||
pub struct BareHead {
|
pub struct BareHead {
|
||||||
|
/// Describes face of not started Head
|
||||||
pub face: FixedDotIndex,
|
pub face: FixedDotIndex,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -40,8 +47,11 @@ impl GetFace for BareHead {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy)]
|
#[derive(Debug, Clone, Copy)]
|
||||||
|
/// Defines Head during routing process
|
||||||
pub struct CaneHead {
|
pub struct CaneHead {
|
||||||
|
/// Describes face of not started Head
|
||||||
pub face: LooseDotIndex,
|
pub face: LooseDotIndex,
|
||||||
|
/// Last cane followed on the unfinished end
|
||||||
pub cane: Cane,
|
pub cane: Cane,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,21 @@ use super::{
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
/// Structure containing information about Navigation Cord Stepper
|
||||||
|
///
|
||||||
|
/// Navigation Cord is a one of chosen possible ways to connect
|
||||||
|
/// both Navigation Vertex
|
||||||
pub struct NavcordStepper {
|
pub struct NavcordStepper {
|
||||||
|
/// Path of the current Navigation Cord
|
||||||
pub path: Vec<NavvertexIndex>,
|
pub path: Vec<NavvertexIndex>,
|
||||||
|
/// Type of Navigaction Cord head
|
||||||
pub head: Head,
|
pub head: Head,
|
||||||
|
/// Width of the cord
|
||||||
pub width: f64,
|
pub width: f64,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl NavcordStepper {
|
impl NavcordStepper {
|
||||||
|
/// Create new Navigation Cord instance
|
||||||
pub fn new(
|
pub fn new(
|
||||||
source: FixedDotIndex,
|
source: FixedDotIndex,
|
||||||
source_navvertex: NavvertexIndex,
|
source_navvertex: NavvertexIndex,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue