22 #ifndef __PNS_ROUTING_SETTINGS
23 #define __PNS_ROUTING_SETTINGS
27 #include "time_limit.h"
44 enum PNS_OPTIMIZATION_EFFORT
57 class ROUTING_SETTINGS
66 PNS_MODE
Mode()
const {
return m_routingMode; }
69 void SetMode( PNS_MODE aMode ) { m_routingMode = aMode; }
104 return m_followMouse && !(
Mode() == RM_MarkObstacles );
119 void SetStartDiagonal(
bool aStartDiagonal ) { m_startDiagonal = aStartDiagonal; }
121 bool CanViolateDRC()
const {
return m_canViolateDRC; }
122 void SetCanViolateDRC(
bool aViolate ) { m_canViolateDRC = aViolate; }
124 bool GetFreeAngleMode()
const {
return m_freeAngleMode; }
126 void SetFreeAngleMode(
bool aEnable ) { m_freeAngleMode = aEnable; }
130 int ShoveIterationLimit()
const;
131 TIME_LIMIT ShoveTimeLimit()
const;
133 int WalkaroundIterationLimit()
const {
return m_walkaroundIterationLimit; };
134 TIME_LIMIT WalkaroundTimeLimit()
const;
136 void SetInlineDragEnabled (
bool aEnable ) { m_inlineDragEnabled = aEnable; }
137 bool InlineDragEnabled()
const {
return m_inlineDragEnabled; }
139 void SetSnapToTracks(
bool aSnap ) { m_snapToTracks = aSnap; }
140 void SetSnapToPads(
bool aSnap ) { m_snapToPads = aSnap; }
142 bool GetSnapToTracks()
const {
return m_snapToTracks; }
143 bool GetSnapToPads()
const {
return m_snapToPads; }
147 bool m_startDiagonal;
150 bool m_suggestFinish;
152 bool m_jumpOverObstacles;
153 bool m_smoothDraggedSegments;
154 bool m_canViolateDRC;
155 bool m_freeAngleMode;
156 bool m_inlineDragEnabled;
160 PNS_MODE m_routingMode;
161 PNS_OPTIMIZATION_EFFORT m_optimizerEffort;
163 int m_walkaroundIterationLimit;
164 int m_shoveIterationLimit;
165 TIME_LIMIT m_shoveTimeLimit;
166 TIME_LIMIT m_walkaroundTimeLimit;
bool FollowMouse() const
Returns true if follow mouse mode is active (permanently on for the moment).
Definition: pns_routing_settings.h:102
void SetMode(PNS_MODE aMode)
Sets the routing mode.
Definition: pns_routing_settings.h:69
bool RemoveLoops() const
Returns true if loop (redundant track) removal is on.
Definition: pns_routing_settings.h:84
bool ShoveVias() const
Returns true if shoving vias is enbled.
Definition: pns_routing_settings.h:78
bool JumpOverObstacles() const
Returns true if jumping over unmovable obstacles is on.
Definition: pns_routing_settings.h:114
void SetSmartPads(bool aSmartPads)
Enables/disables Smart Pads (optimized connections).
Definition: pns_routing_settings.h:99
void SetSmoothDraggedSegments(bool aSmooth)
Enables/disabled smoothing segments during dragging.
Definition: pns_routing_settings.h:111
void SetJumpOverObstacles(bool aJumpOverObstacles)
Enables/disables jumping over unmovable obstacles.
Definition: pns_routing_settings.h:117
void SetOptimizerEffort(PNS_OPTIMIZATION_EFFORT aEffort)
Sets the optimizer effort. Bigger means cleaner traces, but slower routing.
Definition: pns_routing_settings.h:75
bool SmoothDraggedSegments() const
Returns true if smoothing segments durign dragging is enabled.
Definition: pns_routing_settings.h:108
bool SuggestFinish()
Returns true if suggesting the finish of currently placed track is on.
Definition: pns_routing_settings.h:90
PNS_MODE Mode() const
Returns the routing mode.
Definition: pns_routing_settings.h:66
bool SmartPads() const
Returns true if Smart Pads (optimized connections) is enabled.
Definition: pns_routing_settings.h:96
void SetSuggestFinish(bool aSuggestFinish)
Enables displaying suggestions for finishing the currently placed track.
Definition: pns_routing_settings.h:93
Class DIRECTION_45.
Definition: direction45.h:37
void SetShoveVias(bool aShoveVias)
Enables/disables shoving vias.
Definition: pns_routing_settings.h:81
PNS_OPTIMIZATION_EFFORT OptimizerEffort() const
Returns the optimizer effort. Bigger means cleaner traces, but slower routing.
Definition: pns_routing_settings.h:72
void SetRemoveLoops(bool aRemoveLoops)
Enables/disables loop (redundant track) removal.
Definition: pns_routing_settings.h:87