KiCad PCB EDA Suite
PNS::DRAGGER Class Reference

Class DRAGGER. More...

#include <pns_dragger.h>

Inheritance diagram for PNS::DRAGGER:
PNS::ALGO_BASE

Public Member Functions

 DRAGGER (ROUTER *aRouter)
 
 ~DRAGGER ()
 
void SetWorld (NODE *aWorld)
 Function SetWorld() More...
 
bool Start (const VECTOR2I &aP, ITEM *aStartItem)
 Function Start() More...
 
bool Drag (const VECTOR2I &aP)
 Function Drag() More...
 
bool FixRoute ()
 Function FixRoute() More...
 
NODECurrentNode () const
 Function CurrentNode() More...
 
const ITEM_SET Traces ()
 Function Traces() More...
 
virtual LOGGERLogger () override
 

Returns the logger object, allowing to dump geometry to a file.

More...
 
ROUTERRouter () const
 

Returns the instance of our router

More...
 
ROUTING_SETTINGSSettings () const
 

Returns current router settings

More...
 
void SetDebugDecorator (DEBUG_DECORATOR *aDecorator)
 Function SetDebugDecorator. More...
 
DEBUG_DECORATORDbg () const
 

Private Types

enum  DragMode { DRAG_CORNER = 0, DRAG_SEGMENT, DRAG_VIA }
 

Private Member Functions

bool dragMarkObstacles (const VECTOR2I &aP)
 
bool dragShove (const VECTOR2I &aP)
 
bool startDragSegment (const VECTOR2D &aP, SEGMENT *aSeg)
 
bool startDragVia (const VECTOR2D &aP, VIA *aVia)
 
void dumbDragVia (VIA *aVia, NODE *aNode, const VECTOR2I &aP)
 

Private Attributes

NODEm_world
 
NODEm_lastNode
 
DragMode m_mode
 
LINE m_draggedLine
 
VIAm_draggedVia
 
LINE m_lastValidDraggedLine
 
SHOVEm_shove
 
int m_draggedSegmentIndex
 
bool m_dragStatus
 
PNS_MODE m_currentMode
 
ITEM_SET m_origViaConnections
 
VIAm_initialVia
 
ITEM_SET m_draggedItems
 

Detailed Description

Class DRAGGER.

Via, segment and corner dragging algorithm.

Definition at line 44 of file pns_dragger.h.

Member Enumeration Documentation

enum PNS::DRAGGER::DragMode
private
Enumerator
DRAG_CORNER 
DRAG_SEGMENT 
DRAG_VIA 

Definition at line 101 of file pns_dragger.h.

Constructor & Destructor Documentation

PNS::DRAGGER::DRAGGER ( ROUTER aRouter)

Definition at line 28 of file pns_dragger.cpp.

References DRAG_SEGMENT, m_currentMode, m_draggedSegmentIndex, m_draggedVia, m_dragStatus, m_initialVia, m_lastNode, m_mode, m_shove, m_world, and PNS::RM_MarkObstacles.

28  :
29  ALGO_BASE( aRouter )
30 {
31  m_world = NULL;
32  m_lastNode = NULL;
34  m_draggedVia = NULL;
35  m_shove = NULL;
37  m_dragStatus = false;
39  m_initialVia = NULL;
40 }
VIA * m_initialVia
Definition: pns_dragger.h:124
NODE * m_world
Definition: pns_dragger.h:113
DragMode m_mode
Definition: pns_dragger.h:115
bool m_dragStatus
Definition: pns_dragger.h:121
VIA * m_draggedVia
Definition: pns_dragger.h:117
SHOVE * m_shove
Definition: pns_dragger.h:119
ALGO_BASE(ROUTER *aRouter)
Definition: pns_algo_base.h:42
int m_draggedSegmentIndex
Definition: pns_dragger.h:120
NODE * m_lastNode
Definition: pns_dragger.h:114
PNS_MODE m_currentMode
Definition: pns_dragger.h:122
PNS::DRAGGER::~DRAGGER ( )

