ref: 53078ee7502c4556a54aacf9ccd09906c623d173
parent: 206297435e4fb021cf24faf7fe80fc8ca6d1abef
author: David Turner <[email protected]>
date: Wed Jun 21 20:26:54 EDT 2000
removed obsolete headers, added new ones
--- a/include/freetype/ftgrays.h
+++ /dev/null
@@ -1,49 +1,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 <freetype/ftimage.h>
-#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
--- /dev/null
+++ b/include/freetype/ftmodule.h
@@ -1,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 <freetype/freetype.h>
+
+ /* 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 );
+
+
+ /*************************************************************************
+ *
+ * <Struct>
+ * FT_Module_Class
+ *
+ * <Description>
+ * The module class descriptor.
+ *
+ * <Fields>
+ * 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;
+
+
+
+ /*************************************************************************
+ *
+ * <Function>
+ * FT_Add_Module
+ *
+ * <Description>
+ * Add a new module to a given library instance.
+ *
+ * <Input>
+ * library :: handle to library object
+ * clazz :: pointer to class descriptor for the module
+ *
+ * <Return>
+ * Error code. 0 means success
+ *
+ * <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
+ *
+ *************************************************************************/
+
+ FT_EXPORT_DEF(FT_Error) FT_Add_Module( FT_Library library,
+ const FT_Module_Class* clazz );
+
+
+ /*************************************************************************
+ *
+ * <Function>
+ * FT_Get_Module
+ *
+ * <Description>
+ * Find a module by its name.
+ *
+ * <Input>
+ * library :: handle to library object
+ * module_name :: the module's ASCII name.
+ *
+ * <Return>
+ * Module handle, 0 if none was found.
+ *
+ * <Note>
+ * 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 );
+
+
+ /*************************************************************************
+ *
+ * <Function>
+ * FT_Get_Module_Interface
+ *
+ * <Description>
+ * Find a module and returns it's specific interface as a void*
+ *
+ * <Input>
+ * library :: handle to library object
+ * module_name :: the module's ASCII name.
+ *
+ * <Return>
+ * Module specific interface, if any
+ *
+ * <Note>
+ * 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 );
+
+ /*************************************************************************
+ *
+ * <Function>
+ * FT_Remove_Module
+ *
+ * <Description>
+ * Removes a given module from a library instance.
+ *
+ * <Input>
+ * library :: handle to library object
+ * module :: handle to module object
+ *
+ * <Return>
+ * Error code (module not listed)
+ *
+ * <Note>
+ * 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 */
--- a/include/freetype/ftraster.h
+++ /dev/null
@@ -1,48 +1,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 <freetype/ftimage.h>
-
- /*************************************************************************/
- /* */
- /* 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 */
--- /dev/null
+++ b/include/freetype/ftrender.h
@@ -1,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 <freetype/ftmodule.h>
+
+ /*************************************************************************
+ *
+ * <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.
+ *
+ * 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
+ };
+
+ /*************************************************************************
+ *
+ * <Function>
+ * FT_Get_Renderer
+ *
+ * <Description>
+ * retrieves the current renderer for a given glyph format.
+ *
+ * <Input>
+ * library :: handle to library object
+ * format :: glyph format
+ *
+ * <Return>
+ * 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_DEF(FT_Renderer) FT_Get_Renderer( FT_Library library,
+ FT_Glyph_Format format );
+
+
+ /*************************************************************************
+ *
+ * <Function>
+ * FT_Set_Renderer
+ *
+ * <Description>
+ * Sets the current renderer to use, and set additional mode
+ *
+ * <Input>
+ * library :: handle to library object
+ * renderer :: handle to renderer object
+ * num_params :: number of additional parameters
+ * params :: additional parameters
+ *
+ * <Return>
+ * 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..
+ *
+ *************************************************************************/
+
+ 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 */