freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] master d0e3239f3: [sdf, bsdf] Use shared FT_SqrtFixed.


From: Werner Lemberg
Subject: [freetype2] master d0e3239f3: [sdf, bsdf] Use shared FT_SqrtFixed.
Date: Mon, 6 May 2024 09:39:16 -0400 (EDT)

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

    [sdf, bsdf] Use shared FT_SqrtFixed.
    
    FT_SqrtFixed (95b0fe2a6dff) is faster and does not overflow.
    
    * src/sdf/ftsdfcommin.h (square_root): Replace with a macro.
    * src/sdf/ftsdfcommin.c (square_root): Remove function.
---
 src/sdf/ftsdfcommon.c | 43 -------------------------------------------
 src/sdf/ftsdfcommon.h |  3 +--
 2 files changed, 1 insertion(+), 45 deletions(-)

diff --git a/src/sdf/ftsdfcommon.c b/src/sdf/ftsdfcommon.c
index 5841ded21..6b2cf7dfe 100644
--- a/src/sdf/ftsdfcommon.c
+++ b/src/sdf/ftsdfcommon.c
@@ -22,49 +22,6 @@
 #include "ftsdfcommon.h"
 
 
-  /**************************************************************************
-   *
-   * common functions
-   *
-   */
-
-  /*
-   * Original algorithm:
-   *
-   *   https://github.com/chmike/fpsqrt
-   *
-   * Use this to compute the square root of a 16.16 fixed-point number.
-   */
-  FT_LOCAL_DEF( FT_16D16 )
-  square_root( FT_16D16  val )
-  {
-    FT_ULong  t, q, b, r;
-
-
-    r = (FT_ULong)val;
-    b = 0x40000000L;
-    q = 0;
-
-    while ( b > 0x40L )
-    {
-      t = q + b;
-
-      if ( r >= t )
-      {
-        r -= t;
-        q  = t + b;
-      }
-
-      r <<= 1;
-      b >>= 1;
-    }
-
-    q >>= 8;
-
-    return (FT_16D16)q;
-  }
-
-
   /**************************************************************************
    *
    * format and sign manipulating functions
diff --git a/src/sdf/ftsdfcommon.h b/src/sdf/ftsdfcommon.h
index 44274e349..d0f623f9f 100644
--- a/src/sdf/ftsdfcommon.h
+++ b/src/sdf/ftsdfcommon.h
@@ -122,8 +122,7 @@ FT_BEGIN_HEADER
   typedef FT_BBox   FT_CBox;       /* control box of a curve            */
 
 
-  FT_LOCAL( FT_16D16 )
-  square_root( FT_16D16  val );
+#define square_root( x )  (FT_16D16)FT_SqrtFixed( (FT_UInt32)( x ) )
 
   FT_LOCAL( FT_SDFFormat )
   map_fixed_to_sdf( FT_16D16  dist,



reply via email to

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