Definition at line 43 of file pns_dragger.cpp.

References m_shove.

44 {
45  if( m_shove )
46  delete m_shove;
47 }
SHOVE * m_shove
Definition: pns_dragger.h:119

Member Function Documentation

NODE * PNS::DRAGGER::CurrentNode ( ) const

Function CurrentNode()

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

Definition at line 324 of file pns_dragger.cpp.

References m_lastNode.

Referenced by FixRoute().

325 {
326  return m_lastNode;
327 }
NODE * m_lastNode
Definition: pns_dragger.h:114
bool PNS::DRAGGER::Drag ( const VECTOR2I aP)

Function Drag()

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

Returns
true, if dragging finished with success.

Definition at line 306 of file pns_dragger.cpp.

References dragMarkObstacles(), dragShove(), m_currentMode, PNS::RM_MarkObstacles, PNS::RM_Shove, PNS::RM_Smart, and PNS::RM_Walkaround.

307 {
308  switch( m_currentMode )
309  {
310  case RM_MarkObstacles:
311  return dragMarkObstacles( aP );
312 
313  case RM_Shove:
314  case RM_Walkaround:
315  case RM_Smart:
316  return dragShove( aP );
317 
318  default:
319  return false;
320  }
321 }
Ignore collisions, mark obstacles
Only walkaround
bool dragShove(const VECTOR2I &aP)
PNS_MODE m_currentMode
Definition: pns_dragger.h:122
bool dragMarkObstacles(const VECTOR2I &aP)
bool PNS::DRAGGER::dragMarkObstacles ( const VECTOR2I aP)
private

Definition at line 134 of file pns_dragger.cpp.

References PNS::ITEM_SET::Add(), PNS::NODE::Add(), PNS::NODE::Branch(), PNS::NODE::CheckColliding(), PNS::ITEM_SET::Clear(), PNS::LINE::ClearSegmentLinks(), PNS::SHOVE::CurrentNode(), DRAG_CORNER, DRAG_SEGMENT, DRAG_VIA, PNS::LINE::DragCorner(), PNS::LINE::DragSegment(), dumbDragVia(), m_draggedItems, m_draggedLine, m_draggedSegmentIndex, m_dragStatus, m_initialVia, m_lastNode, m_lastValidDraggedLine, m_mode, m_shove, m_world, PNS::ALGO_BASE::Settings(), PNS::ROUTING_SETTINGS::SmoothDraggedSegments(), PNS::LINE::Unmark(), and PNS::LINE::Width().

Referenced by Drag().

