From c6a6859ad94c4de10fefc9af663f3d0c7a15ccf2 Mon Sep 17 00:00:00 2001 From: Moazin Khatti Date: Wed, 10 Jul 2019 16:28:39 +0500 Subject: Better naming used. --- include/freetype/config/ftheader.h | 4 +- include/freetype/svgrender.h | 261 +++++++++++++++++++++++++++++++++++++ include/freetype/svgrenderer.h | 260 ------------------------------------ src/base/ftglyph.c | 2 +- src/base/ftobjs.c | 18 +-- src/sfnt/ttsvg.c | 2 +- src/svg/ftsvg.c | 30 ++--- src/svg/svgtypes.c | 10 +- 8 files changed, 294 insertions(+), 293 deletions(-) create mode 100644 include/freetype/svgrender.h delete mode 100644 include/freetype/svgrenderer.h diff --git a/include/freetype/config/ftheader.h b/include/freetype/config/ftheader.h index 239c7cf01..d9249f932 100644 --- a/include/freetype/config/ftheader.h +++ b/include/freetype/config/ftheader.h @@ -550,14 +550,14 @@ /************************************************************************** * * @macro: - * FT_SVG_RENDERER_H + * FT_SVG_RENDER_H * * @description: * A macro used in `#include` statements to name the file containing the * API of the SVG Renderer Module. * */ -#define FT_SVG_RENDERER_H +#define FT_SVG_RENDER_H /************************************************************************** diff --git a/include/freetype/svgrender.h b/include/freetype/svgrender.h new file mode 100644 index 000000000..e0af126cf --- /dev/null +++ b/include/freetype/svgrender.h @@ -0,0 +1,261 @@ +/**************************************************************************** + * + * svgrenderer.h + * + * Interface for SVG Renderer Module (specification). + * + * Copyright (C) 2004-2019 by + * David Turner, Robert Wilhelm, Werner Lemberg and Moazin Khatti. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef FTSVG_RENDERER_H_ +#define FTSVG_RENDERER_H_ + +#include +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + +FT_BEGIN_HEADER + + /************************************************************************** + * + * @functype: + * SVG_Lib_Init_Func + * + * @description: + * A callback used to initiate the SVG Rendering port + * + * @input: + * library :: + * A instance of library. This is required to initialize the renderer's + * state which will be held in the library. + * + * + * @return: + * FreeType error code. 0 means success. + */ + + typedef FT_Error + (*SVG_Lib_Init_Func)( FT_Library library ); + + + /************************************************************************** + * + * @functype: + * SVG_Lib_Free_Func + * + * @description: + * A callback used to free the SVG Rendering port. Calling this callback + * shall do all cleanups that the SVG Rendering port wants to do. + * + * @input: + * library :: + * A instance of library. This is required to free the renderer's state + * which will be held in the library. + */ + + typedef void + (*SVG_Lib_Free_Func)( FT_Library library ); + + + /************************************************************************** + * + * @functype: + * SVG_Lib_Render_Func + * + * @description: + * A callback used to render the glyph loaded in the slot. + * + * @input: + * slot :: + * The whole glyph slot object. + * + * outline_bbox :: + * The bounding box of the glyph in font units. So that the renderer + * may not need to calculate it again. + * + * @return: + * FreeType error code. 0 means success. + */ + + typedef FT_Error + (*SVG_Lib_Render_Func)( FT_GlyphSlot slot, + FT_BBox outline_bbox); + + /************************************************************************** + * + * @functype: + * SVG_Lib_Get_Buffer_Size_Func + * + * @description: + * A callback which is called to get the size of the image buffer needed. + * This buffer will ultimately be populated by `SVG_Lib_Render_Func' + * hook. + * + * @input: + * slot :: + * The glyph slot which has the SVG document loaded as well as other + * info. + * + * bbox :: + * The bbox in font units. This is required for the rendering port to + * predict the final size of the image buffer. + * + * @return: + * Size of the state structure in bytes. + * + */ + + typedef FT_ULong + (*SVG_Lib_Get_Buffer_Size_Func)( FT_GlyphSlot slot, + FT_BBox bbox ); + + + /************************************************************************** + * + * @functype: + * SVG_Set_Hooks_Func + * + * @description: + * A function that is used set SVG Hooks. Part of the SVG Renderer + * Interface. + * + * @input: + * module :: + * FT_Module instance. + * + * init_svg :: + * A function pointer of the type `SVG_Lib_Init_Func'. Read the + * documentation of `SVG_Lib_Init_Func' + * + * free_svg :: + * A function pointer of the type `SVG_Lib_Free_Func'. Read the + * documentation of `SVG_Lib_Free_Func'. + * + * render_svg :: + * A function pointer of the type `SVG_Lib_Render_Func'. Read the + * documentation of `SVG_Lib_Render_Func'. + * + * get_buffer_size :: + * A function pointer of the type `SVG_Lib_Get_Buffer_Size_Func'. Read + * the documentation of `SVG_Lib_Get_Buffer_Size_Func'. + * + * @return: + * FreeType error code. 0 means success. + */ + + typedef FT_Error + (*SVG_Set_Hooks_Func)( FT_Module module, + 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 ); + + /************************************************************************** + * + * @struct: + * SVG_Renderer_Interface + * + * @description: + * An interface structure that function needed to inject external SVG + * rendering library hooks. + * + * @fields: + * set_hooks :: + * A function that can be called to set the hooks. + * + * @return: + * FreeType error code. 0 means success. + */ + + typedef struct SVG_Renderer_Interface_ + { + SVG_Set_Hooks_Func set_hooks; + } SVG_Renderer_Interface; + + + /* TODO: to document */ + FT_EXPORT( FT_Error ) + FT_Set_Svg_Hooks( FT_Library library, + 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 ); + + /************************************************************************** + * + * @struct: + * FT_SVG_DocumentRec_ + * + * @description: + * A structure that models one SVG document. + * + * @fields: + * svg_document :: + * A pointer to the SVG document string. + * + * svg_document_length :: + * The length of the SVG document string. + * + * metrics :: + * A metrics object storing the size information. + * + * units_per_EM :: + * The size of the EM square. + * + * start_glyph_id :: + * The starting glyph ID for the glyph range that this document has. + * + * end_glyph_id :: + * The ending glyph ID for the glyph range that this document has. + * + * @note: + * `metrics' and `units_per_EM' might look like repetitions since both + * fields are stored in face objects. However, the Glyph Management API + * requires an `FT_Glyph' to store all the information that completely + * describes a glyph. Outline glyphs are themselves scaled thus they + * don't need this information. However, SVG documents do. The field of + * `units_per_EM' is needed because the SVG is to be scaled in case its + * viewbox size differs from `units_per_EM'. For more info, refer to + * the section `Coordinate Systems and Glyph Metrics' of the OpenType + * SVG specs. + */ + + typedef struct FT_SVG_DocumentRec_ + { + FT_Byte* svg_document; + FT_ULong svg_document_length; + FT_Size_Metrics metrics; + FT_UShort units_per_EM; + FT_UShort start_glyph_id; + FT_UShort end_glyph_id; + /* TODO: (OT-SVG) Not storing glyph_index here for now. Might need to + * at some point. Review this! */ + } FT_SVG_DocumentRec; + + /************************************************************************** + * + * @type: + * FT_SVG_Document + * + * @description: + * A handle to a FT_SVG_DocumentRec object. + */ + typedef struct FT_SVG_DocumentRec_* FT_SVG_Document; + +FT_END_HEADER + +#endif diff --git a/include/freetype/svgrenderer.h b/include/freetype/svgrenderer.h deleted file mode 100644 index 2988d4fae..000000000 --- a/include/freetype/svgrenderer.h +++ /dev/null @@ -1,260 +0,0 @@ -/**************************************************************************** - * - * svgrenderer.h - * - * Interface for SVG Renderer Module (specification). - * - * Copyright (C) 2004-2019 by - * David Turner, Robert Wilhelm, Werner Lemberg and Moazin Khatti. - * - * This file is part of the FreeType project, and may only be used, - * modified, and distributed under the terms of the FreeType project - * license, LICENSE.TXT. By continuing to use, modify, or distribute - * this file you indicate that you have read the license and - * understand and accept it fully. - * - */ - - -#ifndef FTSVG_RENDERER_H_ -#define FTSVG_RENDERER_H_ - -#include -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - -FT_BEGIN_HEADER - - /************************************************************************** - * - * @functype: - * SVG_Lib_Init - * - * @description: - * A callback used to initiate the SVG Rendering port - * - * @input: - * library :: - * A instance of library. This is required to initialize the renderer's - * state which will be held in the library. - * - * - * @return: - * FreeType error code. 0 means success. - */ - - typedef FT_Error - (*SVG_Lib_Init)( FT_Library library ); - - - /************************************************************************** - * - * @functype: - * SVG_Lib_Free - * - * @description: - * A callback used to free the SVG Rendering port. Calling this callback - * shall do all cleanups that the SVG Rendering port wants to do. - * - * @input: - * library :: - * A instance of library. This is required to free the renderer's state - * which will be held in the library. - */ - - typedef void - (*SVG_Lib_Free)( FT_Library library ); - - - /************************************************************************** - * - * @functype: - * SVG_Lib_Render - * - * @description: - * A callback used to render the glyph loaded in the slot. - * - * @input: - * slot :: - * The whole glyph slot object. - * - * outline_bbox :: - * The bounding box of the glyph in font units. So that the renderer - * may not need to calculate it again. - * - * @return: - * FreeType error code. 0 means success. - */ - - typedef FT_Error - (*SVG_Lib_Render)( FT_GlyphSlot slot, - FT_BBox outline_bbox); - - /************************************************************************** - * - * @functype: - * SVG_Lib_Get_Buffer_Size - * - * @description: - * A callback which is called to get the size of the image buffer needed. - * This buffer will ultimately be populated by `SVG_Lib_Render' hook. - * - * @input: - * slot :: - * The glyph slot which has the SVG document loaded as well as other - * info. - * - * bbox :: - * The bbox in font units. This is required for the rendering port to - * predict the final size of the image buffer. - * - * @return: - * Size of the state structure in bytes. - * - */ - - typedef FT_ULong - (*SVG_Lib_Get_Buffer_Size)( FT_GlyphSlot slot, - FT_BBox bbox ); - - - /************************************************************************** - * - * @functype: - * SVG_Set_Hooks - * - * @description: - * A function that is used set SVG Hooks. Part of the SVG Renderer - * Interface. - * - * @input: - * module :: - * FT_Module instance. - * - * init_hook :: - * A function pointer of the type `SVG_Lib_Init'. Read the documentation - * of `SVG_Lib_Init' - * - * free_hook :: - * A function pointer of the type `SVG_Lib_Free'. Read the documentation - * of `SVG_Lib_Free'. - * - * render_hook :: - * A function pointer of the type `SVG_Lib_Render'. Read the - * documentation of `SVG_Lib_Render'. - * - * get_buffer_size :: - * A function pointer of the type `SVG_Lib_Get_Buffer_Size'. Read the - * documentation of `SVG_Lib_Get_Buffer_Size'. - * - * @return: - * FreeType error code. 0 means success. - */ - - typedef FT_Error - (*SVG_Set_Hooks)( FT_Module module, - SVG_Lib_Init init_hook, - SVG_Lib_Free free_hook, - SVG_Lib_Render render_hook, - SVG_Lib_Get_Buffer_Size get_buffer_size ); - - /************************************************************************** - * - * @struct: - * SVG_Renderer_Interface - * - * @description: - * An interface structure that function needed to inject external SVG - * rendering library hooks. - * - * @fields: - * set_hooks :: - * A function that can be called to set the hooks. - * - * @return: - * FreeType error code. 0 means success. - */ - - typedef struct SVG_Renderer_Interface_ - { - SVG_Set_Hooks set_hooks; - } SVG_Renderer_Interface; - - - /* TODO: to document */ - FT_EXPORT( FT_Error ) - FT_Set_Svg_Hooks( FT_Library library, - SVG_Lib_Init init_hook, - SVG_Lib_Free free_hook, - SVG_Lib_Render render_hook, - SVG_Lib_Get_Buffer_Size get_buffer_size ); - - /************************************************************************** - * - * @struct: - * FT_SVG_DocumentRec_ - * - * @description: - * A structure that models one SVG document. - * - * @fields: - * svg_document :: - * A pointer to the SVG document string. - * - * svg_document_length :: - * The length of the SVG document string. - * - * metrics :: - * A metrics object storing the size information. - * - * units_per_EM :: - * The size of the EM square. - * - * start_glyph_id :: - * The starting glyph ID for the glyph range that this document has. - * - * end_glyph_id :: - * The ending glyph ID for the glyph range that this document has. - * - * @note: - * `metrics' and `units_per_EM' might look like repetitions since both - * fields are stored in face objects. However, the Glyph Management API - * requires an `FT_Glyph' to store all the information that completely - * describes a glyph. Outline glyphs are themselves scaled thus they - * don't need this information. However, SVG documents do. The field of - * `units_per_EM' is needed because the SVG is to be scaled in case its - * viewbox size differs from `units_per_EM'. For more info, refer to - * the section `Coordinate Systems and Glyph Metrics' of the OpenType - * SVG specs. - */ - - typedef struct FT_SVG_DocumentRec_ - { - FT_Byte* svg_document; - FT_ULong svg_document_length; - FT_Size_Metrics metrics; - FT_UShort units_per_EM; - FT_UShort start_glyph_id; - FT_UShort end_glyph_id; - /* TODO: (OT-SVG) Not storing glyph_index here for now. Might need to - * at some point. Review this! */ - } FT_SVG_DocumentRec; - - /************************************************************************** - * - * @type: - * FT_SVG_Document - * - * @description: - * A handle to a FT_SVG_DocumentRec object. - */ - typedef struct FT_SVG_DocumentRec_* FT_SVG_Document; - -FT_END_HEADER - -#endif diff --git a/src/base/ftglyph.c b/src/base/ftglyph.c index 8d53281b7..f088b38fd 100644 --- a/src/base/ftglyph.c +++ b/src/base/ftglyph.c @@ -35,7 +35,7 @@ #include FT_OUTLINE_H #include FT_BITMAP_H #include FT_INTERNAL_OBJECTS_H -#include FT_SVG_RENDERER_H +#include FT_SVG_RENDER_H /************************************************************************** diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c index 16f947cc0..349fcca84 100644 --- a/src/base/ftobjs.c +++ b/src/base/ftobjs.c @@ -40,7 +40,7 @@ #include FT_SERVICE_TT_CMAP_H #include FT_SERVICE_KERNING_H #include FT_SERVICE_TRUETYPE_ENGINE_H -#include FT_SVG_RENDERER_H +#include FT_SVG_RENDER_H #include FT_DRIVER_H @@ -5593,11 +5593,11 @@ } FT_EXPORT_DEF( FT_Error ) - FT_Set_Svg_Hooks( FT_Library library, - SVG_Lib_Init init_hook, - SVG_Lib_Free free_hook, - SVG_Lib_Render render_hook, - SVG_Lib_Get_Buffer_Size get_buffer_size ) + FT_Set_Svg_Hooks( FT_Library library, + 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 ) { FT_Module renderer; SVG_Renderer_Interface *svg; @@ -5611,9 +5611,9 @@ svg = (SVG_Renderer_Interface*)renderer->clazz->module_interface; svg->set_hooks(renderer, - init_hook, - free_hook, - render_hook, + init_svg, + free_svg, + render_svg, get_buffer_size ); return FT_Err_Ok; } diff --git a/src/sfnt/ttsvg.c b/src/sfnt/ttsvg.c index 96fdb37ab..c4b8c260a 100644 --- a/src/sfnt/ttsvg.c +++ b/src/sfnt/ttsvg.c @@ -29,7 +29,7 @@ #include FT_INTERNAL_OBJECTS_H #include FT_TRUETYPE_TAGS_H #include FT_GZIP_H -#include FT_SVG_RENDERER_H +#include FT_SVG_RENDER_H #include "ttsvg.h" diff --git a/src/svg/ftsvg.c b/src/svg/ftsvg.c index 59057d2bd..f40999a4a 100644 --- a/src/svg/ftsvg.c +++ b/src/svg/ftsvg.c @@ -16,7 +16,7 @@ */ #include -#include FT_SVG_RENDERER_H +#include FT_SVG_RENDER_H #include FT_BBOX_H #include @@ -37,7 +37,7 @@ { FT_Library library = svg_module->root.root.library; if ( svg_module->loaded == TRUE ) - svg_module->hooks.svg_lib_free( library ); + svg_module->hooks.free_svg( library ); svg_module->loaded = FALSE; } @@ -59,7 +59,7 @@ if ( svg_renderer->loaded == FALSE ) { - error = hooks.svg_lib_init( library ); + error = hooks.init_svg( library ); svg_renderer->loaded = TRUE; } @@ -68,30 +68,30 @@ if( error != FT_Err_Ok ) return error; - size_image_buffer = hooks.svg_lib_get_buffer_size( slot, outline_bbox ); + size_image_buffer = hooks.get_buffer_size( slot, outline_bbox ); FT_MEM_ALLOC( slot->bitmap.buffer, size_image_buffer ); if ( error ) return error; - return hooks.svg_lib_render( slot, outline_bbox ); + return hooks.render_svg( slot, outline_bbox ); } static FT_Error - ft_svg_set_hooks( FT_Module module, - SVG_Lib_Init init_hook, - SVG_Lib_Free free_hook, - SVG_Lib_Render render_hook, - SVG_Lib_Get_Buffer_Size get_buffer_size ) + ft_svg_set_hooks( FT_Module module, + 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_Renderer renderer; renderer = (SVG_Renderer)module; - renderer->hooks.svg_lib_init = init_hook; - renderer->hooks.svg_lib_free = free_hook; - renderer->hooks.svg_lib_render = render_hook; + renderer->hooks.init_svg = init_svg; + renderer->hooks.free_svg = free_svg; + renderer->hooks.render_svg = render_svg; - renderer->hooks.svg_lib_get_buffer_size = get_buffer_size; + renderer->hooks.get_buffer_size = get_buffer_size; return FT_Err_Ok; } @@ -99,7 +99,7 @@ static const SVG_Renderer_Interface svg_renderer_interface = { - (SVG_Set_Hooks)ft_svg_set_hooks + (SVG_Set_Hooks_Func)ft_svg_set_hooks }; diff --git a/src/svg/svgtypes.c b/src/svg/svgtypes.c index dbbd7f8d2..4a329411f 100644 --- a/src/svg/svgtypes.c +++ b/src/svg/svgtypes.c @@ -19,16 +19,16 @@ #include #include FT_INTERNAL_OBJECTS_H #include FT_RENDER_H -#include FT_SVG_RENDERER_H +#include FT_SVG_RENDER_H typedef struct SVG_RendererHooks_ { /* Api Hooks for OT-SVG Rendering */ - SVG_Lib_Init svg_lib_init; - SVG_Lib_Free svg_lib_free; - SVG_Lib_Render svg_lib_render; + SVG_Lib_Init_Func init_svg; + SVG_Lib_Free_Func free_svg; + SVG_Lib_Render_Func render_svg; - SVG_Lib_Get_Buffer_Size svg_lib_get_buffer_size; + SVG_Lib_Get_Buffer_Size_Func get_buffer_size; } SVG_RendererHooks; typedef struct SVG_RendererRec_ -- cgit v1.2.1