freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] anuj-distance-field f2553d8 85/93: [sdf, bsdf] Put common pr


From: Anuj Verma
Subject: [freetype2] anuj-distance-field f2553d8 85/93: [sdf, bsdf] Put common propertied and functions in one file.
Date: Sun, 2 Aug 2020 07:04:29 -0400 (EDT)

branch: anuj-distance-field
commit f2553d89b24aee1b12bfbec82f893314d7c94024
Author: Anuj Verma <anujv@iitbhilai.ac.in>
Commit: anujverma <anujv@iitbhilai.ac.in>

    [sdf,bsdf] Put common propertied and functions in one file.
    
    * src/sdf/ftsdfcommon.h: Added new file which contains
      common function, macros, properties for both `sdf' and
      `bsdf' renderer.
    
    * src/sdf/ftsdf.c, src/sdf/ftsdf.h, src/sdf/ftbsdf.c:
      Remove common properties and include `ftsdfcommon.h'.
    
    * src/sdf/rules.mk (SDF_DRV_H): Add the new `ftsdfcommon.h'
      file to include list.
---
 [GSoC]ChangeLog       |  14 ++++++
 src/sdf/ftbsdf.c      |  24 +---------
 src/sdf/ftsdf.c       |  67 ---------------------------
 src/sdf/ftsdf.h       |  12 ++---
 src/sdf/ftsdfcommon.h | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++
 src/sdf/rules.mk      |   3 +-
 6 files changed, 142 insertions(+), 100 deletions(-)

diff --git a/[GSoC]ChangeLog b/[GSoC]ChangeLog
index b0232c6..1c30387 100644
--- a/[GSoC]ChangeLog
+++ b/[GSoC]ChangeLog
@@ -1,5 +1,19 @@
 2020-07-30  Anuj Verma  <anujv@iitbhilai.ac.in>
 
+       [sdf,bsdf] Put common propertied and functions in one file.
+
+       * src/sdf/ftsdfcommon.h: Added new file which contains
+         common function, macros, properties for both `sdf' and
+         `bsdf' renderer.
+
+       * src/sdf/ftsdf.c, src/sdf/ftsdf.h, src/sdf/ftbsdf.c:
+         Remove common properties and include `ftsdfcommon.h'.
+
+       * src/sdf/rules.mk (SDF_DRV_H): Add the new `ftsdfcommon.h'
+         file to include list.
+
+2020-07-30  Anuj Verma  <anujv@iitbhilai.ac.in>
+
        * src/sdf/ftbsdf.c (compute_gradient): Use root(2)
          for the filter. Also, use the computed gradient
          to approximate the edge distance from a pixel's
diff --git a/src/sdf/ftbsdf.c b/src/sdf/ftbsdf.c
index cdf1406..101d7aa 100644
--- a/src/sdf/ftbsdf.c
+++ b/src/sdf/ftbsdf.c
@@ -6,6 +6,7 @@
 
 #include "ftsdf.h"
 #include "ftsdferrs.h"
+#include "ftsdfcommon.h"
 
   /**************************************************************************
    *
@@ -13,30 +14,10 @@
    *
    */
 
-  /* Convenient macro which calls the function */
-  /* and returns if any error occurs.          */
-  #define FT_CALL( x ) do                          \
-                       {                           \
-                         error = ( x );            \
-                         if ( error != FT_Err_Ok ) \
-                           goto Exit;              \
-                       } while ( 0 )
-
   #define ONE 65536 /* 1 in 16.16 */
 
   /**************************************************************************
    *
-   * typedefs
-   *
-   */
-
-  typedef  FT_Vector FT_16D16_Vec;  /* with 16.16 fixed point components */
-
-  typedef  FT_Short FT_6D10;        /* 6.10 fixed point representation   */
-  typedef  FT_Fixed FT_16D16;       /* 16.16 fixed point representation  */
-
-  /**************************************************************************
-   *
    * structs
    *
    */
@@ -170,9 +151,6 @@
 
   #undef CHECK_NEIGHBOR
 
-  static FT_16D16
-  square_root( FT_16D16  val );
-
   /**************************************************************************
    *
    * @Function:
diff --git a/src/sdf/ftsdf.c b/src/sdf/ftsdf.c
index 277ce95..6a38aed 100644
--- a/src/sdf/ftsdf.c
+++ b/src/sdf/ftsdf.c
@@ -118,14 +118,6 @@
    *
    */
 
