![]() |
KiCad PCB EDA Suite
|
#include <pns_shove.h>
Classes | |
struct | SPRINGBACK_TAG |
Public Types | |
enum | SHOVE_STATUS { SH_OK = 0, SH_NULL, SH_INCOMPLETE, SH_HEAD_MODIFIED, SH_TRY_WALK } |
Public Member Functions | |
SHOVE (NODE *aWorld, ROUTER *aRouter) | |
~SHOVE () | |
virtual LOGGER * | Logger () override |
SHOVE_STATUS | ShoveLines (const LINE &aCurrentHead) |
SHOVE_STATUS | ShoveMultiLines (const ITEM_SET &aHeadSet) |
SHOVE_STATUS | ShoveDraggingVia (const VIA_HANDLE aOldVia, const VECTOR2I &aWhere, VIA_HANDLE &aNewVia) |
SHOVE_STATUS | ShoveObstacleLine (const LINE &aCurLine, const LINE &aObstacleLine, LINE &aResultLine) |
void | ForceClearance (bool aEnabled, int aClearance) |
NODE * | CurrentNode () |
const LINE | NewHead () const |
void | SetInitialLine (LINE &aInitial) |
bool | AddLockedSpringbackNode (NODE *aNode) |
void | UnlockSpringbackNode (NODE *aNode) |
bool | RewindSpringbackTo (NODE *aNode) |
ROUTER * | Router () const |
Return current router settings. More... | |
ROUTING_SETTINGS & | Settings () const |
Return the logger object, allowing to dump geometry to a file. More... | |
void | SetLogger (LOGGER *aLogger) |
void | SetDebugDecorator (DEBUG_DECORATOR *aDecorator) |
Assign a debug decorator allowing this algo to draw extra graphics for visual debugging. More... | |
DEBUG_DECORATOR * | Dbg () const |
const BOX2I & | VisibleViewArea () const |
Protected Attributes | |
DEBUG_DECORATOR * | m_debugDecorator |
ROUTER * | m_router |
Private Types | |
typedef std::vector< SHAPE_LINE_CHAIN > | HULL_SET |
typedef OPT< LINE > | OPT_LINE |
typedef std::pair< LINE, LINE > | LINE_PAIR |
typedef std::vector< LINE_PAIR > | LINE_PAIR_VEC |
Private Member Functions | |
SHOVE_STATUS | shoveLineToHullSet (const LINE &aCurLine, const LINE &aObstacleLine, LINE &aResultLine, const HULL_SET &aHulls) |
NODE * | reduceSpringback (const ITEM_SET &aHeadSet, VIA_HANDLE &aDraggedVia) |
bool | pushSpringback (NODE *aNode, const OPT_BOX2I &aAffectedArea, VIA *aDraggedVia) |
SHOVE_STATUS | shoveLineFromLoneVia (const LINE &aCurLine, const LINE &aObstacleLine, LINE &aResultLine) |
bool | checkShoveDirection (const LINE &aCurLine, const LINE &aObstacleLine, const LINE &aShovedLine) const |
SHOVE_STATUS | onCollidingArc (LINE &aCurrent, ARC *aObstacleArc) |
SHOVE_STATUS | onCollidingLine (LINE &aCurrent, LINE &aObstacle) |
SHOVE_STATUS | onCollidingSegment (LINE &aCurrent, SEGMENT *aObstacleSeg) |
SHOVE_STATUS | onCollidingSolid (LINE &aCurrent, ITEM *aObstacle) |
SHOVE_STATUS | onCollidingVia (ITEM *aCurrent, VIA *aObstacleVia) |
SHOVE_STATUS | onReverseCollidingVia (LINE &aCurrent, VIA *aObstacleVia) |
SHOVE_STATUS | pushOrShoveVia (VIA *aVia, const VECTOR2I &aForce, int aCurrentRank) |
OPT_BOX2I | totalAffectedArea () const |
void | unwindLineStack (LINKED_ITEM *aSeg) |
void | unwindLineStack (ITEM *aItem) |
void | runOptimizer (NODE *aNode) |
bool | pushLineStack (const LINE &aL, bool aKeepCurrentOnTop=false) |
void | popLineStack () |
LINE | assembleLine (const LINKED_ITEM *aSeg, int *aIndex=NULL) |
void | replaceItems (ITEM *aOld, std::unique_ptr< ITEM > aNew) |
void | replaceLine (LINE &aOld, LINE &aNew) |
SHOVE_STATUS | shoveIteration (int aIter) |
SHOVE_STATUS | shoveMainLoop () |
int | getClearance (const ITEM *aA, const ITEM *aB) const |
int | getHoleClearance (const ITEM *aA, const ITEM *aB) const |
void | sanityCheck (LINE *aOld, LINE *aNew) |
Private Attributes | |
OPT_BOX2I | m_affectedArea |
std::vector< SPRINGBACK_TAG > | m_nodeStack |
std::vector< LINE > | m_lineStack |
std::vector< LINE > | m_optimizerQueue |
NODE * | m_root |
NODE * | m_currentNode |
int | m_restrictSpringbackTagId |
OPT_LINE | m_newHead |
LOGGER | m_logger |
VIA * | m_draggedVia |
int | m_iter |
int | m_forceClearance |
bool | m_multiLineMode |
|
private |
Definition at line 94 of file pns_shove.h.
|
private |
Definition at line 96 of file pns_shove.h.
|
private |
Definition at line 97 of file pns_shove.h.
|
private |
Definition at line 95 of file pns_shove.h.
Enumerator | |
---|---|
SH_OK | |
SH_NULL | |
SH_INCOMPLETE | |
SH_HEAD_MODIFIED | |
SH_TRY_WALK |
Definition at line 52 of file pns_shove.h.
Definition at line 100 of file pns_shove.cpp.
References PNS::ROUTER_IFACE::GetDebugDecorator(), PNS::ROUTER::GetInterface(), m_currentNode, m_draggedVia, m_forceClearance, m_iter, m_multiLineMode, m_restrictSpringbackTagId, m_root, NULL, and PNS::ALGO_BASE::SetDebugDecorator().
PNS::SHOVE::~SHOVE | ( | ) |
Definition at line 116 of file pns_shove.cpp.
bool PNS::SHOVE::AddLockedSpringbackNode | ( | NODE * | aNode | ) |
Definition at line 1685 of file pns_shove.cpp.
References PNS::SHOVE::SPRINGBACK_TAG::m_locked, PNS::SHOVE::SPRINGBACK_TAG::m_node, and m_nodeStack.
|
private |
Definition at line 121 of file pns_shove.cpp.
References PNS::NODE::AssembleLine(), and m_currentNode.
Referenced by onCollidingArc(), onCollidingSegment(), onReverseCollidingVia(), pushOrShoveVia(), and shoveIteration().
|
private |
Definition at line 134 of file pns_shove.cpp.
References SHAPE_LINE_CHAIN::POINT_INSIDE_TRACKER::AddPolyline(), PNS::LINE::CLine(), PNS::LINE::CPoint(), and SHAPE_LINE_CHAIN::Reverse().
Referenced by shoveLineToHullSet().
NODE * PNS::SHOVE::CurrentNode | ( | ) |
Definition at line 1664 of file pns_shove.cpp.
References m_nodeStack, and m_root.
Referenced by PNS::DIFF_PAIR_PLACER::rhShoveOnly().
|
inlineinherited |
Definition at line 78 of file pns_algo_base.h.
References PNS::ALGO_BASE::m_debugDecorator.
Referenced by PNS::MEANDER_PLACER::doMove(), PNS::COMPONENT_DRAGGER::Drag(), PNS::MEANDER_SKEW_PLACER::Move(), PNS::DP_MEANDER_PLACER::Move(), onCollidingArc(), onCollidingLine(), onCollidingSegment(), onCollidingSolid(), PNS::DRAGGER::optimizeAndUpdateDraggedLine(), replaceLine(), PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkOnly(), runOptimizer(), shoveIteration(), ShoveLines(), shoveLineToHullSet(), ShoveObstacleLine(), PNS::WALKAROUND::singleStep(), PNS::DRAGGER::Start(), and PNS::DRAGGER::tryWalkaround().
|
inline |
Definition at line 75 of file pns_shove.h.
References m_forceClearance.
Referenced by PNS::DIFF_PAIR_PLACER::attemptWalk().
Definition at line 76 of file pns_shove.cpp.
References PNS::NODE::GetClearance(), m_currentNode, and m_forceClearance.
Referenced by onCollidingVia(), shoveLineFromLoneVia(), and ShoveObstacleLine().
Definition at line 84 of file pns_shove.cpp.
References PNS::NODE::GetHoleClearance(), m_currentNode, and m_forceClearance.
Referenced by onCollidingVia(), shoveLineFromLoneVia(), and ShoveObstacleLine().
|
inlineoverridevirtual |
const LINE PNS::SHOVE::NewHead | ( | ) | const |
|
private |
Definition at line 463 of file pns_shove.cpp.
References PNS::DEBUG_DECORATOR::AddLine(), assembleLine(), PNS::DEBUG_DECORATOR::BeginGroup(), PNS::ARC::CLine(), PNS::LINE::CLine(), PNS::ALGO_BASE::Dbg(), PNS::DEBUG_DECORATOR::EndGroup(), Format(), PNS::LINE::HasLockedSegments(), PNS::ITEM::LayersOverlap(), SHAPE_LINE_CHAIN::Length(), m_iter, m_multiLineMode, m_newHead, PNS::LINE::Marker(), PNS::MK_HEAD, pushLineStack(), PNS::LINE::Rank(), replaceLine(), sanityCheck(), PNS::LINE::SetRank(), SH_INCOMPLETE, SH_OK, SH_TRY_WALK, and ShoveObstacleLine().
Referenced by shoveIteration().
|
private |
Definition at line 526 of file pns_shove.cpp.
References PNS::DEBUG_DECORATOR::AddLine(), PNS::DEBUG_DECORATOR::BeginGroup(), PNS::LINE::CLine(), PNS::ALGO_BASE::Dbg(), m_multiLineMode, m_newHead, PNS::LINE::Marker(), PNS::MK_HEAD, pushLineStack(), PNS::LINE::Rank(), replaceLine(), sanityCheck(), PNS::LINE::SetRank(), SH_INCOMPLETE, SH_OK, and ShoveObstacleLine().
Referenced by shoveIteration().
|
private |
Definition at line 396 of file pns_shove.cpp.
References PNS::DEBUG_DECORATOR::AddLine(), PNS::DEBUG_DECORATOR::AddSegment(), assembleLine(), PNS::DEBUG_DECORATOR::BeginGroup(), PNS::LINE::CLine(), PNS::ALGO_BASE::Dbg(), PNS::DEBUG_DECORATOR::EndGroup(), Format(), PNS::LINE::HasLockedSegments(), PNS::ITEM::LayersOverlap(), SHAPE_LINE_CHAIN::Length(), m_iter, m_multiLineMode, m_newHead, PNS::LINE::Marker(), PNS::DEBUG_DECORATOR::Message(), PNS::MK_HEAD, pushLineStack(), PNS::LINE::Rank(), replaceLine(), sanityCheck(), PNS::SEGMENT::Seg(), PNS::LINE::SetRank(), SH_INCOMPLETE, SH_OK, SH_TRY_WALK, and ShoveObstacleLine().
Referenced by shoveIteration().
|
private |
Definition at line 567 of file pns_shove.cpp.
References PNS::DEBUG_DECORATOR::AddLine(), PNS::TOPOLOGY::AssembleCluster(), PNS::DEBUG_DECORATOR::BeginGroup(), PNS::LINK_HOLDER::ClearLinks(), PNS::LINE::CLine(), PNS::ITEM::Collide(), PNS::ALGO_BASE::Dbg(), PNS::WALKAROUND::DONE, dummy(), PNS::DEBUG_DECORATOR::EndGroup(), PNS::LINE::EndsWithVia(), PNS::NODE::FindJoint(), PNS::LINE::HasLoops(), PNS::ITEM::Layers(), PNS::LINE::Line(), PNS::JOINT::LinkList(), m_currentNode, m_lineStack, m_multiLineMode, m_newHead, PNS::LINE::Mark(), PNS::LINE::Marker(), PNS::MK_HEAD, NULL, onCollidingVia(), popLineStack(), PNS::VIA::Pos(), pushLineStack(), PNS::LINE::Rank(), replaceLine(), PNS::WALKAROUND::RestrictToSet(), PNS::WALKAROUND::Route(), PNS::ALGO_BASE::Router(), sanityCheck(), PNS::WALKAROUND::SetIterationLimit(), PNS::LINE::SetRank(), PNS::WALKAROUND::SetSingleDirection(), PNS::WALKAROUND::SetSolidsOnly(), PNS::ALGO_BASE::Settings(), SH_INCOMPLETE, SH_OK, ShoveObstacleLine(), SHAPE_LINE_CHAIN::Simplify(), LAYER_RANGE::Start(), PNS::LINE::Unmark(), PNS::LINE::Via(), and PNS::ITEM::VIA_T.
Referenced by shoveIteration().
|
private |
Definition at line 885 of file pns_shove.cpp.
References SHAPE_COMPOUND::AddShape(), SHAPE::Clone(), SHAPE::Collide(), PNS::VIA::Diameter(), PNS::VIA::Drill(), PNS::LINE::EndsWithVia(), getClearance(), getHoleClearance(), PNS::ITEM::LINE_T, PNS::LOGGER::Log(), m_iter, m_logger, PNS::ITEM::OfKind(), PNS_HULL_MARGIN, PNS::VIA::Pos(), pushOrShoveVia(), PNS::ITEM::Rank(), PNS::VIA::Shape(), PNS::LINE::Shape(), PNS::ITEM::Shape(), PNS::ITEM::SOLID_T, PNS::LINE::Via(), and PNS::LINE::Width().
Referenced by onCollidingSolid(), and shoveIteration().
|
private |
Definition at line 939 of file pns_shove.cpp.
References PNS::LINE::AppendVia(), PNS::ITEM::ARC_T, assembleLine(), SHAPE_LINE_CHAIN::Clear(), PNS::LINK_HOLDER::ClearLinks(), PNS::LINE::CLine(), PNS::LINE::EndsWithVia(), PNS::NODE::FindJoint(), PNS::LINE::Line(), PNS::JOINT::LinkList(), PNS::LOGGER::Log(), m_currentNode, m_iter, m_logger, PNS::VIA::Pos(), pushLineStack(), PNS::LINE::Rank(), PNS::LINE::RemoveVia(), replaceLine(), PNS::ITEM::SEGMENT_T, PNS::LINE::SetRank(), PNS::LINE::SetShape(), SH_INCOMPLETE, SH_OK, ShoveObstacleLine(), unwindLineStack(), and PNS::LINE::Via().
Referenced by shoveIteration().
|
private |
Definition at line 1075 of file pns_shove.cpp.
References PNS::LINK_HOLDER::Links(), m_lineStack, and m_optimizerQueue.
Referenced by onCollidingSolid(), and shoveIteration().
|
private |
Definition at line 1056 of file pns_shove.cpp.
References PNS::LINE::IsLinkedChecked(), m_lineStack, m_optimizerQueue, and PNS::LINE::SegmentCount().
Referenced by onCollidingArc(), onCollidingLine(), onCollidingSegment(), onCollidingSolid(), onReverseCollidingVia(), pushOrShoveVia(), shoveIteration(), ShoveLines(), shoveMainLoop(), and ShoveMultiLines().
|
private |
Definition at line 758 of file pns_shove.cpp.
References PNS::ITEM::ARC_T, assembleLine(), PNS::Clone(), PNS::NODE::FindJoint(), PNS::ITEM::IsLocked(), PNS::LOGGER::Log(), m_currentNode, m_draggedVia, m_logger, m_multiLineMode, m_newHead, PNS::ITEM::Marker(), PNS::MK_HEAD, PNS::VIA::Pos(), pushLineStack(), PNS::NODE::Remove(), replaceItems(), replaceLine(), VECTOR2< T >::Resize(), PNS::ITEM::SEGMENT_T, SH_INCOMPLETE, SH_OK, SH_TRY_WALK, unwindLineStack(), VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by onCollidingVia(), and ShoveDraggingVia().
|
private |
Definition at line 721 of file pns_shove.cpp.
References PNS::SHOVE::SPRINGBACK_TAG::m_affectedArea, PNS::SHOVE::SPRINGBACK_TAG::m_draggedVia, PNS::SHOVE::SPRINGBACK_TAG::m_locked, PNS::SHOVE::SPRINGBACK_TAG::m_node, m_nodeStack, PNS::SHOVE::SPRINGBACK_TAG::m_seq, and PNS::VIA::MakeHandle().
Referenced by ShoveDraggingVia(), ShoveLines(), and ShoveMultiLines().
|
private |
Definition at line 693 of file pns_shove.cpp.
References PNS::NODE::CheckColliding(), PNS::SHOVE::SPRINGBACK_TAG::m_draggedVia, PNS::SHOVE::SPRINGBACK_TAG::m_locked, PNS::SHOVE::SPRINGBACK_TAG::m_node, m_nodeStack, m_root, and PNS::VIA_HANDLE::valid.
Referenced by ShoveDraggingVia(), ShoveLines(), and ShoveMultiLines().
Definition at line 49 of file pns_shove.cpp.
References PNS::ChangedArea(), m_affectedArea, m_currentNode, and PNS::NODE::Replace().
Referenced by pushOrShoveVia().
Definition at line 59 of file pns_shove.cpp.
References PNS::DEBUG_DECORATOR::AddBox(), PNS::ChangedArea(), PNS::ALGO_BASE::Dbg(), m_affectedArea, m_currentNode, and PNS::NODE::Replace().
Referenced by onCollidingArc(), onCollidingLine(), onCollidingSegment(), onCollidingSolid(), onReverseCollidingVia(), and pushOrShoveVia().
bool PNS::SHOVE::RewindSpringbackTo | ( | NODE * | aNode | ) |
Definition at line 1696 of file pns_shove.cpp.
References PNS::NODE::KillChildren(), and m_nodeStack.
|
inlineinherited |
Return current router settings.
Definition at line 54 of file pns_algo_base.h.
References PNS::ALGO_BASE::m_router.
Referenced by PNS::DIFF_PAIR_PLACER::attemptWalk(), PNS::MEANDER_PLACER::CommitPlacement(), PNS::DP_MEANDER_PLACER::CommitPlacement(), PNS::DIFF_PAIR_PLACER::CommitPlacement(), PNS::LINE_PLACER::CommitPlacement(), PNS::COMPONENT_DRAGGER::FixRoute(), PNS::DRAGGER::FixRoute(), PNS::DIFF_PAIR_PLACER::initPlacement(), PNS::LINE_PLACER::initPlacement(), onCollidingSolid(), PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkOnly(), PNS::MEANDER_SKEW_PLACER::Start(), PNS::MEANDER_PLACER::Start(), PNS::DP_MEANDER_PLACER::Start(), PNS::DRAGGER::Start(), PNS::DIFF_PAIR_PLACER::Start(), and PNS::DRAGGER::tryWalkaround().
|
private |
Definition at line 1582 of file pns_shove.cpp.
References PNS::NODE::Add(), PNS::DEBUG_DECORATOR::AddBox(), PNS::ITEM::ANY_T, PNS::LINE::CLine(), PNS::ALGO_BASE::Dbg(), m_optimizerQueue, PNS::OPTIMIZER::MERGE_OBTUSE, PNS::OPTIMIZER::MERGE_SEGMENTS, PNS::MK_HEAD, PNS::OE_FULL, PNS::OE_LOW, PNS::OE_MEDIUM, PNS::OPTIMIZER::Optimize(), PNS::ROUTING_SETTINGS::OptimizerEffort(), PNS::NODE::Remove(), PNS::OPTIMIZER::RESTRICT_AREA, PNS::OPTIMIZER::SetCollisionMask(), PNS::OPTIMIZER::SetEffortLevel(), PNS::OPTIMIZER::SetRestrictArea(), PNS::ALGO_BASE::Settings(), PNS::OPTIMIZER::SMART_PADS, totalAffectedArea(), and PNS::ALGO_BASE::VisibleViewArea().
Referenced by ShoveDraggingVia(), ShoveLines(), and ShoveMultiLines().
Definition at line 93 of file pns_shove.cpp.
References PNS::LINE::CPoint().
Referenced by onCollidingArc(), onCollidingLine(), onCollidingSegment(), and onCollidingSolid().
|
inlineinherited |
Assign a debug decorator allowing this algo to draw extra graphics for visual debugging.
Definition at line 73 of file pns_algo_base.h.
References PNS::ALGO_BASE::m_debugDecorator.
Referenced by PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkOnly(), SHOVE(), and PNS::DRAGGER::tryWalkaround().
void PNS::SHOVE::SetInitialLine | ( | LINE & | aInitial | ) |
Definition at line 1678 of file pns_shove.cpp.
References PNS::NODE::Branch(), m_root, and PNS::NODE::Remove().
|
inlineinherited |
Definition at line 65 of file pns_algo_base.h.
References PNS::ALGO_BASE::m_logger.
Referenced by PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkOnly(), and PNS::DRAGGER::tryWalkaround().
|
inherited |
Return the logger object, allowing to dump geometry to a file.
Definition at line 28 of file pns_algo_base.cpp.
References PNS::ALGO_BASE::m_router, and PNS::ROUTER::Settings().
Referenced by PNS::DIFF_PAIR_PLACER::attemptWalk(), PNS::LINE_PLACER::buildInitialLine(), PNS::DRAGGER::dragMarkObstacles(), PNS::DRAGGER::dragShove(), PNS::DRAGGER::dragWalkaround(), PNS::COMPONENT_DRAGGER::FixRoute(), PNS::DRAGGER::FixRoute(), PNS::DIFF_PAIR_PLACER::FixRoute(), PNS::LINE_PLACER::FixRoute(), PNS::DIFF_PAIR_PLACER::initPlacement(), PNS::LINE_PLACER::initPlacement(), PNS::LINE_PLACER::Move(), onCollidingSolid(), PNS::DRAGGER::optimizeAndUpdateDraggedLine(), PNS::LINE_PLACER::rhMarkObstacles(), PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkOnly(), PNS::LINE_PLACER::routeStep(), runOptimizer(), shoveMainLoop(), PNS::DRAGGER::Start(), PNS::LINE_PLACER::Start(), and PNS::DRAGGER::tryWalkaround().
SHOVE::SHOVE_STATUS PNS::SHOVE::ShoveDraggingVia | ( | const VIA_HANDLE | aOldVia, |
const VECTOR2I & | aWhere, | ||
VIA_HANDLE & | aNewVia | ||
) |
Definition at line 1512 of file pns_shove.cpp.
References PNS::ITEM_SET::Add(), PNS::NODE::Branch(), PNS::NODE::ClearRanks(), PNS::findViaByHandle(), m_affectedArea, m_currentNode, m_draggedVia, m_lineStack, m_newHead, m_optimizerQueue, PNS::VIA::MakeHandle(), PNS::ITEM::Mark(), PNS::MK_HEAD, NULL, PNS::VIA::Pos(), pushOrShoveVia(), pushSpringback(), reduceSpringback(), runOptimizer(), PNS::VIA::SetPos(), PNS::ITEM::SetRank(), SH_HEAD_MODIFIED, SH_INCOMPLETE, SH_OK, shoveMainLoop(), and PNS::VIA_HANDLE::valid.
|
private |
Definition at line 1104 of file pns_shove.cpp.
References PNS::ITEM::ARC_T, assembleLine(), PNS::ALGO_BASE::Dbg(), PNS::LINE::EndsWithVia(), PNS::ITEM::Kind(), m_currentNode, m_lineStack, PNS::NODE::NearestObstacle(), PNS::ITEM::OfKind(), onCollidingArc(), onCollidingLine(), onCollidingSegment(), onCollidingSolid(), onCollidingVia(), onReverseCollidingVia(), popLineStack(), pushLineStack(), PNS::ITEM::Rank(), PNS::LINE::Rank(), PNS::ITEM::SEGMENT_T, PNS::DEBUG_DECORATOR::SetIteration(), SH_INCOMPLETE, SH_NULL, SH_OK, SH_TRY_WALK, PNS::ITEM::SOLID_T, unwindLineStack(), and PNS::ITEM::VIA_T.
Referenced by shoveMainLoop().
|
private |
Definition at line 154 of file pns_shove.cpp.
References PNS::ITEM::Collide(), PNS::LINE::CPoint(), SHAPE_LINE_CHAIN::CPoint(), PNS::VIA::Diameter(), PNS::VIA::Drill(), getClearance(), getHoleClearance(), PNS::VIA::Hull(), PNS::ITEM::Layer(), SHAPE_LINE_CHAIN::Length(), m_currentNode, SHAPE_LINE_CHAIN::PointCount(), PNS::LINE::SetShape(), SH_INCOMPLETE, SH_OK, PNS::LINE::Via(), PNS::LINE::Walkaround(), and PNS::LINE::Width().
Referenced by ShoveObstacleLine().
SHOVE::SHOVE_STATUS PNS::SHOVE::ShoveLines | ( | const LINE & | aCurrentHead | ) |
Definition at line 1297 of file pns_shove.cpp.
References PNS::ITEM_SET::Add(), PNS::NODE::Add(), PNS::DEBUG_DECORATOR::AddLine(), PNS::DEBUG_DECORATOR::BeginGroup(), PNS::NODE::Branch(), PNS::NODE::CheckColliding(), PNS::LOGGER::Clear(), PNS::LINK_HOLDER::ClearLinks(), PNS::NODE::ClearRanks(), PNS::LINE::CLine(), PNS::Clone(), PNS::LINE::CPoint(), PNS::ALGO_BASE::Dbg(), PNS::DEBUG_DECORATOR::EndGroup(), PNS::LINE::EndsWithVia(), Format(), PNS::NODE::LockJoint(), m_affectedArea, m_currentNode, m_iter, m_lineStack, m_logger, m_multiLineMode, m_newHead, m_optimizerQueue, PNS::LINE::Mark(), PNS::DEBUG_DECORATOR::Message(), PNS::MK_HEAD, pushLineStack(), pushSpringback(), reduceSpringback(), PNS::NODE::RemoveByMarker(), runOptimizer(), PNS::LINE::SegmentCount(), PNS::VIA::SetPos(), PNS::LINE::SetRank(), SH_HEAD_MODIFIED, SH_INCOMPLETE, SH_OK, shoveMainLoop(), PNS::LINE::Via(), and PNS::LINE::Width().
|
private |
Definition at line 199 of file pns_shove.cpp.
References PNS::DEBUG_DECORATOR::AddLine(), checkShoveDirection(), PNS::LINE::CLine(), PNS::ITEM::Collide(), SHAPE_LINE_CHAIN::CompareGeometry(), PNS::LINE::CPoint(), SHAPE_LINE_CHAIN::CPoint(), PNS::ALGO_BASE::Dbg(), PNS::NODE::FindJoint(), SHAPE_LINE_CHAIN::Format(), PNS::JOINT::LinkList(), m_currentNode, PNS::LINE::Marker(), PNS::MK_HEAD, SHAPE_LINE_CHAIN::PointCount(), SHAPE_LINE_CHAIN::SelfIntersecting(), PNS::LINE::SetShape(), SH_INCOMPLETE, SH_OK, SHAPE_LINE_CHAIN::Simplify(), and PNS::LINE::Walkaround().
Referenced by ShoveObstacleLine().
|
private |
Definition at line 1241 of file pns_shove.cpp.
References PNS::TIME_LIMIT::Expired(), PNS::NODE::JointCount(), m_affectedArea, m_currentNode, m_draggedVia, m_iter, m_lineStack, m_root, pushLineStack(), PNS::TIME_LIMIT::Restart(), PNS::ALGO_BASE::Settings(), SH_INCOMPLETE, SH_OK, shoveIteration(), PNS::ROUTING_SETTINGS::ShoveIterationLimit(), and PNS::ROUTING_SETTINGS::ShoveTimeLimit().
Referenced by ShoveDraggingVia(), ShoveLines(), and ShoveMultiLines().
SHOVE::SHOVE_STATUS PNS::SHOVE::ShoveMultiLines | ( | const ITEM_SET & | aHeadSet | ) |
Definition at line 1413 of file pns_shove.cpp.
References PNS::ITEM_SET::Add(), PNS::NODE::Add(), PNS::NODE::Branch(), PNS::ITEM_SET::CItems(), PNS::LOGGER::Clear(), PNS::LINK_HOLDER::ClearLinks(), PNS::NODE::ClearRanks(), PNS::Clone(), PNS::LINE::EndsWithVia(), m_affectedArea, m_currentNode, m_iter, m_lineStack, m_logger, m_multiLineMode, m_optimizerQueue, PNS::LINE::Mark(), PNS::MK_HEAD, pushLineStack(), pushSpringback(), reduceSpringback(), PNS::NODE::RemoveByMarker(), runOptimizer(), PNS::LINE::SegmentCount(), PNS::LINE::SetRank(), SH_INCOMPLETE, SH_OK, shoveMainLoop(), and PNS::LINE::Via().
Referenced by PNS::DIFF_PAIR_PLACER::rhShoveOnly().
SHOVE::SHOVE_STATUS PNS::SHOVE::ShoveObstacleLine | ( | const LINE & | aCurLine, |
const LINE & | aObstacleLine, | ||
LINE & | aResultLine | ||
) |
Definition at line 312 of file pns_shove.cpp.
References PNS::DEBUG_DECORATOR::AddLine(), PNS::LINK_HOLDER::ClearLinks(), PNS::LINE::CLine(), PNS::LINE::CSegment(), PNS::ALGO_BASE::Dbg(), PNS::VIA::Diameter(), PNS::VIA::Drill(), PNS::LINE::EndsWithVia(), Format(), getClearance(), getHoleClearance(), PNS::VIA::Hull(), PNS::ITEM::Layer(), PNS::ITEM::LayersOverlap(), PNS::LINK_HOLDER::Links(), PNS::LINE::Mark(), PNS::LINE::Marker(), PNS::DEBUG_DECORATOR::Message(), PNS::MK_HEAD, PNS::ITEM::Net(), PNS::LINE::SegmentCount(), shoveLineFromLoneVia(), shoveLineToHullSet(), PNS::LINE::Via(), and PNS::LINE::Width().
Referenced by PNS::DIFF_PAIR_PLACER::attemptWalk(), onCollidingArc(), onCollidingLine(), onCollidingSegment(), onCollidingSolid(), and onReverseCollidingVia().
|
private |
Definition at line 1281 of file pns_shove.cpp.
References m_affectedArea, and m_nodeStack.
Referenced by runOptimizer().
void PNS::SHOVE::UnlockSpringbackNode | ( | NODE * | aNode | ) |
|
private |
Definition at line 1022 of file pns_shove.cpp.
References m_lineStack, and m_optimizerQueue.
Referenced by onReverseCollidingVia(), pushOrShoveVia(), shoveIteration(), and unwindLineStack().
|
private |
Definition at line 1042 of file pns_shove.cpp.
References PNS::ITEM::ARC_T, PNS::ITEM::LINE_T, PNS::LINK_HOLDER::Links(), PNS::ITEM::OfKind(), PNS::ITEM::SEGMENT_T, and unwindLineStack().
|
inherited |
Definition at line 39 of file pns_algo_base.cpp.
References PNS::ALGO_BASE::m_router, and PNS::ROUTER::VisibleViewArea().
Referenced by runOptimizer().
|
private |
Definition at line 152 of file pns_shove.h.
Referenced by replaceItems(), replaceLine(), ShoveDraggingVia(), ShoveLines(), shoveMainLoop(), ShoveMultiLines(), and totalAffectedArea().
|
private |
Definition at line 165 of file pns_shove.h.
Referenced by assembleLine(), getClearance(), getHoleClearance(), onCollidingSolid(), onReverseCollidingVia(), pushOrShoveVia(), replaceItems(), replaceLine(), SHOVE(), ShoveDraggingVia(), shoveIteration(), shoveLineFromLoneVia(), ShoveLines(), shoveLineToHullSet(), shoveMainLoop(), and ShoveMultiLines().
|
protectedinherited |
Definition at line 86 of file pns_algo_base.h.
Referenced by PNS::ALGO_BASE::Dbg(), and PNS::ALGO_BASE::SetDebugDecorator().
|
private |
Definition at line 171 of file pns_shove.h.
Referenced by pushOrShoveVia(), SHOVE(), ShoveDraggingVia(), and shoveMainLoop().
|
private |
Definition at line 174 of file pns_shove.h.
Referenced by ForceClearance(), getClearance(), getHoleClearance(), and SHOVE().
|
private |
Definition at line 173 of file pns_shove.h.
Referenced by onCollidingArc(), onCollidingSegment(), onCollidingVia(), onReverseCollidingVia(), SHOVE(), ShoveLines(), shoveMainLoop(), and ShoveMultiLines().
|
private |
Definition at line 161 of file pns_shove.h.
Referenced by onCollidingSolid(), popLineStack(), pushLineStack(), ShoveDraggingVia(), shoveIteration(), ShoveLines(), shoveMainLoop(), ShoveMultiLines(), and unwindLineStack().
|
private |
Definition at line 170 of file pns_shove.h.
Referenced by Logger(), onCollidingVia(), onReverseCollidingVia(), pushOrShoveVia(), ShoveLines(), and ShoveMultiLines().
|
private |
Definition at line 175 of file pns_shove.h.
Referenced by onCollidingArc(), onCollidingLine(), onCollidingSegment(), onCollidingSolid(), pushOrShoveVia(), SHOVE(), ShoveLines(), and ShoveMultiLines().
|
private |
Definition at line 168 of file pns_shove.h.
Referenced by NewHead(), onCollidingArc(), onCollidingLine(), onCollidingSegment(), onCollidingSolid(), pushOrShoveVia(), ShoveDraggingVia(), and ShoveLines().
|
private |
Definition at line 160 of file pns_shove.h.
Referenced by AddLockedSpringbackNode(), CurrentNode(), pushSpringback(), reduceSpringback(), RewindSpringbackTo(), totalAffectedArea(), and UnlockSpringbackNode().
|
private |
Definition at line 162 of file pns_shove.h.
Referenced by popLineStack(), pushLineStack(), runOptimizer(), ShoveDraggingVia(), ShoveLines(), ShoveMultiLines(), and unwindLineStack().
|
private |
Definition at line 166 of file pns_shove.h.
Referenced by SHOVE().
|
private |
Definition at line 164 of file pns_shove.h.
Referenced by CurrentNode(), reduceSpringback(), SetInitialLine(), SHOVE(), and shoveMainLoop().
|
protectedinherited |
Definition at line 87 of file pns_algo_base.h.
Referenced by PNS::ALGO_BASE::Router(), PNS::ALGO_BASE::Settings(), PNS::DIFF_PAIR_PLACER::updateLeadingRatLine(), PNS::LINE_PLACER::updateLeadingRatLine(), and PNS::ALGO_BASE::VisibleViewArea().