diff --git a/[GSoC]ChangeLog b/[GSoC]ChangeLog index e7857a599..5faae7a25 100644 --- a/[GSoC]ChangeLog +++ b/[GSoC]ChangeLog @@ -1,3 +1,20 @@ +2020-07-19 Anuj Verma + + [sdf] Added new renderer `bsdf'. + + * src/sdf/ftsdfrend.* (*): Added new renderer + named `bsdf' which basically convert bitmap + to signed distance fields. This is a part of + the `sdf' module and not a separate module on + it's own. + + * src/sdf/module.mk (FTMODULE_H_COMMANDS): Add + the new renderer to the list of modules. + + * include/freetype/config/ftmodule.h: Add the + new renderer to default list of modules when + not compiling with GNU Make. + 2020-07-18 Anuj Verma [sdf] Only track memory in debug mode. diff --git a/include/freetype/config/ftmodule.h b/include/freetype/config/ftmodule.h index 81b665526..2b4600940 100644 --- a/include/freetype/config/ftmodule.h +++ b/include/freetype/config/ftmodule.h @@ -27,5 +27,6 @@ FT_USE_MODULE( FT_Module_Class, sfnt_module_class ) FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class ) FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class ) FT_USE_MODULE( FT_Renderer_Class, ft_sdf_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_bitmap_sdf_renderer_class ) /* EOF */ diff --git a/src/sdf/ftsdfrend.c b/src/sdf/ftsdfrend.c index e3e70c6ea..ffe8f497b 100644 --- a/src/sdf/ftsdfrend.c +++ b/src/sdf/ftsdfrend.c @@ -393,4 +393,47 @@ (FT_Raster_Funcs*)&ft_sdf_raster /* raster_class */ ) + /*************************************************************************/ + /*************************************************************************/ + /** **/ + /** BITMAP TO SDF CONVERTER **/ + /** **/ + /*************************************************************************/ + /*************************************************************************/ + + static FT_Error + ft_bsdf_render( FT_Renderer module, + FT_GlyphSlot slot, + FT_Render_Mode mode, + const FT_Vector* origin ) + { + + } + + FT_DEFINE_RENDERER( + ft_bitmap_sdf_renderer_class, + + FT_MODULE_RENDERER, + sizeof( SDF_Renderer_Module ), + + "bsdf", + 0x10000L, + 0x20000L, + + NULL, + + (FT_Module_Constructor) ft_sdf_init, + (FT_Module_Destructor) ft_sdf_done, + (FT_Module_Requester) ft_sdf_requester, + + FT_GLYPH_FORMAT_BITMAP, + + (FT_Renderer_RenderFunc) ft_bsdf_render, /* render_glyph */ + (FT_Renderer_TransformFunc) ft_sdf_transform, /* transform_glyph */ + (FT_Renderer_GetCBoxFunc) ft_sdf_get_cbox, /* get_glyph_cbox */ + (FT_Renderer_SetModeFunc) ft_sdf_set_mode, /* set_mode */ + + (FT_Raster_Funcs*)NULL /* raster_class */ + ) + /* END */ diff --git a/src/sdf/ftsdfrend.h b/src/sdf/ftsdfrend.h index 262a2a11c..3ba7b9d7f 100644 --- a/src/sdf/ftsdfrend.h +++ b/src/sdf/ftsdfrend.h @@ -35,9 +35,34 @@ FT_BEGIN_HEADER } 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's just a converter which + * convert bitmaps to signed distance fields. + * + * @note: + * This is not a seperate module, it is a part of the `sdf' module. + * + */ + FT_DECLARE_RENDERER( ft_bitmap_sdf_renderer_class ) + + FT_END_HEADER #endif /* FTSDFREND_H_ */ diff --git a/src/sdf/module.mk b/src/sdf/module.mk index d4253bd39..978e13f13 100644 --- a/src/sdf/module.mk +++ b/src/sdf/module.mk @@ -1,10 +1,16 @@ FTMODULE_H_COMMANDS += SDF_RENDERER +FTMODULE_H_COMMANDS += BSDF_RENDERER define SDF_RENDERER $(OPEN_DRIVER) FT_Renderer_Class, ft_sdf_renderer_class $(CLOSE_DRIVER) $(ECHO_DRIVER)sdf $(ECHO_DRIVER_DESC)signed distance field renderer$(ECHO_DRIVER_DONE) endef +define BSDF_RENDERER +$(OPEN_DRIVER) FT_Renderer_Class, ft_bitmap_sdf_renderer_class $(CLOSE_DRIVER) +$(ECHO_DRIVER)bsdf $(ECHO_DRIVER_DESC)bitmap to signed distance field converter$(ECHO_DRIVER_DONE) +endef + #EOF