Browse Source

Pcbnew: do not display the outlines of a very special zone used by DRC

to show layer mask bridges created by DRC to show these bridges.
This is not a real ZONE, just a container to displays these filled areas.
newinvert
jean-pierre charras 2 years ago
parent
commit
38c7fa6db9
  1. 1
      pcbnew/board.cpp
  2. 1
      pcbnew/dialogs/dialog_copper_zones.cpp
  3. 1
      pcbnew/dialogs/dialog_non_copper_zones_properties.cpp
  4. 1
      pcbnew/dialogs/dialog_rule_area_properties.cpp
  5. 3
      pcbnew/pcb_painter.cpp
  6. 3
      pcbnew/zone_settings.h

1
pcbnew/board.cpp

@ -101,6 +101,7 @@ BOARD::BOARD() :
// Creates a zone to show sloder mask bridges created by a min web value
// it it just to show them
m_SolderMaskBridges = new ZONE( this );
m_SolderMaskBridges->SetHatchStyle( ZONE_BORDER_DISPLAY_STYLE::INVISIBLE_BORDER );
m_SolderMaskBridges->SetLayerSet( LSET().set( F_Mask ).set( B_Mask ) );
int infinity = ( std::numeric_limits<int>::max() / 2 ) - pcbIUScale.mmToIU( 1 );
m_SolderMaskBridges->Outline()->NewOutline();

1
pcbnew/dialogs/dialog_copper_zones.cpp

@ -294,6 +294,7 @@ bool DIALOG_COPPER_ZONE::TransferDataToWindow()
case ZONE_BORDER_DISPLAY_STYLE::NO_HATCH: m_OutlineDisplayCtrl->SetSelection( 0 ); break;
case ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_EDGE: m_OutlineDisplayCtrl->SetSelection( 1 ); break;
case ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_FULL: m_OutlineDisplayCtrl->SetSelection( 2 ); break;
case ZONE_BORDER_DISPLAY_STYLE::INVISIBLE_BORDER: break; // Not used for standard zones
}
m_outlineHatchPitch.SetValue( m_settings.m_BorderHatchPitch );

1
pcbnew/dialogs/dialog_non_copper_zones_properties.cpp

@ -178,6 +178,7 @@ bool DIALOG_NON_COPPER_ZONES_EDITOR::TransferDataToWindow()
case ZONE_BORDER_DISPLAY_STYLE::NO_HATCH: m_OutlineDisplayCtrl->SetSelection( 0 ); break;
case ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_EDGE: m_OutlineDisplayCtrl->SetSelection( 1 ); break;
case ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_FULL: m_OutlineDisplayCtrl->SetSelection( 2 ); break;
case ZONE_BORDER_DISPLAY_STYLE::INVISIBLE_BORDER: break; // Not used for standard zones
}
m_outlineHatchPitch.SetValue( m_settings.m_BorderHatchPitch );

1
pcbnew/dialogs/dialog_rule_area_properties.cpp

@ -156,6 +156,7 @@ bool DIALOG_RULE_AREA_PROPERTIES::TransferDataToWindow()
switch( m_zonesettings.m_ZoneBorderDisplayStyle )
{
case ZONE_BORDER_DISPLAY_STYLE::INVISIBLE_BORDER: // Not used for standard zones. Here use NO_HATCH
case ZONE_BORDER_DISPLAY_STYLE::NO_HATCH: m_OutlineDisplayCtrl->SetSelection( 0 ); break;
case ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_EDGE: m_OutlineDisplayCtrl->SetSelection( 1 ); break;
case ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_FULL: m_OutlineDisplayCtrl->SetSelection( 2 ); break;

3
pcbnew/pcb_painter.cpp

@ -2423,8 +2423,9 @@ void PCB_PAINTER::draw( const ZONE* aZone, int aLayer )
if( !IsZoneFillLayer( aLayer ) )
{
const SHAPE_POLY_SET* outline = aZone->Outline();
bool allowDrawOutline = aZone->GetHatchStyle() != ZONE_BORDER_DISPLAY_STYLE::INVISIBLE_BORDER;
if( !m_pcbSettings.m_isPrinting && outline && outline->OutlineCount() > 0 )
if( allowDrawOutline && !m_pcbSettings.m_isPrinting && outline && outline->OutlineCount() > 0 )
{
m_gal->SetStrokeColor( color.a > 0.0 ? color.WithAlpha( 1.0 ) : color );
m_gal->SetIsFill( false );

3
pcbnew/zone_settings.h

@ -49,7 +49,8 @@ enum class ZONE_BORDER_DISPLAY_STYLE
{
NO_HATCH,
DIAGONAL_FULL,
DIAGONAL_EDGE
DIAGONAL_EDGE,
INVISIBLE_BORDER // Disable outline drawing for very special cases
};
/// Whether or not to remove isolated islands from a zone

Loading…
Cancel
Save