-  /* If it is defined to 1 then the rasterizer will use squared distances */
-  /* for computation. It can greatly improve the performance but there is */
-  /* a chance of overflow and artifacts. You can safely use it upto a     */
-  /* pixel size of 128.                                                   */
-  #ifndef USE_SQUARED_DISTANCES
-  #  define USE_SQUARED_DISTANCES 0
-  #endif
-
   /* If it is defined to 1 then the rasterizer will use Newton-Raphson's  */
   /* method for finding shortest distance from a point to a conic curve.  */
   /* The other method is an analytical method which find the roots of a   */
@@ -159,25 +151,6 @@
    *
    */
 
-  /* convert int to 26.6 fixed point   */
-  #define FT_INT_26D6( x )   ( x * 64 )
-
-  /* convert int to 16.16 fixed point  */
-  #define FT_INT_16D16( x )  ( x * 65536 )
-
-  /* convert 26.6 to 16.16 fixed point */
-  #define FT_26D6_16D16( x ) ( x * 1024 )
-
-
-  /* Convenient macro which calls the function */
-  /* and returns if any error occurs.          */
-  #define FT_CALL( x ) do                          \
-                       {                           \
-                         error = ( x );            \
-                         if ( error != FT_Err_Ok ) \
-                           goto Exit;              \
-                       } while ( 0 )
-
   #define MUL_26D6( a, b ) ( ( a * b ) / 64 )
   #define VEC_26D6_DOT( p, q ) ( MUL_26D6( p.x, q.x ) +   \
                                  MUL_26D6( p.y, q.y ) )
@@ -197,20 +170,6 @@
 
   /**************************************************************************
    *
-   * typedefs
-   *
-   */
-
-  typedef  FT_Vector FT_26D6_Vec;   /* with 26.6 fixed point components  */
-  typedef  FT_Vector FT_16D16_Vec;  /* with 16.16 fixed point components */
-
-  typedef  FT_Fixed  FT_16D16;      /* 16.16 fixed point representation  */
-  typedef  FT_Fixed  FT_26D6;       /* 26.6 fixed point representation   */
-
-  typedef  FT_BBox   FT_CBox;       /* control box of a curve            */
-
-  /**************************************************************************
-   *
    * structures and enums
    *
    */
@@ -1164,32 +1123,6 @@
    *
    */
 
-  /* Original Algorithm: https://github.com/chmike/fpsqrt */
-  static FT_16D16
-  square_root( FT_16D16  val )
-  {
-    FT_ULong t, q, b, r;
-
-
-    r = val;
-    b = 0x40000000;
-    q = 0;
-    while( b > 0x40 )
-    {
-      t = q + b;
-      if( r >= t )
-      {
-        r -= t;
-        q = t + b;
-      }
-      r <<= 1;
-      b >>= 1;
-    }
-    q >>= 8;
-
-    return q;
-  }
-
 #if !USE_NEWTON_FOR_CONIC
 
   /* [NOTE]: All the functions below down until rasterizer */
diff --git a/src/sdf/ftsdf.h b/src/sdf/ftsdf.h
index e44081a..0338092 100644
--- a/src/sdf/ftsdf.h
+++ b/src/sdf/ftsdf.h
@@ -6,16 +6,10 @@
 #include FT_CONFIG_CONFIG_H
 #include <freetype/ftimage.h>
 
-FT_BEGIN_HEADER
-
-  /* default spread value */
-  #define DEFAULT_SPREAD  8
+/* common properties and function */
+#include "ftsdfcommon.h"
 
