xref: /aosp_15_r20/external/freetype/src/sdf/ftsdf.h (revision 63949dbd25bcc50c4e1178497ff9e9574d44fc5a)
1 /****************************************************************************
2  *
3  * ftsdf.h
4  *
5  *   Signed Distance Field support (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 FTSDF_H_
22 #define FTSDF_H_
23 
24 #include <ft2build.h>
25 #include FT_CONFIG_CONFIG_H
26 #include <freetype/ftimage.h>
27 
28 /* common properties and function */
29 #include "ftsdfcommon.h"
30 
31 FT_BEGIN_HEADER
32 
33   /**************************************************************************
34    *
35    * @struct:
36    *   SDF_Raster_Params
37    *
38    * @description:
39    *   This struct must be passed to the raster render function
40    *   @FT_Raster_RenderFunc instead of @FT_Raster_Params because the
41    *   rasterizer requires some additional information to render properly.
42    *
43    * @fields:
44    *   root ::
45    *     The native raster parameters structure.
46    *
47    *   spread ::
48    *     This is an essential parameter/property required by the renderer.
49    *     `spread` defines the maximum unsigned value that is present in the
50    *     final SDF output.  For the default value check file
51    *     `ftsdfcommon.h`.
52    *
53    *   flip_sign ::
54    *     By default positive values indicate positions inside of contours,
55    *     i.e., filled by a contour.  If this property is true then that
56    *     output will be the opposite of the default, i.e., negative values
57    *     indicate positions inside of contours.
58    *
59    *   flip_y ::
60    *     Setting this parameter to true maked the output image flipped
61    *     along the y-axis.
62    *
63    *   overlaps ::
64    *     Set this to true to generate SDF for glyphs having overlapping
65    *     contours.  The overlapping support is limited to glyphs that do not
66    *     have self-intersecting contours.  Also, removing overlaps require a
67    *     considerable amount of extra memory; additionally, it will not work
68    *     if generating SDF from bitmap.
69    *
70    * @note:
71    *   All properties are valid for both the 'sdf' and 'bsdf' renderers; the
72    *   exception is `overlaps`, which gets ignored by the 'bsdf' renderer.
73    *
74    */
75   typedef struct  SDF_Raster_Params_
76   {
77     FT_Raster_Params  root;
78     FT_UInt           spread;
79     FT_Bool           flip_sign;
80     FT_Bool           flip_y;
81     FT_Bool           overlaps;
82 
83   } SDF_Raster_Params;
84 
85 
86   /* rasterizer to convert outline to SDF */
87   FT_EXPORT_VAR( const FT_Raster_Funcs )  ft_sdf_raster;
88 
89   /* rasterizer to convert bitmap to SDF */
90   FT_EXPORT_VAR( const FT_Raster_Funcs )  ft_bitmap_sdf_raster;
91 
92 FT_END_HEADER
93 
94 #endif /* FTSDF_H_ */
95 
96 
97 /* END */
98