eeschema: Fix plot line width for negative lines

Negative width lines are used to hide the outline of shapes in eeschema.
Plot should not show these lines.
This commit is contained in:
Seth Hillbrand 2019-03-10 23:41:00 -07:00
parent 80cf4ec5cb
commit 94fa734c61
5 changed files with 40 additions and 10 deletions

View File

@ -302,8 +302,14 @@ void LIB_ARC::Plot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
}
bool already_filled = m_Fill == FILLED_WITH_BG_BODYCOLOR;
auto pen_size = GetPenSize();
if( !already_filled || pen_size > 0 )
{
pen_size = std::max( 0, pen_size );
aPlotter->SetColor( GetLayerColor( LAYER_DEVICE ) );
aPlotter->Arc( pos, -t2, -t1, m_Radius, already_filled ? NO_FILL : m_Fill, GetPenSize() );
}
}

View File

@ -205,8 +205,14 @@ void LIB_BEZIER::Plot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
}
bool already_filled = m_Fill == FILLED_WITH_BG_BODYCOLOR;
auto pen_size = GetPenSize();
if( !already_filled || pen_size > 0 )
{
pen_size = std::max( 0, pen_size );
aPlotter->SetColor( GetLayerColor( LAYER_DEVICE ) );
aPlotter->PlotPoly( cornerList, already_filled ? NO_FILL : m_Fill, GetPenSize() );
}
}

View File

@ -157,8 +157,14 @@ void LIB_CIRCLE::Plot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
}
bool already_filled = m_Fill == FILLED_WITH_BG_BODYCOLOR;
auto pen_size = GetPenSize();
if( !already_filled || pen_size > 0 )
{
pen_size = std::max( 0, pen_size );
aPlotter->SetColor( GetLayerColor( LAYER_DEVICE ) );
aPlotter->Circle( pos, m_Radius * 2, already_filled ? NO_FILL : m_Fill, GetPenSize() );
}
}

View File

@ -163,8 +163,14 @@ void LIB_POLYLINE::Plot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
}
bool already_filled = m_Fill == FILLED_WITH_BG_BODYCOLOR;
auto pen_size = GetPenSize();
if( !already_filled || pen_size > 0 )
{
pen_size = std::max( 0, pen_size );
aPlotter->SetColor( GetLayerColor( LAYER_DEVICE ) );
aPlotter->PlotPoly( cornerList, already_filled ? NO_FILL : m_Fill, GetPenSize() );
}
}

View File

@ -147,8 +147,14 @@ void LIB_RECTANGLE::Plot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
}
bool already_filled = m_Fill == FILLED_WITH_BG_BODYCOLOR;
auto pen_size = GetPenSize();
if( !already_filled || pen_size > 0 )
{
pen_size = std::max( 0, pen_size );
aPlotter->SetColor( GetLayerColor( LAYER_DEVICE ) );
aPlotter->Rect( pos, end, already_filled ? NO_FILL : m_Fill, GetPenSize() );
}
}