7
mirror of https://gitlab.com/kicad/code/kicad.git synced 2025-04-20 16:21:41 +00:00

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;
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 )

View File

@ -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() )
{

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;
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;
}

View File

@ -232,6 +232,8 @@ public:
std::vector<wxPoint> 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;