Pcbnew: rename ZONE* m_SolderMask to m_SolderMaskBridges

(It is a container to build bridges on solder mask layers by DRC, not real zone)
Disable also this special zone selection by adding it in
PCB_SELECTION_TOOL::itemPassesFilter
This commit is contained in:
jean-pierre charras 2023-10-13 09:57:21 +02:00
parent 96f9f2c658
commit 57efde1bbb
5 changed files with 26 additions and 18 deletions

View File

@ -98,15 +98,17 @@ BOARD::BOARD() :
m_layers[layer].m_type = LT_UNDEFINED;
}
m_SolderMask = new ZONE( this );
m_SolderMask->SetLayerSet( LSET().set( F_Mask ).set( B_Mask ) );
// Creates a zone to show sloder mask bridges created by a min web value
// it it just to show them
m_SolderMaskBridges = new ZONE( this );
m_SolderMaskBridges->SetLayerSet( LSET().set( F_Mask ).set( B_Mask ) );
int infinity = ( std::numeric_limits<int>::max() / 2 ) - pcbIUScale.mmToIU( 1 );
m_SolderMask->Outline()->NewOutline();
m_SolderMask->Outline()->Append( VECTOR2I( -infinity, -infinity ) );
m_SolderMask->Outline()->Append( VECTOR2I( -infinity, +infinity ) );
m_SolderMask->Outline()->Append( VECTOR2I( +infinity, +infinity ) );
m_SolderMask->Outline()->Append( VECTOR2I( +infinity, -infinity ) );
m_SolderMask->SetMinThickness( 0 );
m_SolderMaskBridges->Outline()->NewOutline();
m_SolderMaskBridges->Outline()->Append( VECTOR2I( -infinity, -infinity ) );
m_SolderMaskBridges->Outline()->Append( VECTOR2I( -infinity, +infinity ) );
m_SolderMaskBridges->Outline()->Append( VECTOR2I( +infinity, +infinity ) );
m_SolderMaskBridges->Outline()->Append( VECTOR2I( +infinity, -infinity ) );
m_SolderMaskBridges->SetMinThickness( 0 );
BOARD_DESIGN_SETTINGS& bds = GetDesignSettings();
@ -148,7 +150,7 @@ BOARD::~BOARD()
m_zones.clear();
delete m_SolderMask;
delete m_SolderMaskBridges;
for( FOOTPRINT* footprint : m_footprints )
delete footprint;

View File

@ -1208,7 +1208,7 @@ public:
std::vector<ZONE*> m_DRCCopperZones;
int m_DRCMaxClearance;
int m_DRCMaxPhysicalClearance;
ZONE* m_SolderMask;
ZONE* m_SolderMaskBridges; // A container to build bridges on solder mask layers
std::map<ZONE*, std::map<PCB_LAYER_ID, ISOLATED_ISLANDS>> m_ZoneIsolatedIslandsMap;
private:

View File

@ -112,7 +112,7 @@ private:
void DRC_TEST_PROVIDER_SOLDER_MASK::addItemToRTrees( BOARD_ITEM* aItem )
{
ZONE* solderMask = m_board->m_SolderMask;
ZONE* solderMask = m_board->m_SolderMaskBridges;
if( aItem->Type() == PCB_ZONE_T )
{
@ -192,7 +192,7 @@ void DRC_TEST_PROVIDER_SOLDER_MASK::addItemToRTrees( BOARD_ITEM* aItem )
void DRC_TEST_PROVIDER_SOLDER_MASK::buildRTrees()
{
ZONE* solderMask = m_board->m_SolderMask;
ZONE* solderMask = m_board->m_SolderMaskBridges;
LSET layers = { 4, F_Mask, B_Mask, F_Cu, B_Cu };
const size_t progressDelta = 500;

View File

@ -497,8 +497,8 @@ void PCB_BASE_FRAME::HideSolderMask()
{
KIGFX::PCB_VIEW* view = GetCanvas()->GetView();
if( view && GetBoard()->m_SolderMask && view->HasItem( GetBoard()->m_SolderMask ) )
view->Remove( GetBoard()->m_SolderMask );
if( view && GetBoard()->m_SolderMaskBridges && view->HasItem( GetBoard()->m_SolderMaskBridges ) )
view->Remove( GetBoard()->m_SolderMaskBridges );
}
@ -506,12 +506,12 @@ void PCB_BASE_FRAME::ShowSolderMask()
{
KIGFX::PCB_VIEW* view = GetCanvas()->GetView();
if( view && GetBoard()->m_SolderMask )
if( view && GetBoard()->m_SolderMaskBridges )
{
if( view->HasItem( GetBoard()->m_SolderMask ) )
view->Remove( GetBoard()->m_SolderMask );
if( view->HasItem( GetBoard()->m_SolderMaskBridges ) )
view->Remove( GetBoard()->m_SolderMaskBridges );
view->Add( GetBoard()->m_SolderMask );
view->Add( GetBoard()->m_SolderMaskBridges );
}
}

View File

@ -2390,6 +2390,12 @@ bool PCB_SELECTION_TOOL::itemPassesFilter( BOARD_ITEM* aItem, bool aMultiSelect
return false;
}
// m_SolderMaskBridges zone is a special zone, only used to showsolder mask briges
// after running DRC. it is not really a board item.
// Never select it or delete by a Commit.
if( zone == m_frame->GetBoard()->m_SolderMaskBridges )
return false;
break;
}