Simpler active layer checking.
Also fixes an array index bounds issue.
This commit is contained in:
parent
791a50b493
commit
4ff3b22118
|
@ -316,26 +316,25 @@ COLOR4D PCB_RENDER_SETTINGS::GetColor( const VIEW_ITEM* aItem, int aLayer ) cons
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply high-contrast dimming
|
// Apply high-contrast dimming
|
||||||
bool isActiveLayer = m_highContrastLayers.count( aLayer );
|
bool isActive = m_highContrastLayers.count( aLayer );
|
||||||
|
|
||||||
|
// Items drawn on synthetic layers depend on crossing the active layer to determine
|
||||||
|
// active state
|
||||||
if( item->Type() == PCB_VIA_T )
|
if( item->Type() == PCB_VIA_T )
|
||||||
{
|
{
|
||||||
// Via layers depend on the via crossing a high-contrast layer
|
isActive = static_cast<const VIA*>( item )->IsOnLayer( GetPrimaryHighContrastLayer() );
|
||||||
for( int layer : m_highContrastLayers )
|
|
||||||
isActiveLayer |= static_cast<const VIA*>( item )->IsOnLayer( ToLAYER_ID( layer ) );
|
|
||||||
}
|
}
|
||||||
else if( item->Type() == PCB_PAD_T )
|
else if( item->Type() == PCB_PAD_T )
|
||||||
{
|
{
|
||||||
for( int layer : m_highContrastLayers )
|
isActive = static_cast<const D_PAD*>( item )->IsOnLayer( GetPrimaryHighContrastLayer() );
|
||||||
isActiveLayer |= static_cast<const D_PAD*>( item )->IsOnLayer( ToLAYER_ID( layer ) );
|
|
||||||
}
|
}
|
||||||
else if( item->Type() == PCB_TRACE_T || item->Type() == PCB_ARC_T )
|
else if( item->Type() == PCB_TRACE_T || item->Type() == PCB_ARC_T )
|
||||||
{
|
{
|
||||||
for( int layer : m_highContrastLayers )
|
// Track itself isn't on a synthetic layer, but its netname annotations are.
|
||||||
isActiveLayer |= static_cast<const TRACK*>( item )->IsOnLayer( ToLAYER_ID( layer ) );
|
isActive = static_cast<const TRACK*>( item )->IsOnLayer( GetPrimaryHighContrastLayer() );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( m_hiContrastEnabled && !isActiveLayer && !highlighted && !selected )
|
if( m_hiContrastEnabled && !isActive && !highlighted && !selected )
|
||||||
{
|
{
|
||||||
if( m_contrastModeDisplay == HIGH_CONTRAST_MODE::HIDDEN || IsNetnameLayer( aLayer ) )
|
if( m_contrastModeDisplay == HIGH_CONTRAST_MODE::HIDDEN || IsNetnameLayer( aLayer ) )
|
||||||
color = COLOR4D::CLEAR;
|
color = COLOR4D::CLEAR;
|
||||||
|
|
Loading…
Reference in New Issue