KiCad PCB EDA Suite
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

Public Member Functions

 DRAG_ALGO (ROUTER *aRouter)
 
 ~DRAG_ALGO ()
 
virtual void SetWorld (NODE *aWorld)
 Function SetWorld() More...
 
virtual bool Start (const VECTOR2I &aP, ITEM_SET &aPrimitives)=0
 Function Start() More...
 
virtual bool Drag (const VECTOR2I &aP)=0
 Function Drag() More...
 
virtual bool FixRoute ()=0
 Function FixRoute() More...
 
virtual NODECurrentNode () const =0
 Function CurrentNode() More...
 
virtual const std::vector< int > CurrentNets () const =0
 Function CurrentNets() More...
 
virtual int CurrentLayer () const =0
 Function CurrentLayer() More...
 
virtual const ITEM_SET Traces ()=0
 Function Traces() More...
 
virtual void SetMode (int aDragMode)
 
ROUTERRouter () const
 Return current router settings. More...
 
ROUTING_SETTINGSSettings () const
 Return the logger object, allowing to dump geometry to a file. More...
 
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. More...
 
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 42 of file pns_drag_algo.h.

Constructor & Destructor Documentation

◆ DRAG_ALGO()

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

Definition at line 45 of file pns_drag_algo.h.

45  :
46  ALGO_BASE( aRouter ),
47  m_world( nullptr )
48  {
49  }
ALGO_BASE(ROUTER *aRouter)
Definition: pns_algo_base.h:45

◆ ~DRAG_ALGO()

PNS::DRAG_ALGO::~DRAG_ALGO ( )
inline

Definition at line 51 of file pns_drag_algo.h.

52  {
53  }

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::DRAGGER, and PNS::COMPONENT_DRAGGER.

◆ CurrentNets()

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

Function CurrentNets()

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

Implemented in PNS::DRAGGER, and PNS::COMPONENT_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::DRAGGER, and PNS::COMPONENT_DRAGGER.

◆ Dbg()

◆ 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::DRAGGER, and PNS::COMPONENT_DRAGGER.

◆ FixRoute()

virtual bool PNS::DRAG_ALGO::FixRoute ( )
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::DRAGGER, and PNS::COMPONENT_DRAGGER.

◆ Logger()

LOGGER * PNS::ALGO_BASE::Logger ( )
virtualinherited

Reimplemented in PNS::SHOVE.

Definition at line 34 of file pns_algo_base.cpp.

35 {
36  return NULL;
37 }
#define NULL

References NULL.

Referenced by PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkOnly(), PNS::DRAGGER::Start(), and PNS::DRAGGER::tryWalkaround().

◆ 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.

74  {
75  m_debugDecorator = aDecorator;
76  }
DEBUG_DECORATOR * m_debugDecorator
Definition: pns_algo_base.h:86

References PNS::ALGO_BASE::m_debugDecorator.

Referenced by PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkOnly(), PNS::SHOVE::SHOVE(), and PNS::DRAGGER::tryWalkaround().

◆ SetLogger()

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

Definition at line 65 of file pns_algo_base.h.

66  {
67  m_logger = aLogger;
68  }
LOGGER * m_logger
Definition: pns_algo_base.h:88

References PNS::ALGO_BASE::m_logger.

Referenced by PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkOnly(), and PNS::DRAGGER::tryWalkaround().

◆ SetMode()

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

Reimplemented in PNS::DRAGGER.

Definition at line 118 of file pns_drag_algo.h.

118 {};

◆ Settings()

◆ SetWorld()

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

Function SetWorld()

Sets the board to work on.

Definition at line 60 of file pns_drag_algo.h.

61  {
62  m_world = aWorld;
63  }

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::DRAGGER, and PNS::COMPONENT_DRAGGER.

◆ Traces()

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

Function Traces()

Returns the set of dragged items.

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

◆ VisibleViewArea()

const BOX2I & PNS::ALGO_BASE::VisibleViewArea ( ) const
inherited

Definition at line 39 of file pns_algo_base.cpp.

40 {
41  return m_router->VisibleViewArea();
42 }
ROUTER * m_router
Definition: pns_algo_base.h:87
const BOX2I & VisibleViewArea() const
Definition: pns_router.h:220

References PNS::ALGO_BASE::m_router, and PNS::ROUTER::VisibleViewArea().

Referenced by PNS::DRAGGER::optimizeAndUpdateDraggedLine(), and 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::SetLogger().

◆ m_router

◆ m_world


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