* src/base/ftcalc.c (FT_CeilFix, FT_FloorFix): Normalize.

This commit makes the functions behave as expected, this is,
rounding towards plus or minus infinity.
This commit is contained in:
Wojciech Mamrak 2015-09-09 07:59:10 +02:00 committed by Werner Lemberg
parent 5578199a68
commit 822acb0252
3 changed files with 13 additions and 7 deletions

View File

@ -1,3 +1,10 @@
2015-09-09 Wojciech Mamrak <wmamrak@gmail.com>
* src/base/ftcalc.c (FT_CeilFix, FT_FloorFix): Normalize.
This commit makes the functions behave as expected, this is,
rounding towards plus or minus infinity.
2015-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
* src/smooth/ftgrays.c (gray_render_line): Simplify clipping.

View File

@ -3955,7 +3955,8 @@ FT_BEGIN_HEADER
/* a :: The number to be rounded. */
/* */
/* <Return> */
/* The result of `(a + 0x8000) & -0x10000'. */
/* `a' rounded to nearest 16.16 fixed integer, halfway cases away */
/* from zero. */
/* */
FT_EXPORT( FT_Fixed )
FT_RoundFix( FT_Fixed a );
@ -3974,7 +3975,7 @@ FT_BEGIN_HEADER
/* a :: The number for which the ceiling function is to be computed. */
/* */
/* <Return> */
/* The result of `(a + 0x10000 - 1) & -0x10000'. */
/* `a' rounded towards plus infinity. */
/* */
FT_EXPORT( FT_Fixed )
FT_CeilFix( FT_Fixed a );
@ -3993,7 +3994,7 @@ FT_BEGIN_HEADER
/* a :: The number for which the floor function is to be computed. */
/* */
/* <Return> */
/* The result of `a & -0x10000'. */
/* `a' rounded towards minus infinity. */
/* */
FT_EXPORT( FT_Fixed )
FT_FloorFix( FT_Fixed a );

View File

@ -96,8 +96,7 @@
FT_EXPORT_DEF( FT_Fixed )
FT_CeilFix( FT_Fixed a )
{
return a >= 0 ? ( a + 0xFFFFL ) & ~0xFFFFL
: -((-a + 0xFFFFL ) & ~0xFFFFL );
return ( a + 0xFFFFL ) & ~0xFFFFL;
}
@ -106,8 +105,7 @@
FT_EXPORT_DEF( FT_Fixed )
FT_FloorFix( FT_Fixed a )
{
return a >= 0 ? a & ~0xFFFFL
: -((-a) & ~0xFFFFL );
return a & ~0xFFFFL;
}
#ifndef FT_MSB