94 typedef std::vector<SHAPE_LINE_CHAIN>
HULL_SET;
127 const LINE& aShovedLine )
const;
181 #endif // __PNS_SHOVE_H
bool pushLineStack(const LINE &aL, bool aKeepCurrentOnTop=false)
Base class for PNS router board items.
LINE assembleLine(const LINKED_ITEM *aSeg, int *aIndex=NULL)
int m_restrictSpringbackTagId
Keep the router "world" - i.e.
SHOVE_STATUS onCollidingSolid(LINE &aCurrent, ITEM *aObstacle)
void unwindLineStack(LINKED_ITEM *aSeg)
const LINE NewHead() const
SHOVE_STATUS shoveLineToHullSet(const LINE &aCurLine, const LINE &aObstacleLine, LINE &aResultLine, const HULL_SET &aHulls)
SHOVE_STATUS onCollidingArc(LINE &aCurrent, ARC *aObstacleArc)
Base class for all P&S algorithms (shoving, walkaround, line placement, dragging, etc....
std::vector< LINE > m_optimizerQueue
Define a general 2D-vector/point.
bool RewindSpringbackTo(NODE *aNode)
std::pair< LINE, LINE > LINE_PAIR
Represents a track on a PCB, connecting two non-trivial joints (that is, vias, pads,...
SHOVE_STATUS ShoveObstacleLine(const LINE &aCurLine, const LINE &aObstacleLine, LINE &aResultLine)
SHOVE_STATUS pushOrShoveVia(VIA *aVia, const VECTOR2I &aForce, int aCurrentRank)
std::vector< LINE_PAIR > LINE_PAIR_VEC
SHOVE_STATUS onCollidingLine(LINE &aCurrent, LINE &aObstacle)
SHOVE_STATUS onReverseCollidingVia(LINE &aCurrent, VIA *aObstacleVia)
std::vector< SHAPE_LINE_CHAIN > HULL_SET
OPT_BOX2I totalAffectedArea() const
NODE * reduceSpringback(const ITEM_SET &aHeadSet, VIA_HANDLE &aDraggedVia)
SHOVE_STATUS ShoveLines(const LINE &aCurrentHead)
bool AddLockedSpringbackNode(NODE *aNode)
SHOVE_STATUS onCollidingVia(ITEM *aCurrent, VIA *aObstacleVia)
void runOptimizer(NODE *aNode)
void sanityCheck(LINE *aOld, LINE *aNew)
SHOVE_STATUS shoveIteration(int aIter)
SHOVE(NODE *aWorld, ROUTER *aRouter)
bool pushSpringback(NODE *aNode, const OPT_BOX2I &aAffectedArea, VIA *aDraggedVia)
SHOVE_STATUS onCollidingSegment(LINE &aCurrent, SEGMENT *aObstacleSeg)
void UnlockSpringbackNode(NODE *aNode)
SHOVE_STATUS ShoveDraggingVia(const VIA_HANDLE aOldVia, const VECTOR2I &aWhere, VIA_HANDLE &aNewVia)
std::vector< SPRINGBACK_TAG > m_nodeStack
void ForceClearance(bool aEnabled, int aClearance)
virtual LOGGER * Logger() override
bool checkShoveDirection(const LINE &aCurLine, const LINE &aObstacleLine, const LINE &aShovedLine) const
void replaceLine(LINE &aOld, LINE &aNew)
SHOVE_STATUS shoveMainLoop()
void SetInitialLine(LINE &aInitial)
int getClearance(const ITEM *aA, const ITEM *aB) const
int getHoleClearance(const ITEM *aA, const ITEM *aB) const
void replaceItems(ITEM *aOld, std::unique_ptr< ITEM > aNew)
std::vector< LINE > m_lineStack
SHOVE_STATUS ShoveMultiLines(const ITEM_SET &aHeadSet)
Push and Shove diff pair dimensions (gap) settings dialog.
SHOVE_STATUS shoveLineFromLoneVia(const LINE &aCurLine, const LINE &aObstacleLine, LINE &aResultLine)