|
|
|
@ -271,6 +271,7 @@ void PlotStandardLayer( BOARD* aBoard, PLOTTER* aPlotter, LSET aLayerMask, |
|
|
|
const PCB_PLOT_PARAMS& aPlotOpt ) |
|
|
|
{ |
|
|
|
BRDITEMS_PLOTTER itemplotter( aPlotter, aBoard, aPlotOpt ); |
|
|
|
int maxError = aBoard->GetDesignSettings().m_MaxError; |
|
|
|
|
|
|
|
itemplotter.SetLayerSet( aLayerMask ); |
|
|
|
|
|
|
|
@ -435,9 +436,8 @@ void PlotStandardLayer( BOARD* aBoard, PLOTTER* aPlotter, LSET aLayerMask, |
|
|
|
|
|
|
|
// Shape polygon can have holes so use InflateWithLinkedHoles(), not Inflate()
|
|
|
|
// which can create bad shapes if margin.x is < 0
|
|
|
|
int maxError = aBoard->GetDesignSettings().m_MaxError; |
|
|
|
int numSegs = GetArcToSegmentCount( mask_clearance, maxError, FULL_CIRCLE ); |
|
|
|
outline.InflateWithLinkedHoles( mask_clearance, numSegs, |
|
|
|
outline.InflateWithLinkedHoles( mask_clearance, |
|
|
|
SHAPE_POLY_SET::ROUND_ALL_CORNERS, maxError, |
|
|
|
SHAPE_POLY_SET::PM_FAST ); |
|
|
|
dummy.DeletePrimitivesList(); |
|
|
|
dummy.AddPrimitivePoly( outline, 0, true ); |
|
|
|
@ -483,11 +483,10 @@ void PlotStandardLayer( BOARD* aBoard, PLOTTER* aPlotter, LSET aLayerMask, |
|
|
|
dummy.SetPosition( VECTOR2I( 0, 0 ) ); |
|
|
|
dummy.SetOrientation( ANGLE_0 ); |
|
|
|
SHAPE_POLY_SET outline; |
|
|
|
int maxError = aBoard->GetDesignSettings().m_MaxError; |
|
|
|
int numSegs = GetArcToSegmentCount( mask_clearance, maxError, FULL_CIRCLE ); |
|
|
|
dummy.TransformShapeToPolygon( outline, UNDEFINED_LAYER, 0, maxError, |
|
|
|
ERROR_INSIDE ); |
|
|
|
outline.InflateWithLinkedHoles( mask_clearance, numSegs, |
|
|
|
outline.InflateWithLinkedHoles( mask_clearance, |
|
|
|
SHAPE_POLY_SET::ROUND_ALL_CORNERS, maxError, |
|
|
|
SHAPE_POLY_SET::PM_FAST ); |
|
|
|
|
|
|
|
// Initialize the dummy pad shape:
|
|
|
|
@ -518,9 +517,9 @@ void PlotStandardLayer( BOARD* aBoard, PLOTTER* aPlotter, LSET aLayerMask, |
|
|
|
|
|
|
|
// Shape polygon can have holes so use InflateWithLinkedHoles(), not Inflate()
|
|
|
|
// which can create bad shapes if margin.x is < 0
|
|
|
|
int maxError = aBoard->GetDesignSettings().m_MaxError; |
|
|
|
int numSegs = GetArcToSegmentCount( mask_clearance, maxError, FULL_CIRCLE ); |
|
|
|
shape.InflateWithLinkedHoles( mask_clearance, numSegs, SHAPE_POLY_SET::PM_FAST ); |
|
|
|
shape.InflateWithLinkedHoles( mask_clearance, |
|
|
|
SHAPE_POLY_SET::ROUND_ALL_CORNERS, maxError, |
|
|
|
SHAPE_POLY_SET::PM_FAST ); |
|
|
|
dummy.DeletePrimitivesList(); |
|
|
|
dummy.AddPrimitivePoly( shape, 0, true ); |
|
|
|
|
|
|
|
@ -971,12 +970,10 @@ void PlotSolderMaskLayer( BOARD *aBoard, PLOTTER* aPlotter, LSET aLayerMask, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
int numSegs = GetArcToSegmentCount( inflate, maxError, FULL_CIRCLE ); |
|
|
|
|
|
|
|
// Merge all polygons: After deflating, not merged (not overlapping) polygons will have the
|
|
|
|
// initial shape (with perhaps small changes due to deflating transform)
|
|
|
|
areas.Simplify( SHAPE_POLY_SET::PM_STRICTLY_SIMPLE ); |
|
|
|
areas.Deflate( inflate, numSegs ); |
|
|
|
areas.Deflate( inflate, SHAPE_POLY_SET::CHAMFER_ALL_CORNERS, maxError ); |
|
|
|
|
|
|
|
// To avoid a lot of code, use a ZONE to handle and plot polygons, because our polygons look
|
|
|
|
// exactly like filled areas in zones.
|
|
|
|
|