Pcbnew, show solder mask on VIAS: refinement: take in account the mask expansion.

This commit is contained in:
jean-pierre charras 2023-07-11 11:07:37 +02:00
parent ef1a2ff050
commit ab4535f01b
2 changed files with 19 additions and 0 deletions

View File

@ -994,6 +994,17 @@ void PCB_PAINTER::draw( const PCB_VIA* aVia, int aLayer )
m_gal->SetIsFill( true ); m_gal->SetIsFill( true );
m_gal->DrawCircle( center, getViaDrillSize( aVia ) / 2.0 ); m_gal->DrawCircle( center, getViaDrillSize( aVia ) / 2.0 );
} }
else if( ( aLayer == F_Mask && aVia->IsOnLayer( F_Mask ) )
|| ( aLayer == B_Mask && aVia->IsOnLayer( B_Mask ) ) )
{
int margin = board->GetDesignSettings().m_SolderMaskExpansion;
m_gal->SetIsFill( true );
m_gal->SetIsStroke( false );
m_gal->SetLineWidth( margin );
m_gal->DrawCircle( center, ( aVia->GetWidth() + margin ) / 2.0 );
}
else if( aLayer == LAYER_VIA_THROUGH || m_pcbSettings.IsPrinting() ) else if( aLayer == LAYER_VIA_THROUGH || m_pcbSettings.IsPrinting() )
{ {
int annular_width = ( aVia->GetWidth() - getViaDrillSize( aVia ) ) / 2.0; int annular_width = ( aVia->GetWidth() - getViaDrillSize( aVia ) ) / 2.0;

View File

@ -761,6 +761,14 @@ void PCB_VIA::ViewGetLayers( int aLayers[], int& aCount ) const
if( IsLocked() ) if( IsLocked() )
aLayers[ aCount++ ] = LAYER_LOCKED_ITEM_SHADOW; aLayers[ aCount++ ] = LAYER_LOCKED_ITEM_SHADOW;
// Vias can also be on a solder mask layer. They are on these layers or not,
// depending on the plot and solder mask options
if( IsOnLayer( F_Mask ) )
aLayers[ aCount++ ] = F_Mask;
if( IsOnLayer( B_Mask ) )
aLayers[ aCount++ ] = B_Mask;
} }