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 | |