shithub: freetype+ttf2subf

Download patch

ref: 53078ee7502c4556a54aacf9ccd09906c623d173
parent: 206297435e4fb021cf24faf7fe80fc8ca6d1abef
author: David Turner <[email protected]>
date: Wed Jun 21 20:26:54 EDT 2000

removed obsolete headers, added new ones

git/fs: mount .git/fs: mount/attach disallowed
--- 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 */