small speed-up to the anti-aliased renderer
This commit is contained in:
parent
dc47784610
commit
db3ac3b360
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user