135 {
136  if( m_lastNode )
137  {
138  delete m_lastNode;
139  m_lastNode = NULL;
140  }
141 
142  switch( m_mode )
143  {
144  case DRAG_SEGMENT:
145  case DRAG_CORNER:
146  {
147  int thresh = Settings().SmoothDraggedSegments() ? m_draggedLine.Width() / 4 : 0;
148  LINE dragged( m_draggedLine );
149 
150  if( m_mode == DRAG_SEGMENT )
151  dragged.DragSegment( aP, m_draggedSegmentIndex, thresh );
152  else
153  dragged.DragCorner( aP, m_draggedSegmentIndex, thresh );
154 
156 
157  m_lastValidDraggedLine = dragged;
160 
164 
165  break;
166  }
167 
168  case DRAG_VIA: // fixme...
169  {
172 
173  break;
174  }
175  }
176 
177  if( Settings().CanViolateDRC() )
178  m_dragStatus = true;
179  else
181 
182  return true;
183 }
ITEM_SET m_draggedItems
Definition: pns_dragger.h:125
bool SmoothDraggedSegments() const
Returns true if smoothing segments durign dragging is enabled.
VIA * m_initialVia
Definition: pns_dragger.h:124
NODE * m_world
Definition: pns_dragger.h:113
DragMode m_mode
Definition: pns_dragger.h:115
bool m_dragStatus
Definition: pns_dragger.h:121
LINE m_draggedLine
Definition: pns_dragger.h:116
ROUTING_SETTINGS & Settings() const
Returns current router settings
LINE m_lastValidDraggedLine
Definition: pns_dragger.h:118
void dumbDragVia(VIA *aVia, NODE *aNode, const VECTOR2I &aP)
int Width() const
Returns line width
Definition: pns_line.h:159
void Add(const LINE &aLine)
Definition: pns_itemset.cpp:32
NODE * Branch()
Function Branch()
Definition: pns_node.cpp:109
SHOVE * m_shove
Definition: pns_dragger.h:119
int m_draggedSegmentIndex
Definition: pns_dragger.h:120
NODE * m_lastNode
Definition: pns_dragger.h:114
void ClearSegmentLinks()
Erases the linking information. Used to detach the line from the owning node.
Definition: pns_line.cpp:784
OPT_OBSTACLE CheckColliding(const ITEM *aItem, int aKindMask=ITEM::ANY_T)
Function CheckColliding()
Definition: pns_node.cpp:427
void Add(std::unique_ptr< SEGMENT > aSegment, bool aAllowRedundant=false)
Function Add()
Definition: pns_node.cpp:596
virtual void Unmark(int aMarker=-1) override
Definition: pns_line.cpp:96
NODE * CurrentNode()
Definition: pns_shove.cpp:1393
bool PNS::DRAGGER::dragShove ( const VECTOR2I aP)
private

Definition at line 220 of file pns_dragger.cpp.

References PNS::ITEM_SET::Add(), PNS::NODE::Add(), PNS::NODE::Branch(), PNS::ITEM_SET::Clear(), PNS::LINE::ClearSegmentLinks(), PNS::SHOVE::CurrentNode(), DRAG_CORNER, DRAG_SEGMENT, DRAG_VIA, PNS::LINE::DragCorner(), PNS::LINE::DragSegment(), m_draggedItems, m_draggedLine, m_draggedSegmentIndex, m_draggedVia, m_dragStatus, m_lastNode, m_lastValidDraggedLine, m_mode, m_shove, PNS::SHOVE::NewHead(), PNS::ALGO_BASE::Settings(), PNS::SHOVE::SH_HEAD_MODIFIED, PNS::SHOVE::SH_OK, PNS::SHOVE::ShoveDraggingVia(), PNS::SHOVE::ShoveLines(), PNS::ROUTING_SETTINGS::SmoothDraggedSegments(), PNS::LINE::Unmark(), and PNS::LINE::Width().

Referenced by Drag().

