More adjustments to the layer ordering (GAL).
This commit is contained in:
parent
34aab6f687
commit
2f0cf27ae4
|
@ -251,31 +251,27 @@ void PCB_DRAW_PANEL_GAL::SetTopLayer( LAYER_ID aLayer )
|
||||||
setDefaultLayerOrder();
|
setDefaultLayerOrder();
|
||||||
m_view->SetTopLayer( aLayer );
|
m_view->SetTopLayer( aLayer );
|
||||||
|
|
||||||
if( IsCopperLayer( aLayer ) )
|
// Layers that should always have on-top attribute enabled
|
||||||
{
|
const LAYER_NUM layers[] = {
|
||||||
// Bring some other layers to the front in case of copper layers and make them colored
|
ITEM_GAL_LAYER( VIA_THROUGH_VISIBLE ),
|
||||||
// fixme do not like the idea of storing the list of layers here,
|
ITEM_GAL_LAYER( VIAS_HOLES_VISIBLE ), ITEM_GAL_LAYER( PADS_VISIBLE ),
|
||||||
// should be done in some other way I guess..
|
ITEM_GAL_LAYER( PADS_HOLES_VISIBLE ), NETNAMES_GAL_LAYER( PADS_NETNAMES_VISIBLE ),
|
||||||
const LAYER_NUM layers[] = {
|
ITEM_GAL_LAYER( GP_OVERLAY ), ITEM_GAL_LAYER( RATSNEST_VISIBLE ), Dwgs_User,
|
||||||
GetNetnameLayer( aLayer ), ITEM_GAL_LAYER( VIA_THROUGH_VISIBLE ),
|
ITEM_GAL_LAYER( DRC_VISIBLE )
|
||||||
ITEM_GAL_LAYER( VIAS_HOLES_VISIBLE ), ITEM_GAL_LAYER( PADS_VISIBLE ),
|
};
|
||||||
ITEM_GAL_LAYER( PADS_HOLES_VISIBLE ), NETNAMES_GAL_LAYER( PADS_NETNAMES_VISIBLE ),
|
|
||||||
ITEM_GAL_LAYER( GP_OVERLAY ), ITEM_GAL_LAYER( RATSNEST_VISIBLE ), Dwgs_User,
|
|
||||||
ITEM_GAL_LAYER( DRC_VISIBLE )
|
|
||||||
};
|
|
||||||
|
|
||||||
for( unsigned int i = 0; i < sizeof( layers ) / sizeof( LAYER_NUM ); ++i )
|
for( unsigned int i = 0; i < sizeof( layers ) / sizeof( LAYER_NUM ); ++i )
|
||||||
m_view->SetTopLayer( layers[i] );
|
m_view->SetTopLayer( layers[i] );
|
||||||
}
|
|
||||||
|
|
||||||
|
// Extra layers that are brought to the top if a F.* or B.* is selected
|
||||||
const LAYER_NUM frontLayers[] = {
|
const LAYER_NUM frontLayers[] = {
|
||||||
F_Cu, F_Adhes, F_Paste, F_SilkS, F_Mask, F_CrtYd, F_Fab,
|
F_Cu, F_Adhes, F_Paste, F_SilkS, F_Mask, F_CrtYd, F_Fab, ITEM_GAL_LAYER( PAD_FR_VISIBLE ),
|
||||||
ITEM_GAL_LAYER( PAD_FR_VISIBLE ), NETNAMES_GAL_LAYER( PAD_FR_NETNAMES_VISIBLE ), -1
|
NETNAMES_GAL_LAYER( PAD_FR_NETNAMES_VISIBLE ), NETNAMES_GAL_LAYER( F_Cu ), -1
|
||||||
};
|
};
|
||||||
|
|
||||||
const LAYER_NUM backLayers[] = {
|
const LAYER_NUM backLayers[] = {
|
||||||
B_Cu, B_Adhes, B_Paste, B_SilkS, B_Mask, B_CrtYd, B_Fab,
|
B_Cu, B_Adhes, B_Paste, B_SilkS, B_Mask, B_CrtYd, B_Fab, ITEM_GAL_LAYER( PAD_BK_VISIBLE ),
|
||||||
ITEM_GAL_LAYER( PAD_BK_VISIBLE ), NETNAMES_GAL_LAYER( PAD_BK_NETNAMES_VISIBLE ), -1
|
NETNAMES_GAL_LAYER( PAD_BK_NETNAMES_VISIBLE ), NETNAMES_GAL_LAYER( B_Cu ), -1
|
||||||
};
|
};
|
||||||
|
|
||||||
const LAYER_NUM* extraLayers = NULL;
|
const LAYER_NUM* extraLayers = NULL;
|
||||||
|
@ -288,20 +284,19 @@ void PCB_DRAW_PANEL_GAL::SetTopLayer( LAYER_ID aLayer )
|
||||||
|
|
||||||
if( extraLayers )
|
if( extraLayers )
|
||||||
{
|
{
|
||||||
int topOrder = std::numeric_limits<int>::max();
|
|
||||||
const LAYER_NUM* l = extraLayers;
|
const LAYER_NUM* l = extraLayers;
|
||||||
|
|
||||||
while( *l >= 0 )
|
while( *l >= 0 )
|
||||||
{
|
m_view->SetTopLayer( *l++ );
|
||||||
m_view->SetTopLayer( *l );
|
|
||||||
topOrder = std::min( topOrder, m_view->GetLayerOrder( *l ) );
|
|
||||||
++l;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do not cover pads with copper
|
// Move the active layer to the top
|
||||||
if( !IsCopperLayer( aLayer ) )
|
if( !IsCopperLayer( aLayer ) )
|
||||||
m_view->SetLayerOrder( aLayer, topOrder - 1 );
|
m_view->SetLayerOrder( aLayer, m_view->GetLayerOrder( GAL_LAYER_ORDER[0] ) );
|
||||||
|
}
|
||||||
|
else if( IsCopperLayer( aLayer ) )
|
||||||
|
{
|
||||||
|
// Display labels for copper layers on the top
|
||||||
|
m_view->SetTopLayer( GetNetnameLayer( aLayer ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
m_view->UpdateAllLayersOrder();
|
m_view->UpdateAllLayersOrder();
|
||||||
|
|
Loading…
Reference in New Issue