From f40ef225a20b60ee6ec5a6f78a7af43e1a70840b Mon Sep 17 00:00:00 2001 From: Moazin Khatti Date: Thu, 18 Jul 2019 00:05:49 +0500 Subject: Instead of individual properties. Just use one that takes pointer to the hooks structure. --- include/freetype/svgrender.h | 10 ++++++++++ src/svg/ftsvg.c | 35 ++++++++--------------------------- src/svg/svgtypes.c | 10 ---------- 3 files changed, 18 insertions(+), 37 deletions(-) diff --git a/include/freetype/svgrender.h b/include/freetype/svgrender.h index 670e93f83..b0932b4a2 100644 --- a/include/freetype/svgrender.h +++ b/include/freetype/svgrender.h @@ -121,6 +121,16 @@ FT_BEGIN_HEADER (*SVG_Lib_Get_Buffer_Size_Func)( FT_GlyphSlot slot, FT_BBox bbox ); + typedef struct SVG_RendererHooks_ + { + /* Api Hooks for OT-SVG Rendering */ + SVG_Lib_Init_Func init_svg; + SVG_Lib_Free_Func free_svg; + SVG_Lib_Render_Func render_svg; + + SVG_Lib_Get_Buffer_Size_Func get_buffer_size; + } SVG_RendererHooks; + /************************************************************************** * * @struct: diff --git a/src/svg/ftsvg.c b/src/svg/ftsvg.c index a87675b46..0486b74c3 100644 --- a/src/svg/ftsvg.c +++ b/src/svg/ftsvg.c @@ -88,14 +88,11 @@ FT_Error error = FT_Err_Ok; SVG_Renderer renderer = (SVG_Renderer)module; - if ( !ft_strcmp( property_name, "init_svg_hook" ) ) - renderer->hooks.init_svg = (SVG_Lib_Init_Func)value; - else if ( !ft_strcmp( property_name, "free_svg_hook" ) ) - renderer->hooks.free_svg = (SVG_Lib_Free_Func)value; - else if ( !ft_strcmp( property_name, "render_svg_hook" ) ) - renderer->hooks.render_svg = (SVG_Lib_Render_Func)value; - else if ( !ft_strcmp( property_name, "get_buffer_size_hook" ) ) - renderer->hooks.get_buffer_size = (SVG_Lib_Get_Buffer_Size_Func)value; + if ( !ft_strcmp( property_name, "svg_hooks" ) ) + { + SVG_RendererHooks* hooks = (SVG_RendererHooks*)value; + renderer->hooks = *hooks; + } else { error = FT_THROW( Missing_Property ); @@ -111,26 +108,10 @@ FT_Error error = FT_Err_Ok; SVG_Renderer renderer = (SVG_Renderer)module; - if ( !ft_strcmp( property_name, "init_svg_hook" ) ) - { - SVG_Lib_Init_Func* val = (SVG_Lib_Init_Func*)value; - *val = (SVG_Lib_Init_Func)renderer->hooks.init_svg; - } - else if ( !ft_strcmp( property_name, "free_svg_hook" ) ) - { - SVG_Lib_Free_Func* val = (SVG_Lib_Free_Func*)value; - *val = (SVG_Lib_Free_Func)renderer->hooks.free_svg; - } - else if ( !ft_strcmp( property_name, "render_svg_hook" ) ) - { - SVG_Lib_Render_Func* val = (SVG_Lib_Render_Func*)value; - *val = (SVG_Lib_Render_Func)renderer->hooks.render_svg; - } - else if ( !ft_strcmp( property_name, "get_buffer_size_hook" ) ) + if ( !ft_strcmp( property_name, "svg_hooks" ) ) { - SVG_Lib_Get_Buffer_Size_Func* val; - val = (SVG_Lib_Get_Buffer_Size_Func*)value; - *val = (SVG_Lib_Get_Buffer_Size_Func)renderer->hooks.render_svg; + SVG_RendererHooks* hooks = (SVG_RendererHooks*)value; + *hooks = renderer->hooks; } else { diff --git a/src/svg/svgtypes.c b/src/svg/svgtypes.c index 4a329411f..b82d51e6d 100644 --- a/src/svg/svgtypes.c +++ b/src/svg/svgtypes.c @@ -21,16 +21,6 @@ #include FT_RENDER_H #include FT_SVG_RENDER_H - typedef struct SVG_RendererHooks_ - { - /* Api Hooks for OT-SVG Rendering */ - SVG_Lib_Init_Func init_svg; - SVG_Lib_Free_Func free_svg; - SVG_Lib_Render_Func render_svg; - - SVG_Lib_Get_Buffer_Size_Func get_buffer_size; - } SVG_RendererHooks; - typedef struct SVG_RendererRec_ { FT_RendererRec root; /* This inherits FT_RendererRec */ -- cgit v1.2.1