freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] anuj-distance-field 5014394: [sdf -> bsdf] Added documentati


From: Anuj Verma
Subject: [freetype2] anuj-distance-field 5014394: [sdf -> bsdf] Added documentation for functions of the `bsdf' renderer.
Date: Wed, 5 Aug 2020 23:29:53 -0400 (EDT)

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

    [sdf -> bsdf] Added documentation for functions of the `bsdf' renderer.
    
    * src/sdf/ftbsdf.c (*) Added function documentation for
      function of the `bsdf' renderer.
---
 [GSoC]ChangeLog  |   7 +++
 src/sdf/ftbsdf.c | 157 +++++++++++++++++++++++++++++++++++++++++++++----------
 2 files changed, 136 insertions(+), 28 deletions(-)

diff --git a/[GSoC]ChangeLog b/[GSoC]ChangeLog
index cd3b3a1..f84edf3 100644
--- a/[GSoC]ChangeLog
+++ b/[GSoC]ChangeLog
@@ -1,5 +1,12 @@
 2020-08-6  Anuj Verma  <anujv@iitbhilai.ac.in>
 
+       [sdf -> bsdf] Added documentation for functions of the `bsdf' renderer.
+
+       * src/sdf/ftbsdf.c (*) Added function documentation for
+         function of the `bsdf' renderer.
+
+2020-08-6  Anuj Verma  <anujv@iitbhilai.ac.in>
+
        [sdf] Added documentation for function of the `sdf' renderer.
 
        * src/sdf/ftsdf.c (*): Added function documentation for
diff --git a/src/sdf/ftbsdf.c b/src/sdf/ftbsdf.c
index f945338..d5ec2b7 100644
--- a/src/sdf/ftbsdf.c
+++ b/src/sdf/ftbsdf.c
@@ -88,16 +88,34 @@
    *   bsdf_is_edge
    *
    * @Description:
-   *   [TODO]
+   *   This function checks weather a pixel is an edge pixel. A pixel
+   *   is edge bixel if it surrounded by a completely black pixel ( 0
+   *   alpha ) and the current pixel is not a completely black pixel.
    *
    * @Input:
-   *   [TODO]
+   *   dm ::
+   *     Array of distances. The parameter must point to the current
+   *     pixel i.e. the pixel that is to be checked for edge.
+   *
+   *   x ::
+   *     The x position of the current pixel.
+   *
+   *   y ::
+   *     The y position of the current pixel.
+   *
+   *   w ::
+   *     Width of the bitmap.
+   *
+   *   r ::
+   *     Number of rows in the bitmap.
    *
    * @Return:
-   *   [TODO]
+   *   FT_Bool ::
+   *     1 if the current pixel is an edge pixel, 0 otherwise.
+   *
    */
   static FT_Bool