-  /* minimum spread supported by the rasterizer. */
-  #define MIN_SPREAD      2
-
-  /* maximum spread supported by the rasterizer. */
-  #define MAX_SPREAD      32
+FT_BEGIN_HEADER
 
   /* TEMPORARY */
   typedef enum Optimizations_ {
diff --git a/src/sdf/ftsdfcommon.h b/src/sdf/ftsdfcommon.h
new file mode 100644
index 0000000..2e806c7
--- /dev/null
+++ b/src/sdf/ftsdfcommon.h
@@ -0,0 +1,122 @@
+
+  /****************************************************
+   *
+   * This file contain common function and properties
+   * for both `sdf' and `bsdf' renderer.
+   *
+   */
+
+#ifndef FTSDFCOMMON_H_
+#define FTSDFCOMMON_H_
+
+#include <ft2build.h>
+#include FT_CONFIG_CONFIG_H
+#include <freetype/freetype.h>
+
+FT_BEGIN_HEADER
+
+  /**************************************************************************
+   *
+   * default values (cannot be set individually for each renderer)
+   *
+   */
+
+  /* default spread value */
+  #define DEFAULT_SPREAD  8
+
+  /* minimum spread supported by the renderer. */
+  #define MIN_SPREAD      2
+
+  /* maximum spread supported by the renderer. */
+  #define MAX_SPREAD      32
+
+  /**************************************************************************
+   *
+   * common definitions (cannot be set individually for each renderer)
+   *
+   */
+
+  /* If it is defined to 1 then the rasterizer will use squared distances */
+  /* for computation. It can greatly improve the performance but there is */
+  /* a chance of overflow and artifacts. You can safely use it upto a     */
+  /* pixel size of 128.                                                   */
+  #ifndef USE_SQUARED_DISTANCES
+  #  define USE_SQUARED_DISTANCES 0
+  #endif
+
+  /**************************************************************************
+   *
+   * common macros
+   *
+   */
+
+  /* convert int to 26.6 fixed point   */
+  #define FT_INT_26D6( x )   ( x * 64 )
+
+  /* convert int to 16.16 fixed point  */
+  #define FT_INT_16D16( x )  ( x * 65536 )
+
+  /* convert 26.6 to 16.16 fixed point */
+  #define FT_26D6_16D16( x ) ( x * 1024 )
+
+  /* Convenient macro which calls the function */
+  /* and returns if any error occurs.          */
+  #define FT_CALL( x ) do                          \
+                       {                           \
+                         error = ( x );            \
+                         if ( error != FT_Err_Ok ) \
+                           goto Exit;              \
+                       } while ( 0 )
+
+  /**************************************************************************
+   *
+   * common typedefs
+   *
+   */
+
+  typedef  FT_Vector FT_26D6_Vec;   /* with 26.6 fixed point components  */
+  typedef  FT_Vector FT_16D16_Vec;  /* with 16.16 fixed point components */
+
+  typedef  FT_Fixed  FT_16D16;      /* 16.16 fixed point representation  */
+  typedef  FT_Fixed  FT_26D6;       /* 26.6 fixed point representation   */
+  typedef  FT_Short  FT_6D10;       /* 6.10 fixed point representation   */
+
+  typedef  FT_BBox   FT_CBox;       /* control box of a curve            */
+
+  /**************************************************************************
+   *
+   * common functions
+   *
+   */
+
+  /* Original Algorithm: https://github.com/chmike/fpsqrt */
+  static FT_16D16
+  square_root( FT_16D16  val )
+  {
+    FT_ULong t, q, b, r;
+
+
+    r = val;
+    b = 0x40000000;
+    q = 0;
+    while( b > 0x40 )
+    {
+      t = q + b;
+      if( r >= t )
+      {
+        r -= t;
+        q = t + b;
+      }
+      r <<= 1;
+      b >>= 1;
+    }
+    q >>= 8;
+
+    return q;
+  }
+
+FT_END_HEADER
+
+#endif /* FTSDFCOMMON_H_ */
+
+/* END */
diff --git a/src/sdf/rules.mk b/src/sdf/rules.mk
index c40b4f5..24857a8 100644
--- a/src/sdf/rules.mk
+++ b/src/sdf/rules.mk
@@ -24,7 +24,8 @@ SDF_DRV_SRC := $(SDF_DIR)/ftsdfrend.c  \
 #
 SDF_DRV_H := $(SDF_DIR)/ftsdfrend.h  \
              $(SDF_DIR)/ftsdf.h      \
-             $(SDF_DIR)/ftsdferrs.h
+             $(SDF_DIR)/ftsdferrs.h  \
+             $(SDF_DIR)/ftsdfcommon.h
 
 
 # sdf driver object(s)



reply via email to

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