Opengl gal: Fix bug: segments with 0 length are not drawn. However the are equivalent to circles.
Using 0 length segments happen with oval pads having the same X and Y size, and in some other cases. Fixes: lp:1801923 https://bugs.launchpad.net/kicad/+bug/1801923
This commit is contained in:
parent
1f3d5cee0e
commit
ffe4b745dd
|
@ -564,6 +564,12 @@ void OPENGL_GAL::DrawLine( const VECTOR2D& aStartPoint, const VECTOR2D& aEndPoin
|
||||||
void OPENGL_GAL::DrawSegment( const VECTOR2D& aStartPoint, const VECTOR2D& aEndPoint,
|
void OPENGL_GAL::DrawSegment( const VECTOR2D& aStartPoint, const VECTOR2D& aEndPoint,
|
||||||
double aWidth )
|
double aWidth )
|
||||||
{
|
{
|
||||||
|
if( aStartPoint == aEndPoint ) // 0 length segments are just a circle.
|
||||||
|
{
|
||||||
|
DrawCircle( aStartPoint, aWidth/2 );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if( isFillEnabled || aWidth == 1.0 )
|
if( isFillEnabled || aWidth == 1.0 )
|
||||||
{
|
{
|
||||||
currentManager->Color( fillColor.r, fillColor.g, fillColor.b, fillColor.a );
|
currentManager->Color( fillColor.r, fillColor.g, fillColor.b, fillColor.a );
|
||||||
|
|
|
@ -423,27 +423,21 @@ void GERBVIEW_PAINTER::drawFlashedShape( GERBER_DRAW_ITEM* aItem, bool aFilled )
|
||||||
int radius = code->m_Size.x >> 1;
|
int radius = code->m_Size.x >> 1;
|
||||||
VECTOR2D start( aItem->GetABPosition( aItem->m_Start ) );
|
VECTOR2D start( aItem->GetABPosition( aItem->m_Start ) );
|
||||||
|
|
||||||
if( !aFilled )
|
if( !aFilled || code->m_DrillShape == APT_DEF_NO_HOLE )
|
||||||
{
|
{
|
||||||
m_gal->DrawCircle( start, radius );
|
m_gal->DrawCircle( start, radius );
|
||||||
}
|
}
|
||||||
else
|
else // rectangular hole
|
||||||
{
|
{
|
||||||
if( code->m_DrillShape == APT_DEF_NO_HOLE )
|
if( code->m_Polygon.OutlineCount() == 0 )
|
||||||
{
|
code->ConvertShapeToPolygon();
|
||||||
m_gal->DrawCircle( start, radius );
|
|
||||||
}
|
|
||||||
else // rectangular hole
|
|
||||||
{
|
|
||||||
if( code->m_Polygon.OutlineCount() == 0 )
|
|
||||||
code->ConvertShapeToPolygon();
|
|
||||||
|
|
||||||
SHAPE_POLY_SET poly = code->m_Polygon;
|
SHAPE_POLY_SET poly = code->m_Polygon;
|
||||||
poly.Move( aItem->m_Start );
|
poly.Move( aItem->m_Start );
|
||||||
|
|
||||||
drawPolygon( aItem, poly, aFilled );
|
drawPolygon( aItem, poly, aFilled );
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue