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_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: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
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: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 349 of file pns_dragger.cpp.

References m_lastNode.

Referenced by FixRoute().

350 {
351  return m_lastNode;
352 }
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 328 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.

329 {
330  if( m_freeAngleMode )
331  return dragMarkObstacles( aP );
332 
333  switch( m_currentMode )
334  {
335  case RM_MarkObstacles:
336  return dragMarkObstacles( aP );
337 
338  case RM_Shove:
339  case RM_Walkaround:
340  case RM_Smart:
341  return dragShove( aP );
342 
343  default:
344  return false;
345  }
346 }
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 156 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().

157 {
158  if( m_lastNode )
159  {
160  delete m_lastNode;
161  m_lastNode = NULL;
162  }
163 
164  switch( m_mode )
165  {
166  case DM_SEGMENT:
167  case DM_CORNER:
168  {
169  int thresh = Settings().SmoothDraggedSegments() ? m_draggedLine.Width() / 4 : 0;
170  LINE dragged( m_draggedLine );
171 
172  if( m_mode == DM_SEGMENT )
173  dragged.DragSegment( aP, m_draggedSegmentIndex, thresh );
174  else
175  dragged.DragCorner( aP, m_draggedSegmentIndex, thresh, m_freeAngleMode );
176 
178 
179  m_lastValidDraggedLine = dragged;
182 
186 
187  break;
188  }
189 
190  case DM_VIA: // fixme...
191  {
194 
195  break;
196  }
197  }
198 
199  if( Settings().CanViolateDRC() )
200  m_dragStatus = true;
201  else
203 
204  return true;
205 }
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:109
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:815
OPT_OBSTACLE CheckColliding(const ITEM *aItem, int aKindMask=ITEM::ANY_T)
Function CheckColliding()
Definition: pns_node.cpp:427
bool m_freeAngleMode
Definition: pns_dragger.h:124
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 242 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().

243 {
244  bool ok = false;
245 
246  if( m_lastNode )
247  {
248  delete m_lastNode;
249  m_lastNode = NULL;
250  }
251 
252  switch( m_mode )
253  {
254  case DM_SEGMENT:
255  case DM_CORNER:
256  {
257  int thresh = Settings().SmoothDraggedSegments() ? m_draggedLine.Width() / 4 : 0;
258  LINE dragged( m_draggedLine );
259 
260  if( m_mode == DM_SEGMENT )
261  dragged.DragSegment( aP, m_draggedSegmentIndex, thresh );
262  else
263  dragged.DragCorner( aP, m_draggedSegmentIndex, thresh );
264 
265  SHOVE::SHOVE_STATUS st = m_shove->ShoveLines( dragged );
266 
267  if( st == SHOVE::SH_OK )
268  ok = true;
269  else if( st == SHOVE::SH_HEAD_MODIFIED )
270  {
271  dragged = m_shove->NewHead();
272  ok = true;
273  }
274 
276 
277  if( ok )
278  m_lastValidDraggedLine = dragged;
279 
285 
286  break;
287  }
288 
289  case DM_VIA:
290  {
291  VIA* newVia;
293 
294  if( st == SHOVE::SH_OK || st == SHOVE::SH_HEAD_MODIFIED )
295  ok = true;
296 
298 
299  if( ok )
300  {
301  if( newVia )
302  m_draggedVia = newVia;
304  }
305 
306  break;
307  }
308  }
309 
310  m_dragStatus = ok;
311 
312  return ok;
313 }
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:109
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:815
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 208 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().

209 {
211 
212  // fixme: this is awful.
213  auto via_clone = Clone( *aVia );
214 
215  m_draggedVia = via_clone.get();
216  m_draggedVia->SetPos( aP );
217 
219 
220  m_lastNode->Remove( aVia );
221  m_lastNode->Add( std::move( via_clone ) );
222 
223  for( ITEM* item : m_origViaConnections.Items() )
224  {
225  if( const LINE* l = dyn_cast<const LINE*>( item ) )
226  {
227  LINE origLine( *l );
228  LINE draggedLine( *l );
229 
230  draggedLine.DragCorner( aP, origLine.CLine().Find( aVia->Pos() ), 0, m_freeAngleMode );
231  draggedLine.ClearSegmentLinks();
232 
233  m_draggedItems.Add( draggedLine );
234 
235  m_lastNode->Remove( origLine );
236  m_lastNode->Add( draggedLine );
237  }
238  }
239 }
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:729
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: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 316 of file pns_dragger.cpp.

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

317 {
318  if( m_dragStatus )
319  {
321  return true;
322  }
323 
324  return false;
325 }
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 361 of file pns_dragger.cpp.

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

362 {
363  if( m_shove )
364  return m_shove->Logger();
365 
366  return NULL;
367 }
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 151 of file pns_dragger.cpp.

References m_mode.

152 {
153  m_mode = aMode;
154 }
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: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 126 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.

127 {
128  m_shove = new SHOVE( m_world, Router() );
129  m_lastNode = NULL;
133 
134  aStartItem->Unmark( MK_LOCKED );
135 
136  wxLogTrace( "PNS", "StartDragging: item %p [kind %d]", aStartItem, (int) aStartItem->Kind() );
137 
138  switch( aStartItem->Kind() )
139  {
140  case ITEM::SEGMENT_T:
141  return startDragSegment( aP, static_cast<SEGMENT*>( aStartItem ) );
142 
143  case ITEM::VIA_T:
144  return startDragVia( aP, static_cast<VIA*>( aStartItem ) );
145 
146  default:
147  return false;
148  }
149 }
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:56
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:95
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 56 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().

57 {
58  int w2 = aSeg->Width() / 2;
59 
64 
65  auto distA = ( aP - aSeg->Seg().A ).EuclideanNorm();
66  auto distB = ( aP - aSeg->Seg().B ).EuclideanNorm();
67 
68 
69  if( distA <= w2 )
70  {
71  m_mode = DM_CORNER;
72  }
73  else if( distB <= w2 )
74  {
76  m_mode = DM_CORNER;
77  }
78  else if ( m_freeAngleMode )
79  {
80  if( distB < distA )
81  {
83  }
84  m_mode = DM_CORNER;
85  }
86  else
87  {
89  }
90 
91  return true;
92 }
double EuclideanNorm(const wxPoint &vector)
Euclidean norm of a 2D vector.
Definition: trigo.h:104
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:834
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:815
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 95 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().

96 {
97  m_draggedVia = aVia;
98  m_initialVia = aVia;
99  m_mode = DM_VIA;
100 
101  VECTOR2I p0( aVia->Pos() );
102  JOINT* jt = m_world->FindJoint( p0, aVia->Layers().Start(), aVia->Net() );
103 
104  if( !jt )
105  return false;
106 
107  for( ITEM* item : jt->LinkList() )
108  {
109  if( item->OfKind( ITEM::SEGMENT_T ) )
110  {
111  int segIndex;
112  SEGMENT* seg = ( SEGMENT*) item;
113  LINE l = m_world->AssembleLine( seg, &segIndex );
114 
115  if( segIndex != 0 )
116  l.Reverse();
117 
119  }
120  }
121 
122  return true;
123 }
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:834
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:730
ITEM_SET m_origViaConnections
Definition: pns_dragger.h:121
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 355 of file pns_dragger.cpp.

References m_draggedItems.

356 {
357  return m_draggedItems;
358 }
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(), 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: