(root)/
freetype-2.13.2/
src/
sdf/
ftsdfrend.h
       1  /****************************************************************************
       2   *
       3   * ftsdfrend.h
       4   *
       5   *   Signed Distance Field renderer interface (specification).
       6   *
       7   * Copyright (C) 2020-2023 by
       8   * David Turner, Robert Wilhelm, and Werner Lemberg.
       9   *
      10   * Written by Anuj Verma.
      11   *
      12   * This file is part of the FreeType project, and may only be used,
      13   * modified, and distributed under the terms of the FreeType project
      14   * license, LICENSE.TXT.  By continuing to use, modify, or distribute
      15   * this file you indicate that you have read the license and
      16   * understand and accept it fully.
      17   *
      18   */
      19  
      20  
      21  #ifndef FTSDFREND_H_
      22  #define FTSDFREND_H_
      23  
      24  #include <freetype/ftrender.h>
      25  #include <freetype/ftmodapi.h>
      26  #include <freetype/internal/ftobjs.h>
      27  
      28  FT_BEGIN_HEADER
      29  
      30  
      31    /**************************************************************************
      32     *
      33     * @struct:
      34     *   SDF_Renderer_Module
      35     *
      36     * @description:
      37     *   This struct extends the native renderer struct `FT_RendererRec`.  It
      38     *   is basically used to store various parameters required by the
      39     *   renderer and some additional parameters that can be used to tweak the
      40     *   output of the renderer.
      41     *
      42     * @fields:
      43     *   root ::
      44     *     The native rendere struct.
      45     *
      46     *   spread ::
      47     *     This is an essential parameter/property required by the renderer.
      48     *     `spread` defines the maximum unsigned value that is present in the
      49     *     final SDF output.  For the default value check file
      50     *     `ftsdfcommon.h`.
      51     *
      52     *   flip_sign ::
      53     *     By default positive values indicate positions inside of contours,
      54     *     i.e., filled by a contour.  If this property is true then that
      55     *     output will be the opposite of the default, i.e., negative values
      56     *     indicate positions inside of contours.
      57     *
      58     *   flip_y ::
      59     *     Setting this parameter to true makes the output image flipped
      60     *     along the y-axis.
      61     *
      62     *   overlaps ::
      63     *     Set this to true to generate SDF for glyphs having overlapping
      64     *     contours.  The overlapping support is limited to glyphs that do not
      65     *     have self-intersecting contours.  Also, removing overlaps require a
      66     *     considerable amount of extra memory; additionally, it will not work
      67     *     if generating SDF from bitmap.
      68     *
      69     * @note:
      70     *   All properties except `overlaps` are valid for both the 'sdf' and
      71     *   'bsdf' renderers.
      72     *
      73     */
      74    typedef struct  SDF_Renderer_Module_
      75    {
      76      FT_RendererRec  root;
      77      FT_UInt         spread;
      78      FT_Bool         flip_sign;
      79      FT_Bool         flip_y;
      80      FT_Bool         overlaps;
      81  
      82    } SDF_Renderer_Module, *SDF_Renderer;
      83  
      84  
      85    /**************************************************************************
      86     *
      87     * @renderer:
      88     *   ft_sdf_renderer_class
      89     *
      90     * @description:
      91     *   Renderer to convert @FT_Outline to signed distance fields.
      92     *
      93     */
      94    FT_DECLARE_RENDERER( ft_sdf_renderer_class )
      95  
      96  
      97    /**************************************************************************
      98     *
      99     * @renderer:
     100     *   ft_bitmap_sdf_renderer_class
     101     *
     102     * @description:
     103     *   This is not exactly a renderer; it is just a converter that
     104     *   transforms bitmaps to signed distance fields.
     105     *
     106     * @note:
     107     *   This is not a separate module, it is part of the 'sdf' module.
     108     *
     109     */
     110    FT_DECLARE_RENDERER( ft_bitmap_sdf_renderer_class )
     111  
     112  
     113  FT_END_HEADER
     114  
     115  #endif /* FTSDFREND_H_ */
     116  
     117  
     118  /* END */