From 53078ee7502c4556a54aacf9ccd09906c623d173 Mon Sep 17 00:00:00 2001 From: David Turner Date: Thu, 22 Jun 2000 00:26:54 +0000 Subject: [PATCH] removed obsolete headers, added new ones --- include/freetype/ftgrays.h | 49 --------- include/freetype/ftmodule.h | 194 ++++++++++++++++++++++++++++++++++++ include/freetype/ftraster.h | 48 --------- include/freetype/ftrender.h | 152 ++++++++++++++++++++++++++++ 4 files changed, 346 insertions(+), 97 deletions(-) delete mode 100644 include/freetype/ftgrays.h create mode 100644 include/freetype/ftmodule.h delete mode 100644 include/freetype/ftraster.h create mode 100644 include/freetype/ftrender.h diff --git a/include/freetype/ftgrays.h b/include/freetype/ftgrays.h deleted file mode 100644 index feb74843b..000000000 --- a/include/freetype/ftgrays.h +++ /dev/null @@ -1,49 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftgrays.h */ -/* */ -/* FreeType smooth renderer declaration */ -/* */ -/* Copyright 1996-2000 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 FTGRAYS_H -#define FTGRAYS_H - -#ifdef __cplusplus - extern "C" { -#endif - -#ifdef _STANDALONE_ -#include "ftimage.h" -#else -#include -#endif - - /*************************************************************************/ - /* */ - /* To make ftgrays.h independent from configuration files we check */ - /* whether FT_EXPORT_DEF has been defined already. */ - /* */ - /* On some systems and compilers (Win32 mostly), an extra keyword is */ - /* necessary to compile the library as a DLL. */ - /* */ -#ifndef FT_EXPORT_VAR -#define FT_EXPORT_VAR(x) extern x -#endif - - FT_EXPORT_VAR(FT_Raster_Funcs) ft_grays_raster; - - #ifdef __cplusplus - } - #endif - -#endif diff --git a/include/freetype/ftmodule.h b/include/freetype/ftmodule.h new file mode 100644 index 000000000..bc8e96100 --- /dev/null +++ b/include/freetype/ftmodule.h @@ -0,0 +1,194 @@ +/***************************************************************************/ +/* */ +/* ftmodule.h */ +/* */ +/* FreeType modules public interface. */ +/* */ +/* Copyright 1996-2000 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 FTMODULE_H +#define FTMODULE_H + +#include + + /* module bit flags */ + typedef enum FT_Module_Flags_ + { + ft_module_font_driver = 1, /* this module is a font driver */ + ft_module_renderer = 2, /* this module is a renderer */ + + ft_module_driver_scalable = 4, /* this driver supports scalable fonts */ + ft_module_driver_no_outlines = 8 /* this driver does not support vector outlines */ + + } FT_Module_Flags; + + + + typedef void (*FT_Module_Interface)( void ); + + + typedef FT_Error (*FT_Module_Constructor)( FT_Module module ); + + typedef void (*FT_Module_Destructor)( FT_Module module ); + + typedef FT_Module_Interface (*FT_Module_Requester)( FT_Module module, + const char* name ); + + + /************************************************************************* + * + * + * FT_Module_Class + * + * + * The module class descriptor. + * + * + * module_flags :: bit flags describing the module + * module_size :: size of one module object/instance in bytes + * module_name :: name of the module + * module_version :: version, as a 16.16 fixed number (major.minor) + * module_requires :: the version of FreeType this module requires + * (starts at 2.0, a.k.a. 0x20000) + * + * module_init :: a function used to initialise (not create) a + * new module object + * + * module_done :: a function used to finalise (not destroy) a + * given module object + * + * get_interface :: queries a given module for a specific interface + * by name.. + * + *************************************************************************/ + + typedef struct FT_Module_Class_ + { + FT_ULong module_flags; + FT_Int module_size; + const FT_String* module_name; + FT_Fixed module_version; + FT_Fixed module_requires; + + const void* module_interface; + + FT_Module_Constructor module_init; + FT_Module_Destructor module_done; + FT_Module_Requester get_interface; + + } FT_Module_Class; + + + + /************************************************************************* + * + * + * FT_Add_Module + * + * + * Add a new module to a given library instance. + * + * + * library :: handle to library object + * clazz :: pointer to class descriptor for the module + * + * + * Error code. 0 means success + * + * + * 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 + * + *************************************************************************/ + + FT_EXPORT_DEF(FT_Error) FT_Add_Module( FT_Library library, + const FT_Module_Class* clazz ); + + + /************************************************************************* + * + * + * FT_Get_Module + * + * + * Find a module by its name. + * + * + * library :: handle to library object + * module_name :: the module's ASCII name. + * + * + * Module handle, 0 if none was found. + * + * + * You'd better be familiar with FreeType internals to know which + * module to look for :-) + * + *************************************************************************/ + + FT_EXPORT_DEF(FT_Module) FT_Get_Module( FT_Library library, + const char* module_name ); + + + /************************************************************************* + * + * + * FT_Get_Module_Interface + * + * + * Find a module and returns it's specific interface as a void* + * + * + * library :: handle to library object + * module_name :: the module's ASCII name. + * + * + * Module specific interface, if any + * + * + * You'd better be familiar with FreeType internals to know which + * module to look for, and what it's interface is :-) + * + *************************************************************************/ + + FT_EXPORT_DEF(const void*) FT_Get_Module_Interface( FT_Library library, + const char* mod_name ); + + /************************************************************************* + * + * + * FT_Remove_Module + * + * + * Removes a given module from a library instance. + * + * + * library :: handle to library object + * module :: handle to module object + * + * + * Error code (module not listed) + * + * + * The module object is destroyed by the function in case of success + * + *************************************************************************/ + + FT_EXPORT_DEF(FT_Error) FT_Remove_Module( FT_Library library, + FT_Module module ); + + +#endif /* FTMODULE_H */ + + +/* END */ diff --git a/include/freetype/ftraster.h b/include/freetype/ftraster.h deleted file mode 100644 index 371ed2783..000000000 --- a/include/freetype/ftraster.h +++ /dev/null @@ -1,48 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftraster.h */ -/* */ -/* The FreeType glyph rasterizer (specification). */ -/* */ -/* Copyright 1996-2000 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 FTRASTER_H -#define FTRASTER_H - -#ifdef __cplusplus - extern "C" { -#endif - -#include - - /*************************************************************************/ - /* */ - /* Uncomment the following line if you are using ftraster.c as a */ - /* standalone module, fully independent of FreeType. */ - /* */ -/* #define _STANDALONE_ */ - -#ifndef FT_EXPORT_VAR -#define FT_EXPORT_VAR(x) extern x -#endif - - FT_EXPORT_VAR(FT_Raster_Funcs) ft_standard_raster; - -#ifdef __cplusplus - } -#endif - -#endif /* FTRASTER_H */ - - -/* END */ diff --git a/include/freetype/ftrender.h b/include/freetype/ftrender.h new file mode 100644 index 000000000..c0169f69b --- /dev/null +++ b/include/freetype/ftrender.h @@ -0,0 +1,152 @@ +/***************************************************************************/ +/* */ +/* ftrender.h */ +/* */ +/* FreeType renderer modules public interface */ +/* */ +/* Copyright 1996-2000 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 + + /************************************************************************* + * + * + * 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. + * + * 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. + * + * raster :: for ft_glyph_format_outline renderers only. this + * is a pointer to the corresponding raster object, + * if any.. + * + *************************************************************************/ + + typedef FT_Error (*FTRenderer_render)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_UInt mode ); + + typedef FT_Error (*FTRenderer_transform)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_Matrix* matrix, + FT_Vector* delta ); + + typedef void (*FTRenderer_getCBox)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_BBox *cbox ); + + typedef FT_Error (*FTRenderer_setMode)( FT_Renderer renderer, + FT_ULong mode_tag, + FT_Pointer mode_ptr ); + + typedef struct FT_Renderer_Class_ + { + FT_Module_Class root; + + FT_Glyph_Format glyph_format; + + FTRenderer_render render_glyph; + FTRenderer_transform transform_glyph; + FTRenderer_getCBox get_glyph_cbox; + FTRenderer_setMode set_mode; + + FT_Raster_Funcs* raster_class; + + } FT_Renderer_Class; + + + enum + { + ft_render_mode_antialias = 1 + }; + + /************************************************************************* + * + * + * FT_Get_Renderer + * + * + * retrieves the current renderer for a given glyph format. + * + * + * library :: handle to library object + * format :: glyph format + * + * + * 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_DEF(FT_Renderer) FT_Get_Renderer( FT_Library library, + FT_Glyph_Format format ); + + + /************************************************************************* + * + * + * FT_Set_Renderer + * + * + * Sets the current renderer to use, and set additional mode + * + * + * library :: handle to library object + * renderer :: handle to renderer object + * num_params :: number of additional parameters + * params :: additional parameters + * + * + * Error code. 0 means success. + * + * + * 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.. + * + *************************************************************************/ + + FT_EXPORT_DEF(FT_Error) FT_Set_Renderer( FT_Library library, + FT_Renderer renderer, + FT_UInt num_params, + FT_Parameter* parameters ); + + + +#endif /* FTMODULE_H */ + + +/* END */