Bug fixes in new dangling symbol drawing code.

This commit is contained in:
Jeff Young 2021-12-07 20:47:12 +00:00
parent 51eac3ba04
commit c4336de868
4 changed files with 29 additions and 16 deletions

View File

@ -202,7 +202,13 @@ void PANEL_EESCHEMA_COLOR_SETTINGS::createSwatches()
std::vector<SCH_LAYER_ID> layers; std::vector<SCH_LAYER_ID> layers;
for( SCH_LAYER_ID i = SCH_LAYER_ID_START; i < SCH_LAYER_ID_END; ++i ) 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 ); layers.push_back( i );
}
std::sort( layers.begin(), layers.end(), std::sort( layers.begin(), layers.end(),
[]( SCH_LAYER_ID a, SCH_LAYER_ID b ) []( SCH_LAYER_ID a, SCH_LAYER_ID b )

View File

@ -759,7 +759,8 @@ void SCH_PAINTER::draw( LIB_PIN *aPin, int aLayer )
return; return;
bool drawingShadows = aLayer == LAYER_SELECTION_SHADOWS; 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() ) if( drawingShadows && !aPin->IsSelected() )
return; return;
@ -775,16 +776,16 @@ void SCH_PAINTER::draw( LIB_PIN *aPin, int aLayer )
} }
else else
{ {
if( aLayer == LAYER_DANGLING && dangling && aPin->IsPowerConnection() ) if( drawingDangling && isDangling && aPin->IsPowerConnection() )
drawPinDanglingSymbol( pos, color, drawingShadows ); drawPinDanglingSymbol( pos, color, drawingShadows );
return; return;
} }
} }
if( aLayer == LAYER_DANGLING ) if( drawingDangling )
{ {
if( dangling ) if( isDangling )
drawPinDanglingSymbol( pos, color, drawingShadows ); drawPinDanglingSymbol( pos, color, drawingShadows );
return; 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 aboveOffset = Mils2iu( PIN_TEXT_MARGIN ) + ( thickness[ABOVE] + penWidth ) / 2.0;
float belowOffset = Mils2iu( PIN_TEXT_MARGIN ) + ( thickness[BELOW] + penWidth ) / 2.0; float belowOffset = Mils2iu( PIN_TEXT_MARGIN ) + ( thickness[BELOW] + penWidth ) / 2.0;
if( dangling ) if( isDangling )
outsideOffset += TARGET_PIN_RADIUS / 2.0; outsideOffset += TARGET_PIN_RADIUS / 2.0;
if( drawingShadows ) 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 ) void SCH_PAINTER::draw( const SCH_LINE *aLine, int aLayer )
{ {
bool drawingShadows = aLayer == LAYER_SELECTION_SHADOWS; bool drawingShadows = aLayer == LAYER_SELECTION_SHADOWS;
bool drawingDangling = aLayer == LAYER_DANGLING;
if( drawingShadows && !aLine->IsSelected() ) if( drawingShadows && !aLine->IsSelected() )
return; return;
@ -1251,7 +1253,7 @@ void SCH_PAINTER::draw( const SCH_LINE *aLine, int aLayer )
float width = getLineWidth( aLine, drawingShadows ); float width = getLineWidth( aLine, drawingShadows );
PLOT_DASH_TYPE lineStyle = aLine->GetEffectiveLineStyle(); PLOT_DASH_TYPE lineStyle = aLine->GetEffectiveLineStyle();
if( aLayer == LAYER_DANGLING ) if( drawingDangling )
{ {
if( aLine->IsStartDangling() && aLine->IsWire() ) 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 ) void SCH_PAINTER::draw( const SCH_TEXT *aText, int aLayer )
{ {
bool drawingShadows = aLayer == LAYER_SELECTION_SHADOWS; bool drawingShadows = aLayer == LAYER_SELECTION_SHADOWS;
bool drawingDangling = aLayer == LAYER_DANGLING;
if( drawingShadows && !aText->IsSelected() ) if( drawingShadows && !aText->IsSelected() )
return; return;
@ -1361,7 +1364,7 @@ void SCH_PAINTER::draw( const SCH_TEXT *aText, int aLayer )
return; return;
} }
if( aLayer == LAYER_DANGLING ) if( drawingDangling )
{ {
if( aText->IsDangling() ) 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_LAYER_ID layer = aEntry->Type() == SCH_BUS_WIRE_ENTRY_T ? LAYER_WIRE : LAYER_BUS;
SCH_LINE line( wxPoint(), layer ); SCH_LINE line( wxPoint(), layer );
bool drawingShadows = aLayer == LAYER_SELECTION_SHADOWS; bool drawingShadows = aLayer == LAYER_SELECTION_SHADOWS;
bool drawingDangling = aLayer == LAYER_DANGLING;
if( drawingShadows && !aEntry->IsSelected() ) if( drawingShadows && !aEntry->IsSelected() )
return; 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 ) if( aEntry->Type() == SCH_BUS_BUS_ENTRY_T )
color = getRenderColor( aEntry, LAYER_BUS, drawingShadows ); color = getRenderColor( aEntry, LAYER_BUS, drawingShadows );
if( aLayer == LAYER_DANGLING ) if( drawingDangling )
{ {
m_gal->SetIsFill( false ); m_gal->SetIsFill( false );
m_gal->SetIsStroke( true ); m_gal->SetIsStroke( true );
m_gal->SetStrokeColor( color.Brightened( 0.3 ) ); m_gal->SetStrokeColor( color.Brightened( 0.3 ) );
m_gal->SetLineWidth( drawingShadows ? getShadowWidth() : 1.0F ); m_gal->SetLineWidth( m_schSettings.GetDanglineSymbolThickness() );
if( aEntry->IsDanglingStart() ) if( aEntry->IsDanglingStart() )
{ {

View File

@ -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; aCount = 0;
aLayers[0] = LAYER_DANGLING;
aLayers[1] = m_layer; if( m_layer != LAYER_NOTES )
aLayers[2] = LAYER_SELECTION_SHADOWS; aLayers[ aCount++ ] = LAYER_DANGLING;
aLayers[ aCount++ ] = m_layer;
aLayers[ aCount++ ] = LAYER_SELECTION_SHADOWS;
} }

View File

@ -232,6 +232,8 @@ public:
std::vector<wxPoint> GetConnectionPoints() const override; std::vector<wxPoint> GetConnectionPoints() const override;
void ViewGetLayers( int aLayers[], int& aCount ) const override;
wxString GetSelectMenuText( EDA_UNITS aUnits ) const override; wxString GetSelectMenuText( EDA_UNITS aUnits ) const override;
BITMAPS GetMenuImage() const override; BITMAPS GetMenuImage() const override;
@ -308,8 +310,6 @@ public:
( aItem->GetLayer() == LAYER_WIRE || aItem->GetLayer() == LAYER_BUS ); ( aItem->GetLayer() == LAYER_WIRE || aItem->GetLayer() == LAYER_BUS );
} }
void ViewGetLayers( int aLayers[], int& aCount ) const override;
wxString GetSelectMenuText( EDA_UNITS aUnits ) const override; wxString GetSelectMenuText( EDA_UNITS aUnits ) const override;
BITMAPS GetMenuImage() const override; BITMAPS GetMenuImage() const override;