Memory allocation for `state' of renderer should be performed

on the SVG port side not the FT size. Minor doc fixes.
This commit is contained in:
Moazin Khatti 2019-07-10 13:58:59 +05:00
parent cf44c0cbdd
commit fbdd9f9ba3
4 changed files with 9 additions and 42 deletions

View File

@ -39,7 +39,7 @@ FT_BEGIN_HEADER
* A callback used to initiate the SVG Rendering port * A callback used to initiate the SVG Rendering port
* *
* @input: * @input:
* library:: * library ::
* A instance of library. This is required to initialize the renderer's * A instance of library. This is required to initialize the renderer's
* state which will be held in the library. * state which will be held in the library.
* *
@ -62,7 +62,7 @@ FT_BEGIN_HEADER
* shall do all cleanups that the SVG Rendering port wants to do. * shall do all cleanups that the SVG Rendering port wants to do.
* *
* @input: * @input:
* library:: * library ::
* A instance of library. This is required to free the renderer's state * A instance of library. This is required to free the renderer's state
* which will be held in the library. * which will be held in the library.
*/ */
@ -95,22 +95,6 @@ FT_BEGIN_HEADER
(*SVG_Lib_Render)( FT_GlyphSlot slot, (*SVG_Lib_Render)( FT_GlyphSlot slot,
FT_BBox outline_bbox); FT_BBox outline_bbox);
/**************************************************************************
*
* @functype:
* SVG_Lib_Get_State_Size
*
* @description:
* A callback which is called to query the size of the state stucture.
* This is used for allocating the state structure in library.
*
* @return:
* Size of the state structure in bytes.
*/
typedef FT_UInt
(*SVG_Lib_Get_State_Size)( );
/************************************************************************** /**************************************************************************
* *
* @functype: * @functype:
@ -149,26 +133,22 @@ FT_BEGIN_HEADER
* Interface. * Interface.
* *
* @input: * @input:
* module:: * module ::
* FT_Module instance. * FT_Module instance.
* *
* init_hook:: * init_hook ::
* A function pointer of the type `SVG_Lib_Init'. Read the documentation * A function pointer of the type `SVG_Lib_Init'. Read the documentation
* of `SVG_Lib_Init' * of `SVG_Lib_Init'
* *
* free_hook:: * free_hook ::
* A function pointer of the type `SVG_Lib_Free'. Read the documentation * A function pointer of the type `SVG_Lib_Free'. Read the documentation
* of `SVG_Lib_Free'. * of `SVG_Lib_Free'.
* *
* render_hook:: * render_hook ::
* A function pointer of the type `SVG_Lib_Render'. Read the * A function pointer of the type `SVG_Lib_Render'. Read the
* documentation of `SVG_Lib_Render'. * documentation of `SVG_Lib_Render'.
* *
* get_state_size:: * get_buffer_size ::
* A function pointer of the type `SVG_Lib_Get_State_Size'. Read the
* documentation of `SVG_Lib_Get_State_Size'.
*
* get_buffer_size::
* A function pointer of the type `SVG_Lib_Get_Buffer_Size'. Read the * A function pointer of the type `SVG_Lib_Get_Buffer_Size'. Read the
* documentation of `SVG_Lib_Get_Buffer_Size'. * documentation of `SVG_Lib_Get_Buffer_Size'.
* *
@ -181,7 +161,6 @@ FT_BEGIN_HEADER
SVG_Lib_Init init_hook, SVG_Lib_Init init_hook,
SVG_Lib_Free free_hook, SVG_Lib_Free free_hook,
SVG_Lib_Render render_hook, SVG_Lib_Render render_hook,
SVG_Lib_Get_State_Size get_state_size,
SVG_Lib_Get_Buffer_Size get_buffer_size ); SVG_Lib_Get_Buffer_Size get_buffer_size );
/************************************************************************** /**************************************************************************
@ -194,7 +173,7 @@ FT_BEGIN_HEADER
* rendering library hooks. * rendering library hooks.
* *
* @fields: * @fields:
* set_hooks:: * set_hooks ::
* A function that can be called to set the hooks. * A function that can be called to set the hooks.
* *
* @return: * @return:
@ -213,7 +192,6 @@ FT_BEGIN_HEADER
SVG_Lib_Init init_hook, SVG_Lib_Init init_hook,
SVG_Lib_Free free_hook, SVG_Lib_Free free_hook,
SVG_Lib_Render render_hook, SVG_Lib_Render render_hook,
SVG_Lib_Get_State_Size get_state_size,
SVG_Lib_Get_Buffer_Size get_buffer_size ); SVG_Lib_Get_Buffer_Size get_buffer_size );
/************************************************************************** /**************************************************************************

View File

@ -5596,7 +5596,6 @@
SVG_Lib_Init init_hook, SVG_Lib_Init init_hook,
SVG_Lib_Free free_hook, SVG_Lib_Free free_hook,
SVG_Lib_Render render_hook, SVG_Lib_Render render_hook,
SVG_Lib_Get_State_Size get_state_size,
SVG_Lib_Get_Buffer_Size get_buffer_size ) SVG_Lib_Get_Buffer_Size get_buffer_size )
{ {
FT_Module renderer; FT_Module renderer;
@ -5614,7 +5613,6 @@
init_hook, init_hook,
free_hook, free_hook,
render_hook, render_hook,
get_state_size,
get_buffer_size ); get_buffer_size );
return FT_Err_Ok; return FT_Err_Ok;
} }

View File

@ -36,10 +36,8 @@
ft_svg_done( SVG_Renderer svg_module ) ft_svg_done( SVG_Renderer svg_module )
{ {
FT_Library library = svg_module->root.root.library; FT_Library library = svg_module->root.root.library;
FT_Memory memory = library->memory;
if ( svg_module->loaded == TRUE ) if ( svg_module->loaded == TRUE )
svg_module->hooks.svg_lib_free( library ); svg_module->hooks.svg_lib_free( library );
FT_FREE( library->svg_renderer_state );
svg_module->loaded = FALSE; svg_module->loaded = FALSE;
} }
@ -54,17 +52,13 @@
FT_Memory memory = library->memory; FT_Memory memory = library->memory;
FT_BBox outline_bbox; FT_BBox outline_bbox;
FT_Error error; FT_Error error;
FT_ULong size_image_buffer;
SVG_RendererHooks hooks = svg_renderer->hooks; SVG_RendererHooks hooks = svg_renderer->hooks;
unsigned long size_image_buffer;
if ( svg_renderer->loaded == FALSE ) if ( svg_renderer->loaded == FALSE )
{ {
FT_MEM_ALLOC( library->svg_renderer_state,
hooks.svg_lib_get_state_size() );
if ( error )
return error;
error = hooks.svg_lib_init( library ); error = hooks.svg_lib_init( library );
svg_renderer->loaded = TRUE; svg_renderer->loaded = TRUE;
} }
@ -88,7 +82,6 @@
SVG_Lib_Init init_hook, SVG_Lib_Init init_hook,
SVG_Lib_Free free_hook, SVG_Lib_Free free_hook,
SVG_Lib_Render render_hook, SVG_Lib_Render render_hook,
SVG_Lib_Get_State_Size get_state_size,
SVG_Lib_Get_Buffer_Size get_buffer_size ) SVG_Lib_Get_Buffer_Size get_buffer_size )
{ {
SVG_Renderer renderer; SVG_Renderer renderer;
@ -98,7 +91,6 @@
renderer->hooks.svg_lib_free = free_hook; renderer->hooks.svg_lib_free = free_hook;
renderer->hooks.svg_lib_render = render_hook; renderer->hooks.svg_lib_render = render_hook;
renderer->hooks.svg_lib_get_state_size = get_state_size;
renderer->hooks.svg_lib_get_buffer_size = get_buffer_size; renderer->hooks.svg_lib_get_buffer_size = get_buffer_size;
return FT_Err_Ok; return FT_Err_Ok;

View File

@ -28,7 +28,6 @@
SVG_Lib_Free svg_lib_free; SVG_Lib_Free svg_lib_free;
SVG_Lib_Render svg_lib_render; SVG_Lib_Render svg_lib_render;
SVG_Lib_Get_State_Size svg_lib_get_state_size;
SVG_Lib_Get_Buffer_Size svg_lib_get_buffer_size; SVG_Lib_Get_Buffer_Size svg_lib_get_buffer_size;
} SVG_RendererHooks; } SVG_RendererHooks;