Draw VIAs only if a layer they penetrate is visible.
This commit is contained in:
parent
bde2a0a1be
commit
c1f11a1bd1
|
@ -413,6 +413,7 @@ void PCB_LAYER_WIDGET::OnLayerVisible( int aLayer, bool isVisible, bool isFinal
|
||||||
{
|
{
|
||||||
KIGFX::VIEW* view = galCanvas->GetView();
|
KIGFX::VIEW* view = galCanvas->GetView();
|
||||||
view->SetLayerVisible( aLayer, isVisible );
|
view->SetLayerVisible( aLayer, isVisible );
|
||||||
|
view->RecacheAllItems( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( isFinal )
|
if( isFinal )
|
||||||
|
|
|
@ -393,17 +393,12 @@ LSET VIA::GetLayerSet() const
|
||||||
|
|
||||||
// VIA_BLIND_BURIED or VIA_MICRVIA:
|
// VIA_BLIND_BURIED or VIA_MICRVIA:
|
||||||
|
|
||||||
LAYER_ID bottom_layer, top_layer;
|
|
||||||
|
|
||||||
// LayerPair() knows how layers are stored
|
|
||||||
LayerPair( &top_layer, &bottom_layer );
|
|
||||||
|
|
||||||
LSET layermask;
|
LSET layermask;
|
||||||
|
|
||||||
wxASSERT( top_layer <= bottom_layer );
|
wxASSERT( m_Layer <= m_BottomLayer );
|
||||||
|
|
||||||
// LAYER_IDs are numbered from front to back, this is top to bottom.
|
// LAYER_IDs are numbered from front to back, this is top to bottom.
|
||||||
for( LAYER_NUM id = top_layer; id <= bottom_layer; ++id )
|
for( LAYER_NUM id = m_Layer; id <= m_BottomLayer; ++id )
|
||||||
{
|
{
|
||||||
layermask.set( id );
|
layermask.set( id );
|
||||||
}
|
}
|
||||||
|
@ -780,13 +775,17 @@ void VIA::Draw( EDA_DRAW_PANEL* panel, wxDC* aDC, GR_DRAWMODE aDrawMode,
|
||||||
|
|
||||||
GRSetDrawMode( aDC, aDrawMode );
|
GRSetDrawMode( aDC, aDrawMode );
|
||||||
|
|
||||||
BOARD * brd = GetBoard( );
|
BOARD * brd = GetBoard();
|
||||||
EDA_COLOR_T color = brd->GetVisibleElementColor(VIAS_VISIBLE + GetViaType());
|
EDA_COLOR_T color = brd->GetVisibleElementColor( VIAS_VISIBLE + GetViaType() );
|
||||||
|
|
||||||
if( brd->IsElementVisible( PCB_VISIBLE(VIAS_VISIBLE + GetViaType()) ) == false
|
if( brd->IsElementVisible( PCB_VISIBLE(VIAS_VISIBLE + GetViaType()) ) == false
|
||||||
&& ( color & HIGHLIGHT_FLAG ) != HIGHLIGHT_FLAG )
|
&& ( color & HIGHLIGHT_FLAG ) != HIGHLIGHT_FLAG )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// Only draw the via if at least one of the layers it crosses is being displayed
|
||||||
|
if( !( brd->GetVisibleLayers() & GetLayerSet() ).any() )
|
||||||
|
return;
|
||||||
|
|
||||||
if( DisplayOpt.ContrastModeDisplay )
|
if( DisplayOpt.ContrastModeDisplay )
|
||||||
{
|
{
|
||||||
if( !IsOnLayer( curr_layer ) )
|
if( !IsOnLayer( curr_layer ) )
|
||||||
|
|
|
@ -336,6 +336,11 @@ void PCB_PAINTER::draw( const VIA* aVia, int aLayer )
|
||||||
VECTOR2D center( aVia->GetStart() );
|
VECTOR2D center( aVia->GetStart() );
|
||||||
double radius;
|
double radius;
|
||||||
|
|
||||||
|
// Only draw the via if at least one of the layers it crosses is being displayed
|
||||||
|
BOARD* brd = aVia->GetBoard( );
|
||||||
|
if( !( brd->GetVisibleLayers() & aVia->GetLayerSet() ).any() )
|
||||||
|
return;
|
||||||
|
|
||||||
// Choose drawing settings depending on if we are drawing via's pad or hole
|
// Choose drawing settings depending on if we are drawing via's pad or hole
|
||||||
if( aLayer == ITEM_GAL_LAYER( VIA_THROUGH_VISIBLE ) )
|
if( aLayer == ITEM_GAL_LAYER( VIA_THROUGH_VISIBLE ) )
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue