Fix some edge-cases in DP tuning pattern outline.
This commit is contained in:
parent
4227b1add9
commit
29188bdc53
|
@ -1696,20 +1696,24 @@ SHAPE_LINE_CHAIN PCB_TUNING_PATTERN::getOutline() const
|
||||||
int amplitude = m_settings.m_maxAmplitude + KiROUND( m_trackWidth / 2.0 );
|
int amplitude = m_settings.m_maxAmplitude + KiROUND( m_trackWidth / 2.0 );
|
||||||
|
|
||||||
if( m_tuningMode == DIFF_PAIR )
|
if( m_tuningMode == DIFF_PAIR )
|
||||||
amplitude += m_trackWidth + m_diffPairGap;
|
amplitude = m_settings.m_maxAmplitude + m_diffPairGap / 2 + KiROUND( m_trackWidth );
|
||||||
|
|
||||||
if( m_tuningMode == DIFF_PAIR && m_baseLineCoupled
|
poly.OffsetLineChain( *m_baseLine, amplitude, CORNER_STRATEGY::ROUND_ALL_CORNERS,
|
||||||
&& m_baseLineCoupled->SegmentCount() > 0 )
|
ARC_LOW_DEF, false );
|
||||||
|
|
||||||
|
if( m_baseLineCoupled )
|
||||||
{
|
{
|
||||||
for( int i = 0; i < cl.PointCount() - 1 && i < m_baseLineCoupled->PointCount(); ++i )
|
SHAPE_POLY_SET polyCoupled;
|
||||||
cl.SetPoint( i, ( cl.CPoint( i ) + m_baseLineCoupled->CPoint( i ) ) / 2 );
|
polyCoupled.OffsetLineChain( *m_baseLineCoupled, amplitude,
|
||||||
|
CORNER_STRATEGY::ROUND_ALL_CORNERS, ARC_LOW_DEF, false );
|
||||||
|
|
||||||
cl.SetPoint( -1, ( cl.CPoint( -1 ) + m_baseLineCoupled->CPoint( -1 ) ) / 2 );
|
SHAPE_POLY_SET merged;
|
||||||
|
merged.BooleanAdd( poly, polyCoupled, SHAPE_POLY_SET::PM_STRICTLY_SIMPLE );
|
||||||
|
|
||||||
|
if( merged.OutlineCount() > 0 )
|
||||||
|
return merged.Outline( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
poly.OffsetLineChain( cl, amplitude, CORNER_STRATEGY::ROUND_ALL_CORNERS, ARC_LOW_DEF,
|
|
||||||
false );
|
|
||||||
|
|
||||||
if( poly.OutlineCount() > 0 )
|
if( poly.OutlineCount() > 0 )
|
||||||
return poly.Outline( 0 );
|
return poly.Outline( 0 );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue