small speed-up to the anti-aliased renderer

This commit is contained in:
David Turner 2002-01-09 10:48:25 +00:00
parent 82436dcc60
commit 944ac3747e
2 changed files with 45 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2002-01-09 Maxim Shemanarev <mcseemagg@yahoo.com>
* src/smooth/ftgrays.c (gray_render_line): small optimisation to
the smooth anti-aliased renderer that deals with vertical segments.
This results in a 5-7% speedup in rendering speed..
2002-01-08 David Turner <david@freetype.org>
* configure, install: added some wrapper scripts to make

View File

@ -635,6 +635,45 @@
goto End;
}
/* vertical line - avoids calling gray_render_scanline */
incr = 1;
if( dx == 0 )
{
TScan ex = TRUNC( ras.x );
TScan two_fx = ( ras.x - SUBPIXELS( ex ) ) << 1;
TPos area;
first = ONE_PIXEL;
if( dy < 0 )
{
first = 0;
incr = -1;
}
delta = first - fy1;
ras.area += (TArea)two_fx * delta;
ras.cover += delta;
ey1 += incr;
gray_set_cell( raster, ex, ey1 );
delta = first + first - ONE_PIXEL;
area = (TArea)two_fx * delta;
while( ey1 != ey2 )
{
ras.area += area;
ras.cover += delta;
ey1 += incr;
gray_set_cell( raster, ex, ey1 );
}
delta = fy2 - ONE_PIXEL + first;
ras.area += (TArea)two_fx * delta;
ras.cover += delta;
goto End;
}
/* ok, we have to render several scanlines */
p = ( ONE_PIXEL - fy1 ) * dx;
first = ONE_PIXEL;