Commit c1f11a1b authored by Andrew Zonenberg's avatar Andrew Zonenberg Committed by Dick Hollenbeck
Browse files

Draw VIAs only if a layer they penetrate is visible.

parent bde2a0a1
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -413,6 +413,7 @@ void PCB_LAYER_WIDGET::OnLayerVisible( int aLayer, bool isVisible, bool isFinal
    {
        KIGFX::VIEW* view = galCanvas->GetView();
        view->SetLayerVisible( aLayer, isVisible );
        view->RecacheAllItems( true );
    }

    if( isFinal )
+8 −9
Original line number Diff line number Diff line
@@ -393,17 +393,12 @@ LSET VIA::GetLayerSet() const

    // 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;

    wxASSERT( top_layer <= bottom_layer );
    wxASSERT( m_Layer <= m_BottomLayer );

    // 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 );
    }
@@ -787,6 +782,10 @@ void VIA::Draw( EDA_DRAW_PANEL* panel, wxDC* aDC, GR_DRAWMODE aDrawMode,
        && ( color & HIGHLIGHT_FLAG ) != HIGHLIGHT_FLAG )
        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( !IsOnLayer( curr_layer ) )
+5 −0
Original line number Diff line number Diff line
@@ -336,6 +336,11 @@ void PCB_PAINTER::draw( const VIA* aVia, int aLayer )
    VECTOR2D center( aVia->GetStart() );
    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
    if( aLayer == ITEM_GAL_LAYER( VIA_THROUGH_VISIBLE ) )
    {