KiCad PCB EDA Suite
Loading...
Searching...
No Matches
PNS::DRAG_ALGO Class Referenceabstract

DRAG_ALGO. More...

#include <pns_drag_algo.h>

Inheritance diagram for PNS::DRAG_ALGO:
PNS::ALGO_BASE PNS::COMPONENT_DRAGGER PNS::DRAGGER PNS::MULTI_DRAGGER

Public Member Functions

 DRAG_ALGO (ROUTER *aRouter)
 
 ~DRAG_ALGO ()
 
virtual void SetWorld (NODE *aWorld)
 Function SetWorld()
 
virtual bool Start (const VECTOR2I &aP, ITEM_SET &aPrimitives)=0
 Function Start()
 
virtual bool Drag (const VECTOR2I &aP)=0
 Function Drag()
 
virtual bool FixRoute (bool aForceCommit)=0
 Function FixRoute()
 
virtual NODECurrentNode () const =0
 Function CurrentNode()
 
virtual const std::vector< NET_HANDLECurrentNets () const =0
 Function CurrentNets()
 
virtual int CurrentLayer () const =0
 Function CurrentLayer()
 
virtual const ITEM_SET Traces ()=0
 Function Traces()
 
virtual void SetMode (PNS::DRAG_MODE aDragMode)
 
virtual PNS::DRAG_MODE Mode () const =0
 
virtual bool GetForceMarkObstaclesMode (bool *aDragStatus) const =0
 
virtual std::vector< PNS::ITEM * > GetLastCommittedLeaderSegments ()
 
ROUTERRouter () const
 Return current router settings.
 
ROUTING_SETTINGSSettings () const
 Return the logger object, allowing to dump geometry to a file.
 
virtual LOGGERLogger ()
 
void SetLogger (LOGGER *aLogger)
 
void SetDebugDecorator (DEBUG_DECORATOR *aDecorator)
 Assign a debug decorator allowing this algo to draw extra graphics for visual debugging.
 
DEBUG_DECORATORDbg () const
 
const BOX2IVisibleViewArea () const
 

Protected Attributes

NODEm_world
 
DEBUG_DECORATORm_debugDecorator
 
ROUTERm_router
 
LOGGERm_logger
 

Detailed Description

DRAG_ALGO.

Base class for item dragging algorithms.

Definition at line 43 of file pns_drag_algo.h.

Constructor & Destructor Documentation

◆ DRAG_ALGO()

PNS::DRAG_ALGO::DRAG_ALGO ( ROUTER aRouter)
inline

Definition at line 46 of file pns_drag_algo.h.

◆ ~DRAG_ALGO()

PNS::DRAG_ALGO::~DRAG_ALGO ( )
inline

Definition at line 52 of file pns_drag_algo.h.

Member Function Documentation

◆ CurrentLayer()

virtual int PNS::DRAG_ALGO::CurrentLayer ( ) const
pure virtual

Function CurrentLayer()

Returns the layer of currently dragged item(s).

Implemented in PNS::COMPONENT_DRAGGER, PNS::DRAGGER, and PNS::MULTI_DRAGGER.

◆ CurrentNets()

virtual const std::vector< NET_HANDLE > PNS::DRAG_ALGO::CurrentNets ( ) const
pure virtual

Function CurrentNets()

Returns the net(s) of currently dragged item(s).

Implemented in PNS::COMPONENT_DRAGGER, PNS::DRAGGER, and PNS::MULTI_DRAGGER.

◆ CurrentNode()

virtual NODE * PNS::DRAG_ALGO::CurrentNode ( ) const
pure virtual

Function CurrentNode()

Returns the most recent world state, including all items changed by dragging operation.

Implemented in PNS::COMPONENT_DRAGGER, PNS::DRAGGER, and PNS::MULTI_DRAGGER.

◆ Dbg()

DEBUG_DECORATOR * PNS::ALGO_BASE::Dbg ( ) const
inlineinherited

Definition at line 78 of file pns_algo_base.h.

References PNS::ALGO_BASE::m_debugDecorator.

Referenced by PNS::SHOVE::AddLockedSpringbackNode(), PNS::LINE_PLACER::buildInitialLine(), PNS::LINE_PLACER::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(), PNS::LINE_PLACER::handlePullback(), PNS::LINE_PLACER::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(), PNS::LINE_PLACER::optimizeTailHeadTransition(), PNS::SHOVE::preShoveCleanup(), PNS::SHOVE::pruneRootLines(), PNS::SHOVE::pushLineStack(), PNS::SHOVE::pushOrShoveVia(), PNS::SHOVE::pushSpringback(), PNS::SHOVE::reconstructHeads(), PNS::SHOVE::reduceSpringback(), PNS::LINE_PLACER::reduceTail(), PNS::SHOVE::removeHeads(), PNS::LINE_PLACER::removeLoops(), PNS::SHOVE::replaceItems(), PNS::SHOVE::replaceLine(), PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkBase(), PNS::LINE_PLACER::rhWalkOnly(), PNS::WALKAROUND::Route(), PNS::LINE_PLACER::routeStep(), PNS::SHOVE::Run(), PNS::SHOVE::runOptimizer(), PNS::SHOVE::shoveIteration(), PNS::SHOVE::shoveLineToHullSet(), PNS::SHOVE::shoveMainLoop(), PNS::SHOVE::ShoveObstacleLine(), PNS::WALKAROUND::singleStep(), PNS::LINE_PLACER::splitHeadTail(), PNS::LINE_PLACER::Start(), PNS::DRAGGER::Start(), PNS::MULTI_DRAGGER::Start(), PNS::SHOVE::touchRootLine(), PNS::LINE_PLACER::Trace(), PNS::DRAGGER::tryWalkaround(), PNS::MULTI_DRAGGER::tryWalkaround(), and PNS::SHOVE::unwindLineStack().

