diff --git a/pcbnew/board.cpp b/pcbnew/board.cpp index 394b24beb7..0c8818eab3 100644 --- a/pcbnew/board.cpp +++ b/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::max() / 2 ) - pcbIUScale.mmToIU( 1 ); m_SolderMaskBridges->Outline()->NewOutline(); diff --git a/pcbnew/dialogs/dialog_copper_zones.cpp b/pcbnew/dialogs/dialog_copper_zones.cpp index cea5eb5656..666240ea6e 100644 --- a/pcbnew/dialogs/dialog_copper_zones.cpp +++ b/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 ); diff --git a/pcbnew/dialogs/dialog_non_copper_zones_properties.cpp b/pcbnew/dialogs/dialog_non_copper_zones_properties.cpp index 3f90539839..d4f944ba4c 100644 --- a/pcbnew/dialogs/dialog_non_copper_zones_properties.cpp +++ b/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 ); diff --git a/pcbnew/dialogs/dialog_rule_area_properties.cpp b/pcbnew/dialogs/dialog_rule_area_properties.cpp index c27e0baa67..728498633a 100644 --- a/pcbnew/dialogs/dialog_rule_area_properties.cpp +++ b/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; diff --git a/pcbnew/pcb_painter.cpp b/pcbnew/pcb_painter.cpp index d946558c8a..af16a73d82 100644 --- a/pcbnew/pcb_painter.cpp +++ b/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 ); diff --git a/pcbnew/zone_settings.h b/pcbnew/zone_settings.h index a11c3f4d24..0d8a9b1f62 100644 --- a/pcbnew/zone_settings.h +++ b/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