123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- /****************************************************************************
- *
- * 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 */
- typedef FT_Error
- (*FT_Glyph_InitFunc)( FT_Glyph glyph,
- FT_GlyphSlot slot );
- /* destroys a given glyph object */
- typedef void
- (*FT_Glyph_DoneFunc)( FT_Glyph glyph );
- typedef void
- (*FT_Glyph_TransformFunc)( FT_Glyph glyph,
- const FT_Matrix* matrix,
- const FT_Vector* delta );
- typedef void
- (*FT_Glyph_GetBBoxFunc)( FT_Glyph glyph,
- FT_BBox* abbox );
- typedef FT_Error
- (*FT_Glyph_CopyFunc)( FT_Glyph source,
- FT_Glyph target );
- typedef FT_Error
- (*FT_Glyph_PrepareFunc)( FT_Glyph glyph,
- FT_GlyphSlot slot );
- /* deprecated */
- #define FT_Glyph_Init_Func FT_Glyph_InitFunc
- #define FT_Glyph_Done_Func FT_Glyph_DoneFunc
- #define FT_Glyph_Transform_Func FT_Glyph_TransformFunc
- #define FT_Glyph_BBox_Func FT_Glyph_GetBBoxFunc
- #define FT_Glyph_Copy_Func FT_Glyph_CopyFunc
- #define FT_Glyph_Prepare_Func FT_Glyph_PrepareFunc
- struct FT_Glyph_Class_
- {
- FT_Long glyph_size;
- FT_Glyph_Format glyph_format;
- FT_Glyph_InitFunc glyph_init;
- FT_Glyph_DoneFunc glyph_done;
- FT_Glyph_CopyFunc glyph_copy;
- FT_Glyph_TransformFunc glyph_transform;
- FT_Glyph_GetBBoxFunc glyph_bbox;
- FT_Glyph_PrepareFunc glyph_prepare;
- };
- typedef FT_Error
- (*FT_Renderer_RenderFunc)( FT_Renderer renderer,
- FT_GlyphSlot slot,
- FT_Render_Mode mode,
- const FT_Vector* origin );
- typedef FT_Error
- (*FT_Renderer_TransformFunc)( FT_Renderer renderer,
- FT_GlyphSlot slot,
- const FT_Matrix* matrix,
- const FT_Vector* delta );
- typedef void
- (*FT_Renderer_GetCBoxFunc)( FT_Renderer renderer,
- FT_GlyphSlot slot,
- FT_BBox* cbox );
- typedef FT_Error
- (*FT_Renderer_SetModeFunc)( FT_Renderer renderer,
- FT_ULong mode_tag,
- FT_Pointer mode_ptr );
- /* deprecated identifiers */
- #define FTRenderer_render FT_Renderer_RenderFunc
- #define FTRenderer_transform FT_Renderer_TransformFunc
- #define FTRenderer_getCBox FT_Renderer_GetCBoxFunc
- #define FTRenderer_setMode FT_Renderer_SetModeFunc
- /**************************************************************************
- *
- * @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.
- */
- typedef struct FT_Renderer_Class_
- {
- FT_Module_Class root;
- FT_Glyph_Format glyph_format;
- FT_Renderer_RenderFunc render_glyph;
- FT_Renderer_TransformFunc transform_glyph;
- FT_Renderer_GetCBoxFunc get_glyph_cbox;
- FT_Renderer_SetModeFunc set_mode;
- FT_Raster_Funcs* raster_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 */
|