forked from minhngoc25a/freetype2
[smooth] Reduce divisions in the line renderer.
We don't need some divisions if a line segments stays within a single row or a single column of pixels. * src/smooth/ftgrays.c (gray_render_line) [FT_LONG64]: Make divisions conditional.
This commit is contained in:
parent
c95b7652d8
commit
53ae7a542d
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
|||
2016-09-22 Alexei Podtelezhnikov <apodtele@gmail.com>
|
||||
|
||||
[smooth] Reduce divisions in the line renderer.
|
||||
|
||||
We don't need some divisions if a line segments stays within a single
|
||||
row or a single column of pixels.
|
||||
|
||||
* src/smooth/ftgrays.c (gray_render_line) [FT_LONG64]: Make divisions
|
||||
conditional.
|
||||
|
||||
2016-09-15 Alexei Podtelezhnikov <apodtele@gmail.com>
|
||||
|
||||
* src/smooth/ftgrays.c (gray_sweep): Remove check for empty table.
|
||||
|
|
|
@ -371,8 +371,9 @@ typedef ptrdiff_t FT_PtrDist;
|
|||
|
||||
/* These macros speed up repetitive divisions by replacing them */
|
||||
/* with multiplications and right shifts. */
|
||||
#define FT_UDIVPREP( b ) \
|
||||
long b ## _r = (long)( FT_ULONG_MAX >> PIXEL_BITS ) / ( b )
|
||||
#define FT_UDIVPREP( c, b ) \
|
||||
long b ## _r = c ? (long)( FT_ULONG_MAX >> PIXEL_BITS ) / ( b ) \
|
||||
: 0
|
||||
#define FT_UDIV( a, b ) \
|
||||
( ( (unsigned long)( a ) * (unsigned long)( b ## _r ) ) >> \
|
||||
( sizeof( long ) * FT_CHAR_BIT - PIXEL_BITS ) )
|
||||
|
@ -890,8 +891,8 @@ typedef ptrdiff_t FT_PtrDist;
|
|||
else /* any other line */
|
||||
{
|
||||
TPos prod = dx * fy1 - dy * fx1;
|
||||
FT_UDIVPREP( dx );
|
||||
FT_UDIVPREP( dy );
|
||||
FT_UDIVPREP( ex1 != ex2, dx );
|
||||
FT_UDIVPREP( ey1 != ey2, dy );
|
||||
|
||||
|
||||
/* The fundamental value `prod' determines which side and the */
|
||||
|
|
Loading…
Reference in New Issue