Only darken, don't hide vias unless requested

Fixes https://gitlab.com/kicad/code/kicad/issues/6912
This commit is contained in:
Seth Hillbrand 2021-01-05 13:59:46 -08:00
parent a9d4d9d7f0
commit 4710b709d9
1 changed files with 5 additions and 47 deletions

View File

@ -348,11 +348,11 @@ COLOR4D PCB_RENDER_SETTINGS::GetColor( const VIEW_ITEM* aItem, int aLayer ) cons
{ {
if( item->Type() == PCB_VIA_T ) if( item->Type() == PCB_VIA_T )
{ {
isActive = static_cast<const VIA*>( item )->IsOnLayer( primary ); isActive = static_cast<const VIA*>( item )->FlashLayer( primary, true );
} }
else if( item->Type() == PCB_PAD_T ) else if( item->Type() == PCB_PAD_T )
{ {
isActive = static_cast<const PAD*>( item )->IsOnLayer( primary ); isActive = static_cast<const PAD*>( item )->FlashLayer( primary, true );
} }
else if( item->Type() == PCB_TRACE_T || item->Type() == PCB_ARC_T ) else if( item->Type() == PCB_TRACE_T || item->Type() == PCB_ARC_T )
{ {
@ -692,23 +692,6 @@ void PCB_PAINTER::draw( const VIA* aVia, int aLayer )
|| ( aLayer == LAYER_VIA_BBLIND && aVia->GetViaType() == VIATYPE::BLIND_BURIED ) || ( aLayer == LAYER_VIA_BBLIND && aVia->GetViaType() == VIATYPE::BLIND_BURIED )
|| ( aLayer == LAYER_VIA_MICROVIA && aVia->GetViaType() == VIATYPE::MICROVIA ) ) || ( aLayer == LAYER_VIA_MICROVIA && aVia->GetViaType() == VIATYPE::MICROVIA ) )
{ {
if( m_pcbSettings.GetHighContrast() )
{
bool draw_annular = false;
for( unsigned int layer : m_pcbSettings.GetHighContrastLayers() )
{
if( aVia->FlashLayer( static_cast<PCB_LAYER_ID>( layer ) , true ) )
{
draw_annular = true;
break;
}
}
if( !draw_annular )
return;
}
radius = aVia->GetWidth() / 2.0; radius = aVia->GetWidth() / 2.0;
} }
else else
@ -917,33 +900,6 @@ void PCB_PAINTER::draw( const PAD* aPad, int aLayer )
// Pad drawing // Pad drawing
BOARD_DESIGN_SETTINGS& bds = aPad->GetBoard()->GetDesignSettings(); BOARD_DESIGN_SETTINGS& bds = aPad->GetBoard()->GetDesignSettings();
COLOR4D color = m_pcbSettings.GetColor( aPad, aLayer ); COLOR4D color = m_pcbSettings.GetColor( aPad, aLayer );
bool draw_annular = true;
if( aLayer == LAYER_PADS_TH
&& aPad->GetSizeX() <= aPad->GetDrillSizeX()
&& aPad->GetSizeY() <= aPad->GetDrillSizeY() )
{
draw_annular = false;
}
else if( m_pcbSettings.GetHighContrast() )
{
draw_annular = false;
for( unsigned int layer : m_pcbSettings.GetHighContrastLayers() )
{
if( aPad->FlashLayer( static_cast<PCB_LAYER_ID>( layer ) , true ) )
{
draw_annular = true;
break;
}
else if( !IsCopperLayer( layer ) )
{
// If a non-copper layer is the high-contrast layer, just show the pad
draw_annular = true;
break;
}
}
}
if( m_pcbSettings.m_sketchMode[LAYER_PADS_TH] ) if( m_pcbSettings.m_sketchMode[LAYER_PADS_TH] )
{ {
@ -971,7 +927,9 @@ void PCB_PAINTER::draw( const PAD* aPad, int aLayer )
else else
m_gal->DrawSegment( seg->GetSeg().A, seg->GetSeg().B, seg->GetWidth() ); m_gal->DrawSegment( seg->GetSeg().A, seg->GetSeg().B, seg->GetWidth() );
} }
else if( !draw_annular ) else if( aLayer == LAYER_PADS_TH
&& aPad->GetSizeX() <= aPad->GetDrillSizeX()
&& aPad->GetSizeY() <= aPad->GetDrillSizeY() )
{ {
// no annular ring to draw // no annular ring to draw
} }