30#include "pns_routing_settings.h"
31#include "pns_sizes_settings.h"
46class DIFF_PAIR_PLACER;
63 PNS_MODE_ROUTE_SINGLE = 1,
64 PNS_MODE_ROUTE_DIFF_PAIR,
66 PNS_MODE_TUNE_DIFF_PAIR,
67 PNS_MODE_TUNE_DIFF_PAIR_SKEW
92 virtual void SyncWorld(
NODE* aNode ) = 0;
93 virtual void AddItem(
ITEM* aItem ) = 0;
94 virtual void UpdateItem(
ITEM* aItem ) = 0;
95 virtual void RemoveItem(
ITEM* aItem ) = 0;
96 virtual bool IsAnyLayerVisible(
const LAYER_RANGE& aLayer )
const = 0;
97 virtual bool IsItemVisible(
const PNS::ITEM* aItem )
const = 0;
98 virtual bool IsFlashedOnLayer(
const PNS::ITEM* aItem,
int aLayer )
const = 0;
99 virtual void DisplayItem(
const ITEM* aItem,
int aClearance,
bool aEdit =
false ) = 0;
100 virtual void DisplayRatline(
const SHAPE_LINE_CHAIN& aRatline,
int aColor = -1 ) = 0;
101 virtual void HideItem(
ITEM* aItem ) = 0;
102 virtual void Commit() = 0;
104 virtual int StackupHeight(
int aFirstLayer,
int aSecondLayer )
const = 0;
106 virtual void EraseView() = 0;
107 virtual void UpdateNet(
int aNetCode ) = 0;
131 void SetMode ( ROUTER_MODE aMode );
132 ROUTER_MODE Mode()
const {
return m_mode; }
134 RouterState GetState()
const {
return m_state; }
136 DRAG_ALGO* GetDragger() {
return m_dragger.get(); }
138 static ROUTER* GetInstance();
143 bool RoutingInProgress()
const;
144 bool StartRouting(
const VECTOR2I& aP,
ITEM* aItem,
int aLayer );
146 bool FixRoute(
const VECTOR2I& aP,
ITEM* aItem,
bool aForceFinish =
false );
149 void UndoLastSegment();
150 void CommitRouting();
152 void ClearViewDecorations();
154 NODE* GetWorld()
const {
return m_world.get(); }
158 bool SwitchLayer(
int layer );
160 void ToggleViaPlacement();
161 void SetOrthoMode(
bool aEnable );
163 void ToggleCornerMode();
165 int GetCurrentLayer()
const;
166 const std::vector<int> GetCurrentNets()
const;
170 RULE_RESOLVER* GetRuleResolver()
const {
return m_iface->GetRuleResolver(); }
172 bool IsPlacingVia()
const;
174 const ITEM_SET QueryHoverItems(
const VECTOR2I& aP,
bool aUseClearance =
false );
176 bool StartDragging(
const VECTOR2I& aP,
ITEM* aItem,
int aDragMode = DM_ANY );
177 bool StartDragging(
const VECTOR2I& aP,
ITEM_SET aItems,
int aDragMode = DM_COMPONENT );
179 void SetIterLimit(
int aX ) { m_iterLimit = aX; }
180 int GetIterLimit()
const {
return m_iterLimit; };
184 void CommitRouting(
NODE* aNode );
198 m_settings = aSettings;
203 void SetFailureReason(
const wxString& aReason ) { m_failureReason = aReason; }
204 const wxString& FailureReason()
const {
return m_failureReason; }
206 PLACEMENT_ALGO* Placer() {
return m_placer.get(); }
208 ROUTER_IFACE* GetInterface()
const {
return m_iface; }
210 void SetVisibleViewArea(
const BOX2I& aExtents ) { m_visibleViewArea = aExtents; }
211 const BOX2I& VisibleViewArea()
const {
return m_visibleViewArea; }
214 void movePlacing(
const VECTOR2I& aP, ITEM* aItem );
215 void moveDragging(
const VECTOR2I& aP, ITEM* aItem );
217 void updateView( NODE* aNode, ITEM_SET& aCurrent,
bool aDragging =
false );
221 void markViolations( NODE* aNode, ITEM_SET& aCurrent, NODE::ITEM_VECTOR& aRemoved );
222 bool isStartingPointRoutable(
const VECTOR2I& aWhere, ITEM* aItem,
int aLayer );
225 BOX2I m_visibleViewArea;
228 std::unique_ptr<NODE> m_world;
231 std::unique_ptr<PLACEMENT_ALGO> m_placer;
232 std::unique_ptr<DRAG_ALGO> m_dragger;
233 std::unique_ptr<SHOVE> m_shove;
235 ROUTER_IFACE* m_iface;
238 bool m_forceMarkObstaclesMode =
false;
240 ROUTING_SETTINGS* m_settings;
241 SIZES_SETTINGS m_sizes;
Represent a contiguous set of PCB layers.
Definition pns_layerset.h:32
Definition pns_debug_decorator.h:35
DRAG_ALGO.
Definition pns_drag_algo.h:43
Definition pns_itemset.h:37
Base class for PNS router board items.
Definition pns_item.h:57
Definition pns_logger.h:42
Keep the router "world" - i.e.
Definition pns_node.h:148
ROUTER.
Definition pns_router.h:87
Definition pns_router.h:116
void UpdateSizes(const SIZES_SETTINGS &aSizes)
Applies stored settings.
Definition pns_router.cpp:572
void LoadSettings(ROUTING_SETTINGS *aSettings)
Changes routing settings to ones passed in the parameter.
Definition pns_router.h:196
Contain all persistent settings of the router, such as the mode, optimization effort,...
Definition pns_routing_settings.h:58
Definition pns_sizes_settings.h:42
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
Definition shape_line_chain.h:81
Definition wx_compat.h:13