KiCad PCB EDA Suite
|
Single track placement algorithm. More...
#include <pns_line_placer.h>
Public Member Functions | |
LINE_PLACER (ROUTER *aRouter) | |
~LINE_PLACER () | |
bool | Start (const VECTOR2I &aP, ITEM *aStartItem) override |
Start routing a single track at point aP, taking item aStartItem as anchor (unless NULL). | |
bool | Move (const VECTOR2I &aP, ITEM *aEndItem) override |
Move the end of the currently routed trace to the point aP, taking aEndItem as anchor (if not NULL). | |
bool | FixRoute (const VECTOR2I &aP, ITEM *aEndItem, bool aForceFinish) override |
Commit the currently routed track to the parent node taking aP as the final end point and aEndItem as the final anchor (if provided). | |
std::optional< VECTOR2I > | UnfixRoute () override |
bool | CommitPlacement () override |
bool | AbortPlacement () override |
bool | HasPlacedAnything () const override |
bool | ToggleVia (bool aEnabled) override |
Enable/disable a via at the end of currently routed trace. | |
bool | SetLayer (int aLayer) override |
Set the current routing layer. | |
const LINE & | Head () const |
Return the "head" of the line being placed, that is the volatile part that has not been "fixed" yet. | |
const LINE & | Tail () const |
Return the "tail" of the line being placed, the part which has already wrapped around and shoved some obstacles. | |
const LINE | Trace () const |
Return the complete routed line. | |
const ITEM_SET | Traces () override |
Return the complete routed line, as a single-member ITEM_SET. | |
const VECTOR2I & | CurrentStart () const override |
Return the current start of the line being placed. | |
const VECTOR2I & | CurrentEnd () const override |
Return the current end of the line being placed. | |
const std::vector< NET_HANDLE > | CurrentNets () const override |
Return the net of currently routed track. | |
int | CurrentLayer () const override |
Return the layer of currently routed track. | |
NODE * | CurrentNode (bool aLoopsRemoved=false) const override |
Return the most recent world state. | |
void | FlipPosture () override |
Toggle the current posture (straight/diagonal) of the trace head. | |
void | UpdateSizes (const SIZES_SETTINGS &aSizes) override |
Perform on-the-fly update of the width, via diameter & drill size from a settings class. | |
void | SetOrthoMode (bool aOrthoMode) override |
Function SetOrthoMode() | |
bool | IsPlacingVia () const override |
Function IsPlacingVia() | |
void | GetModifiedNets (std::vector< NET_HANDLE > &aNets) const override |
Function GetModifiedNets. | |
bool | SplitAdjacentSegments (NODE *aNode, ITEM *aSeg, const VECTOR2I &aP) |
Snaps the point aP to segment aSeg. | |
bool | SplitAdjacentArcs (NODE *aNode, ITEM *aArc, const VECTOR2I &aP) |
Snaps the point aP to arc aArc. | |
ROUTER * | Router () const |
Return current router settings. | |
ROUTING_SETTINGS & | Settings () const |
Return the logger object, allowing to dump geometry to a file. | |
virtual LOGGER * | Logger () |
void | SetLogger (LOGGER *aLogger) |
void | SetDebugDecorator (DEBUG_DECORATOR *aDecorator) |
Assign a debug decorator allowing this algo to draw extra graphics for visual debugging. | |
DEBUG_DECORATOR * | Dbg () const |
const BOX2I & | VisibleViewArea () const |
Protected Attributes | |
DEBUG_DECORATOR * | m_debugDecorator |
ROUTER * | m_router |
LOGGER * | m_logger |
Private Member Functions | |
bool | route (const VECTOR2I &aP) |
Re-route the current track to point aP. | |
void | updateLeadingRatLine () |
Draw the "leading" rats nest line, which connects the end of currently routed track and the nearest yet unrouted item. | |
void | setWorld (NODE *aWorld) |
Set the board to route. | |
void | initPlacement () |
Initialize placement of a new line with given parameters. | |
void | setInitialDirection (const DIRECTION_45 &aDirection) |
Set preferred direction of the very first track segment to be laid. | |
void | removeLoops (NODE *aNode, LINE &aLatest) |
Searches aNode for traces concurrent to aLatest and removes them. | |
void | simplifyNewLine (NODE *aNode, LINKED_ITEM *aLatest) |
Assemble a line starting from segment or arc aLatest, removes collinear segments and redundant vertices. | |
bool | handleSelfIntersections () |
Check if the head of the track intersects its tail. | |
bool | handlePullback () |
Deal with pull-back: reduces the tail if head trace is moved backwards wrs to the current tail direction. | |
bool | mergeHead () |
Moves "established" segments from the head to the tail if certain conditions are met. | |
bool | reduceTail (const VECTOR2I &aEnd) |
Attempt to reduce the number of segments in the tail by trying to replace a certain number of latest tail segments with a direct trace leading to aEnd that does not collide with anything. | |
bool | optimizeTailHeadTransition () |
Try to reduce the corner count of the most recent part of tail/head by merging obtuse/collinear segments. | |
bool | routeHead (const VECTOR2I &aP, LINE &aNewHead, LINE &aNewTail) |
Compute the head trace between the current start point (m_p_start) and point aP, starting with direction defined in m_direction. | |
void | routeStep (const VECTOR2I &aP) |
Perform a single routing algorithm step, for the end point aP. | |
bool | rhWalkOnly (const VECTOR2I &aP, LINE &aNewHead, LINE &aNewTail) |
bool | rhWalkBase (const VECTOR2I &aP, LINE &aWalkLine, int aCollisionMask, bool &aViaOk) |
bool | splitHeadTail (const LINE &aNewLine, const LINE &aOldTail, LINE &aNewHead, LINE &aNewTail) |
bool | cursorDistMinimum (const SHAPE_LINE_CHAIN &aL, const VECTOR2I &aCursor, double lengthThreshold, SHAPE_LINE_CHAIN &aOut) |
bool | clipAndCheckCollisions (const VECTOR2I &aP, const SHAPE_LINE_CHAIN &aL, SHAPE_LINE_CHAIN &aOut, int &thresholdDist) |
void | updatePStart (const LINE &tail) |
bool | rhShoveOnly (const VECTOR2I &aP, LINE &aNewHead, LINE &aNewTail) |
< Route step shove mode. | |
bool | rhMarkObstacles (const VECTOR2I &aP, LINE &aNewHead, LINE &aNewTail) |
const VIA | makeVia (const VECTOR2I &aP) |
bool | buildInitialLine (const VECTOR2I &aP, LINE &aHead, bool aForceNoVia=false) |
Private Attributes | |
DIRECTION_45 | m_direction |
current routing direction | |
DIRECTION_45 | m_initial_direction |
routing direction for new traces | |
LINE | m_head |
the volatile part of the track from the previously analyzed point to the current routing destination | |
LINE | m_tail |
routing "tail": part of the track that has been already fixed due to collisions with obstacles | |
NODE * | m_world |
pointer to world to search colliding items | |
VECTOR2I | m_p_start |
current routing start (end of tail, beginning of head) | |
VECTOR2I | m_fixStart |
start point of the last 'fix' | |
std::optional< VECTOR2I > | m_last_p_end |
std::unique_ptr< SHOVE > | m_shove |
The shove engine. | |
NODE * | m_currentNode |
Current world state. | |
NODE * | m_lastNode |
Postprocessed world state (including marked collisions & removed loops) | |
SIZES_SETTINGS | m_sizes |
bool | m_placingVia |
NET_HANDLE | m_currentNet |
int | m_currentLayer |
VECTOR2I | m_currentEnd |
VECTOR2I | m_currentStart |
LINE | m_currentTrace |
ITEM * | m_startItem |
ITEM * | m_endItem |
bool | m_idle |
bool | m_chainedPlacement |
bool | m_orthoMode |
bool | m_placementCorrect |
FIXED_TAIL | m_fixedTail |
MOUSE_TRAIL_TRACER | m_mouseTrailTracer |
Single track placement algorithm.
Interactively routes a track. Applies shove and walkaround algorithms when needed.
Definition at line 84 of file pns_line_placer.h.
PNS::LINE_PLACER::LINE_PLACER | ( | ROUTER * | aRouter | ) |
Definition at line 40 of file pns_line_placer.cpp.
References m_chainedPlacement, m_currentLayer, m_currentNet, m_currentNode, m_endItem, m_idle, m_initial_direction, m_lastNode, m_orthoMode, m_placementCorrect, m_placingVia, m_shove, m_startItem, m_world, and DIRECTION_45::N.
PNS::LINE_PLACER::~LINE_PLACER | ( | ) |
Definition at line 62 of file pns_line_placer.cpp.
|
overridevirtual |
Reimplemented from PNS::PLACEMENT_ALGO.
Definition at line 2076 of file pns_line_placer.cpp.
References PNS::NODE::KillChildren(), and m_world.
|
private |
Definition at line 1979 of file pns_line_placer.cpp.
References PNS::ITEM::ANY_T, PNS::LINE::AppendVia(), DIRECTION_45::BuildInitialTrace(), SHAPE_LINE_CHAIN::Clear(), SHAPE_LINE_CHAIN::CPoint(), SHAPE_LINE_CHAIN::CSegment(), CYAN, PNS::ALGO_BASE::Dbg(), DIRECTION_45::Format(), PNS::ROUTING_SETTINGS::GetCornerMode(), PNS::MOUSE_TRAIL_TRACER::GetPosture(), GREEN, SEG::LineProject(), m_currentLayer, m_currentNode, m_direction, m_last_p_end, m_mouseTrailTracer, m_orthoMode, m_p_start, m_placingVia, m_tail, makeVia(), DIRECTION_45::MITERED_45, PNS::ROUTING_SETTINGS::Mode(), PNS::ITEM::Net(), PNS_DBG, PNS::LINE::PointCount(), PNS::VIA::Pos(), PNS::VIA::PushoutForce(), SHAPE_LINE_CHAIN::Remove(), PNS::RM_MarkObstacles, PNS::RM_Walkaround, SHAPE_LINE_CHAIN::SegmentCount(), PNS::ITEM::SetLayer(), PNS::ITEM::SetNet(), SHAPE_LINE_CHAIN::SetPoint(), PNS::VIA::SetPos(), PNS::LINE::SetShape(), PNS::ALGO_BASE::Settings(), PNS::ITEM::SOLID_T, PNS::ROUTING_SETTINGS::ViaForcePropIterationLimit(), and WHITE.
Referenced by rhMarkObstacles(), and rhWalkBase().
|
private |
Definition at line 400 of file pns_line_placer.cpp.
References BLUE, PNS::NODE::CheckColliding(), PNS::ALGO_BASE::Dbg(), SHAPE_LINE_CHAIN::Length(), m_currentNode, m_head, PNS_DBG, SHAPE_LINE_CHAIN::Slice(), and SHAPE_LINE_CHAIN::Split().
Referenced by cursorDistMinimum().
|
overridevirtual |
Reimplemented from PNS::PLACEMENT_ALGO.
Definition at line 1779 of file pns_line_placer.cpp.
References PNS::ROUTER::CommitRouting(), PNS::NODE::KillChildren(), m_currentNode, m_lastNode, m_shove, PNS::RM_Shove, PNS::ALGO_BASE::Router(), and PNS::ALGO_BASE::Settings().
|
inlineoverridevirtual |
Return the current end of the line being placed.
It may not be equal to the cursor position due to collisions.
Implements PNS::PLACEMENT_ALGO.
Definition at line 163 of file pns_line_placer.h.
References m_currentEnd.
|
inlineoverridevirtual |
Return the layer of currently routed track.
Implements PNS::PLACEMENT_ALGO.
Definition at line 179 of file pns_line_placer.h.
References m_currentLayer.
|
inlineoverridevirtual |
Return the net of currently routed track.
Implements PNS::PLACEMENT_ALGO.
Definition at line 171 of file pns_line_placer.h.
References m_currentNet.
|
overridevirtual |
Return the most recent world state.
Implements PNS::PLACEMENT_ALGO.
Definition at line 1281 of file pns_line_placer.cpp.
References m_currentNode, and m_lastNode.
|
inlineoverridevirtual |
Return the current start of the line being placed.
Implements PNS::PLACEMENT_ALGO.
Definition at line 154 of file pns_line_placer.h.
References m_currentStart.
|
private |
Definition at line 435 of file pns_line_placer.cpp.
References SEG::A, SEG::B, clipAndCheckCollisions(), SHAPE_LINE_CHAIN::CPoint(), SHAPE_LINE_CHAIN::CSegment(), SEG::Length(), SEG::NearestPoint(), SHAPE_LINE_CHAIN::PointCount(), and SHAPE_LINE_CHAIN::SegmentCount().
Referenced by rhWalkBase().
|
inlineinherited |
Definition at line 78 of file pns_algo_base.h.
References PNS::ALGO_BASE::m_debugDecorator.
Referenced by PNS::SHOVE::AddLockedSpringbackNode(), buildInitialLine(), clipAndCheckCollisions(), PNS::MEANDER_PLACER::doMove(), PNS::COMPONENT_DRAGGER::Drag(), PNS::MULTI_DRAGGER::Drag(), PNS::DRAGGER::dragShove(), PNS::DRAGGER::dragWalkaround(), PNS::MULTI_DRAGGER::findNewLeaderSegment(), PNS::SHOVE::fixupViaCollisions(), handlePullback(), mergeHead(), PNS::DP_MEANDER_PLACER::Move(), PNS::MEANDER_SKEW_PLACER::Move(), PNS::MULTI_DRAGGER::multidragShove(), PNS::MULTI_DRAGGER::multidragWalkaround(), PNS::SHOVE::onCollidingArc(), PNS::SHOVE::onCollidingLine(), PNS::SHOVE::onCollidingSegment(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::onCollidingVia(), PNS::SHOVE::onReverseCollidingVia(), PNS::DRAGGER::optimizeAndUpdateDraggedLine(), optimizeTailHeadTransition(), PNS::SHOVE::preShoveCleanup(), PNS::SHOVE::pruneRootLines(), PNS::SHOVE::pushLineStack(), PNS::SHOVE::pushOrShoveVia(), PNS::SHOVE::pushSpringback(), PNS::SHOVE::reconstructHeads(), PNS::SHOVE::reduceSpringback(), reduceTail(), PNS::SHOVE::removeHeads(), removeLoops(), PNS::SHOVE::replaceItems(), PNS::SHOVE::replaceLine(), rhShoveOnly(), rhWalkBase(), rhWalkOnly(), PNS::WALKAROUND::Route(), routeStep(), PNS::SHOVE::Run(), PNS::SHOVE::runOptimizer(), PNS::SHOVE::shoveIteration(), PNS::SHOVE::shoveLineToHullSet(), PNS::SHOVE::shoveMainLoop(), PNS::SHOVE::ShoveObstacleLine(), PNS::WALKAROUND::singleStep(), splitHeadTail(), Start(), PNS::DRAGGER::Start(), PNS::MULTI_DRAGGER::Start(), PNS::SHOVE::touchRootLine(), Trace(), PNS::DRAGGER::tryWalkaround(), PNS::MULTI_DRAGGER::tryWalkaround(), and PNS::SHOVE::unwindLineStack().
|
overridevirtual |
Commit the currently routed track to the parent node taking aP as the final end point and aEndItem as the final anchor (if provided).
<
Implements PNS::PLACEMENT_ALGO.
Definition at line 1531 of file pns_line_placer.cpp.
References PNS::NODE::Add(), PNS::FIXED_TAIL::AddStage(), PNS::MOUSE_TRAIL_TRACER::AddTrailPoint(), SHAPE_LINE_CHAIN::Arc(), SHAPE_LINE_CHAIN::ArcCount(), SHAPE_LINE_CHAIN::ArcIndex(), PNS::NODE::Branch(), PNS::NODE::CheckColliding(), SHAPE_LINE_CHAIN::Clear(), PNS::MOUSE_TRAIL_TRACER::Clear(), PNS::LINE::CLine(), PNS::Clone(), SHAPE_LINE_CHAIN::CPoint(), PNS::LINE::CSegment(), SHAPE_LINE_CHAIN::CSegment(), PNS::LINE::EndsWithVia(), PNS::ROUTING_SETTINGS::GetFixAllSegments(), PNS::ROUTER::GetInterface(), PNS::ROUTER_IFACE::GetNetCode(), PNS::NODE::GetUpdatedItems(), SHAPE_LINE_CHAIN::IsPtOnArc(), PNS::LINE::Line(), m_chainedPlacement, m_currentLayer, m_currentNet, m_currentNode, m_currentStart, m_direction, m_fixedTail, m_fixStart, m_head, m_idle, m_initial_direction, m_lastNode, m_mouseTrailTracer, m_p_start, m_placementCorrect, m_placingVia, PNS::ALGO_BASE::m_router, m_shove, m_startItem, m_tail, m_world, PNS::ROUTING_SETTINGS::Mode(), PNS::ITEM::Net(), SHAPE_LINE_CHAIN::PointCount(), PNS::LINE::RemoveVia(), PNS::RM_MarkObstacles, PNS::RM_Shove, PNS::ITEM::SEGMENT_T, SHAPE_LINE_CHAIN::SegmentCount(), PNS::MOUSE_TRAIL_TRACER::SetDefaultDirections(), setInitialDirection(), PNS::ITEM::SetLayer(), PNS::ITEM::SetNet(), PNS::ALGO_BASE::Settings(), PNS::MOUSE_TRAIL_TRACER::SetTolerance(), PNS::ARC::SetWidth(), PNS::SEGMENT::SetWidth(), simplifyNewLine(), PNS::ITEM::SOLID_T, Trace(), DIRECTION_45::UNDEFINED, PNS::LINE::Via(), and PNS::LINE::Width().
|
overridevirtual |
Toggle the current posture (straight/diagonal) of the trace head.
Reimplemented from PNS::PLACEMENT_ALGO.
Definition at line 1265 of file pns_line_placer.cpp.
References PNS::LINE::CSegment(), PNS::MOUSE_TRAIL_TRACER::FlipPosture(), PNS::MOUSE_TRAIL_TRACER::IsManuallyForced(), m_currentTrace, m_mouseTrailTracer, PNS::LINE::SegmentCount(), PNS::MOUSE_TRAIL_TRACER::SetDefaultDirections(), and DIRECTION_45::UNDEFINED.
|
overridevirtual |
Function GetModifiedNets.
Returns the nets of all currently routed trace(s)
Reimplemented from PNS::PLACEMENT_ALGO.
Definition at line 2070 of file pns_line_placer.cpp.
References m_currentNet.
|
private |
Deal with pull-back: reduces the tail if head trace is moved backwards wrs to the current tail direction.
Definition at line 179 of file pns_line_placer.cpp.
References DIRECTION_45::ANG_ACUTE, DIRECTION_45::ANG_RIGHT, DIRECTION_45::Angle(), PNS::angle(), SHAPE_LINE_CHAIN::ArcIndex(), SHAPE_LINE_CHAIN::CArcs(), SHAPE_LINE_CHAIN::Clear(), SHAPE_LINE_CHAIN::CSegment(), PNS::ALGO_BASE::Dbg(), DIRECTION_45::Format(), SHAPE_LINE_CHAIN::IsArcSegment(), SHAPE_LINE_CHAIN::IsPtOnArc(), PNS::LINE::Line(), m_direction, m_head, m_initial_direction, m_p_start, m_tail, PNS_DBG, SHAPE_LINE_CHAIN::PointCount(), SHAPE_LINE_CHAIN::RemoveShape(), SHAPE_LINE_CHAIN::SegmentCount(), and WHITE.
Referenced by routeStep().
|
private |
Check if the head of the track intersects its tail.
If so, cuts the tail up to the intersecting segment and fixes the head direction to match the last segment before the cut.
Definition at line 110 of file pns_line_placer.cpp.
References SHAPE_LINE_CHAIN::Clear(), SHAPE_LINE_CHAIN::CPoint(), SHAPE_LINE_CHAIN::CSegment(), SHAPE_LINE_CHAIN::Intersect(), PNS::LINE::Line(), m_direction, m_head, m_initial_direction, m_tail, SHAPE_LINE_CHAIN::PointCount(), and SHAPE_LINE_CHAIN::Remove().
Referenced by routeStep().
|
overridevirtual |
Reimplemented from PNS::PLACEMENT_ALGO.
Definition at line 1773 of file pns_line_placer.cpp.
References m_fixedTail, m_placementCorrect, and PNS::FIXED_TAIL::StageCount().
Referenced by UpdateSizes().
|
inline |
Return the "head" of the line being placed, that is the volatile part that has not been "fixed" yet.
Definition at line 133 of file pns_line_placer.h.
References m_head.
|
private |
Initialize placement of a new line with given parameters.
Definition at line 1445 of file pns_line_placer.cpp.
References PNS::NODE::Branch(), SHAPE_LINE_CHAIN::Clear(), DIRECTION_45::Format(), PNS::ROUTER::GetWorld(), PNS::NODE::KillChildren(), PNS::LINE::Line(), m_currentLayer, m_currentNet, m_currentNode, m_currentStart, m_direction, m_head, m_idle, m_initial_direction, m_last_p_end, m_lastNode, m_p_start, m_shove, m_sizes, m_startItem, m_tail, m_world, PNS::LINE::RemoveVia(), PNS::ALGO_BASE::Router(), PNS::ITEM::SetLayer(), PNS::ITEM::SetNet(), PNS::LINE::SetWidth(), setWorld(), SplitAdjacentSegments(), and PNS::SIZES_SETTINGS::TrackWidth().
Referenced by Start().
|
inlineoverridevirtual |
Function IsPlacingVia()
Returns true if the placer is placing a via (or more vias).
Reimplemented from PNS::PLACEMENT_ALGO.
Definition at line 204 of file pns_line_placer.h.
References m_placingVia.
|
virtualinherited |
Definition at line 34 of file pns_algo_base.cpp.
References PNS::ALGO_BASE::m_logger.
Referenced by rhShoveOnly(), rhWalkBase(), PNS::DRAGGER::Start(), PNS::MULTI_DRAGGER::Start(), PNS::DRAGGER::tryWalkaround(), and PNS::MULTI_DRAGGER::tryWalkaround().
Definition at line 73 of file pns_line_placer.cpp.
References B_Cu, F_Cu, PNS::ROUTER::GetInterface(), PNS::SIZES_SETTINGS::GetLayerBottom(), PNS::SIZES_SETTINGS::GetLayerTop(), m_sizes, PNS::ALGO_BASE::Router(), PNS::SIZES_SETTINGS::ViaDiameter(), PNS::SIZES_SETTINGS::ViaDrill(), and PNS::SIZES_SETTINGS::ViaType().
Referenced by buildInitialLine(), rhShoveOnly(), and rhWalkOnly().
|
private |
Moves "established" segments from the head to the tail if certain conditions are met.
Definition at line 326 of file pns_line_placer.cpp.
References DIRECTION_45::ANG_ACUTE, DIRECTION_45::ANG_HALF_FULL, DIRECTION_45::ANG_UNDEFINED, DIRECTION_45::Angle(), SHAPE_LINE_CHAIN::Append(), SHAPE_LINE_CHAIN::ArcIndex(), SHAPE_LINE_CHAIN::CArcs(), PNS::LINE::CountCorners(), SHAPE_LINE_CHAIN::CPoint(), SHAPE_LINE_CHAIN::CSegment(), PNS::ALGO_BASE::Dbg(), DIRECTION_45::Format(), SHAPE_LINE_CHAIN::IsArcSegment(), SHAPE_LINE_CHAIN::IsPtOnArc(), PNS::LINE::Line(), m_direction, m_head, m_tail, PNS_DBG, SHAPE_LINE_CHAIN::PointCount(), SHAPE_LINE_CHAIN::Remove(), SHAPE_LINE_CHAIN::ShapeCount(), and SHAPE_LINE_CHAIN::Simplify().
Referenced by routeStep().
Move the end of the currently routed trace to the point aP, taking aEndItem as anchor (if not NULL).
Implements PNS::PLACEMENT_ALGO.
Definition at line 1485 of file pns_line_placer.cpp.
References PNS::MOUSE_TRAIL_TRACER::AddTrailPoint(), PNS::NODE::Branch(), PNS::LINE::CLine(), PNS::LINE::CPoint(), SHAPE_LINE_CHAIN::CPoint(), PNS::NODE::Depth(), m_currentEnd, m_currentNet, m_currentNode, m_endItem, m_lastNode, m_mouseTrailTracer, m_p_start, PNS::ITEM::Net(), PNS::OWNABLE_ITEM::Owner(), PNS::LINE::PointCount(), removeLoops(), route(), PNS::LINE::SegmentCount(), PNS::ALGO_BASE::Settings(), SplitAdjacentSegments(), Trace(), and updateLeadingRatLine().
Referenced by SetLayer().
|
private |
Try to reduce the corner count of the most recent part of tail/head by merging obtuse/collinear segments.
Definition at line 1041 of file pns_line_placer.cpp.
References SHAPE_LINE_CHAIN::Append(), SHAPE_LINE_CHAIN::Clear(), PNS::LINE::CLine(), PNS::LINE::CSegment(), PNS::ALGO_BASE::Dbg(), PNS::OPTIMIZER::FANOUT_CLEANUP, PNS::MOUSE_TRAIL_TRACER::IsManuallyForced(), LIGHTCYAN, PNS::LINE::Line(), m_currentNode, m_direction, m_head, m_mouseTrailTracer, m_tail, PNS::OPTIMIZER::MERGE_SEGMENTS, PNS::OPTIMIZER::Optimize(), PNS_DBG, SHAPE_LINE_CHAIN::PointCount(), SHAPE_LINE_CHAIN::Replace(), PNS::LINE::SegmentCount(), SHAPE_LINE_CHAIN::ShapeCount(), SHAPE_LINE_CHAIN::Simplify(), SHAPE_LINE_CHAIN::Slice(), and Trace().
Referenced by routeStep().
|
private |
Attempt to reduce the number of segments in the tail by trying to replace a certain number of latest tail segments with a direct trace leading to aEnd that does not collide with anything.
aEnd | is the current routing destination point. |
Definition at line 262 of file pns_line_placer.cpp.
References SEG::A, PNS::ITEM::ANY_T, DIRECTION_45::BuildInitialTrace(), PNS::NODE::CheckColliding(), SHAPE_LINE_CHAIN::Clear(), SHAPE_LINE_CHAIN::CSegment(), PNS::ALGO_BASE::Dbg(), PNS::LINE::Line(), m_currentNode, m_direction, m_head, m_initial_direction, m_tail, PNS_DBG, SHAPE_LINE_CHAIN::Remove(), and SHAPE_LINE_CHAIN::SegmentCount().
Referenced by routeStep().
Searches aNode for traces concurrent to aLatest and removes them.
Updated topology is stored in aNode.
Definition at line 1797 of file pns_line_placer.cpp.
References PNS::NODE::Add(), PNS::NODE::AssembleLine(), PNS::LINK_HOLDER::ClearLinks(), PNS::LINE::CLine(), SHAPE_LINE_CHAIN::CPoint(), PNS::ALGO_BASE::Dbg(), PNS::NODE::FindLineEnds(), PNS::NODE::FindLinesBetweenJoints(), PNS::LINK_HOLDER::GetLink(), PNS::LINK_HOLDER::LinkCount(), PNS_DBG, PNS::NODE::Remove(), and PNS::LINE::SegmentCount().
Referenced by Move().
|
private |
Definition at line 815 of file pns_line_placer.cpp.
References SHAPE_LINE_CHAIN::BBox(), buildInitialLine(), BOX2< Vec >::ClosestPointTo(), PNS::NODE::GetClearance(), PNS::ROUTING_SETTINGS::GetCornerMode(), PNS::ITEM::Layer(), m_currentNode, m_head, m_tail, DIRECTION_45::MITERED_90, PNS::NODE::NearestObstacle(), SHAPE_LINE_CHAIN::NearestPoint(), DIRECTION_45::ROUNDED_90, PNS::LINE::SetBlockingObstacle(), PNS::ALGO_BASE::Settings(), and PNS::LINE::Width().
Referenced by routeHead().
|
private |
< Route step shove mode.
Route step mark obstacles mode.
Definition at line 927 of file pns_line_placer.cpp.
References PNS::ITEM::ANY_T, PNS::LINE::AppendVia(), PNS::LINE::CPoint(), PNS::ALGO_BASE::Dbg(), PNS::LINE::EndsWithVia(), PNS::ROUTING_SETTINGS::GetCornerMode(), GREEN, PNS::MOUSE_TRAIL_TRACER::IsManuallyForced(), PNS::ALGO_BASE::Logger(), m_currentNode, m_endItem, m_mouseTrailTracer, m_placingVia, m_shove, m_tail, makeVia(), PNS::OPTIMIZER::MERGE_SEGMENTS, DIRECTION_45::MITERED_45, PNS::OE_FULL, PNS::OE_LOW, PNS::OE_MEDIUM, PNS::OPTIMIZER::Optimize(), PNS::OWNABLE_ITEM::Owner(), PNS_DBG, PNS::VIA::Pos(), RED, rhWalkBase(), rhWalkOnly(), DIRECTION_45::ROUNDED_45, PNS::OPTIMIZER::SetCollisionMask(), PNS::OPTIMIZER::SetEffortLevel(), PNS::ALGO_BASE::Settings(), PNS::SHOVE::SH_OK, PNS::SHOVE::SHP_SHOVE, PNS::OPTIMIZER::SMART_PADS, PNS::ITEM::SOLID_T, splitHeadTail(), and PNS::LINE::Via().
Referenced by routeHead().
|
private |
Definition at line 556 of file pns_line_placer.cpp.
References SHAPE_LINE_CHAIN::Append(), PNS::LINE::AppendVia(), BLUE, buildInitialLine(), PNS::LINE::Clear(), PNS::LINE::CLine(), PNS::LINE::CPoint(), SHAPE_LINE_CHAIN::CPoint(), cursorDistMinimum(), PNS::ALGO_BASE::Dbg(), PNS::LINE::EndsWithVia(), GREEN, SHAPE_LINE_CHAIN::Length(), PNS::LINE::Line(), PNS::WALKAROUND::RESULT::lines, PNS::ALGO_BASE::Logger(), m_currentNode, m_head, m_placingVia, m_tail, MAGENTA, PNS::OPTIMIZER::MERGE_SEGMENTS, PNS::OPTIMIZER::Optimize(), PNS_DBG, PNS_DBGN, PNS::VIA::Pos(), RED, PNS::WALKAROUND::Route(), PNS::ALGO_BASE::Router(), PNS::WALKAROUND::SetAllowedPolicies(), PNS::OPTIMIZER::SetCollisionMask(), PNS::ALGO_BASE::SetDebugDecorator(), PNS::OPTIMIZER::SetEffortLevel(), PNS::WALKAROUND::SetItemMask(), PNS::WALKAROUND::SetIterationLimit(), PNS::ALGO_BASE::SetLogger(), PNS::VIA::SetPos(), PNS::LINE::SetShape(), PNS::WALKAROUND::SetSolidsOnly(), PNS::ALGO_BASE::Settings(), SHAPE_LINE_CHAIN::Simplify(), splitHeadTail(), PNS::WALKAROUND::ST_DONE, PNS::WALKAROUND::ST_STUCK, PNS::WALKAROUND::RESULT::status, PNS::LINE::Via(), PNS::ROUTING_SETTINGS::WalkaroundHugLengthThreshold(), PNS::WALKAROUND::WP_CCW, and PNS::WALKAROUND::WP_CW.
Referenced by rhShoveOnly(), and rhWalkOnly().
Definition at line 744 of file pns_line_placer.cpp.
References PNS::ITEM::ANY_T, PNS::LINE::AppendVia(), BLUE, PNS::NODE::CheckColliding(), PNS::LINE::CPoint(), PNS::ALGO_BASE::Dbg(), PNS::ROUTING_SETTINGS::GetCornerMode(), GREEN, PNS::MOUSE_TRAIL_TRACER::IsManuallyForced(), m_currentNode, m_mouseTrailTracer, m_placingVia, m_tail, makeVia(), PNS::OPTIMIZER::MERGE_SEGMENTS, DIRECTION_45::MITERED_45, PNS::OE_FULL, PNS::OE_LOW, PNS::OE_MEDIUM, PNS::OPTIMIZER::Optimize(), PNS_DBG, RED, rhWalkBase(), DIRECTION_45::ROUNDED_45, PNS::ALGO_BASE::Settings(), PNS::OPTIMIZER::SMART_PADS, and splitHeadTail().
Referenced by rhShoveOnly(), and routeHead().
|
private |
Re-route the current track to point aP.
Returns true, when routing has completed successfully (i.e. the trace end has reached point aP), and false if the trace was stuck somewhere on the way. May call routeStep() repetitively due to mouse smoothing.
aP | ending point of current route. |
Definition at line 1225 of file pns_line_placer.cpp.
References PNS::LINE::CPoint(), m_head, PNS::LINE::PointCount(), and routeStep().
Referenced by Move().
Compute the head trace between the current start point (m_p_start) and point aP, starting with direction defined in m_direction.
The trace walks around all colliding solid or non-movable items. Movable segments are ignored, as they'll be handled later by the shove algorithm.
Definition at line 1023 of file pns_line_placer.cpp.
References rhMarkObstacles(), rhShoveOnly(), rhWalkOnly(), PNS::RM_MarkObstacles, PNS::RM_Shove, PNS::RM_Walkaround, and PNS::ALGO_BASE::Settings().
Referenced by routeStep().
|
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_BASE::Clearance(), PNS::DIFF_PAIR_PLACER::CommitPlacement(), PNS::DP_MEANDER_PLACER::CommitPlacement(), CommitPlacement(), PNS::MEANDER_PLACER::CommitPlacement(), PNS::COMPONENT_DRAGGER::FixRoute(), PNS::DRAGGER::FixRoute(), PNS::MULTI_DRAGGER::FixRoute(), PNS::DIFF_PAIR_PLACER::initPlacement(), initPlacement(), makeVia(), PNS::MULTI_DRAGGER::multidragShove(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::reconstructHeads(), PNS::SHOVE::removeHeads(), rhWalkBase(), PNS::SHOVE::Run(), PNS::SHOVE::runOptimizer(), PNS::SHOVE::shoveIteration(), PNS::DIFF_PAIR_PLACER::Start(), PNS::DP_MEANDER_PLACER::Start(), Start(), PNS::MEANDER_PLACER::Start(), PNS::MEANDER_SKEW_PLACER::Start(), PNS::DRAGGER::Start(), PNS::MULTI_DRAGGER::Start(), PNS::DRAGGER::tryWalkaround(), and PNS::MULTI_DRAGGER::tryWalkaround().
|
private |
Perform a single routing algorithm step, for the end point aP.
aP | is the ending point of current route. |
Definition at line 1113 of file pns_line_placer.cpp.
References SHAPE_LINE_CHAIN::Append(), PNS::LINE::Clear(), PNS::ALGO_BASE::Dbg(), PNS::LINE::EndsWithVia(), DIRECTION_45::Format(), GREEN, handlePullback(), handleSelfIntersections(), LIGHTGREEN, PNS::LINE::Line(), m_direction, m_head, m_last_p_end, m_p_start, m_tail, mergeHead(), optimizeTailHeadTransition(), PNS_DBG, PNS_DBGN, PNS::LINE::PointCount(), reduceTail(), routeHead(), PNS::ALGO_BASE::Settings(), PNS::LINE::ShapeCount(), updatePStart(), and WHITE.
Referenced by route().
|
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::SHOVE::onCollidingSolid(), rhWalkBase(), PNS::SHOVE::SHOVE(), PNS::DRAGGER::tryWalkaround(), and PNS::MULTI_DRAGGER::tryWalkaround().
|
private |
Set preferred direction of the very first track segment to be laid.
Used by posture switching mechanism.
Definition at line 101 of file pns_line_placer.cpp.
References m_direction, m_initial_direction, m_tail, and PNS::LINE::SegmentCount().
Referenced by FixRoute(), and Start().
|
overridevirtual |
Set the current routing layer.
Reimplemented from PNS::PLACEMENT_ALGO.
Definition at line 1350 of file pns_line_placer.cpp.
References SHAPE_LINE_CHAIN::Clear(), PNS::MOUSE_TRAIL_TRACER::Clear(), PNS::ITEM::Layers(), PNS::LINE::Line(), m_chainedPlacement, m_currentEnd, m_currentLayer, m_currentStart, m_direction, m_head, m_idle, m_initial_direction, m_mouseTrailTracer, m_p_start, m_startItem, m_tail, Move(), PNS::ITEM::OfKind(), PNS_LAYER_RANGE::Overlaps(), PNS::LINE::RemoveVia(), PNS::ITEM::SetLayer(), PNS::ITEM::SOLID_T, and PNS::ITEM::VIA_T.
|
inlineinherited |
Definition at line 65 of file pns_algo_base.h.
References PNS::ALGO_BASE::m_logger.
Referenced by rhWalkBase(), PNS::DRAGGER::tryWalkaround(), and PNS::MULTI_DRAGGER::tryWalkaround().
|
overridevirtual |
Function SetOrthoMode()
Forces the router to place a straight 90/45 degree trace (with the end as near to the cursor as possible) instead of a standard 135 degree two-segment bend.
Reimplemented from PNS::PLACEMENT_ALGO.
Definition at line 1973 of file pns_line_placer.cpp.
References m_orthoMode.
|
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(), buildInitialLine(), CommitPlacement(), PNS::MULTI_DRAGGER::Drag(), PNS::DRAGGER::dragMarkObstacles(), PNS::DRAGGER::dragShove(), PNS::DRAGGER::dragWalkaround(), PNS::COMPONENT_DRAGGER::FixRoute(), PNS::MULTI_DRAGGER::FixRoute(), PNS::DIFF_PAIR_PLACER::FixRoute(), FixRoute(), Move(), PNS::SHOVE::onCollidingSolid(), PNS::DRAGGER::optimizeAndUpdateDraggedLine(), PNS::DIFF_PAIR_PLACER::propagateDpHeadForces(), PNS::DRAGGER::propagateViaForces(), PNS::SHOVE::pushOrShoveVia(), rhMarkObstacles(), rhShoveOnly(), rhWalkBase(), rhWalkOnly(), PNS::DIFF_PAIR_PLACER::route(), routeHead(), routeStep(), PNS::SHOVE::runOptimizer(), PNS::SHOVE::shoveMainLoop(), PNS::WALKAROUND::singleStep(), Start(), PNS::DRAGGER::Start(), PNS::MULTI_DRAGGER::Start(), PNS::DRAGGER::tryWalkaround(), PNS::MULTI_DRAGGER::tryWalkaround(), UnfixRoute(), and PNS::WALKAROUND::WALKAROUND().
|
private |
Set the board to route.
Definition at line 67 of file pns_line_placer.cpp.
References m_world.
Referenced by initPlacement().
|
private |
Assemble a line starting from segment or arc aLatest, removes collinear segments and redundant vertices.
If a simplification has been found, replaces the old line with the simplified one in aNode.
Definition at line 1849 of file pns_line_placer.cpp.
References PNS::NODE::Add(), PNS::ITEM::ARC_T, PNS::NODE::AssembleLine(), PNS::ITEM_SET::CItems(), PNS::LINE::CLine(), PNS::JOINT::CLinks(), SEG::Contains(), PNS::NODE::FindJoint(), PNS::NODE::GetUpdatedItems(), PNS::JOINT::IsLineCorner(), PNS::JOINT::LinkCount(), PNS::OPTIMIZER::MERGE_COLINEAR, PNS::ITEM::OfKind(), PNS::OPTIMIZER::Optimize(), SHAPE_LINE_CHAIN::PointCount(), PNS::LINE::PointCount(), PNS::NODE::Remove(), PNS::ITEM::SEGMENT_T, PNS::LINE::SetShape(), SHAPE_LINE_CHAIN::Simplify(), and PNS::SEGMENT::Width().
Referenced by FixRoute().
Snaps the point aP to arc aArc.
Splits the arc in two, forming a joint at aP and stores updated topology in node aNode.
Definition at line 1318 of file pns_line_placer.cpp.
References PNS::NODE::Add(), PNS::ARC::Arc(), PNS::ITEM::ARC_T, PNS::Clone(), PNS::NODE::FindJoint(), SHAPE_ARC::GetCenter(), SHAPE_ARC::GetP0(), SHAPE_ARC::GetP1(), SHAPE_ARC::GetWidth(), SHAPE_ARC::IsClockwise(), PNS::JOINT::LinkCount(), PNS::ITEM::OfKind(), and PNS::NODE::Remove().
Referenced by PNS::ROUTER::BreakSegmentOrArc().
Snaps the point aP to segment aSeg.
Splits the segment in two, forming a joint at aP and stores updated topology in node aNode.
Definition at line 1290 of file pns_line_placer.cpp.
References SEG::A, PNS::NODE::Add(), SEG::B, PNS::Clone(), PNS::NODE::FindJoint(), PNS::JOINT::LinkCount(), PNS::ITEM::OfKind(), PNS::NODE::Remove(), PNS::SEGMENT::Seg(), and PNS::ITEM::SEGMENT_T.
Referenced by PNS::ROUTER::BreakSegmentOrArc(), initPlacement(), and Move().
|
private |
Definition at line 866 of file pns_line_placer.cpp.
References BLUE, PNS::LINE::Clear(), PNS::LINE::CLine(), PNS::LINE::CPoint(), PNS::ALGO_BASE::Dbg(), SHAPE_LINE_CHAIN::Find(), PNS::LINE::Line(), PNS_DBG, PNS::LINE::PointCount(), SHAPE_LINE_CHAIN_BASE::PointOnEdge(), PNS::LINE::RemoveVia(), PNS::LINE::SetShape(), SHAPE_LINE_CHAIN::Slice(), and SHAPE_LINE_CHAIN::Split().
Referenced by rhShoveOnly(), rhWalkBase(), and rhWalkOnly().
Start routing a single track at point aP, taking item aStartItem as anchor (unless NULL).
Implements PNS::PLACEMENT_ALGO.
Definition at line 1383 of file pns_line_placer.cpp.
References SEG::A, PNS::FIXED_TAIL::AddStage(), PNS::MOUSE_TRAIL_TRACER::AddTrailPoint(), PNS::angle(), SEG::B, PNS::FIXED_TAIL::Clear(), PNS::MOUSE_TRAIL_TRACER::Clear(), PNS::ALGO_BASE::Dbg(), DIRECTION_45::Format(), PNS::ROUTER::GetInterface(), PNS::ROUTER_IFACE::GetOrphanedNetHandle(), initPlacement(), PNS::ITEM::Kind(), m_chainedPlacement, m_currentEnd, m_currentLayer, m_currentNet, m_currentNode, m_currentStart, m_direction, m_endItem, m_fixedTail, m_fixStart, m_head, m_initial_direction, m_mouseTrailTracer, m_placementCorrect, m_placingVia, m_shove, m_startItem, PNS::ITEM::Net(), PNS::ITEM::Parent(), PCB_PAD_T, PNS_DBG, SEG::Reversed(), PNS::RM_Shove, PNS::ALGO_BASE::Router(), PNS::ITEM::SEGMENT_T, PNS::MOUSE_TRAIL_TRACER::SetDefaultDirections(), setInitialDirection(), PNS::MOUSE_TRAIL_TRACER::SetMouseDisabled(), PNS::ALGO_BASE::Settings(), PNS::MOUSE_TRAIL_TRACER::SetTolerance(), PNS::ITEM::SOLID_T, EDA_ITEM::Type(), DIRECTION_45::UNDEFINED, and PNS::LINE::Width().
|
inline |
Return the "tail" of the line being placed, the part which has already wrapped around and shoved some obstacles.
Definition at line 139 of file pns_line_placer.h.
References m_tail.
|
overridevirtual |
Enable/disable a via at the end of currently routed trace.
Reimplemented from PNS::PLACEMENT_ALGO.
Definition at line 90 of file pns_line_placer.cpp.
References m_head, m_placingVia, and PNS::LINE::RemoveVia().
const LINE PNS::LINE_PLACER::Trace | ( | ) | const |
Return the complete routed line.
Definition at line 1236 of file pns_line_placer.cpp.
References SHAPE_LINE_CHAIN::Append(), PNS::LINE::CLine(), PNS::ALGO_BASE::Dbg(), GREEN, LIGHTGREEN, m_head, m_tail, PNS_DBG, SHAPE_LINE_CHAIN::PointCount(), PNS::LINE::SetShape(), and SHAPE_LINE_CHAIN::Simplify().
Referenced by FixRoute(), Move(), optimizeTailHeadTransition(), Traces(), and updateLeadingRatLine().
|
overridevirtual |
Return the complete routed line, as a single-member ITEM_SET.
Implements PNS::PLACEMENT_ALGO.
Definition at line 1258 of file pns_line_placer.cpp.
References m_currentTrace, and Trace().
|
overridevirtual |
Reimplemented from PNS::PLACEMENT_ALGO.
Definition at line 1728 of file pns_line_placer.cpp.
References PNS::MOUSE_TRAIL_TRACER::AddTrailPoint(), PNS::NODE::Branch(), SHAPE_LINE_CHAIN::Clear(), PNS::MOUSE_TRAIL_TRACER::Clear(), PNS::FIXED_TAIL::STAGE::commit, SHAPE_LINE_CHAIN::CPoint(), PNS::NODE::KillChildren(), PNS::LINE::Line(), m_currentLayer, m_currentNode, m_currentStart, m_direction, m_fixedTail, m_fixStart, m_head, m_initial_direction, m_lastNode, m_mouseTrailTracer, m_p_start, m_placingVia, m_shove, m_startItem, m_tail, SHAPE_LINE_CHAIN::PointCount(), PNS::FIXED_TAIL::PopStage(), PNS::FIXED_TAIL::STAGE::pts, PNS::LINE::RemoveVia(), PNS::RM_Shove, PNS::MOUSE_TRAIL_TRACER::SetDefaultDirections(), PNS::ITEM::SetLayer(), and PNS::ALGO_BASE::Settings().
|
private |
Draw the "leading" rats nest line, which connects the end of currently routed track and the nearest yet unrouted item.
If the routing for current net is complete, draws nothing.
Definition at line 1962 of file pns_line_placer.cpp.
References PNS::ROUTER_IFACE::DisplayRatline(), PNS::ROUTER::GetInterface(), PNS::TOPOLOGY::LeadingRatLine(), m_currentNet, m_lastNode, PNS::ALGO_BASE::m_router, and Trace().
Referenced by Move().
|
private |
Definition at line 1105 of file pns_line_placer.cpp.
References PNS::LINE::CLine(), SHAPE_LINE_CHAIN::CPoint(), m_currentStart, m_p_start, and SHAPE_LINE_CHAIN::PointCount().
Referenced by routeStep().
|
overridevirtual |
Perform on-the-fly update of the width, via diameter & drill size from a settings class.
Performs on-the-fly update of the width, via diameter & drill size from a settings class. Used to dynamically change these parameters as the track is routed.
Reimplemented from PNS::PLACEMENT_ALGO.
Definition at line 1936 of file pns_line_placer.cpp.
References PNS::LINE::EndsWithVia(), HasPlacedAnything(), PNS::ITEM::Kind(), m_currentTrace, m_head, m_idle, m_sizes, m_startItem, m_tail, PNS::ITEM::SEGMENT_T, PNS::LINE::SetViaDiameter(), PNS::LINE::SetViaDrill(), PNS::LINE::SetWidth(), PNS::SIZES_SETTINGS::TrackWidth(), PNS::SIZES_SETTINGS::TrackWidthIsExplicit(), PNS::SIZES_SETTINGS::ViaDiameter(), and PNS::SIZES_SETTINGS::ViaDrill().
|
inherited |
Definition at line 40 of file pns_algo_base.cpp.
References PNS::ALGO_BASE::m_router, and PNS::ROUTER::VisibleViewArea().
Referenced by PNS::SHOVE::runOptimizer().
|
private |
Definition at line 382 of file pns_line_placer.h.
Referenced by FixRoute(), LINE_PLACER(), SetLayer(), and Start().
|
private |
Definition at line 374 of file pns_line_placer.h.
Referenced by CurrentEnd(), Move(), SetLayer(), and Start().
|
private |
Definition at line 372 of file pns_line_placer.h.
Referenced by buildInitialLine(), CurrentLayer(), FixRoute(), initPlacement(), LINE_PLACER(), SetLayer(), Start(), and UnfixRoute().
|
private |
Definition at line 371 of file pns_line_placer.h.
Referenced by CurrentNets(), FixRoute(), GetModifiedNets(), initPlacement(), LINE_PLACER(), Move(), Start(), and updateLeadingRatLine().
|
private |
Current world state.
Definition at line 363 of file pns_line_placer.h.
Referenced by buildInitialLine(), clipAndCheckCollisions(), CommitPlacement(), CurrentNode(), FixRoute(), initPlacement(), LINE_PLACER(), Move(), optimizeTailHeadTransition(), reduceTail(), rhMarkObstacles(), rhShoveOnly(), rhWalkBase(), rhWalkOnly(), Start(), and UnfixRoute().
|
private |
Definition at line 375 of file pns_line_placer.h.
Referenced by CurrentStart(), FixRoute(), initPlacement(), SetLayer(), Start(), UnfixRoute(), and updatePStart().
|
private |
Definition at line 376 of file pns_line_placer.h.
Referenced by FlipPosture(), Traces(), and UpdateSizes().
|
protectedinherited |
Definition at line 86 of file pns_algo_base.h.
Referenced by PNS::ALGO_BASE::Dbg(), and PNS::ALGO_BASE::SetDebugDecorator().
|
private |
current routing direction
Definition at line 346 of file pns_line_placer.h.
Referenced by buildInitialLine(), FixRoute(), handlePullback(), handleSelfIntersections(), initPlacement(), mergeHead(), optimizeTailHeadTransition(), reduceTail(), routeStep(), setInitialDirection(), SetLayer(), Start(), and UnfixRoute().
|
private |
Definition at line 379 of file pns_line_placer.h.
Referenced by LINE_PLACER(), Move(), rhShoveOnly(), and Start().
|
private |
Definition at line 386 of file pns_line_placer.h.
Referenced by FixRoute(), HasPlacedAnything(), Start(), and UnfixRoute().
|
private |
start point of the last 'fix'
Definition at line 357 of file pns_line_placer.h.
Referenced by FixRoute(), Start(), and UnfixRoute().
|
private |
the volatile part of the track from the previously analyzed point to the current routing destination
Definition at line 349 of file pns_line_placer.h.
Referenced by clipAndCheckCollisions(), FixRoute(), handlePullback(), handleSelfIntersections(), Head(), initPlacement(), mergeHead(), optimizeTailHeadTransition(), reduceTail(), rhMarkObstacles(), rhWalkBase(), route(), routeStep(), SetLayer(), Start(), ToggleVia(), Trace(), UnfixRoute(), and UpdateSizes().
|
private |
Definition at line 381 of file pns_line_placer.h.
Referenced by FixRoute(), initPlacement(), LINE_PLACER(), SetLayer(), and UpdateSizes().
|
private |
routing direction for new traces
Definition at line 347 of file pns_line_placer.h.
Referenced by FixRoute(), handlePullback(), handleSelfIntersections(), initPlacement(), LINE_PLACER(), reduceTail(), setInitialDirection(), SetLayer(), Start(), and UnfixRoute().
|
private |
Definition at line 359 of file pns_line_placer.h.
Referenced by buildInitialLine(), initPlacement(), and routeStep().
|
private |
Postprocessed world state (including marked collisions & removed loops)
Definition at line 364 of file pns_line_placer.h.
Referenced by CommitPlacement(), CurrentNode(), FixRoute(), initPlacement(), LINE_PLACER(), Move(), UnfixRoute(), and updateLeadingRatLine().
|
protectedinherited |
Definition at line 88 of file pns_algo_base.h.
Referenced by PNS::ALGO_BASE::Logger(), and PNS::ALGO_BASE::SetLogger().
|
private |
Definition at line 387 of file pns_line_placer.h.
Referenced by buildInitialLine(), FixRoute(), FlipPosture(), Move(), optimizeTailHeadTransition(), rhShoveOnly(), rhWalkOnly(), SetLayer(), Start(), and UnfixRoute().
|
private |
Definition at line 383 of file pns_line_placer.h.
Referenced by buildInitialLine(), LINE_PLACER(), and SetOrthoMode().
|
private |
current routing start (end of tail, beginning of head)
Definition at line 356 of file pns_line_placer.h.
Referenced by buildInitialLine(), FixRoute(), handlePullback(), initPlacement(), Move(), routeStep(), SetLayer(), UnfixRoute(), and updatePStart().
|
private |
Definition at line 384 of file pns_line_placer.h.
Referenced by FixRoute(), HasPlacedAnything(), LINE_PLACER(), and Start().
|
private |
Definition at line 369 of file pns_line_placer.h.
Referenced by buildInitialLine(), FixRoute(), IsPlacingVia(), LINE_PLACER(), rhShoveOnly(), rhWalkBase(), rhWalkOnly(), Start(), ToggleVia(), and UnfixRoute().
|
protectedinherited |
Definition at line 87 of file pns_algo_base.h.
Referenced by PNS::MEANDER_PLACER::doMove(), FixRoute(), PNS::MEANDER_PLACER_BASE::lineLength(), PNS::DP_MEANDER_PLACER::Move(), PNS::MEANDER_SKEW_PLACER::Move(), PNS::ALGO_BASE::Router(), PNS::ALGO_BASE::Settings(), PNS::DIFF_PAIR_PLACER::updateLeadingRatLine(), updateLeadingRatLine(), and PNS::ALGO_BASE::VisibleViewArea().
|
private |
The shove engine.
Definition at line 361 of file pns_line_placer.h.
Referenced by CommitPlacement(), FixRoute(), initPlacement(), LINE_PLACER(), rhShoveOnly(), Start(), and UnfixRoute().
|
private |
Definition at line 367 of file pns_line_placer.h.
Referenced by initPlacement(), makeVia(), and UpdateSizes().
|
private |
Definition at line 378 of file pns_line_placer.h.
Referenced by FixRoute(), initPlacement(), LINE_PLACER(), SetLayer(), Start(), UnfixRoute(), and UpdateSizes().
|
private |
routing "tail": part of the track that has been already fixed due to collisions with obstacles
Definition at line 352 of file pns_line_placer.h.
Referenced by buildInitialLine(), FixRoute(), handlePullback(), handleSelfIntersections(), initPlacement(), mergeHead(), optimizeTailHeadTransition(), reduceTail(), rhMarkObstacles(), rhShoveOnly(), rhWalkBase(), rhWalkOnly(), routeStep(), setInitialDirection(), SetLayer(), Tail(), Trace(), UnfixRoute(), and UpdateSizes().
|
private |
pointer to world to search colliding items
Definition at line 355 of file pns_line_placer.h.
Referenced by AbortPlacement(), FixRoute(), initPlacement(), LINE_PLACER(), and setWorld().