eeschema, libedit l fix a bug in lib_arc.cpp which creates incorrect arc start and arc end parameters after rotation or mirror.
the Bug #1121079 is due to this bug, but Bug #1121079 itself cannot be fixed because this is the data inside the lib which is broken.
This commit is contained in:
parent
93a5b4a07f
commit
00fafe7d58
|
@ -293,6 +293,19 @@ void LIB_ARC::MirrorHorizontal( const wxPoint& aCenter )
|
||||||
m_ArcEnd.x *= -1;
|
m_ArcEnd.x *= -1;
|
||||||
m_ArcEnd.x += aCenter.x;
|
m_ArcEnd.x += aCenter.x;
|
||||||
EXCHG( m_ArcStart, m_ArcEnd );
|
EXCHG( m_ArcStart, m_ArcEnd );
|
||||||
|
EXCHG( m_t1, m_t2 );
|
||||||
|
m_t1 = 1800 - m_t1;
|
||||||
|
m_t2 = 1800 - m_t2;
|
||||||
|
if( m_t1 > 3600 || m_t2 > 3600 )
|
||||||
|
{
|
||||||
|
m_t1 -= 3600;
|
||||||
|
m_t2 -= 3600;
|
||||||
|
}
|
||||||
|
else if( m_t1 < -3600 || m_t2 < -3600 )
|
||||||
|
{
|
||||||
|
m_t1 += 3600;
|
||||||
|
m_t2 += 3600;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LIB_ARC::MirrorVertical( const wxPoint& aCenter )
|
void LIB_ARC::MirrorVertical( const wxPoint& aCenter )
|
||||||
|
@ -307,6 +320,19 @@ void LIB_ARC::MirrorVertical( const wxPoint& aCenter )
|
||||||
m_ArcEnd.y *= -1;
|
m_ArcEnd.y *= -1;
|
||||||
m_ArcEnd.y += aCenter.y;
|
m_ArcEnd.y += aCenter.y;
|
||||||
EXCHG( m_ArcStart, m_ArcEnd );
|
EXCHG( m_ArcStart, m_ArcEnd );
|
||||||
|
EXCHG( m_t1, m_t2 );
|
||||||
|
m_t1 = - m_t1;
|
||||||
|
m_t2 = - m_t2;
|
||||||
|
if( m_t1 > 3600 || m_t2 > 3600 )
|
||||||
|
{
|
||||||
|
m_t1 -= 3600;
|
||||||
|
m_t2 -= 3600;
|
||||||
|
}
|
||||||
|
else if( m_t1 < -3600 || m_t2 < -3600 )
|
||||||
|
{
|
||||||
|
m_t1 += 3600;
|
||||||
|
m_t2 += 3600;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LIB_ARC::Rotate( const wxPoint& aCenter, bool aRotateCCW )
|
void LIB_ARC::Rotate( const wxPoint& aCenter, bool aRotateCCW )
|
||||||
|
@ -315,6 +341,18 @@ void LIB_ARC::Rotate( const wxPoint& aCenter, bool aRotateCCW )
|
||||||
RotatePoint( &m_Pos, aCenter, rot_angle );
|
RotatePoint( &m_Pos, aCenter, rot_angle );
|
||||||
RotatePoint( &m_ArcStart, aCenter, rot_angle );
|
RotatePoint( &m_ArcStart, aCenter, rot_angle );
|
||||||
RotatePoint( &m_ArcEnd, aCenter, rot_angle );
|
RotatePoint( &m_ArcEnd, aCenter, rot_angle );
|
||||||
|
m_t1 -= rot_angle;
|
||||||
|
m_t2 -= rot_angle;
|
||||||
|
if( m_t1 > 3600 || m_t2 > 3600 )
|
||||||
|
{
|
||||||
|
m_t1 -= 3600;
|
||||||
|
m_t2 -= 3600;
|
||||||
|
}
|
||||||
|
else if( m_t1 < -3600 || m_t2 < -3600 )
|
||||||
|
{
|
||||||
|
m_t1 += 3600;
|
||||||
|
m_t2 += 3600;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue