forked from minhngoc25a/freetype2
Add a `hooks_set' flag.
A flag is to be used to indicate whether hooks have been set or not. In case the hooks haven't been set, a `Missing_SVG_Hooks' error will be thrown.
This commit is contained in:
parent
246ac684e4
commit
4025f1213e
|
@ -234,6 +234,8 @@
|
||||||
"found FDEF or IDEF opcode in glyf bytecode" )
|
"found FDEF or IDEF opcode in glyf bytecode" )
|
||||||
FT_ERRORDEF_( Missing_Bitmap, 0x9D,
|
FT_ERRORDEF_( Missing_Bitmap, 0x9D,
|
||||||
"missing bitmap in strike" )
|
"missing bitmap in strike" )
|
||||||
|
FT_ERRORDEF_( Missing_SVG_Hooks, 0x9E,
|
||||||
|
"hooks have not been set" )
|
||||||
|
|
||||||
/* CFF, CID, and Type 1 errors */
|
/* CFF, CID, and Type 1 errors */
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,9 @@
|
||||||
svg_module->hooks.free_svg = (SVG_Lib_Free_Func)rsvg_port_free;
|
svg_module->hooks.free_svg = (SVG_Lib_Free_Func)rsvg_port_free;
|
||||||
svg_module->hooks.render_svg = (SVG_Lib_Render_Func)rsvg_port_render;
|
svg_module->hooks.render_svg = (SVG_Lib_Render_Func)rsvg_port_render;
|
||||||
svg_module->hooks.get_buffer_size = (SVG_Lib_Get_Buffer_Size_Func)rsvg_port_get_buffer_size;
|
svg_module->hooks.get_buffer_size = (SVG_Lib_Get_Buffer_Size_Func)rsvg_port_get_buffer_size;
|
||||||
|
svg_module->hooks_set = TRUE;
|
||||||
|
#else
|
||||||
|
svg_module->hooks_set = FALSE;
|
||||||
#endif
|
#endif
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
@ -47,7 +50,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;
|
||||||
if ( svg_module->loaded == TRUE )
|
if ( svg_module->loaded == TRUE &&
|
||||||
|
svg_module->hooks_set == TRUE )
|
||||||
svg_module->hooks.free_svg( library );
|
svg_module->hooks.free_svg( library );
|
||||||
svg_module->loaded = FALSE;
|
svg_module->loaded = FALSE;
|
||||||
}
|
}
|
||||||
|
@ -63,10 +67,14 @@
|
||||||
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;
|
FT_ULong size_image_buffer;
|
||||||
|
|
||||||
SVG_RendererHooks hooks = svg_renderer->hooks;
|
SVG_RendererHooks hooks = svg_renderer->hooks;
|
||||||
|
|
||||||
|
if ( svg_renderer->hooks_set == FALSE )
|
||||||
|
{
|
||||||
|
return FT_THROW( Missing_SVG_Hooks );
|
||||||
|
}
|
||||||
|
|
||||||
if ( svg_renderer->loaded == FALSE )
|
if ( svg_renderer->loaded == FALSE )
|
||||||
{
|
{
|
||||||
|
@ -100,7 +108,8 @@
|
||||||
if ( !ft_strcmp( property_name, "svg_hooks" ) )
|
if ( !ft_strcmp( property_name, "svg_hooks" ) )
|
||||||
{
|
{
|
||||||
SVG_RendererHooks* hooks = (SVG_RendererHooks*)value;
|
SVG_RendererHooks* hooks = (SVG_RendererHooks*)value;
|
||||||
renderer->hooks = *hooks;
|
renderer->hooks = *hooks;
|
||||||
|
renderer->hooks_set = TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
{
|
{
|
||||||
FT_RendererRec root; /* This inherits FT_RendererRec */
|
FT_RendererRec root; /* This inherits FT_RendererRec */
|
||||||
FT_Bool loaded;
|
FT_Bool loaded;
|
||||||
|
FT_Bool hooks_set;
|
||||||
SVG_RendererHooks hooks; /* Holds out hooks to the outside library */
|
SVG_RendererHooks hooks; /* Holds out hooks to the outside library */
|
||||||
} SVG_RendererRec;
|
} SVG_RendererRec;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue