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...
 
void SetMode (int aDragMode)
 
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 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
 
int 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
 
bool m_freeAngleMode
 

Detailed Description

Class DRAGGER.

Via, segment and corner dragging algorithm.

Definition at line 44 of file pns_dragger.h.

Constructor & Destructor Documentation

PNS::DRAGGER::DRAGGER ( ROUTER aRouter)

Definition at line 28 of file pns_dragger.cpp.

References PNS::DM_SEGMENT, m_currentMode, m_draggedSegmentIndex, m_draggedVia, m_dragStatus, m_freeAngleMode, 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  m_freeAngleMode = false;
41 }
VIA * m_initialVia
Definition: pns_dragger.h:122
NODE * m_world
Definition: pns_dragger.h:111
bool m_dragStatus
Definition: pns_dragger.h:119
VIA * m_draggedVia
Definition: pns_dragger.h:115
SHOVE * m_shove
Definition: pns_dragger.h:117
ALGO_BASE(ROUTER *aRouter)
Definition: pns_algo_base.h:42
int m_draggedSegmentIndex
Definition: pns_dragger.h:118
NODE * m_lastNode
Definition: pns_dragger.h:112
PNS_MODE m_currentMode
Definition: pns_dragger.h:120
bool m_freeAngleMode
Definition: pns_dragger.h:124
PNS::DRAGGER::~DRAGGER ( )

Definition at line 44 of file pns_dragger.cpp.

References m_shove.

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

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 350 of file pns_dragger.cpp.

References m_lastNode.

Referenced by FixRoute().

351 {
352  return m_lastNode;
353 }
NODE * m_lastNode
Definition: pns_dragger.h:112
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 329 of file pns_dragger.cpp.

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

330 {
331  if( m_freeAngleMode )
332  return dragMarkObstacles( aP );
333 
334  switch( m_currentMode )
335  {
336  case RM_MarkObstacles:
337  return dragMarkObstacles( aP );
338 
339  case RM_Shove:
340  case RM_Walkaround:
341  case RM_Smart:
342  return dragShove( aP );
343 
344  default:
345  return false;
346  }
347 }
Ignore collisions, mark obstacles
Only walkaround
bool dragShove(const VECTOR2I &aP)
PNS_MODE m_currentMode
Definition: pns_dragger.h:120
bool dragMarkObstacles(const VECTOR2I &aP)
bool m_freeAngleMode
Definition: pns_dragger.h:124
bool PNS::DRAGGER::dragMarkObstacles ( const VECTOR2I aP)
private

Definition at line 157 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(), PNS::DM_CORNER, PNS::DM_SEGMENT, PNS::DM_VIA, PNS::LINE::DragCorner(), PNS::LINE::DragSegment(), dumbDragVia(), m_draggedItems, m_draggedLine, m_draggedSegmentIndex, m_dragStatus, m_freeAngleMode, 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().

158 {
159  if( m_lastNode )
160  {
161  delete m_lastNode;
162  m_lastNode = NULL;
163  }
164 
165  switch( m_mode )
166  {
167  case DM_SEGMENT:
168  case DM_CORNER:
169  {
170  int thresh = Settings().SmoothDraggedSegments() ? m_draggedLine.Width() / 4 : 0;
171  LINE dragged( m_draggedLine );
172 
173  if( m_mode == DM_SEGMENT )
174  dragged.DragSegment( aP, m_draggedSegmentIndex, thresh );
175  else
176  dragged.DragCorner( aP, m_draggedSegmentIndex, thresh, m_freeAngleMode );
177 
179 
180  m_lastValidDraggedLine = dragged;
183 
187 
188  break;
189  }
190 
191  case DM_VIA: // fixme...
192  {
195 
196  break;
197  }
198  }
199 
200  if( Settings().CanViolateDRC() )
201  m_dragStatus = true;
202  else
204 
205  return true;
206 }
ITEM_SET m_draggedItems
Definition: pns_dragger.h:123
bool SmoothDraggedSegments() const
Returns true if smoothing segments durign dragging is enabled.
VIA * m_initialVia
Definition: pns_dragger.h:122
NODE * m_world
Definition: pns_dragger.h:111
bool m_dragStatus
Definition: pns_dragger.h:119
LINE m_draggedLine
Definition: pns_dragger.h:114
ROUTING_SETTINGS & Settings() const
Returns current router settings
LINE m_lastValidDraggedLine
Definition: pns_dragger.h:116
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:107
SHOVE * m_shove
Definition: pns_dragger.h:117
int m_draggedSegmentIndex
Definition: pns_dragger.h:118
NODE * m_lastNode
Definition: pns_dragger.h:112
void ClearSegmentLinks()
Erases the linking information. Used to detach the line from the owning node.
Definition: pns_line.cpp:813
OPT_OBSTACLE CheckColliding(const ITEM *aItem, int aKindMask=ITEM::ANY_T)
Function CheckColliding()
Definition: pns_node.cpp:425
bool m_freeAngleMode
Definition: pns_dragger.h:124
void Add(std::unique_ptr< SEGMENT > aSegment, bool aAllowRedundant=false)
Function Add()
Definition: pns_node.cpp:594
virtual void Unmark(int aMarker=-1) override
Definition: pns_line.cpp:94
NODE * CurrentNode()
Definition: pns_shove.cpp:1393
bool PNS::DRAGGER::dragShove ( const VECTOR2I aP)
private

