mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-04-11 14:50:11 +00:00
Fix a few issues with via and pad rendering
The refactor of VIEW::SortLayers broke it, but this was hard to notice until my recent changes.
This commit is contained in:
parent
eeb77103c9
commit
c77426cc12
@ -659,12 +659,12 @@ int VIEW::GetLayerOrder( int aLayer ) const
|
||||
}
|
||||
|
||||
|
||||
void VIEW::SortLayers( std::vector<int> aLayers ) const
|
||||
void VIEW::SortLayers( std::vector<int>& aLayers ) const
|
||||
{
|
||||
std::sort( aLayers.begin(), aLayers.end(),
|
||||
[this]( int a, int b )
|
||||
{
|
||||
return GetLayerOrder( a ) < GetLayerOrder( b );
|
||||
return GetLayerOrder( a ) > GetLayerOrder( b );
|
||||
} );
|
||||
}
|
||||
|
||||
|
@ -524,7 +524,7 @@ public:
|
||||
*
|
||||
* @param aLayers stores id of layers to be sorted.
|
||||
*/
|
||||
void SortLayers( std::vector<int> aLayers ) const;
|
||||
void SortLayers( std::vector<int>& aLayers ) const;
|
||||
|
||||
/**
|
||||
* Remap the data between layer ids without invalidating that data.
|
||||
|
@ -485,8 +485,8 @@ void PCB_DRAW_PANEL_GAL::SetTopLayer( PCB_LAYER_ID aLayer )
|
||||
if( layer < PCB_LAYER_ID_COUNT )
|
||||
{
|
||||
m_view->SetTopLayer( ZONE_LAYER_FOR( layer ) );
|
||||
m_view->SetTopLayer( PAD_COPPER_LAYER_FOR( aLayer ) );
|
||||
m_view->SetTopLayer( VIA_COPPER_LAYER_FOR( aLayer ) );
|
||||
m_view->SetTopLayer( PAD_COPPER_LAYER_FOR( layer ) );
|
||||
m_view->SetTopLayer( VIA_COPPER_LAYER_FOR( layer ) );
|
||||
}
|
||||
}
|
||||
|
||||
@ -494,25 +494,23 @@ void PCB_DRAW_PANEL_GAL::SetTopLayer( PCB_LAYER_ID aLayer )
|
||||
if( !IsCopperLayer( aLayer ) )
|
||||
{
|
||||
m_view->SetLayerOrder( aLayer, m_view->GetLayerOrder( LAYER_MARKER_SHADOWS ) + 1 );
|
||||
m_view->SetLayerOrder( PAD_COPPER_LAYER_FOR( aLayer ),
|
||||
m_view->GetLayerOrder( LAYER_MARKER_SHADOWS ) + 2 );
|
||||
m_view->SetLayerOrder( VIA_COPPER_LAYER_FOR( aLayer ),
|
||||
m_view->GetLayerOrder( LAYER_MARKER_SHADOWS ) + 3 );
|
||||
m_view->SetLayerOrder( ZONE_LAYER_FOR( aLayer ),
|
||||
m_view->GetLayerOrder( LAYER_MARKER_SHADOWS ) + 4 );
|
||||
m_view->GetLayerOrder( LAYER_MARKER_SHADOWS ) + 2 );
|
||||
|
||||
// Fix up pad and via netnames to be below. This is hacky, we need a rethink
|
||||
// of layer ordering...
|
||||
m_view->SetLayerOrder( LAYER_PAD_NETNAMES,
|
||||
m_view->GetLayerOrder( LAYER_MARKER_SHADOWS ) + 5 );
|
||||
m_view->GetLayerOrder( LAYER_MARKER_SHADOWS ) + 3 );
|
||||
m_view->SetLayerOrder( LAYER_VIA_NETNAMES,
|
||||
m_view->GetLayerOrder( LAYER_MARKER_SHADOWS ) + 6 );
|
||||
m_view->GetLayerOrder( LAYER_MARKER_SHADOWS ) + 4 );
|
||||
}
|
||||
}
|
||||
|
||||
if( IsCopperLayer( aLayer ) )
|
||||
{
|
||||
m_view->SetTopLayer( ZONE_LAYER_FOR( aLayer ) );
|
||||
m_view->SetTopLayer( PAD_COPPER_LAYER_FOR( aLayer ) );
|
||||
m_view->SetTopLayer( VIA_COPPER_LAYER_FOR( aLayer ) );
|
||||
|
||||
// Display labels for copper layers on the top
|
||||
m_view->SetTopLayer( GetNetnameLayer( aLayer ) );
|
||||
|
@ -989,7 +989,9 @@ void PCB_PAINTER::draw( const PCB_VIA* aVia, int aLayer )
|
||||
if( color == COLOR4D::CLEAR )
|
||||
return;
|
||||
|
||||
PCB_LAYER_ID currentLayer = ToLAYER_ID( aLayer );
|
||||
int copperLayer = IsViaCopperLayer( aLayer ) ? aLayer - LAYER_VIA_COPPER_START : aLayer;
|
||||
|
||||
PCB_LAYER_ID currentLayer = ToLAYER_ID( copperLayer );
|
||||
PCB_LAYER_ID layerTop, layerBottom;
|
||||
aVia->LayerPair( &layerTop, &layerBottom );
|
||||
|
||||
@ -1165,7 +1167,7 @@ void PCB_PAINTER::draw( const PCB_VIA* aVia, int aLayer )
|
||||
m_gal->SetLineWidth( margin );
|
||||
m_gal->DrawCircle( center, aVia->GetWidth( currentLayer ) / 2.0 + margin );
|
||||
}
|
||||
else if( m_pcbSettings.IsPrinting() || IsCopperLayer( aLayer ) )
|
||||
else if( m_pcbSettings.IsPrinting() || IsCopperLayer( currentLayer ) )
|
||||
{
|
||||
int annular_width = ( aVia->GetWidth( currentLayer ) - getViaDrillSize( aVia ) ) / 2.0;
|
||||
double radius = aVia->GetWidth( currentLayer ) / 2.0;
|
||||
@ -1184,7 +1186,7 @@ void PCB_PAINTER::draw( const PCB_VIA* aVia, int aLayer )
|
||||
draw = true;
|
||||
}
|
||||
|
||||
if( !aVia->FlashLayer( aLayer ) )
|
||||
if( !aVia->FlashLayer( currentLayer ) )
|
||||
draw = false;
|
||||
|
||||
if( !outline_mode )
|
||||
|
@ -1445,7 +1445,6 @@ std::vector<int> PCB_VIA::ViewGetLayers() const
|
||||
if( !cuMask.Contains( layer ) )
|
||||
continue;
|
||||
|
||||
ret_layers.push_back( layer );
|
||||
ret_layers.push_back( LAYER_VIA_COPPER_START + layer );
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user