Don't overflow trying to draw ticks on ruler (KICAD-9HV).

This commit is contained in:
Jeff Young 2025-07-03 16:34:21 -06:00
parent 221cc13c79
commit fde693ebe1
3 changed files with 12 additions and 12 deletions

View File

@ -1020,8 +1020,8 @@ int EDA_SHAPE::GetRadius() const
}
// don't allow degenerate circles/arcs
if( radius > INT_MAX / 2.0 )
radius = INT_MAX / 2.0;
if( radius > (double) INT_MAX / 2.0 )
radius = (double) INT_MAX / 2.0;
return std::max( 1, KiROUND( radius ) );
}

View File

@ -338,14 +338,15 @@ void RULER_ITEM::ViewDraw( int aLayer, KIGFX::VIEW* aView ) const
DrawTextNextToCursor( aView, end, -rulerVec, cursorStrings, drawingDropShadows );
// basic tick size
const double minorTickLen = 5.0 / gal->GetWorldScale();
const double majorTickLen = minorTickLen * majorTickLengthFactor;
double minorTickLen = 5.0 / gal->GetWorldScale();
double majorTickLen = minorTickLen * majorTickLengthFactor;
minorTickLen = std::min( minorTickLen, (double) INT_MAX / 2.0 );
majorTickLen = std::min( majorTickLen, (double) INT_MAX / 2.0 );
if( m_showTicks )
{
drawTicksAlongLine( aView, origin, rulerVec, minorTickLen, m_iuScale, m_userUnits,
drawingDropShadows );
drawTicksAlongLine( aView, origin, rulerVec, minorTickLen, m_iuScale, m_userUnits, drawingDropShadows );
drawBacksideTicks( aView, origin, rulerVec, majorTickLen, 2, drawingDropShadows );
}
@ -388,11 +389,10 @@ wxArrayString RULER_ITEM::GetDimensionStrings() const
cursorStrings.push_back( DimensionLabel( "x", temp.x, m_iuScale, m_userUnits ) );
cursorStrings.push_back( DimensionLabel( "y", temp.y, m_iuScale, m_userUnits ) );
cursorStrings.push_back(
DimensionLabel( "r", rulerVec.EuclideanNorm(), m_iuScale, m_userUnits ) );
cursorStrings.push_back( DimensionLabel( "r", rulerVec.EuclideanNorm(), m_iuScale, m_userUnits ) );
EDA_ANGLE angle = -EDA_ANGLE( rulerVec );
cursorStrings.push_back( DimensionLabel( wxString::FromUTF8( "θ" ), angle.AsDegrees(),
m_iuScale, EDA_UNITS::DEGREES ) );
cursorStrings.push_back( DimensionLabel( wxString::FromUTF8( "θ" ), angle.AsDegrees(), m_iuScale,
EDA_UNITS::DEGREES ) );
return cursorStrings;
}

View File

@ -2123,7 +2123,7 @@ VECTOR2I PCB_ARC::GetPosition() const
double PCB_ARC::GetRadius() const
{
auto center = CalcArcCenter( m_Start, m_Mid , m_End );
return std::min( center.Distance( m_Start ), INT_MAX / 2.0 );
return std::min( center.Distance( m_Start ), (double) INT_MAX / 2.0 );
}