22#ifndef __PNS_TOPOLOGY_H
23#define __PNS_TOPOLOGY_H
28#include "pns_itemset.h"
42 typedef std::set<JOINT*> JOINT_SET;
49 bool SimplifyLine(
LINE *aLine );
50 ITEM* NearestUnconnectedItem(
JOINT* aStart,
int* aAnchor =
nullptr,
51 int aKindMask = ITEM::ANY_T );
54 const JOINT_SET ConnectedJoints(
JOINT* aStart );
55 const ITEM_SET ConnectedItems(
JOINT* aStart,
int aKindMask = ITEM::ANY_T );
56 const ITEM_SET ConnectedItems(
ITEM* aStart,
int aKindMask = ITEM::ANY_T );
57 int64_t ShortestConnectionLength(
ITEM* aFrom,
ITEM* aTo );
68 std::pair<JOINT*, JOINT*>* aTerminalJoints =
nullptr,
69 bool aFollowLockedSegments =
false );
84 SOLID** aEndPad =
nullptr );
90 const std::set<ITEM*> AssembleCluster(
ITEM* aStart,
int aLayer );
93 const int DP_PARALLELITY_THRESHOLD = 5;
95 bool followTrivialPath(
LINE* aLine,
bool aLeft,
ITEM_SET& aSet, std::set<ITEM*>& aVisited,
96 JOINT** aTerminalJoint =
nullptr );
Basic class for a differential pair.
Definition pns_diff_pair.h:235
Definition pns_itemset.h:37
Base class for PNS router board items.
Definition pns_item.h:57
A 2D point on a given set of layers and belonging to a certain net, that links together a number of b...
Definition pns_joint.h:43
Represents a track on a PCB, connecting two non-trivial joints (that is, vias, pads,...
Definition pns_line.h:61
Keep the router "world" - i.e.
Definition pns_node.h:148
Definition pns_segment.h:39
Definition pns_solid.h:36
Definition pns_topology.h:40
const ITEM_SET AssembleTrivialPath(ITEM *aStart, std::pair< JOINT *, JOINT * > *aTerminalJoints=nullptr, bool aFollowLockedSegments=false)
Assemble a trivial path between two joints given a starting item.
Definition pns_topology.cpp:249
const ITEM_SET AssembleTuningPath(ITEM *aStart, SOLID **aStartPad=nullptr, SOLID **aEndPad=nullptr)
Like AssembleTrivialPath, but follows the track length algorithm, which discards segments that are fu...
Definition pns_topology.cpp:304
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
Definition shape_line_chain.h:81