22 #ifndef __PNS_ROUTER_H 23 #define __PNS_ROUTER_H 44 class DEBUG_DECORATOR;
46 class DIFF_PAIR_PLACER;
99 virtual void DisplayItem(
const ITEM* aItem,
int aClearance,
bool aEdit =
false ) = 0;
102 virtual void Commit() = 0;
104 virtual int StackupHeight(
int aFirstLayer,
int aSecondLayer )
const = 0;
107 virtual void UpdateNet(
int aNetCode ) = 0;
const wxString & FailureReason() const
Base class for PNS router board items.
Contain all persistent settings of the router, such as the mode, optimization effort,...
void moveDragging(const VECTOR2I &aP, ITEM *aItem)
Keep the router "world" - i.e.
The Cairo implementation of the graphics abstraction layer.
virtual RULE_RESOLVER * GetRuleResolver()=0
const ITEM_SET QueryHoverItems(const VECTOR2I &aP, bool aUseClearance=false)
virtual PNS::NODE * GetWorld() const =0
RULE_RESOLVER * GetRuleResolver() const
void ClearViewDecorations()
PLACEMENT_ALGO * Placer()
virtual void HideItem(ITEM *aItem)=0
bool isStartingPointRoutable(const VECTOR2I &aWhere, ITEM *aItem, int aLayer)
bool IsPlacingVia() const
std::unique_ptr< PLACEMENT_ALGO > m_placer
const std::vector< int > GetCurrentNets() const
virtual void DisplayRatline(const SHAPE_LINE_CHAIN &aRatline, int aColor=-1)=0
ROUTING_SETTINGS * m_settings
virtual void AddItem(ITEM *aItem)=0
std::unique_ptr< SHOVE > m_shove
void SetOrthoMode(bool aEnable)
void ToggleViaPlacement()
std::unique_ptr< NODE > m_world
std::unique_ptr< DRAG_ALGO > m_dragger
virtual bool IsAnyLayerVisible(const LAYER_RANGE &aLayer) const =0
wxString m_toolStatusbarName
virtual void SyncWorld(NODE *aNode)=0
virtual void DisplayItem(const ITEM *aItem, int aClearance, bool aEdit=false)=0
virtual void UpdateNet(int aNetCode)=0
void BreakSegment(ITEM *aItem, const VECTOR2I &aP)
void updateView(NODE *aNode, ITEM_SET &aCurrent, bool aDragging=false)
virtual bool IsItemVisible(const PNS::ITEM *aItem) const =0
bool FixRoute(const VECTOR2I &aP, ITEM *aItem, bool aForceFinish=false)
void SetVisibleViewArea(const BOX2I &aExtents)
void SetFailureReason(const wxString &aReason)
void movePlacing(const VECTOR2I &aP, ITEM *aItem)
const BOX2I & VisibleViewArea() const
void Move(const VECTOR2I &aP, ITEM *aItem)
bool StartRouting(const VECTOR2I &aP, ITEM *aItem, int aLayer)
void SetIterLimit(int aX)
void SetInterface(ROUTER_IFACE *aIface)
virtual void UpdateItem(ITEM *aItem)=0
virtual void EraseView()=0
virtual DEBUG_DECORATOR * GetDebugDecorator()=0
virtual bool IsFlashedOnLayer(const PNS::ITEM *aItem, int aLayer) const =0
void UpdateSizes(const SIZES_SETTINGS &aSizes)
Applies stored settings.
void SetMode(ROUTER_MODE aMode)
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
virtual int StackupHeight(int aFirstLayer, int aSecondLayer) const =0
bool StartDragging(const VECTOR2I &aP, ITEM *aItem, int aDragMode=DM_ANY)
bool SwitchLayer(int layer)
void LoadSettings(ROUTING_SETTINGS *aSettings)
Changes routing settings to ones passed in the parameter.
virtual void RemoveItem(ITEM *aItem)=0
bool RoutingInProgress() const
Push and Shove diff pair dimensions (gap) settings dialog.
ROUTING_SETTINGS & Settings()
RouterState GetState() const
virtual bool ImportSizes(SIZES_SETTINGS &aSizes, ITEM *aStartItem, int aNet)=0
ROUTER_IFACE * GetInterface() const
static ROUTER * GetInstance()
Represent a contiguous set of PCB layers.
bool m_forceMarkObstaclesMode
std::vector< ITEM * > ITEM_VECTOR
void markViolations(NODE *aNode, ITEM_SET &aCurrent, NODE::ITEM_VECTOR &aRemoved)
int GetCurrentLayer() const