Reporting "actual" incompatible with exiting after first hit.
But we're currently using this only as a rough collision check anyway as it doesn't know the specific item-to-item clearance.
This commit is contained in:
parent
788a1e3bce
commit
1a1aef756e
|
@ -171,8 +171,8 @@ public:
|
|||
int QueryColliding( BOARD_ITEM* aRefItem,
|
||||
PCB_LAYER_ID aRefLayer,
|
||||
PCB_LAYER_ID aTargetLayer,
|
||||
std::function<bool( BOARD_ITEM*)> aFilter = nullptr,
|
||||
std::function<bool( BOARD_ITEM*, int)> aVisitor = nullptr,
|
||||
std::function<bool( BOARD_ITEM* )> aFilter = nullptr,
|
||||
std::function<bool( BOARD_ITEM* )> aVisitor = nullptr,
|
||||
int aClearance = 0 ) const
|
||||
{
|
||||
// keep track of BOARD_ITEMs that have been already found to collide (some items
|
||||
|
@ -201,15 +201,13 @@ public:
|
|||
|
||||
if( !aFilter || aFilter( aItem->parent ) )
|
||||
{
|
||||
int actual;
|
||||
|
||||
if( refShape->Collide( aItem->shape, aClearance, &actual ) )
|
||||
if( refShape->Collide( aItem->shape, aClearance ) )
|
||||
{
|
||||
collidingCompounds.insert( aItem->parent );
|
||||
count++;
|
||||
|
||||
if( aVisitor )
|
||||
return aVisitor( aItem->parent, actual );
|
||||
return aVisitor( aItem->parent );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -404,7 +404,7 @@ void DRC_TEST_PROVIDER_COPPER_CLEARANCE::testTrackClearances()
|
|||
|
||||
return true;
|
||||
},
|
||||
[&]( BOARD_ITEM* other, int ) -> bool
|
||||
[&]( BOARD_ITEM* other ) -> bool
|
||||
{
|
||||
return testTrackAgainstItem( track, trackShape.get(), layer, other );
|
||||
},
|
||||
|
@ -562,7 +562,7 @@ void DRC_TEST_PROVIDER_COPPER_CLEARANCE::testPadClearances( )
|
|||
|
||||
return true;
|
||||
},
|
||||
[&]( BOARD_ITEM* other, int ) -> bool
|
||||
[&]( BOARD_ITEM* other ) -> bool
|
||||
{
|
||||
return testPadAgainstItem( pad, padShape.get(), layer, other );
|
||||
},
|
||||
|
|
|
@ -223,7 +223,7 @@ bool DRC_TEST_PROVIDER_EDGE_CLEARANCE::Run()
|
|||
if( testCopper && item->IsOnCopperLayer() )
|
||||
{
|
||||
edgesTree.QueryColliding( item, UNDEFINED_LAYER, Edge_Cuts, nullptr,
|
||||
[&]( BOARD_ITEM* edge, int ) -> bool
|
||||
[&]( BOARD_ITEM* edge ) -> bool
|
||||
{
|
||||
return testAgainstEdge( item, itemShape.get(), edge,
|
||||
DRC_CONSTRAINT_TYPE_EDGE_CLEARANCE,
|
||||
|
@ -235,7 +235,7 @@ bool DRC_TEST_PROVIDER_EDGE_CLEARANCE::Run()
|
|||
if( testSilk && ( item->GetLayer() == F_SilkS || item->GetLayer() == B_SilkS ) )
|
||||
{
|
||||
edgesTree.QueryColliding( item, UNDEFINED_LAYER, Edge_Cuts, nullptr,
|
||||
[&]( BOARD_ITEM* edge, int ) -> bool
|
||||
[&]( BOARD_ITEM* edge ) -> bool
|
||||
{
|
||||
return testAgainstEdge( item, itemShape.get(), edge,
|
||||
DRC_CONSTRAINT_TYPE_SILK_CLEARANCE,
|
||||
|
|
|
@ -185,7 +185,7 @@ bool DRC_TEST_PROVIDER_HOLE_CLEARANCE::Run()
|
|||
|
||||
return true;
|
||||
},
|
||||
[&]( BOARD_ITEM* other, int ) -> bool
|
||||
[&]( BOARD_ITEM* other ) -> bool
|
||||
{
|
||||
return testHoleAgainstHole( via, holeShape.get(), other );
|
||||
},
|
||||
|
@ -211,7 +211,7 @@ bool DRC_TEST_PROVIDER_HOLE_CLEARANCE::Run()
|
|||
|
||||
return true;
|
||||
},
|
||||
[&]( BOARD_ITEM* other, int ) -> bool
|
||||
[&]( BOARD_ITEM* other ) -> bool
|
||||
{
|
||||
return testHoleAgainstHole( pad, holeShape.get(), other );
|
||||
},
|
||||
|
|
|
@ -281,7 +281,7 @@ void TRACKS_CLEANER::cleanup( bool aDeleteDuplicateVias, bool aDeleteNullSegment
|
|||
via->SetEnd( via->GetStart() );
|
||||
|
||||
rtree.QueryColliding( via, via->GetLayer(), via->GetLayer(), nullptr,
|
||||
[&]( BOARD_ITEM* aItem, int ) -> bool
|
||||
[&]( BOARD_ITEM* aItem ) -> bool
|
||||
{
|
||||
if( aItem->Type() != PCB_VIA_T )
|
||||
return true;
|
||||
|
@ -343,7 +343,7 @@ void TRACKS_CLEANER::cleanup( bool aDeleteDuplicateVias, bool aDeleteNullSegment
|
|||
if( aDeleteDuplicateSegments && track->Type() == PCB_TRACE_T )
|
||||
{
|
||||
rtree.QueryColliding( track, track->GetLayer(), track->GetLayer(), nullptr,
|
||||
[&]( BOARD_ITEM* aItem, int ) -> bool
|
||||
[&]( BOARD_ITEM* aItem ) -> bool
|
||||
{
|
||||
if( aItem->Type() != PCB_TRACE_T )
|
||||
return true;
|
||||
|
|
Loading…
Reference in New Issue