SVG Plotter: Handle edge-case arc and circle drawing
This commit is contained in:
parent
921e68107b
commit
9c62792245
|
@ -357,6 +357,15 @@ void SVG_PLOTTER::Circle( const wxPoint& pos, int diametre, FILL_T fill, int wid
|
||||||
setFillMode( fill );
|
setFillMode( fill );
|
||||||
SetCurrentLineWidth( width );
|
SetCurrentLineWidth( width );
|
||||||
|
|
||||||
|
// If diameter is less than width, switch to filled mode
|
||||||
|
if( fill == NO_FILL && diametre < width )
|
||||||
|
{
|
||||||
|
setFillMode( FILLED_SHAPE );
|
||||||
|
SetCurrentLineWidth( 0 );
|
||||||
|
|
||||||
|
radius = userToDeviceSize( ( diametre / 2.0 ) + ( width / 2.0 ) );
|
||||||
|
}
|
||||||
|
|
||||||
fprintf( outputFile,
|
fprintf( outputFile,
|
||||||
"<circle cx=\"%g\" cy=\"%g\" r=\"%g\" /> \n",
|
"<circle cx=\"%g\" cy=\"%g\" r=\"%g\" /> \n",
|
||||||
pos_dev.x, pos_dev.y, radius );
|
pos_dev.x, pos_dev.y, radius );
|
||||||
|
@ -375,7 +384,10 @@ void SVG_PLOTTER::Arc( const wxPoint& centre, double StAngle, double EndAngle, i
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if( radius <= 0 )
|
if( radius <= 0 )
|
||||||
|
{
|
||||||
|
Circle( centre, width, FILLED_SHAPE, 0 );
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if( StAngle > EndAngle )
|
if( StAngle > EndAngle )
|
||||||
std::swap( StAngle, EndAngle );
|
std::swap( StAngle, EndAngle );
|
||||||
|
|
Loading…
Reference in New Issue