221 {
222  bool ok = false;
223 
224  if( m_lastNode )
225  {
226  delete m_lastNode;
227  m_lastNode = NULL;
228  }
229 
230  switch( m_mode )
231  {
232  case DRAG_SEGMENT:
233  case DRAG_CORNER:
234  {
235  int thresh = Settings().SmoothDraggedSegments() ? m_draggedLine.Width() / 4 : 0;
236  LINE dragged( m_draggedLine );
237 
238  if( m_mode == DRAG_SEGMENT )
239  dragged.DragSegment( aP, m_draggedSegmentIndex, thresh );
240  else
241  dragged.DragCorner( aP, m_draggedSegmentIndex, thresh );
242 
243  SHOVE::SHOVE_STATUS st = m_shove->ShoveLines( dragged );
244 
245  if( st == SHOVE::SH_OK )
246  ok = true;
247  else if( st == SHOVE::SH_HEAD_MODIFIED )
248  {
249  dragged = m_shove->NewHead();
250  ok = true;
251  }
252 
254 
255  if( ok )
256  m_lastValidDraggedLine = dragged;
257 
263 
264  break;
265  }
266 
267  case DRAG_VIA:
268  {
269  VIA* newVia;
271 
272  if( st == SHOVE::SH_OK || st == SHOVE::SH_HEAD_MODIFIED )
273  ok = true;
274 
276 
277  if( ok )
278  {
279  if( newVia )
280  m_draggedVia = newVia;
282  }
283 
284  break;
285  }
286  }
287 
288  m_dragStatus = ok;
289 
290  return ok;
291 }
ITEM_SET m_draggedItems
Definition: pns_dragger.h:125
bool SmoothDraggedSegments() const
Returns true if smoothing segments durign dragging is enabled.
DragMode m_mode
Definition: pns_dragger.h:115
bool m_dragStatus
Definition: pns_dragger.h:121
LINE m_draggedLine
Definition: pns_dragger.h:116
ROUTING_SETTINGS & Settings() const
Returns current router settings
LINE m_lastValidDraggedLine
Definition: pns_dragger.h:118
int Width() const
Returns line width
Definition: pns_line.h:159
void Add(const LINE &aLine)
Definition: pns_itemset.cpp:32
NODE * Branch()
Function Branch()
Definition: pns_node.cpp:109
VIA * m_draggedVia
Definition: pns_dragger.h:117
SHOVE_STATUS ShoveLines(const LINE &aCurrentHead)
Definition: pns_shove.cpp:1078
SHOVE * m_shove
Definition: pns_dragger.h:119
int m_draggedSegmentIndex
Definition: pns_dragger.h:120
SHOVE_STATUS ShoveDraggingVia(VIA *aVia, const VECTOR2I &aWhere, VIA **aNewVia)
Definition: pns_shove.cpp:1262
NODE * m_lastNode
Definition: pns_dragger.h:114
const LINE NewHead() const
Definition: pns_shove.cpp:1399
void ClearSegmentLinks()
Erases the linking information. Used to detach the line from the owning node.
Definition: pns_line.cpp:784
void Add(std::unique_ptr< SEGMENT > aSegment, bool aAllowRedundant=false)
Function Add()
Definition: pns_node.cpp:596
virtual void Unmark(int aMarker=-1) override
Definition: pns_line.cpp:96
NODE * CurrentNode()
Definition: pns_shove.cpp:1393
void PNS::DRAGGER::dumbDragVia ( VIA aVia,
NODE aNode,
const VECTOR2I aP 
)
private

Definition at line 186 of file pns_dragger.cpp.

References PNS::ITEM_SET::Add(), PNS::NODE::Add(), PNS::ITEM_SET::Clear(), PNS::LINE::ClearSegmentLinks(), PNS::LINE::CLine(), PNS::Clone(), PNS::LINE::DragCorner(), SHAPE_LINE_CHAIN::Find(), PNS::ITEM_SET::Items(), m_draggedItems, m_draggedVia, m_lastNode, m_origViaConnections, PNS::VIA::Pos(), PNS::NODE::Remove(), and PNS::VIA::SetPos().

Referenced by dragMarkObstacles().

187 {
189 
190  // fixme: this is awful.
191  auto via_clone = Clone( *aVia );
192 
193  m_draggedVia = via_clone.get();
194  m_draggedVia->SetPos( aP );
195 
197 
198  m_lastNode->Remove( aVia );
199  m_lastNode->Add( std::move( via_clone ) );
200 
201  for( ITEM* item : m_origViaConnections.Items() )
202  {
203  if( const LINE* l = dyn_cast<const LINE*>( item ) )
204  {
205  LINE origLine( *l );
206  LINE draggedLine( *l );
207 
208  draggedLine.DragCorner( aP, origLine.CLine().Find( aVia->Pos() ) );
209  draggedLine.ClearSegmentLinks();
210 
211  m_draggedItems.Add( draggedLine );
212 
213  m_lastNode->Remove( origLine );
214  m_lastNode->Add( draggedLine );
215  }
216  }
217 }
ITEM_SET m_draggedItems
Definition: pns_dragger.h:125
ENTRIES & Items()
Definition: pns_itemset.h:137
void Add(const LINE &aLine)
Definition: pns_itemset.cpp:32
VIA * m_draggedVia
Definition: pns_dragger.h:117
ITEM_SET m_origViaConnections
Definition: pns_dragger.h:123
void Remove(SOLID *aSolid)
Function Remove()
Definition: pns_node.cpp:729
NODE * m_lastNode
Definition: pns_dragger.h:114
void SetPos(const VECTOR2I &aPos)
Definition: pns_via.h:93
std::unique_ptr< typename std::remove_const< T >::type > Clone(const T &aItem)
Definition: pns_item.h:367
void Add(std::unique_ptr< SEGMENT > aSegment, bool aAllowRedundant=false)
Function Add()
Definition: pns_node.cpp:596
bool PNS::DRAGGER::FixRoute ( )

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.