Definition at line 243 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(), PNS::DM_CORNER, PNS::DM_SEGMENT, PNS::DM_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().

244 {
245  bool ok = false;
246 
247  if( m_lastNode )
248  {
249  delete m_lastNode;
250  m_lastNode = NULL;
251  }
252 
253  switch( m_mode )
254  {
255  case DM_SEGMENT:
256  case DM_CORNER:
257  {
258  int thresh = Settings().SmoothDraggedSegments() ? m_draggedLine.Width() / 4 : 0;
259  LINE dragged( m_draggedLine );
260 
261  if( m_mode == DM_SEGMENT )
262  dragged.DragSegment( aP, m_draggedSegmentIndex, thresh );
263  else
264  dragged.DragCorner( aP, m_draggedSegmentIndex, thresh );
265 
266  SHOVE::SHOVE_STATUS st = m_shove->ShoveLines( dragged );
267 
268  if( st == SHOVE::SH_OK )
269  ok = true;
270  else if( st == SHOVE::SH_HEAD_MODIFIED )
271  {
272  dragged = m_shove->NewHead();
273  ok = true;
274  }
275 
277 
278  if( ok )
279  m_lastValidDraggedLine = dragged;
280 
286 
287  break;
288  }
289 
290  case DM_VIA:
291  {
292  VIA* newVia;
294 
295  if( st == SHOVE::SH_OK || st == SHOVE::SH_HEAD_MODIFIED )
296  ok = true;
297 
299 
300  if( ok )
301  {
302  if( newVia )
303  m_draggedVia = newVia;
305  }
306 
307  break;
308  }
309  }
310 
311  m_dragStatus = ok;
312 
313  return ok;
314 }
ITEM_SET m_draggedItems
Definition: pns_dragger.h:123
bool SmoothDraggedSegments() const
Returns true if smoothing segments durign dragging is enabled.
bool m_dragStatus
Definition: pns_dragger.h:119
LINE m_draggedLine
Definition: pns_dragger.h:114
ROUTING_SETTINGS & Settings() const
Returns current router settings
LINE m_lastValidDraggedLine
Definition: pns_dragger.h:116
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:107
VIA * m_draggedVia
Definition: pns_dragger.h:115
SHOVE_STATUS ShoveLines(const LINE &aCurrentHead)
Definition: pns_shove.cpp:1078
SHOVE * m_shove
Definition: pns_dragger.h:117
int m_draggedSegmentIndex
Definition: pns_dragger.h:118
SHOVE_STATUS ShoveDraggingVia(VIA *aVia, const VECTOR2I &aWhere, VIA **aNewVia)
Definition: pns_shove.cpp:1262
NODE * m_lastNode
Definition: pns_dragger.h:112
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:813
void Add(std::unique_ptr< SEGMENT > aSegment, bool aAllowRedundant=false)
Function Add()
Definition: pns_node.cpp:594
virtual void Unmark(int aMarker=-1) override
Definition: pns_line.cpp:94
NODE * CurrentNode()
Definition: pns_shove.cpp:1393
void PNS::DRAGGER::dumbDragVia ( VIA aVia,
NODE aNode,
const VECTOR2I aP 
)
private

Definition at line 209 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_freeAngleMode, m_lastNode, m_origViaConnections, PNS::VIA::Pos(), PNS::NODE::Remove(), and PNS::VIA::SetPos().

Referenced by dragMarkObstacles().

