[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2] GSoC-2019-moazin b9b7430 39/47: Add a `hooks_set' flag.
From: |
Moazin Khatti |
Subject: |
[freetype2] GSoC-2019-moazin b9b7430 39/47: Add a `hooks_set' flag. |
Date: |
Fri, 26 Jul 2019 10:02:10 -0400 (EDT) |
branch: GSoC-2019-moazin
commit b9b7430882a2110dc7dbd691e1af3a0ab95ecbc6
Author: Moazin Khatti <address@hidden>
Commit: Moazin Khatti <address@hidden>
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.
---
include/freetype/fterrdef.h | 2 ++
src/svg/ftsvg.c | 15 ++++++++++++---
src/svg/svgtypes.c | 1 +
3 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/include/freetype/fterrdef.h b/include/freetype/fterrdef.h
index 9bc7dc6..bbd8c9b 100644
--- a/include/freetype/fterrdef.h
+++ b/include/freetype/fterrdef.h
@@ -234,6 +234,8 @@
"found FDEF or IDEF opcode in glyf bytecode" )
FT_ERRORDEF_( Missing_Bitmap, 0x9D,
"missing bitmap in strike" )
+ FT_ERRORDEF_( Missing_SVG_Hooks, 0x9E,
+ "hooks have not been set" )
/* CFF, CID, and Type 1 errors */
diff --git a/src/svg/ftsvg.c b/src/svg/ftsvg.c
index 5c9d081..df0a702 100644
--- a/src/svg/ftsvg.c
+++ b/src/svg/ftsvg.c
@@ -39,6 +39,9 @@
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.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
return error;
}
@@ -47,7 +50,8 @@
ft_svg_done( SVG_Renderer svg_module )
{
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->loaded = FALSE;
}
@@ -63,10 +67,14 @@
FT_Memory memory = library->memory;
FT_BBox outline_bbox;
FT_Error error;
- FT_ULong size_image_buffer;
+ FT_ULong size_image_buffer;
SVG_RendererHooks hooks = svg_renderer->hooks;
+ if ( svg_renderer->hooks_set == FALSE )
+ {
+ return FT_THROW( Missing_SVG_Hooks );
+ }
if ( svg_renderer->loaded == FALSE )
{
@@ -100,7 +108,8 @@
if ( !ft_strcmp( property_name, "svg_hooks" ) )
{
SVG_RendererHooks* hooks = (SVG_RendererHooks*)value;
- renderer->hooks = *hooks;
+ renderer->hooks = *hooks;
+ renderer->hooks_set = TRUE;
}
else
{
diff --git a/src/svg/svgtypes.c b/src/svg/svgtypes.c
index b82d51e..f7008f3 100644
--- a/src/svg/svgtypes.c
+++ b/src/svg/svgtypes.c
@@ -25,6 +25,7 @@
{
FT_RendererRec root; /* This inherits FT_RendererRec */
FT_Bool loaded;
+ FT_Bool hooks_set;
SVG_RendererHooks hooks; /* Holds out hooks to the outside library */
} SVG_RendererRec;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2] GSoC-2019-moazin b9b7430 39/47: Add a `hooks_set' flag.,
Moazin Khatti <=