Definition at line 294 of file pns_dragger.cpp.

References PNS::ROUTER::CommitRouting(), CurrentNode(), m_dragStatus, and PNS::ALGO_BASE::Router().

295 {
296  if( m_dragStatus )
297  {
299  return true;
300  }
301 
302  return false;
303 }
bool m_dragStatus
Definition: pns_dragger.h:121
ROUTER * Router() const
Returns the instance of our router
Definition: pns_algo_base.h:49
NODE * CurrentNode() const
Function CurrentNode()
void CommitRouting(NODE *aNode)
Definition: pns_router.cpp:317
LOGGER * PNS::DRAGGER::Logger ( )
overridevirtual

Returns the logger object, allowing to dump geometry to a file.

Reimplemented from PNS::ALGO_BASE.

Definition at line 336 of file pns_dragger.cpp.

References PNS::SHOVE::Logger(), and m_shove.

337 {
338  if( m_shove )
339  return m_shove->Logger();
340 
341  return NULL;
342 }
SHOVE * m_shove
Definition: pns_dragger.h:119
virtual LOGGER * Logger() override
Returns the logger object, allowing to dump geometry to a file.
Definition: pns_shove.h:62
void PNS::ALGO_BASE::SetDebugDecorator ( DEBUG_DECORATOR aDecorator)
inlineinherited

Function SetDebugDecorator.

Assign a debug decorator allowing this algo to draw extra graphics for visual debugging

Definition at line 65 of file pns_algo_base.h.

References PNS::ALGO_BASE::m_debugDecorator.

66  {
67  m_debugDecorator = aDecorator;
68  }
DEBUG_DECORATOR * m_debugDecorator
Definition: pns_algo_base.h:76
void PNS::DRAGGER::SetWorld ( NODE aWorld)

Function SetWorld()

Sets the board to work on.

Definition at line 50 of file pns_dragger.cpp.

References m_world.

51 {
52  m_world = aWorld;
53 }
NODE * m_world
Definition: pns_dragger.h:113
bool PNS::DRAGGER::Start ( const VECTOR2I aP,
ITEM aStartItem 
)

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.

Definition at line 109 of file pns_dragger.cpp.

References PNS::ITEM_SET::Clear(), PNS::ITEM::Kind(), m_currentMode, m_draggedItems, m_lastNode, m_shove, m_world, PNS::MK_LOCKED, PNS::ROUTING_SETTINGS::Mode(), PNS::ALGO_BASE::Router(), PNS::ITEM::SEGMENT_T, PNS::ALGO_BASE::Settings(), startDragSegment(), startDragVia(), PNS::ITEM::Unmark(), and PNS::ITEM::VIA_T.

