Emplace_back a bit a in clipper
This commit is contained in:
parent
41f54349a5
commit
28ce11212c
|
@ -73,6 +73,7 @@
|
||||||
"items_not_allowed": "error",
|
"items_not_allowed": "error",
|
||||||
"length_out_of_range": "error",
|
"length_out_of_range": "error",
|
||||||
"lib_footprint_issues": "error",
|
"lib_footprint_issues": "error",
|
||||||
|
"lib_footprint_mismatch": "error",
|
||||||
"malformed_courtyard": "error",
|
"malformed_courtyard": "error",
|
||||||
"microvia_drill_out_of_range": "error",
|
"microvia_drill_out_of_range": "error",
|
||||||
"missing_courtyard": "ignore",
|
"missing_courtyard": "ignore",
|
||||||
|
@ -121,6 +122,46 @@
|
||||||
"solder_mask_to_copper_clearance": 0.0,
|
"solder_mask_to_copper_clearance": 0.0,
|
||||||
"use_height_for_length_calcs": true
|
"use_height_for_length_calcs": true
|
||||||
},
|
},
|
||||||
|
"teardrop_options": [
|
||||||
|
{
|
||||||
|
"td_allow_use_two_tracks": true,
|
||||||
|
"td_curve_segcount": 5,
|
||||||
|
"td_on_pad_in_zone": false,
|
||||||
|
"td_onpadsmd": true,
|
||||||
|
"td_onroundshapesonly": false,
|
||||||
|
"td_ontrackend": false,
|
||||||
|
"td_onviapad": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"teardrop_parameters": [
|
||||||
|
{
|
||||||
|
"td_curve_segcount": 0,
|
||||||
|
"td_height_ratio": 1.0,
|
||||||
|
"td_length_ratio": 0.5,
|
||||||
|
"td_maxheight": 2.0,
|
||||||
|
"td_maxlen": 1.0,
|
||||||
|
"td_target_name": "td_round_shape",
|
||||||
|
"td_width_to_size_filter_ratio": 0.9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"td_curve_segcount": 0,
|
||||||
|
"td_height_ratio": 1.0,
|
||||||
|
"td_length_ratio": 0.5,
|
||||||
|
"td_maxheight": 2.0,
|
||||||
|
"td_maxlen": 1.0,
|
||||||
|
"td_target_name": "td_rect_shape",
|
||||||
|
"td_width_to_size_filter_ratio": 0.9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"td_curve_segcount": 0,
|
||||||
|
"td_height_ratio": 1.0,
|
||||||
|
"td_length_ratio": 0.5,
|
||||||
|
"td_maxheight": 2.0,
|
||||||
|
"td_maxlen": 1.0,
|
||||||
|
"td_target_name": "td_track_end",
|
||||||
|
"td_width_to_size_filter_ratio": 0.9
|
||||||
|
}
|
||||||
|
],
|
||||||
"track_widths": [],
|
"track_widths": [],
|
||||||
"via_dimensions": [],
|
"via_dimensions": [],
|
||||||
"zones_allow_external_fillets": false,
|
"zones_allow_external_fillets": false,
|
||||||
|
|
|
@ -5203,9 +5203,8 @@ void ClipperOffset::DoOffset( double delta )
|
||||||
|
|
||||||
for( cInt j = 1; j <= steps; j++ )
|
for( cInt j = 1; j <= steps; j++ )
|
||||||
{
|
{
|
||||||
m_destPoly.push_back( IntPoint(
|
m_destPoly.emplace_back( Round( m_srcPoly[0].X + X * delta ),
|
||||||
Round( m_srcPoly[0].X + X * delta ),
|
Round( m_srcPoly[0].Y + Y * delta ) );
|
||||||
Round( m_srcPoly[0].Y + Y * delta ) ) );
|
|
||||||
double X2 = X;
|
double X2 = X;
|
||||||
X = X * m_cos - m_sin * Y;
|
X = X * m_cos - m_sin * Y;
|
||||||
Y = X2 * m_sin + Y * m_cos;
|
Y = X2 * m_sin + Y * m_cos;
|
||||||
|
@ -5217,9 +5216,8 @@ void ClipperOffset::DoOffset( double delta )
|
||||||
|
|
||||||
for( int j = 0; j < 4; ++j )
|
for( int j = 0; j < 4; ++j )
|
||||||
{
|
{
|
||||||
m_destPoly.push_back( IntPoint(
|
m_destPoly.emplace_back( Round( m_srcPoly[0].X + X * delta ),
|
||||||
Round( m_srcPoly[0].X + X * delta ),
|
Round( m_srcPoly[0].Y + Y * delta ) );
|
||||||
Round( m_srcPoly[0].Y + Y * delta ) ) );
|
|
||||||
|
|
||||||
if( X < 0 )
|
if( X < 0 )
|
||||||
X = 1;
|
X = 1;
|
||||||
|
@ -5361,8 +5359,8 @@ void ClipperOffset::OffsetPoint( int j, int& k, JoinType jointype )
|
||||||
|
|
||||||
if( cosA > 0 ) // angle => 0 degrees
|
if( cosA > 0 ) // angle => 0 degrees
|
||||||
{
|
{
|
||||||
m_destPoly.push_back( IntPoint( Round( m_srcPoly[j].X + m_normals[k].X * m_delta ),
|
m_destPoly.emplace_back( Round( m_srcPoly[j].X + m_normals[k].X * m_delta ),
|
||||||
Round( m_srcPoly[j].Y + m_normals[k].Y * m_delta ) ) );
|
Round( m_srcPoly[j].Y + m_normals[k].Y * m_delta ) );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5375,11 +5373,11 @@ void ClipperOffset::OffsetPoint( int j, int& k, JoinType jointype )
|
||||||
|
|
||||||
if( m_sinA * m_delta < 0 )
|
if( m_sinA * m_delta < 0 )
|
||||||
{
|
{
|
||||||
m_destPoly.push_back( IntPoint( Round( m_srcPoly[j].X + m_normals[k].X * m_delta ),
|
m_destPoly.emplace_back( Round( m_srcPoly[j].X + m_normals[k].X * m_delta ),
|
||||||
Round( m_srcPoly[j].Y + m_normals[k].Y * m_delta ) ) );
|
Round( m_srcPoly[j].Y + m_normals[k].Y * m_delta ) );
|
||||||
m_destPoly.push_back( m_srcPoly[j] );
|
m_destPoly.push_back( m_srcPoly[j] );
|
||||||
m_destPoly.push_back( IntPoint( Round( m_srcPoly[j].X + m_normals[j].X * m_delta ),
|
m_destPoly.emplace_back( Round( m_srcPoly[j].X + m_normals[j].X * m_delta ),
|
||||||
Round( m_srcPoly[j].Y + m_normals[j].Y * m_delta ) ) );
|
Round( m_srcPoly[j].Y + m_normals[j].Y * m_delta ) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
switch( jointype )
|
switch( jointype )
|
||||||
|
@ -5433,8 +5431,8 @@ void ClipperOffset::DoMiter( int j, int k, double r )
|
||||||
{
|
{
|
||||||
double q = m_delta / r;
|
double q = m_delta / r;
|
||||||
|
|
||||||
m_destPoly.push_back( IntPoint( Round( m_srcPoly[j].X + (m_normals[k].X + m_normals[j].X) * q ),
|
m_destPoly.emplace_back( Round( m_srcPoly[j].X + ( m_normals[k].X + m_normals[j].X ) * q ),
|
||||||
Round( m_srcPoly[j].Y + (m_normals[k].Y + m_normals[j].Y) * q ) ) );
|
Round( m_srcPoly[j].Y + ( m_normals[k].Y + m_normals[j].Y ) * q ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -5451,9 +5449,8 @@ void ClipperOffset::DoRound( int j, int k )
|
||||||
|
|
||||||
for( int i = 0; i < takenSteps; ++i )
|
for( int i = 0; i < takenSteps; ++i )
|
||||||
{
|
{
|
||||||
m_destPoly.push_back( IntPoint(
|
m_destPoly.emplace_back( Round( m_srcPoly[j].X + X * m_delta ),
|
||||||
Round( m_srcPoly[j].X + X * m_delta ),
|
Round( m_srcPoly[j].Y + Y * m_delta ) );
|
||||||
Round( m_srcPoly[j].Y + Y * m_delta ) ) );
|
|
||||||
X2 = X;
|
X2 = X;
|
||||||
X = X * m_cos - m_sin * Y;
|
X = X * m_cos - m_sin * Y;
|
||||||
Y = X2 * m_sin + Y * m_cos;
|
Y = X2 * m_sin + Y * m_cos;
|
||||||
|
@ -5463,14 +5460,12 @@ void ClipperOffset::DoRound( int j, int k )
|
||||||
// from generating geometrically noisy solutions.
|
// from generating geometrically noisy solutions.
|
||||||
if( steps > takenSteps + 0.1 )
|
if( steps > takenSteps + 0.1 )
|
||||||
{
|
{
|
||||||
m_destPoly.push_back( IntPoint(
|
m_destPoly.emplace_back( Round( m_srcPoly[j].X + X * m_delta ),
|
||||||
Round( m_srcPoly[j].X + X * m_delta ),
|
Round( m_srcPoly[j].Y + Y * m_delta ) );
|
||||||
Round( m_srcPoly[j].Y + Y * m_delta ) ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_destPoly.push_back( IntPoint(
|
m_destPoly.emplace_back( Round( m_srcPoly[j].X + m_normals[j].X * m_delta ),
|
||||||
Round( m_srcPoly[j].X + m_normals[j].X * m_delta ),
|
Round( m_srcPoly[j].Y + m_normals[j].Y * m_delta ) );
|
||||||
Round( m_srcPoly[j].Y + m_normals[j].Y * m_delta ) ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -5801,7 +5796,7 @@ void Minkowski( const Path& poly, const Path& path,
|
||||||
p.reserve( polyCnt );
|
p.reserve( polyCnt );
|
||||||
|
|
||||||
for( size_t j = 0; j < poly.size(); ++j )
|
for( size_t j = 0; j < poly.size(); ++j )
|
||||||
p.push_back( IntPoint( path[i].X + poly[j].X, path[i].Y + poly[j].Y ) );
|
p.emplace_back( path[i].X + poly[j].X, path[i].Y + poly[j].Y );
|
||||||
|
|
||||||
pp.push_back( p );
|
pp.push_back( p );
|
||||||
}
|
}
|
||||||
|
@ -5814,7 +5809,7 @@ void Minkowski( const Path& poly, const Path& path,
|
||||||
p.reserve( polyCnt );
|
p.reserve( polyCnt );
|
||||||
|
|
||||||
for( size_t j = 0; j < poly.size(); ++j )
|
for( size_t j = 0; j < poly.size(); ++j )
|
||||||
p.push_back( IntPoint( path[i].X - poly[j].X, path[i].Y - poly[j].Y ) );
|
p.emplace_back( path[i].X - poly[j].X, path[i].Y - poly[j].Y );
|
||||||
|
|
||||||
pp.push_back( p );
|
pp.push_back( p );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue