Improve ot-svg callback hooks documentation

This commit is contained in:
Moazin Khatti 2019-08-24 18:24:28 +05:00
parent 67c108bc9c
commit eb9a614011
1 changed files with 33 additions and 11 deletions

View File

@ -36,12 +36,15 @@ FT_BEGIN_HEADER
* SVG_Lib_Init_Func * SVG_Lib_Init_Func
* *
* @description: * @description:
* A callback used to initiate the SVG Rendering port. * A callback which is called when the first OT-SVG glyph is rendered in
* the lifetime of an @FT_Library object. The callback should perform all
* sorts of initializations that the SVG rendering library needs such as
* allocating memory for `svg_renderer_state` of @FT_LibraryRec.
* *
* @input: * @input:
* library :: * library ::
* A instance of library. This is required to initialize the * An instance of @FT_Library. It's passed to give the callbacks access
* renderer's state which will be held in the library. * to `svg_renderer_state` of @FT_LibraryRec.
* *
* @return: * @return:
* FreeType error code. 0 means success. * FreeType error code. 0 means success.
@ -56,13 +59,15 @@ FT_BEGIN_HEADER
* SVG_Lib_Free_Func * SVG_Lib_Free_Func
* *
* @description: * @description:
* A callback used to free the SVG Rendering port. Calling this callback * A callback which is called when the `ot-svg` module is being freed.
* shall do all cleanups that the SVG Rendering port wants to do. * It is only called only if the init hook was called earlier. So, if no
* OT-SVG glyph is rendered, neither the init hook is called nor the free
* hook.
* *
* @input: * @input:
* library :: * library ::
* A instance of library. This is required to free the renderer's * An instance of @FT_Library. It's passed to give the callbacks access
* state which will be held in the library. * to `svg_renderer_state` of @FT_LibraryRec.
*/ */
typedef void typedef void
(*SVG_Lib_Free_Func)( FT_Library library ); (*SVG_Lib_Free_Func)( FT_Library library );
@ -74,11 +79,15 @@ FT_BEGIN_HEADER
* SVG_Lib_Render_Func * SVG_Lib_Render_Func
* *
* @description: * @description:
* A callback used to render the glyph loaded in the slot. * A callback which is called to render an OT-SVG glyph. This callback
* hook is called right after the preset hook has been called with
* `cache` set to `TRUE`. The data necessary to render is available
* through the handle @FT_SVG_Document which is set in `other` field of
* @FT_GlyphSlotRec.
* *
* @input: * @input:
* slot :: * slot ::
* The whole glyph slot object. * The slot to render.
* *
* @return: * @return:
* FreeType error code. 0 means success. * FreeType error code. 0 means success.
@ -92,12 +101,26 @@ FT_BEGIN_HEADER
* SVG_Lib_Preset_Slot_Func * SVG_Lib_Preset_Slot_Func
* *
* @description: * @description:
* A callback which is to preset the glyphslot. * A callback which is called to preset the glyphslot. It is called from
* two places.
*
* 1. When `FT_Load_Glyph` needs to preset the glyphslot.
* 2. Right before the `ot-svg` module calls the render callback hook.
*
* When it is the former, the argument `cache` is set to `FALSE`. When it
* is the latter, the argument `cache` is set to `TRUE`. This distinction
* has been made because while presetting a glyphslot many calculations
* are needed and later the render callback hook needs the same
* calculations, thus, if `cache` is `TRUE`, the hook might _cache_ these
* calculations in `svg_renderer_state` of @FT_LibraryRec.
* *
* @input: * @input:
* slot :: * slot ::
* The glyph slot which has the SVG document loaded. * The glyph slot which has the SVG document loaded.
* *
* cache ::
* See description.
*
* @return: * @return:
* FreeType error code. 0 means success. * FreeType error code. 0 means success.
*/ */
@ -130,7 +153,6 @@ FT_BEGIN_HEADER
*/ */
typedef struct SVG_RendererHooks_ typedef struct SVG_RendererHooks_
{ {
/* Api Hooks for OT-SVG Rendering */
SVG_Lib_Init_Func init_svg; SVG_Lib_Init_Func init_svg;
SVG_Lib_Free_Func free_svg; SVG_Lib_Free_Func free_svg;
SVG_Lib_Render_Func render_svg; SVG_Lib_Render_Func render_svg;