freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2] master e9a81e4dd 1/2: * src/raster/ftraster.c (Bezier_Up): I


From: Werner Lemberg
Subject: [freetype2] master e9a81e4dd 1/2: * src/raster/ftraster.c (Bezier_Up): Improve joint and loop.
Date: Thu, 9 Nov 2023 22:59:16 -0500 (EST)

branch: master
commit e9a81e4dd8baa0c572635dca2000fee14db9e4b3
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Commit: Alexei Podtelezhnikov <apodtele@gmail.com>

    * src/raster/ftraster.c (Bezier_Up): Improve joint and loop.
---
 src/raster/ftraster.c | 25 +++++++++----------------
 1 file changed, 9 insertions(+), 16 deletions(-)

diff --git a/src/raster/ftraster.c b/src/raster/ftraster.c
index 41b13fd19..ece8c10e7 100644
--- a/src/raster/ftraster.c
+++ b/src/raster/ftraster.c
@@ -1151,22 +1151,19 @@
     if ( y1 == e )
     {
       if ( ras.joint )
-      {
         top--;
-        ras.joint = FALSE;
-      }
 
       *top++ = arc[degree].x;
-
-      e += ras.precision;
+      e     += ras.precision;
     }
 
+    ras.joint = (Bool)( y2 == e2 );
+
     if ( e2 < e )
       goto Fin;
 
     if ( ( top + TRUNC( e2 - e ) + 1 ) >= ras.maxBuff )
     {
-      ras.top   = top;
       ras.error = FT_THROW( Raster_Overflow );
       return FAILURE;
     }
@@ -1175,8 +1172,6 @@
 
     do
     {
-      ras.joint = FALSE;
-
       y2 = arc[0].y;
       x2 = arc[0].x;
 
@@ -1185,7 +1180,6 @@
         dy = y2 - arc[degree].y;
         dx = x2 - arc[degree].x;
 
-
         /* split condition should be invariant of direction */
         if (  dy > ras.precision_step ||
               dx > ras.precision_step ||
@@ -1197,22 +1191,21 @@
         else
         {
           *top++ = x2 - FMulDiv( y2 - e, dx, dy );
+          e     += ras.precision;
           arc -= degree;
-          e   += ras.precision;
         }
       }
       else
       {
         if ( y2 == e )
         {
-          ras.joint  = TRUE;
-          *top++     = x2;
-
-          e += ras.precision;
+          *top++ = x2;
+          e     += ras.precision;
         }
-        arc -= degree;
+        arc   -= degree;
       }
-    } while ( arc >= start_arc && e <= e2 );
+    }
+    while ( e <= e2 );
 
   Fin:
     ras.top  = top;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]