ref: db3ac3b3604abbf8348c06c1f130dac636ebad82
parent: dc47784610885c5db6e5580a4e07f39490180ed9
author: David Turner <[email protected]>
date: Wed Jan 9 05:48:25 EST 2002
small speed-up to the anti-aliased renderer
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2002-01-09 Maxim Shemanarev <[email protected]>
+
+ * 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 <[email protected]>
* configure, install: added some wrapper scripts to make
--- a/src/smooth/ftgrays.c
+++ b/src/smooth/ftgrays.c
@@ -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;