PNS: Moving the rest of the placer to Fix/Commit
Springback introduced a new PNS structure to check for valid placement as well as separating the Fix/Commit routines. This updates the remaining placers to utilize the new structure. Fixes https://gitlab.com/kicad/code/kicad/issues/4008
This commit is contained in:
parent
f6317fba82
commit
4dfe630b28
|
@ -86,10 +86,13 @@ public:
|
|||
*/
|
||||
bool FixRoute( const VECTOR2I& aP, ITEM* aEndItem, bool aForceFinish ) override;
|
||||
|
||||
/// @copydoc PLACEMENT_ALGO::CommitPlacement()
|
||||
bool CommitPlacement() override;
|
||||
|
||||
/// @copydoc PLACEMENT_ALGO::AbortPlacement()
|
||||
bool AbortPlacement() override;
|
||||
|
||||
/// @copydoc PLACEMENT_ALGO::HasPlacedAnything()
|
||||
bool HasPlacedAnything() const override;
|
||||
|
||||
/**
|
||||
|
|
|
@ -315,8 +315,32 @@ bool DP_MEANDER_PLACER::FixRoute( const VECTOR2I& aP, ITEM* aEndItem, bool aForc
|
|||
m_currentNode->Add( lP );
|
||||
m_currentNode->Add( lN );
|
||||
|
||||
CommitPlacement();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool DP_MEANDER_PLACER::AbortPlacement()
|
||||
{
|
||||
m_world->KillChildren();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool DP_MEANDER_PLACER::HasPlacedAnything() const
|
||||
{
|
||||
return m_originPair.CP().SegmentCount() > 0 ||
|
||||
m_originPair.CN().SegmentCount() > 0;
|
||||
}
|
||||
|
||||
|
||||
bool DP_MEANDER_PLACER::CommitPlacement()
|
||||
{
|
||||
if( m_currentNode )
|
||||
Router()->CommitRouting( m_currentNode );
|
||||
|
||||
m_currentNode = NULL;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -80,6 +80,15 @@ public:
|
|||
*/
|
||||
bool FixRoute( const VECTOR2I& aP, ITEM* aEndItem, bool aForceFinish = false ) override;
|
||||
|
||||
/// @copydoc PLACEMENT_ALGO::CommitPlacement()
|
||||
bool CommitPlacement() override;
|
||||
|
||||
/// @copydoc PLACEMENT_ALGO::AbortPlacement()
|
||||
bool AbortPlacement() override;
|
||||
|
||||
/// @copydoc PLACEMENT_ALGO::HasPlacedAnything()
|
||||
bool HasPlacedAnything() const override;
|
||||
|
||||
const LINE Trace() const;
|
||||
|
||||
/**
|
||||
|
|
|
@ -197,12 +197,36 @@ bool MEANDER_PLACER::FixRoute( const VECTOR2I& aP, ITEM* aEndItem, bool aForceFi
|
|||
|
||||
m_currentTrace = LINE( m_originLine, m_finalShape );
|
||||
m_currentNode->Add( m_currentTrace );
|
||||
CommitPlacement();
|
||||
|
||||
Router()->CommitRouting( m_currentNode );
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool MEANDER_PLACER::AbortPlacement()
|
||||
{
|
||||
m_world->KillChildren();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool MEANDER_PLACER::HasPlacedAnything() const
|
||||
{
|
||||
return m_currentTrace.SegmentCount() > 0;
|
||||
}
|
||||
|
||||
|
||||
bool MEANDER_PLACER::CommitPlacement()
|
||||
{
|
||||
if( m_currentNode )
|
||||
Router()->CommitRouting( m_currentNode );
|
||||
|
||||
m_currentNode = NULL;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool MEANDER_PLACER::CheckFit( MEANDER_SHAPE* aShape )
|
||||
{
|
||||
LINE l( m_originLine, aShape->CLine( 0 ) );
|
||||
|
|
|
@ -61,6 +61,15 @@ public:
|
|||
/// @copydoc PLACEMENT_ALGO::FixRoute()
|
||||
virtual bool FixRoute( const VECTOR2I& aP, ITEM* aEndItem, bool aForceFinish = false ) override;
|
||||
|
||||
/// @copydoc PLACEMENT_ALGO::CommitPlacement()
|
||||
bool CommitPlacement() override;
|
||||
|
||||
/// @copydoc PLACEMENT_ALGO::AbortPlacement()
|
||||
bool AbortPlacement() override;
|
||||
|
||||
/// @copydoc PLACEMENT_ALGO::HasPlacedAnything()
|
||||
bool HasPlacedAnything() const override;
|
||||
|
||||
/// @copydoc PLACEMENT_ALGO::CurrentNode()
|
||||
NODE* CurrentNode( bool aLoopsRemoved = false ) const override;
|
||||
|
||||
|
|
Loading…
Reference in New Issue