210 {
212 
213  // fixme: this is awful.
214  auto via_clone = Clone( *aVia );
215 
216  m_draggedVia = via_clone.get();
217  m_draggedVia->SetPos( aP );
218 
220 
221  m_lastNode->Remove( aVia );
222  m_lastNode->Add( std::move( via_clone ) );
223 
224  for( ITEM* item : m_origViaConnections.Items() )
225  {
226  if( const LINE* l = dyn_cast<const LINE*>( item ) )
227  {
228  LINE origLine( *l );
229  LINE draggedLine( *l );
230 
231  draggedLine.DragCorner( aP, origLine.CLine().Find( aVia->Pos() ), 0, m_freeAngleMode );
232  draggedLine.ClearSegmentLinks();
233 
234  m_draggedItems.Add( draggedLine );
235 
236  m_lastNode->Remove( origLine );
237  m_lastNode->Add( draggedLine );
238  }
239  }
240 }
ITEM_SET m_draggedItems
Definition: pns_dragger.h:123
ENTRIES & Items()
Definition: pns_itemset.h:137
void Add(const LINE &aLine)
Definition: pns_itemset.cpp:32
VIA * m_draggedVia
Definition: pns_dragger.h:115
ITEM_SET m_origViaConnections
Definition: pns_dragger.h:121
void Remove(SOLID *aSolid)
Function Remove()
Definition: pns_node.cpp:727
NODE * m_lastNode
Definition: pns_dragger.h:112
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
bool m_freeAngleMode
Definition: pns_dragger.h:124
void Add(std::unique_ptr< SEGMENT > aSegment, bool aAllowRedundant=false)
Function Add()
Definition: pns_node.cpp:594
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 317 of file pns_dragger.cpp.

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

318 {
319  if( m_dragStatus )
320  {
322  return true;
323  }
324 
325  return false;
326 }
bool m_dragStatus
Definition: pns_dragger.h:119
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:326
LOGGER * PNS::DRAGGER::Logger ( )
overridevirtual

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

Reimplemented from PNS::ALGO_BASE.

Definition at line 362 of file pns_dragger.cpp.

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

363 {
364  if( m_shove )
365  return m_shove->Logger();
366 
367  return NULL;
368 }
SHOVE * m_shove
Definition: pns_dragger.h:117
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::SetMode ( int  aDragMode)

Definition at line 152 of file pns_dragger.cpp.

References m_mode.

153 {
154  m_mode = aMode;
155 }
void PNS::DRAGGER::SetWorld ( NODE aWorld)

Function SetWorld()

Sets the board to work on.

Definition at line 51 of file pns_dragger.cpp.

References m_world.

52 {
53  m_world = aWorld;
54 }
NODE * m_world
Definition: pns_dragger.h:111
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 127 of file pns_dragger.cpp.

References PNS::ITEM_SET::Clear(), PNS::DM_FREE_ANGLE, PNS::ITEM::Kind(), m_currentMode, m_draggedItems, m_freeAngleMode, m_lastNode, m_mode, 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.

128 {
129  m_shove = new SHOVE( m_world, Router() );
130  m_lastNode = NULL;
134 
135  aStartItem->Unmark( MK_LOCKED );
136 
137  wxLogTrace( "PNS", "StartDragging: item %p [kind %d]", aStartItem, (int) aStartItem->Kind() );
138 
139  switch( aStartItem->Kind() )
140  {
141  case ITEM::SEGMENT_T:
142  return startDragSegment( aP, static_cast<SEGMENT*>( aStartItem ) );
143 
144  case ITEM::VIA_T:
145  return startDragVia( aP, static_cast<VIA*>( aStartItem ) );
146 
147  default:
148  return false;
149  }
150 }
PNS_MODE Mode() const
Returns the routing mode.
ITEM_SET m_draggedItems
Definition: pns_dragger.h:123
NODE * m_world
Definition: pns_dragger.h:111
bool startDragSegment(const VECTOR2D &aP, SEGMENT *aSeg)
Definition: pns_dragger.cpp:57
ROUTING_SETTINGS & Settings() const
Returns current router settings
SHOVE * m_shove
Definition: pns_dragger.h:117
bool startDragVia(const VECTOR2D &aP, VIA *aVia)
Definition: pns_dragger.cpp:96
ROUTER * Router() const
Returns the instance of our router
Definition: pns_algo_base.h:49
NODE * m_lastNode
Definition: pns_dragger.h:112
PNS_MODE m_currentMode
Definition: pns_dragger.h:120
bool m_freeAngleMode
Definition: pns_dragger.h:124
bool PNS::DRAGGER::startDragSegment ( const VECTOR2D aP,
SEGMENT aSeg 
)
private

Definition at line 57 of file pns_dragger.cpp.

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

Referenced by Start().

