diff --git a/ChangeLog b/ChangeLog index 8dc1ce24e..7a4e3b244 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2015-03-21 Alexei Podtelezhnikov + + [base] Optimize `FT_Angle_Diff'. + + Under normal circumstances we are usually close to the desired range + of angle values, so that the remainder is not really necessary. + + * src/base/fttrigon.c (FT_Angle_Diff): Use loops instead of remainder. + + * src/autofit/aftypes.h (AF_ANGLE_DIFF): Ditto in the unused macro. + 2015-03-21 Werner Lemberg [truetype] Improve `gvar' handling. diff --git a/src/autofit/aftypes.h b/src/autofit/aftypes.h index 1666674af..e105dc83d 100644 --- a/src/autofit/aftypes.h +++ b/src/autofit/aftypes.h @@ -138,11 +138,10 @@ extern void* _af_debug_hints; AF_Angle _delta = (angle2) - (angle1); \ \ \ - _delta %= AF_ANGLE_2PI; \ - if ( _delta < 0 ) \ + while ( _delta <= -AF_ANGLE_PI ) \ _delta += AF_ANGLE_2PI; \ \ - if ( _delta > AF_ANGLE_PI ) \ + while ( _delta > AF_ANGLE_PI ) \ _delta -= AF_ANGLE_2PI; \ \ result = _delta; \ diff --git a/src/base/fttrigon.c b/src/base/fttrigon.c index 42552459c..5b24304c2 100644 --- a/src/base/fttrigon.c +++ b/src/base/fttrigon.c @@ -512,11 +512,10 @@ FT_Angle delta = angle2 - angle1; - delta %= FT_ANGLE_2PI; - if ( delta < 0 ) + while ( delta <= -FT_ANGLE_PI ) delta += FT_ANGLE_2PI; - if ( delta > FT_ANGLE_PI ) + while ( delta > FT_ANGLE_PI ) delta -= FT_ANGLE_2PI; return delta;