/**************************************************************************** * * ftrender.h * * FreeType renderer modules public interface (specification). * * Copyright (C) 1996-2023 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * 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 FTRENDER_H_ #define FTRENDER_H_ #include <freetype/ftmodapi.h> #include <freetype/ftglyph.h> FT_BEGIN_HEADER /************************************************************************** * * @section: * module_management * */ /* create a new glyph object */ FT_Glyph_InitFunc; /* destroys a given glyph object */ FT_Glyph_DoneFunc; FT_Glyph_TransformFunc; FT_Glyph_GetBBoxFunc; FT_Glyph_CopyFunc; FT_Glyph_PrepareFunc; /* deprecated */ #define FT_Glyph_Init_Func … #define FT_Glyph_Done_Func … #define FT_Glyph_Transform_Func … #define FT_Glyph_BBox_Func … #define FT_Glyph_Copy_Func … #define FT_Glyph_Prepare_Func … struct FT_Glyph_Class_ { … }; FT_Renderer_RenderFunc; FT_Renderer_TransformFunc; FT_Renderer_GetCBoxFunc; FT_Renderer_SetModeFunc; /* deprecated identifiers */ #define FTRenderer_render … #define FTRenderer_transform … #define FTRenderer_getCBox … #define FTRenderer_setMode … /************************************************************************** * * @struct: * FT_Renderer_Class * * @description: * The renderer module class descriptor. * * @fields: * root :: * The root @FT_Module_Class fields. * * glyph_format :: * The glyph image format this renderer handles. * * render_glyph :: * A method used to render the image that is in a given glyph slot into * a bitmap. * * transform_glyph :: * A method used to transform the image that is in a given glyph slot. * * get_glyph_cbox :: * A method used to access the glyph's cbox. * * set_mode :: * A method used to pass additional parameters. * * raster_class :: * For @FT_GLYPH_FORMAT_OUTLINE renderers only. This is a pointer to * its raster's class. */ FT_Renderer_Class; /************************************************************************** * * @function: * FT_Get_Renderer * * @description: * Retrieve the current renderer for a given glyph format. * * @input: * library :: * A handle to the library object. * * format :: * The glyph format. * * @return: * A renderer handle. 0~if none found. * * @note: * An error will be returned if a module already exists by that name, or * if the module requires a version of FreeType that is too great. * * To add a new renderer, simply use @FT_Add_Module. To retrieve a * renderer by its name, use @FT_Get_Module. */ FT_EXPORT( FT_Renderer ) FT_Get_Renderer( FT_Library library, FT_Glyph_Format format ); /************************************************************************** * * @function: * FT_Set_Renderer * * @description: * Set the current renderer to use, and set additional mode. * * @inout: * library :: * A handle to the library object. * * @input: * renderer :: * A handle to the renderer object. * * num_params :: * The number of additional parameters. * * parameters :: * Additional parameters. * * @return: * FreeType error code. 0~means success. * * @note: * In case of success, the renderer will be used to convert glyph images * in the renderer's known format into bitmaps. * * This doesn't change the current renderer for other formats. * * Currently, no FreeType renderer module uses `parameters`; you should * thus always pass `NULL` as the value. */ FT_EXPORT( FT_Error ) FT_Set_Renderer( FT_Library library, FT_Renderer renderer, FT_UInt num_params, FT_Parameter* parameters ); /* */ FT_END_HEADER #endif /* FTRENDER_H_ */ /* END */