◆ Drag()

virtual bool PNS::DRAG_ALGO::Drag ( const VECTOR2I aP)
pure virtual

Function Drag()

Drags the current segment/corner/via to the point aP.

Returns
true, if dragging finished with success.

Implemented in PNS::COMPONENT_DRAGGER, PNS::DRAGGER, and PNS::MULTI_DRAGGER.

◆ FixRoute()

virtual bool PNS::DRAG_ALGO::FixRoute ( bool  aForceCommit)
pure virtual

Function FixRoute()

Checks if the result of current dragging operation is correct and eventually commits it to the world.

Returns
true, if dragging finished with success.

Implemented in PNS::COMPONENT_DRAGGER, PNS::DRAGGER, and PNS::MULTI_DRAGGER.

◆ GetForceMarkObstaclesMode()

virtual bool PNS::DRAG_ALGO::GetForceMarkObstaclesMode ( bool *  aDragStatus) const
pure virtual

◆ GetLastCommittedLeaderSegments()

virtual std::vector< PNS::ITEM * > PNS::DRAG_ALGO::GetLastCommittedLeaderSegments ( )
inlinevirtual

Reimplemented in PNS::MULTI_DRAGGER.

Definition at line 125 of file pns_drag_algo.h.

◆ Logger()

◆ Mode()

virtual PNS::DRAG_MODE PNS::DRAG_ALGO::Mode ( ) const
pure virtual

◆ Router()

◆ SetDebugDecorator()

void PNS::ALGO_BASE::SetDebugDecorator ( DEBUG_DECORATOR aDecorator)
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(), PNS::LINE_PLACER::rhWalkBase(), PNS::SHOVE::SHOVE(), PNS::DRAGGER::tryWalkaround(), and PNS::MULTI_DRAGGER::tryWalkaround().

◆ SetLogger()

void PNS::ALGO_BASE::SetLogger ( LOGGER aLogger)
inlineinherited

◆ SetMode()

virtual void PNS::DRAG_ALGO::SetMode ( PNS::DRAG_MODE  aDragMode)
inlinevirtual

Reimplemented in PNS::DRAGGER, and PNS::MULTI_DRAGGER.

Definition at line 119 of file pns_drag_algo.h.

◆ Settings()

◆ SetWorld()

virtual void PNS::DRAG_ALGO::SetWorld ( NODE aWorld)
inlinevirtual

Function SetWorld()

Sets the board to work on.

Definition at line 61 of file pns_drag_algo.h.

References m_world.

◆ Start()

virtual bool PNS::DRAG_ALGO::Start ( const VECTOR2I aP,
ITEM_SET aPrimitives 
)
pure virtual

Function Start()

Starts routing a single track at point aP, taking item aStartItem as anchor (unless NULL). Returns true if a dragging operation has started.

Implemented in PNS::COMPONENT_DRAGGER, PNS::DRAGGER, and PNS::MULTI_DRAGGER.

◆ Traces()

virtual const ITEM_SET PNS::DRAG_ALGO::Traces ( )
pure virtual

Function Traces()

Returns the set of dragged items.

Implemented in PNS::COMPONENT_DRAGGER, PNS::DRAGGER, and PNS::MULTI_DRAGGER.

Referenced by PNS::ROUTER::markViolations().

◆ VisibleViewArea()

const BOX2I & PNS::ALGO_BASE::VisibleViewArea ( ) const
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().

Member Data Documentation

◆ m_debugDecorator

DEBUG_DECORATOR* PNS::ALGO_BASE::m_debugDecorator
protectedinherited

Definition at line 86 of file pns_algo_base.h.

Referenced by PNS::ALGO_BASE::Dbg(), and PNS::ALGO_BASE::SetDebugDecorator().

◆ m_logger

LOGGER* PNS::ALGO_BASE::m_logger
protectedinherited

Definition at line 88 of file pns_algo_base.h.

Referenced by PNS::ALGO_BASE::Logger(), and PNS::ALGO_BASE::SetLogger().

◆ m_router

◆ m_world


The documentation for this class was generated from the following file: