shithub: freetype+ttf2subf

Download patch

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

git/fs: mount .git/fs: mount/attach disallowed
--- 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;