From c4336de86840eab93734a8182e873db601d56a4d Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Tue, 7 Dec 2021 20:47:12 +0000 Subject: [PATCH] Bug fixes in new dangling symbol drawing code. --- .../dialogs/panel_eeschema_color_settings.cpp | 6 +++++ eeschema/sch_painter.cpp | 22 +++++++++++-------- eeschema/sch_text.cpp | 13 ++++++----- eeschema/sch_text.h | 4 ++-- 4 files changed, 29 insertions(+), 16 deletions(-) diff --git a/eeschema/dialogs/panel_eeschema_color_settings.cpp b/eeschema/dialogs/panel_eeschema_color_settings.cpp index 291bd955be..00fd1bff5a 100644 --- a/eeschema/dialogs/panel_eeschema_color_settings.cpp +++ b/eeschema/dialogs/panel_eeschema_color_settings.cpp @@ -202,7 +202,13 @@ void PANEL_EESCHEMA_COLOR_SETTINGS::createSwatches() std::vector layers; for( SCH_LAYER_ID i = SCH_LAYER_ID_START; i < SCH_LAYER_ID_END; ++i ) + { + if( g_excludedLayers.count( i ) ) + continue; + layers.push_back( i ); + } + std::sort( layers.begin(), layers.end(), []( SCH_LAYER_ID a, SCH_LAYER_ID b ) diff --git a/eeschema/sch_painter.cpp b/eeschema/sch_painter.cpp index 5b7a32e2e6..a5829226fb 100644 --- a/eeschema/sch_painter.cpp +++ b/eeschema/sch_painter.cpp @@ -759,7 +759,8 @@ void SCH_PAINTER::draw( LIB_PIN *aPin, int aLayer ) return; bool drawingShadows = aLayer == LAYER_SELECTION_SHADOWS; - bool dangling = m_schSettings.m_IsSymbolEditor || aPin->HasFlag( IS_DANGLING ); + bool drawingDangling = aLayer == LAYER_DANGLING; + bool isDangling = m_schSettings.m_IsSymbolEditor || aPin->HasFlag( IS_DANGLING ); if( drawingShadows && !aPin->IsSelected() ) return; @@ -775,16 +776,16 @@ void SCH_PAINTER::draw( LIB_PIN *aPin, int aLayer ) } else { - if( aLayer == LAYER_DANGLING && dangling && aPin->IsPowerConnection() ) + if( drawingDangling && isDangling && aPin->IsPowerConnection() ) drawPinDanglingSymbol( pos, color, drawingShadows ); return; } } - if( aLayer == LAYER_DANGLING ) + if( drawingDangling ) { - if( dangling ) + if( isDangling ) drawPinDanglingSymbol( pos, color, drawingShadows ); return; @@ -1019,7 +1020,7 @@ void SCH_PAINTER::draw( LIB_PIN *aPin, int aLayer ) float aboveOffset = Mils2iu( PIN_TEXT_MARGIN ) + ( thickness[ABOVE] + penWidth ) / 2.0; float belowOffset = Mils2iu( PIN_TEXT_MARGIN ) + ( thickness[BELOW] + penWidth ) / 2.0; - if( dangling ) + if( isDangling ) outsideOffset += TARGET_PIN_RADIUS / 2.0; if( drawingShadows ) @@ -1243,6 +1244,7 @@ void SCH_PAINTER::draw( const SCH_JUNCTION *aJct, int aLayer ) void SCH_PAINTER::draw( const SCH_LINE *aLine, int aLayer ) { bool drawingShadows = aLayer == LAYER_SELECTION_SHADOWS; + bool drawingDangling = aLayer == LAYER_DANGLING; if( drawingShadows && !aLine->IsSelected() ) return; @@ -1251,7 +1253,7 @@ void SCH_PAINTER::draw( const SCH_LINE *aLine, int aLayer ) float width = getLineWidth( aLine, drawingShadows ); PLOT_DASH_TYPE lineStyle = aLine->GetEffectiveLineStyle(); - if( aLayer == LAYER_DANGLING ) + if( drawingDangling ) { if( aLine->IsStartDangling() && aLine->IsWire() ) { @@ -1327,6 +1329,7 @@ void SCH_PAINTER::draw( const SCH_LINE *aLine, int aLayer ) void SCH_PAINTER::draw( const SCH_TEXT *aText, int aLayer ) { bool drawingShadows = aLayer == LAYER_SELECTION_SHADOWS; + bool drawingDangling = aLayer == LAYER_DANGLING; if( drawingShadows && !aText->IsSelected() ) return; @@ -1361,7 +1364,7 @@ void SCH_PAINTER::draw( const SCH_TEXT *aText, int aLayer ) return; } - if( aLayer == LAYER_DANGLING ) + if( drawingDangling ) { if( aText->IsDangling() ) { @@ -1789,6 +1792,7 @@ void SCH_PAINTER::draw( const SCH_BUS_ENTRY_BASE *aEntry, int aLayer ) SCH_LAYER_ID layer = aEntry->Type() == SCH_BUS_WIRE_ENTRY_T ? LAYER_WIRE : LAYER_BUS; SCH_LINE line( wxPoint(), layer ); bool drawingShadows = aLayer == LAYER_SELECTION_SHADOWS; + bool drawingDangling = aLayer == LAYER_DANGLING; if( drawingShadows && !aEntry->IsSelected() ) return; @@ -1808,12 +1812,12 @@ void SCH_PAINTER::draw( const SCH_BUS_ENTRY_BASE *aEntry, int aLayer ) if( aEntry->Type() == SCH_BUS_BUS_ENTRY_T ) color = getRenderColor( aEntry, LAYER_BUS, drawingShadows ); - if( aLayer == LAYER_DANGLING ) + if( drawingDangling ) { m_gal->SetIsFill( false ); m_gal->SetIsStroke( true ); m_gal->SetStrokeColor( color.Brightened( 0.3 ) ); - m_gal->SetLineWidth( drawingShadows ? getShadowWidth() : 1.0F ); + m_gal->SetLineWidth( m_schSettings.GetDanglineSymbolThickness() ); if( aEntry->IsDanglingStart() ) { diff --git a/eeschema/sch_text.cpp b/eeschema/sch_text.cpp index 5841aa8a01..32980bb436 100644 --- a/eeschema/sch_text.cpp +++ b/eeschema/sch_text.cpp @@ -919,12 +919,15 @@ const EDA_RECT SCH_LABEL::GetBoundingBox() const } -void SCH_LABEL::ViewGetLayers( int aLayers[], int& aCount ) const +void SCH_TEXT::ViewGetLayers( int aLayers[], int& aCount ) const { - aCount = 3; - aLayers[0] = LAYER_DANGLING; - aLayers[1] = m_layer; - aLayers[2] = LAYER_SELECTION_SHADOWS; + aCount = 0; + + if( m_layer != LAYER_NOTES ) + aLayers[ aCount++ ] = LAYER_DANGLING; + + aLayers[ aCount++ ] = m_layer; + aLayers[ aCount++ ] = LAYER_SELECTION_SHADOWS; } diff --git a/eeschema/sch_text.h b/eeschema/sch_text.h index 44a3062bf6..8dde35ebdb 100644 --- a/eeschema/sch_text.h +++ b/eeschema/sch_text.h @@ -232,6 +232,8 @@ public: std::vector GetConnectionPoints() const override; + void ViewGetLayers( int aLayers[], int& aCount ) const override; + wxString GetSelectMenuText( EDA_UNITS aUnits ) const override; BITMAPS GetMenuImage() const override; @@ -308,8 +310,6 @@ public: ( aItem->GetLayer() == LAYER_WIRE || aItem->GetLayer() == LAYER_BUS ); } - void ViewGetLayers( int aLayers[], int& aCount ) const override; - wxString GetSelectMenuText( EDA_UNITS aUnits ) const override; BITMAPS GetMenuImage() const override;