-  bsdf_is_edge( ED*      dm,    /* distance map              */
+  bsdf_is_edge( ED*       dm,   /* distance map              */
                 FT_Int    x,    /* x index of point to check */
                 FT_Int    y,    /* y index of point to check */
                 FT_Int    w,    /* width                     */
@@ -157,13 +175,37 @@
    *   compute_edge_distance
    *
    * @Description:
-   *   [TODO]
+   *   Approximate the outline and compute the distance from `current'
+   *   to the approximated outline.
    *
    * @Input:
-   *   [TODO]
+   *   current ::
+   *     Array of distances. This parameter is an array of Euclidean
+   *     distances. The `current' must point to the position for which
+   *     the distance is to be caculated. We treat this array as a 2D
+   *     array mapped to a 1D array.
+   *
+   *   x ::
+   *     The x coordinate of the `current' parameter in the array.
+   *
+   *   y ::
+   *     The y coordinate of the `current' parameter in the array.
+   *
+   *   w ::
+   *     The width of the distances array.
+   *
+   *   r ::
+   *     Number of rows in the distances array.
    *
    * @Return:
-   *   [TODO]
+   *   FT_16D16_Vec ::
+   *     A vector pointing to the approximate edge distance.
+   *
+   * @Note:
+   *   This is a computationally expensive function. Try to reduce the
+   *   number of calls to this function. Moreover this must only be used
+   *   for edge pixel positions.
+   *
    */
   static FT_16D16_Vec
   compute_edge_distance( ED*     current,
@@ -309,13 +351,25 @@
    *   bsdf_approximate_edge
    *
    * @Description:
-   *   [TODO]
+   *   This is a handy function which loops through all the pixels, and
+   *   calls `compute_edge_distance' function only for edge pixels. This
+   *   maked the process a lot faster since `compute_edge_distance' uses
+   *   some functions such as `FT_Vector_NormLen' which are quite slow.
    *
    * @Input:
-   *   [TODO]
+   *   worker ::
+   *     Contains the distance map as well as all the relevant parameters
+   *     required by the function.
    *
    * @Return:
-   *   [TODO]
+   *   FT_Error ::
+   *     FreeType error, 0 means success.
+   *
+   * @Note:
+   *   The function dosen't have any actual output, it do computation on
+   *   the `distance_map' parameter of the `worker' and put the data in
+   *   that distance map itself.
+   *   
    */
   static FT_Error
   bsdf_approximate_edge( BSDF_Worker*  worker )
@@ -369,13 +423,21 @@
    *
    * @Description:
    *   This function initialize the distance map according to
-   *   algorithm '8-point sequential Euclidean distance mapping' (8SED).
+   *   algorithm `8-point sequential Euclidean distance mapping' (8SED).
+   *   Basically it copy the `source' bitmap alpha values to the
+   *   `distance_map->alpha' parameter of the `worker'.
    *
    * @Input:
-   *   [TODO]
+   *   source ::
+   *     Source bitmap to copy the data from.
    *
    * @Return:
-   *   [TODO]
+   *   worker ::
+   *     Target distance map to copy the data to.
+   *
+   *   FT_Error ::
+   *     FreeType error, 0 means success.
+   *
    */
   static FT_Error
   bsdf_init_distance_map( const FT_Bitmap*  source,
@@ -552,13 +614,31 @@
    *   compare_neighbor
    *
    * @Description:
-   *   [TODO]
+   *   Handy function which compare the neighbor ( which is defined
+   *   by the offset ) and updae the `current' distance if the new
+   *   distance is shorter than the original.
    *
    * @Input:
-   *   [TODO]
+   *   current ::
+   *     Array of distances. This parameter must point to the position
+   *     whose neighbor is to be checked. Also the array is treated as
+   *     a 2D array.
+   *
+   *   x_offset ::
+   *     X offset of the neighbor to be checked. The offset is releative
+   *     to the `current' point.
+   *
+   *   y_offset ::
+   *     Y offset of the neighbor to be checked. The offset is releative
+   *     to the `current' point.
+   *
+   *   width ::
+   *     Width of the `current' array, we need this since we treat the
+   *     distance array as a 2D array.
    *
    * @Return:
-   *   [TODO]
+   *   None. It just update the current distance.
+   *
    */
   static void
   compare_neighbor( ED*     current,
@@ -607,13 +687,17 @@
    *   first_pass
    *
    * @Description:
-   *   [TODO]
+   *   First pass the 8SED algorithm. It loop the bitmap from top
+   *   to bottom and scan each row left to right updating the distances
+   *   in the distance map ( in the `worker' parameter ).
    *
    * @Input:
-   *   [TODO]
+   *   worker::
+   *     Contains all the relevant parameters.
    *
    * @Return:
-   *   [TODO]
+   *   None. It update the distance map.
+   *
    */
   static void
   first_pass( BSDF_Worker*  worker )
@@ -680,13 +764,17 @@
    *   second_pass
    *
    * @Description:
-   *   [TODO]
+   *   Second pass the 8SED algorithm. It loop the bitmap from bottom
+   *   to top and scan each row left to right updating the distances
+   *   in the distance map ( in the `worker' parameter ).
    *
    * @Input:
-   *   [TODO]
+   *   worker::
+   *     Contains all the relevant parameters.
    *
    * @Return:
-   *   [TODO]
+   *   None. It update the distance map.
+   *
    */
   static void
   second_pass( BSDF_Worker*  worker )
@@ -754,13 +842,17 @@
    *   edt8
    *
    * @Description:
-   *   [TODO]
+   *   Function which compute the distance map of the a bitmap. It does
+   *   both first and second pass of the 8SED algorithm.
    *
    * @Input:
-   *   [TODO]
+   *   worker::
+   *     Contains all the relevant parameters.
    *
    * @Return:
-   *   [TODO]
+   *   FT_Error ::
+   *     FreeType error, 0 means success.
+   *
    */
   static FT_Error
   edt8( BSDF_Worker*  worker )
@@ -790,13 +882,22 @@
    *   finalize_sdf
    *
    * @Description:
-   *   [TODO]
+   *   This function copy the SDF data from `worker->distance_map' to the
+   *   `target' bitmap. It aslo transforms the data to our output format,
+   *    i.e. 6.10 fixed point format at the moment.
    *
    * @Input:
-   *   [TODO]
+   *   worker ::
+   *     Conaints source distance map and parameters/properties which contains
+   *     SDF data.
    *
    * @Return:
-   *   [TODO]
+   *   target ::
+   *     Target bitmap to which the SDF data is copied to.
+   *
+   *   FT_Error ::
+   *     FreeType error, 0 means success.
+   *
    */
   static FT_Error
   finalize_sdf( BSDF_Worker*  worker,



reply via email to

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