110 {
111  m_shove = new SHOVE( m_world, Router() );
112  m_lastNode = NULL;
115 
116  aStartItem->Unmark( MK_LOCKED );
117 
118  wxLogTrace( "PNS", "StartDragging: item %p [kind %d]", aStartItem, (int) aStartItem->Kind() );
119 
120  switch( aStartItem->Kind() )
121  {
122  case ITEM::SEGMENT_T:
123  return startDragSegment( aP, static_cast<SEGMENT*>( aStartItem ) );
124 
125  case ITEM::VIA_T:
126  return startDragVia( aP, static_cast<VIA*>( aStartItem ) );
127 
128  default:
129  return false;
130  }
131 }
PNS_MODE Mode() const
Returns the routing mode.
ITEM_SET m_draggedItems
Definition: pns_dragger.h:125
NODE * m_world
Definition: pns_dragger.h:113
bool startDragSegment(const VECTOR2D &aP, SEGMENT *aSeg)
Definition: pns_dragger.cpp:56
ROUTING_SETTINGS & Settings() const
Returns current router settings
SHOVE * m_shove
Definition: pns_dragger.h:119
bool startDragVia(const VECTOR2D &aP, VIA *aVia)
Definition: pns_dragger.cpp:78
ROUTER * Router() const
Returns the instance of our router
Definition: pns_algo_base.h:49
NODE * m_lastNode
Definition: pns_dragger.h:114
PNS_MODE m_currentMode
Definition: pns_dragger.h:122
bool PNS::DRAGGER::startDragSegment ( const VECTOR2D aP,
SEGMENT aSeg 
)
private

Definition at line 56 of file pns_dragger.cpp.

References SEG::A, PNS::NODE::AssembleLine(), SEG::B, PNS::LINE::ClearSegmentLinks(), DRAG_CORNER, DRAG_SEGMENT, EuclideanNorm(), m_draggedLine, m_draggedSegmentIndex, m_lastValidDraggedLine, m_mode, m_shove, m_world, PNS::SEGMENT::Seg(), PNS::SHOVE::SetInitialLine(), and PNS::SEGMENT::Width().

Referenced by Start().

57 {
58  int w2 = aSeg->Width() / 2;
59 
64 
65  if( ( aP - aSeg->Seg().A ).EuclideanNorm() <= w2 )
67  else if( ( aP - aSeg->Seg().B ).EuclideanNorm() <= w2 )
68  {
71  } else
73 
74  return true;
75 }
double EuclideanNorm(const wxPoint &vector)
Euclidean norm of a 2D vector.
Definition: trigo.h:104
NODE * m_world
Definition: pns_dragger.h:113
DragMode m_mode
Definition: pns_dragger.h:115
const LINE AssembleLine(SEGMENT *aSeg, int *aOriginSegmentIndex=NULL, bool aStopAtLockedJoints=false)
Function AssembleLine()
Definition: pns_node.cpp:834
LINE m_draggedLine
Definition: pns_dragger.h:116
LINE m_lastValidDraggedLine
Definition: pns_dragger.h:118
SHOVE * m_shove
Definition: pns_dragger.h:119
int m_draggedSegmentIndex
Definition: pns_dragger.h:120
void ClearSegmentLinks()
Erases the linking information. Used to detach the line from the owning node.
Definition: pns_line.cpp:784
void SetInitialLine(LINE &aInitial)
Definition: pns_shove.cpp:1407
bool PNS::DRAGGER::startDragVia ( const VECTOR2D aP,
VIA aVia 
)
private

Definition at line 78 of file pns_dragger.cpp.

References PNS::ITEM_SET::Add(), PNS::NODE::AssembleLine(), DRAG_VIA, PNS::NODE::FindJoint(), PNS::ITEM::Layers(), m_draggedVia, m_initialVia, m_mode, m_origViaConnections, m_world, PNS::ITEM::Net(), PNS::VIA::Pos(), PNS::LINE::Reverse(), PNS::ITEM::SEGMENT_T, and LAYER_RANGE::Start().

Referenced by Start().

