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;
|
bool FixRoute( const VECTOR2I& aP, ITEM* aEndItem, bool aForceFinish ) override;
|
||||||
|
|
||||||
|
/// @copydoc PLACEMENT_ALGO::CommitPlacement()
|
||||||
bool CommitPlacement() override;
|
bool CommitPlacement() override;
|
||||||
|
|
||||||
|
/// @copydoc PLACEMENT_ALGO::AbortPlacement()
|
||||||
bool AbortPlacement() override;
|
bool AbortPlacement() override;
|
||||||
|
|
||||||
|
/// @copydoc PLACEMENT_ALGO::HasPlacedAnything()
|
||||||
bool HasPlacedAnything() const override;
|
bool HasPlacedAnything() const override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -315,12 +315,36 @@ bool DP_MEANDER_PLACER::FixRoute( const VECTOR2I& aP, ITEM* aEndItem, bool aForc
|
||||||
m_currentNode->Add( lP );
|
m_currentNode->Add( lP );
|
||||||
m_currentNode->Add( lN );
|
m_currentNode->Add( lN );
|
||||||
|
|
||||||
Router()->CommitRouting( m_currentNode );
|
CommitPlacement();
|
||||||
|
|
||||||
return true;
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool DP_MEANDER_PLACER::CheckFit( MEANDER_SHAPE* aShape )
|
bool DP_MEANDER_PLACER::CheckFit( MEANDER_SHAPE* aShape )
|
||||||
{
|
{
|
||||||
LINE l1( m_originPair.PLine(), aShape->CLine( 0 ) );
|
LINE l1( m_originPair.PLine(), aShape->CLine( 0 ) );
|
||||||
|
|
|
@ -80,6 +80,15 @@ public:
|
||||||
*/
|
*/
|
||||||
bool FixRoute( const VECTOR2I& aP, ITEM* aEndItem, bool aForceFinish = false ) override;
|
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;
|
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_currentTrace = LINE( m_originLine, m_finalShape );
|
||||||
m_currentNode->Add( m_currentTrace );
|
m_currentNode->Add( m_currentTrace );
|
||||||
|
CommitPlacement();
|
||||||
|
|
||||||
Router()->CommitRouting( m_currentNode );
|
|
||||||
return true;
|
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 )
|
bool MEANDER_PLACER::CheckFit( MEANDER_SHAPE* aShape )
|
||||||
{
|
{
|
||||||
LINE l( m_originLine, aShape->CLine( 0 ) );
|
LINE l( m_originLine, aShape->CLine( 0 ) );
|
||||||
|
|
|
@ -61,6 +61,15 @@ public:
|
||||||
/// @copydoc PLACEMENT_ALGO::FixRoute()
|
/// @copydoc PLACEMENT_ALGO::FixRoute()
|
||||||
virtual bool FixRoute( const VECTOR2I& aP, ITEM* aEndItem, bool aForceFinish = false ) override;
|
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()
|
/// @copydoc PLACEMENT_ALGO::CurrentNode()
|
||||||
NODE* CurrentNode( bool aLoopsRemoved = false ) const override;
|
NODE* CurrentNode( bool aLoopsRemoved = false ) const override;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue