| /**************************************************************************** |
| * |
| * ftsdfrend.h |
| * |
| * Signed Distance Field renderer interface (specification). |
| * |
| * Copyright (C) 2020-2022 by |
| * David Turner, Robert Wilhelm, and Werner Lemberg. |
| * |
| * Written by Anuj Verma. |
| * |
| * This file is part of the FreeType project, and may only be used, |
| * modified, and distributed under the terms of the FreeType project |
| * license, LICENSE.TXT. By continuing to use, modify, or distribute |
| * this file you indicate that you have read the license and |
| * understand and accept it fully. |
| * |
| */ |
| |
| |
| #ifndef FTSDFREND_H_ |
| #define FTSDFREND_H_ |
| |
| #include <freetype/ftrender.h> |
| #include <freetype/ftmodapi.h> |
| #include <freetype/internal/ftobjs.h> |
| |
| FT_BEGIN_HEADER |
| |
| |
| /************************************************************************** |
| * |
| * @struct: |
| * SDF_Renderer_Module |
| * |
| * @description: |
| * This struct extends the native renderer struct `FT_RendererRec`. It |
| * is basically used to store various parameters required by the |
| * renderer and some additional parameters that can be used to tweak the |
| * output of the renderer. |
| * |
| * @fields: |
| * root :: |
| * The native rendere struct. |
| * |
| * spread :: |
| * This is an essential parameter/property required by the renderer. |
| * `spread` defines the maximum unsigned value that is present in the |
| * final SDF output. For the default value check file |
| * `ftsdfcommon.h`. |
| * |
| * flip_sign :: |
| * By default positive values indicate positions inside of contours, |
| * i.e., filled by a contour. If this property is true then that |
| * output will be the opposite of the default, i.e., negative values |
| * indicate positions inside of contours. |
| * |
| * flip_y :: |
| * Setting this parameter to true makes the output image flipped |
| * along the y-axis. |
| * |
| * overlaps :: |
| * Set this to true to generate SDF for glyphs having overlapping |
| * contours. The overlapping support is limited to glyphs that do not |
| * have self-intersecting contours. Also, removing overlaps require a |
| * considerable amount of extra memory; additionally, it will not work |
| * if generating SDF from bitmap. |
| * |
| * @note: |
| * All properties except `overlaps` are valid for both the 'sdf' and |
| * 'bsdf' renderers. |
| * |
| */ |
| typedef struct SDF_Renderer_Module_ |
| { |
| FT_RendererRec root; |
| FT_UInt spread; |
| FT_Bool flip_sign; |
| FT_Bool flip_y; |
| FT_Bool overlaps; |
| |
| } SDF_Renderer_Module, *SDF_Renderer; |
| |
| |
| /************************************************************************** |
| * |
| * @renderer: |
| * ft_sdf_renderer_class |
| * |
| * @description: |
| * Renderer to convert @FT_Outline to signed distance fields. |
| * |
| */ |
| FT_DECLARE_RENDERER( ft_sdf_renderer_class ) |
| |
| |
| /************************************************************************** |
| * |
| * @renderer: |
| * ft_bitmap_sdf_renderer_class |
| * |
| * @description: |
| * This is not exactly a renderer; it is just a converter that |
| * transforms bitmaps to signed distance fields. |
| * |
| * @note: |
| * This is not a separate module, it is part of the 'sdf' module. |
| * |
| */ |
| FT_DECLARE_RENDERER( ft_bitmap_sdf_renderer_class ) |
| |
| |
| FT_END_HEADER |
| |
| #endif /* FTSDFREND_H_ */ |
| |
| |
| /* END */ |