79 {
80  m_draggedVia = aVia;
81  m_initialVia = aVia;
82  m_mode = DRAG_VIA;
83 
84  VECTOR2I p0( aVia->Pos() );
85  JOINT* jt = m_world->FindJoint( p0, aVia->Layers().Start(), aVia->Net() );
86 
87  if( !jt )
88  return false;
89 
90  for( ITEM* item : jt->LinkList() )
91  {
92  if( item->OfKind( ITEM::SEGMENT_T ) )
93  {
94  int segIndex;
95  SEGMENT* seg = ( SEGMENT*) item;
96  LINE l = m_world->AssembleLine( seg, &segIndex );
97 
98  if( segIndex != 0 )
99  l.Reverse();
100 
102  }
103  }
104 
105  return true;
106 }
VIA * m_initialVia
Definition: pns_dragger.h:124
NODE * m_world
Definition: pns_dragger.h:113
DragMode m_mode
Definition: pns_dragger.h:115
const LINE AssembleLine(SEGMENT *aSeg, int *aOriginSegmentIndex=NULL, bool aStopAtLockedJoints=false)
Function AssembleLine()
Definition: pns_node.cpp:834
void Add(const LINE &aLine)
Definition: pns_itemset.cpp:32
VIA * m_draggedVia
Definition: pns_dragger.h:117
void Reverse()
Reverses the point/vertex order
Definition: pns_line.cpp:699
ITEM_SET m_origViaConnections
Definition: pns_dragger.h:123
JOINT * FindJoint(const VECTOR2I &aPos, int aLayer, int aNet)
Function FindJoint()
Definition: pns_node.cpp:968
Struct SEGMENT is a simple container used when filling areas with segments.
Definition: class_zone.h:57
const ITEM_SET PNS::DRAGGER::Traces ( )

Function Traces()

Returns the set of dragged items.

Definition at line 330 of file pns_dragger.cpp.

References m_draggedItems.

331 {
332  return m_draggedItems;
333 }
ITEM_SET m_draggedItems
Definition: pns_dragger.h:125

Member Data Documentation

PNS_MODE PNS::DRAGGER::m_currentMode
private

Definition at line 122 of file pns_dragger.h.

Referenced by Drag(), DRAGGER(), and Start().

ITEM_SET PNS::DRAGGER::m_draggedItems
private

Definition at line 125 of file pns_dragger.h.

Referenced by dragMarkObstacles(), dragShove(), dumbDragVia(), Start(), and Traces().

LINE PNS::DRAGGER::m_draggedLine
private

Definition at line 116 of file pns_dragger.h.

Referenced by dragMarkObstacles(), dragShove(), and startDragSegment().

int PNS::DRAGGER::m_draggedSegmentIndex
private

Definition at line 120 of file pns_dragger.h.

Referenced by DRAGGER(), dragMarkObstacles(), dragShove(), and startDragSegment().

VIA* PNS::DRAGGER::m_draggedVia
private

Definition at line 117 of file pns_dragger.h.

Referenced by DRAGGER(), dragShove(), dumbDragVia(), and startDragVia().

bool PNS::DRAGGER::m_dragStatus
private

Definition at line 121 of file pns_dragger.h.

Referenced by DRAGGER(), dragMarkObstacles(), dragShove(), and FixRoute().

VIA* PNS::DRAGGER::m_initialVia
private

Definition at line 124 of file pns_dragger.h.

Referenced by DRAGGER(), dragMarkObstacles(), and startDragVia().

NODE* PNS::DRAGGER::m_lastNode
private

Definition at line 114 of file pns_dragger.h.

Referenced by CurrentNode(), DRAGGER(), dragMarkObstacles(), dragShove(), dumbDragVia(), and Start().

LINE PNS::DRAGGER::m_lastValidDraggedLine
private

Definition at line 118 of file pns_dragger.h.

Referenced by dragMarkObstacles(), dragShove(), and startDragSegment().

DragMode PNS::DRAGGER::m_mode
private

Definition at line 115 of file pns_dragger.h.

Referenced by DRAGGER(), dragMarkObstacles(), dragShove(), startDragSegment(), and startDragVia().

ITEM_SET PNS::DRAGGER::m_origViaConnections
private

Definition at line 123 of file pns_dragger.h.

Referenced by dumbDragVia(), and startDragVia().

SHOVE* PNS::DRAGGER::m_shove
private
NODE* PNS::DRAGGER::m_world
private

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