/***************************************************************************/
/* */
/*ftrender.h */
/* */
/*FreeType renderer modules public interface (specification).*/
/* */
/*Copyright 1996-2015 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
#include FT_MODULE_H
#include FT_GLYPH_H
FT_BEGIN_HEADER
/*************************************************************************/
/* */
/*
/*module_management*/
/* */
/*************************************************************************/
/* create a new glyph object */
typedef FT_Error
(*FT_Glyph_InitFunc)( FT_Glyphglyph,
FT_GlyphSlotslot );
/* destroys a given glyph object */
typedef void
(*FT_Glyph_DoneFunc)( FT_Glyphglyph );
typedef void
(*FT_Glyph_TransformFunc)( FT_Glyphglyph,
const FT_Matrix*matrix,
const FT_Vector*delta );
typedef void
(*FT_Glyph_GetBBoxFunc)( FT_Glyphglyph,
FT_BBox*abbox );
typedef FT_Error
(*FT_Glyph_CopyFunc)( FT_Glyph source,
FT_Glyph target );
typedef FT_Error
(*FT_Glyph_PrepareFunc)( FT_Glyphglyph,
FT_GlyphSlotslot );
/* deprecated */
#define FT_Glyph_Init_Func FT_Glyph_InitFunc
#define FT_Glyph_Done_Func FT_Glyph_DoneFunc
#define FT_Glyph_Transform_FuncFT_Glyph_TransformFunc
#define FT_Glyph_BBox_Func FT_Glyph_GetBBoxFunc
#define FT_Glyph_Copy_Func FT_Glyph_CopyFunc
#define FT_Glyph_Prepare_FuncFT_Glyph_PrepareFunc
structFT_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_TransformFuncglyph_transform;
FT_Glyph_GetBBoxFuncglyph_bbox;
FT_Glyph_PrepareFuncglyph_prepare;
};
typedef FT_Error
(*FT_Renderer_RenderFunc)( FT_Renderer renderer,
FT_GlyphSlotslot,
FT_UInt mode,
const FT_Vector*origin );
typedef FT_Error
(*FT_Renderer_TransformFunc)( FT_Renderer renderer,
FT_GlyphSlotslot,
const FT_Matrix*matrix,
const FT_Vector*delta );
typedef void
(*FT_Renderer_GetCBoxFunc)( FT_Renderer renderer,
FT_GlyphSlotslot,
FT_BBox*cbox );
typedef FT_Error
(*FT_Renderer_SetModeFunc)( FT_Rendererrenderer,
FT_ULong mode_tag,
FT_Pointer mode_ptr );
/* deprecated identifiers */
#define FTRenderer_renderFT_Renderer_RenderFunc
#define FTRenderer_transformFT_Renderer_TransformFunc
#define FTRenderer_getCBoxFT_Renderer_GetCBoxFunc
#define FTRenderer_setModeFT_Renderer_SetModeFunc
/*************************************************************************/
/* */
/*
/*FT_Renderer_Class*/
/* */
/*
/*The renderer module class descriptor.*/
/* */
/*
/*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 glyphs 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 rasters class.*/
/* */
typedef structFT_Renderer_Class_
{
FT_Module_Classroot;
FT_Glyph_Formatglyph_format;
FT_Renderer_RenderFunc render_glyph;
FT_Renderer_TransformFunctransform_glyph;
FT_Renderer_GetCBoxFuncget_glyph_cbox;
FT_Renderer_SetModeFuncset_mode;
FT_Raster_Funcs* raster_class;
} FT_Renderer_Class;
/*************************************************************************/
/* */
/*
/*FT_Get_Renderer*/
/* */
/*
/*Retrieve the current renderer for a given glyph format.*/
/* */
/**/
/*library :: A handle to the library object. */
/* */
/*format:: The glyph format. */
/* */
/*
/*A renderer handle.0~if none found. */
/* */
/*
/*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_Formatformat );
/*************************************************************************/
/* */
/*
/*FT_Set_Renderer*/
/* */
/*
/*Set the current renderer to use, and set additional mode.*/
/* */
/*
/*library:: A handle to the library object.*/
/* */
/* */
/*renderer :: A handle to the renderer object. */
/* */
/*num_params :: The number of additional parameters. */
/* */
/*parameters :: Additional parameters. */
/* */
/*
/*FreeType error code.0~means success. */
/* */
/*
/*In case of success, the renderer will be used to convert glyph */
/*images in the renderers known format into bitmaps.*/
/* */
/*This doesnt 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_Rendererrenderer,
FT_UIntnum_params,
FT_Parameter*parameters );
/* */
FT_END_HEADER
#endif /* __FTRENDER_H__ */
/* END */
Reviews
There are no reviews yet.