Fix backwards arcs in legacy LIB_ARCs.
Fixes https://gitlab.com/kicad/code/kicad/issues/10455
This commit is contained in:
parent
d4ff829c26
commit
8445783216
|
@ -508,7 +508,6 @@ void EDA_SHAPE::SetArcGeometry( const VECTOR2I& aStart, const VECTOR2I& aMid, co
|
|||
std::swap( m_start, m_end );
|
||||
m_endsSwapped = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -600,8 +599,8 @@ void EDA_SHAPE::ShapeGetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PA
|
|||
const double deg = RAD2DEG( atan2( (double)( GetStart().y - GetEnd().y ),
|
||||
(double)( GetEnd().x - GetStart().x ) ) );
|
||||
aList.emplace_back( _( "Angle" ), wxString::Format( "%.1f", deg ) );
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
aList.emplace_back( shape, _( "Unrecognized" ) );
|
||||
|
|
|
@ -987,6 +987,7 @@ LIB_SHAPE* SCH_SEXPR_PARSER::parseArc()
|
|||
}
|
||||
else if( hasAngles )
|
||||
{
|
||||
arc->SetCenter( center );
|
||||
/**
|
||||
* This accounts for an oddity in the old library format, where the symbol is overdefined.
|
||||
* The previous draw (based on wxwidgets) used start point and end point and always drew
|
||||
|
@ -994,14 +995,10 @@ LIB_SHAPE* SCH_SEXPR_PARSER::parseArc()
|
|||
* these points were stored in the file, so we need to mimic the swapping of start/end
|
||||
* points rather than using the stored angles in order to properly map edge cases.
|
||||
*/
|
||||
if( !TRANSFORM().MapAngles( &startAngle, &endAngle ) )
|
||||
{
|
||||
VECTOR2I temp = arc->GetStart();
|
||||
arc->SetStart( arc->GetEnd() );
|
||||
arc->SetEnd( temp );
|
||||
}
|
||||
arc->SetCenter( center );
|
||||
}
|
||||
else
|
||||
{
|
||||
wxFAIL_MSG( "Setting arc without either midpoint or angles not implemented." );
|
||||
|
|
Loading…
Reference in New Issue