tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

ftsdfrend.h (3386B)


      1 /****************************************************************************
      2 *
      3 * ftsdfrend.h
      4 *
      5 *   Signed Distance Field renderer interface (specification).
      6 *
      7 * Copyright (C) 2020-2025 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 */