58 {
59  int w2 = aSeg->Width() / 2;
60 
65 
66  auto distA = ( aP - aSeg->Seg().A ).EuclideanNorm();
67  auto distB = ( aP - aSeg->Seg().B ).EuclideanNorm();
68 
69 
70  if( distA <= w2 )
71  {
72  m_mode = DM_CORNER;
73  }
74  else if( distB <= w2 )
75  {
77  m_mode = DM_CORNER;
78  }
79  else if ( m_freeAngleMode )
80  {
81  if( distB < distA )
82  {
84  }
85  m_mode = DM_CORNER;
86  }
87  else
88  {
90  }
91 
92  return true;
93 }
double EuclideanNorm(const wxPoint &vector)
Euclidean norm of a 2D vector.
Definition: trigo.h:112
NODE * m_world
Definition: pns_dragger.h:111
const LINE AssembleLine(SEGMENT *aSeg, int *aOriginSegmentIndex=NULL, bool aStopAtLockedJoints=false)
Function AssembleLine()
Definition: pns_node.cpp:832
LINE m_draggedLine
Definition: pns_dragger.h:114
LINE m_lastValidDraggedLine
Definition: pns_dragger.h:116
SHOVE * m_shove
Definition: pns_dragger.h:117
int m_draggedSegmentIndex
Definition: pns_dragger.h:118
void ClearSegmentLinks()
Erases the linking information. Used to detach the line from the owning node.
Definition: pns_line.cpp:813
void SetInitialLine(LINE &aInitial)
Definition: pns_shove.cpp:1407
bool m_freeAngleMode
Definition: pns_dragger.h:124
bool PNS::DRAGGER::startDragVia ( const VECTOR2D aP,
VIA aVia 
)
private

Definition at line 96 of file pns_dragger.cpp.

References PNS::ITEM_SET::Add(), PNS::NODE::AssembleLine(), PNS::DM_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().

97 {
98  m_draggedVia = aVia;
99  m_initialVia = aVia;
100  m_mode = DM_VIA;
101 
102  VECTOR2I p0( aVia->Pos() );
103  JOINT* jt = m_world->FindJoint( p0, aVia->Layers().Start(), aVia->Net() );
104 
105  if( !jt )
106  return false;
107 
108  for( ITEM* item : jt->LinkList() )
109  {
110  if( item->OfKind( ITEM::SEGMENT_T ) )
111  {
112  int segIndex;
113  SEGMENT* seg = ( SEGMENT*) item;
114  LINE l = m_world->AssembleLine( seg, &segIndex );
115 
116  if( segIndex != 0 )
117  l.Reverse();
118 
120  }
121  }
122 
123  return true;
124 }
VIA * m_initialVia
Definition: pns_dragger.h:122
NODE * m_world
Definition: pns_dragger.h:111
const LINE AssembleLine(SEGMENT *aSeg, int *aOriginSegmentIndex=NULL, bool aStopAtLockedJoints=false)
Function AssembleLine()
Definition: pns_node.cpp:832
void Add(const LINE &aLine)
Definition: pns_itemset.cpp:32
VIA * m_draggedVia
Definition: pns_dragger.h:115
void Reverse()
Reverses the point/vertex order
Definition: pns_line.cpp:728
ITEM_SET m_origViaConnections
Definition: pns_dragger.h:121
JOINT * FindJoint(const VECTOR2I &aPos, int aLayer, int aNet)
Function FindJoint()
Definition: pns_node.cpp:966
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 356 of file pns_dragger.cpp.

References m_draggedItems.

357 {
358  return m_draggedItems;
359 }
ITEM_SET m_draggedItems
Definition: pns_dragger.h:123

Member Data Documentation

PNS_MODE PNS::DRAGGER::m_currentMode
private

Definition at line 120 of file pns_dragger.h.

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

ITEM_SET PNS::DRAGGER::m_draggedItems
private

Definition at line 123 of file pns_dragger.h.

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

LINE PNS::DRAGGER::m_draggedLine
private

Definition at line 114 of file pns_dragger.h.

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

int PNS::DRAGGER::m_draggedSegmentIndex
private

Definition at line 118 of file pns_dragger.h.

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

VIA* PNS::DRAGGER::m_draggedVia
private

Definition at line 115 of file pns_dragger.h.

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

bool PNS::DRAGGER::m_dragStatus
private

Definition at line 119 of file pns_dragger.h.

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

bool PNS::DRAGGER::m_freeAngleMode
private

Definition at line 124 of file pns_dragger.h.

Referenced by Drag(), DRAGGER(), dragMarkObstacles(), dumbDragVia(), Start(), and startDragSegment().

VIA* PNS::DRAGGER::m_initialVia
private

Definition at line 122 of file pns_dragger.h.

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

NODE* PNS::DRAGGER::m_lastNode
private

Definition at line 112 of file pns_dragger.h.

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

LINE PNS::DRAGGER::m_lastValidDraggedLine
private

Definition at line 116 of file pns_dragger.h.

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

int PNS::DRAGGER::m_mode
private
ITEM_SET PNS::DRAGGER::m_origViaConnections
private

Definition at line 121 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: