30#define PNSLOGINFO PNS::DEBUG_DECORATOR::SRC_LOCATION_INFO( __FILE__, __FUNCTION__, __LINE__ )
57 m_router->Sizes().SetTrackWidth( 250000 );
68 std::vector<PNS::ITEM*> added, removed, heads;
69 m_router->GetUpdatedItems( removed, added, heads );
72 for(
auto item : removed )
80 for(
auto item : added )
99 int totalEvents = aLog->
Events().size();
101 for(
auto evt : aLog->
Events() )
103 if( eventIdx < aFrom || ( aTo >= 0 && eventIdx > aTo ) )
107 ITEM* ritem = item ?
m_router->GetWorld()->FindItemByParent( item ) :
nullptr;
117 m_iface->SetStartLayer( routingLayer );
118 m_iface->ImportSizes( sizes, ritem,
nullptr );
124 auto msg = wxString::Format(
"event [%d/%d]: route-start (%d, %d)", eventIdx,
125 totalEvents, evt.p.x, evt.p.y );
130 m_router->StartRouting( evt.p, ritem, routingLayer );
137 m_iface->SetStartLayer( routingLayer );
138 m_iface->ImportSizes( sizes, ritem,
nullptr );
144 auto msg = wxString::Format(
"event [%d/%d]: drag-start (%d, %d)", eventIdx,
145 totalEvents, evt.p.x, evt.p.y );
150 bool rv =
m_router->StartDragging( evt.p, ritem, 0 );
159 bool rv =
m_router->FixRoute( evt.p, ritem );
160 printf(
" fix -> (%d, %d) ret %d\n", evt.p.x, evt.p.y, rv ? 1 : 0 );
169 printf(
" unfix\n" );
179 auto msg = wxString::Format(
"event [%d/%d]: move (%d, %d)", eventIdx, totalEvents, evt.p.x, evt.p.y );
184 bool ret =
m_router->Move( evt.p, ritem );
193 auto msg = wxString::Format(
"event [%d/%d]: toggle-via", eventIdx, totalEvents );
213 auto traces =
m_router->Placer()->Traces();
215 for(
const auto& t : traces.CItems() )
217 const LINE *l =
static_cast<LINE*
>(t.item);
218 const auto& sh = l->
CLine();
225 node =
m_router->Placer()->CurrentNode(
true );
229 node =
m_router->GetDragger()->CurrentNode();
238 if( ! added.empty() )
243 for(
auto t : added )
261 printf(
"Comparing %zu added/%zu removed items\n", cstate.m_addedItems.size(), cstate.m_removedIds.size() );
267 m_viewTracker( aViewTracker )
300 return static_cast<NETINFO_ITEM*
>( aNet )->GetNetname();
302 return wxEmptyString;
Handle the data for a net.
static REPORTER & GetInstance()
Base class for PNS router board items.
virtual ITEM * Clone() const =0
Return a deep copy of the item.
const LAYER_RANGE & Layers() const
Represents a track on a PCB, connecting two non-trivial joints (that is, vias, pads,...
const SHAPE_LINE_CHAIN & CLine() const
Keep the router "world" - i.e.
std::vector< ITEM * > ITEM_VECTOR
void GetUpdatedItems(ITEM_VECTOR &aRemoved, ITEM_VECTOR &aAdded)
Return the list of items removed and added in this branch with respect to the root branch.
Contain all persistent settings of the router, such as the mode, optimization effort,...
BOARD_CONNECTED_ITEM * ItemById(const PNS::LOGGER::EVENT_ENTRY &evt)
const COMMIT_STATE & GetExpectedResult() const
PNS::ROUTING_SETTINGS * GetRoutingSettings() const
std::vector< PNS::LOGGER::EVENT_ENTRY > & Events()
std::shared_ptr< BOARD > GetBoard() const
void DisplayItem(const PNS::ITEM *aItem, int aClearance, bool aEdit=false, bool aIsHeadTrace=false) override
int GetNetCode(PNS::NET_HANDLE aNet) const override
PNS_LOG_PLAYER_KICAD_IFACE(PNS_LOG_VIEW_TRACKER *aViewTracker)
PNS_LOG_VIEW_TRACKER * m_viewTracker
void HideItem(PNS::ITEM *aItem) override
~PNS_LOG_PLAYER_KICAD_IFACE()
wxString GetNetName(PNS::NET_HANDLE aNet) const override
PNS_TEST_DEBUG_DECORATOR * m_debugDecorator
std::shared_ptr< BOARD > m_board
const PNS_LOG_FILE::COMMIT_STATE GetRouterUpdatedItems()
bool CompareResults(PNS_LOG_FILE *aLog)
std::unique_ptr< PNS::ROUTER > m_router
std::shared_ptr< PNS_LOG_VIEW_TRACKER > m_viewTracker
std::unique_ptr< PNS_LOG_PLAYER_KICAD_IFACE > m_iface
void ReplayLog(PNS_LOG_FILE *aLog, int aStartEventIndex=0, int aFrom=0, int aTo=-1)
void SetReporter(REPORTER *aReporter)
std::map< int, VIEW_ENTRIES > m_vitems
void DisplayItem(const PNS::ITEM *aItem)
void HideItem(PNS::ITEM *aItem)
std::vector< ENTRY > VIEW_ENTRIES
void SetStage(int aStage)
int GetStageCount() const
virtual void AddItem(const PNS::ITEM *aItem, const KIGFX::COLOR4D &aColor, int aOverrideWidth=0, const wxString &aName=wxT(""), const SRC_LOCATION_INFO &aSrcLoc=SRC_LOCATION_INFO()) override
virtual void Message(const wxString &msg, const SRC_LOCATION_INFO &aSrcLoc=SRC_LOCATION_INFO()) override
virtual void BeginGroup(const wxString &name, int aLevel=0, const SRC_LOCATION_INFO &aSrcLoc=SRC_LOCATION_INFO()) override
virtual void EndGroup(const SRC_LOCATION_INFO &aSrcLoc=SRC_LOCATION_INFO()) override
virtual void NewStage(const wxString &name, int iter, const SRC_LOCATION_INFO &aSrcLoc=SRC_LOCATION_INFO()) override
virtual void Clear() override
void SetCurrentStageStatus(bool stat)
virtual REPORTER & Report(const wxString &aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED)=0
Report a string with a given severity.
Push and Shove diff pair dimensions (gap) settings dialog.
@ RM_Walkaround
Only walk around.
std::set< KIID > m_removedIds
std::vector< PNS::ITEM * > m_addedItems