ref: 0db8d1ab84d3bbde5d1c77e8e932120bee3f1a06
parent: f697866ec2a06fc7fd4ab550ffc81df669e8427e
author: Werner Lemberg <[email protected]>
date: Sun Jan 9 12:54:56 EST 2000
Formatting.
--- a/src/base/ftbbox.c
+++ b/src/base/ftbbox.c
@@ -15,7 +15,6 @@
/* */
/***************************************************************************/
-
/*************************************************************************/
/* */
/* This component has a _single_ role: to compute exact outline bounding */
--- a/src/base/ftdebug.h
+++ b/src/base/ftdebug.h
@@ -15,7 +15,6 @@
/* */
/***************************************************************************/
-
/*************************************************************************/
/* */
/* This component contains various macros and functions used to ease the */
--- a/src/base/ftdriver.h
+++ b/src/base/ftdriver.h
@@ -42,7 +42,7 @@
/* A driver method used to create a new driver object for a given */
/* format. */
/* */
- /* <Input> */
+ /* <InOut> */
/* driver :: A handle to the `new' driver object. The fields */
/* `library', `system', and `lock' are already set when the */
/* base layer calls this method. */
@@ -64,7 +64,7 @@
/* this call, and that this function should NOT destroy the driver */
/* object. */
/* */
- /* <Input> */
+ /* <InOut> */
/* driver :: A handle to target driver object. */
/* */
/* <Return> */
@@ -72,7 +72,6 @@
/* */
typedef FT_Error (*FTDriver_doneDriver)( FT_Driver driver );
-
/*************************************************************************/
/* */
@@ -88,11 +87,13 @@
/* `postscript names' interface which can be used to retrieve the */
/* PostScript name of a given glyph index). */
/* */
- /* <Input> */
+ /* <InOut> */
/* driver :: A handle to a driver object. */
- /* interface :: A string designing the interface. Examples */
- /* are `sfnt', `post_names', `charmaps', etc. */
/* */
+ /* <Input> */
+ /* interface :: A string designing the interface. Examples are */
+ /* `sfnt', `post_names', `charmaps', etc. */
+ /* */
/* <Return> */
/* A typeless pointer to the extension's interface (normally a table */
/* of function pointers). Returns NULL if the requested extension */
@@ -140,10 +141,14 @@
/* A driver method used to initialize a new face object. The object */
/* must be created by the caller. */
/* */
- /* <Input> */
+ /* <InOut> */
/* stream :: The input stream. */
+ /* */
+ /* <Input> */
/* typeface_index :: The face index in the font resource. Used to */
/* access individual faces in collections. */
+ /* */
+ /* <Output> */
/* face :: A handle to the new target face. */
/* */
/* <Return> */
@@ -174,7 +179,7 @@
/* function does NOT destroy the object, that is the responsibility */
/* of the caller. */
/* */
- /* <Input> */
+ /* <InOut> */
/* face :: A handle to the target face object. */
/* */
/* <Return> */
@@ -242,7 +247,7 @@
/* A driver method used to initialize a new size object. The object */
/* must be created by the caller. */
/* */
- /* <Input> */
+ /* <InOut> */
/* size :: A handle to the new size object. */
/* */
/* <Return> */
@@ -264,8 +269,10 @@
/* A driver method used to reset a size's character sizes (horizontal */
/* and vertical) expressed in fractional points. */
/* */
- /* <Input> */
+ /* <InOut> */
/* size :: A handle to the target size object. */
+ /* */
+ /* <Input> */
/* char_width :: The character width expressed in 26.6 */
/* fractional points. */
/* char_height :: The character height expressed in 26.6 */
@@ -296,8 +303,10 @@
/* A driver method used to reset a size's character sizes (horizontal */
/* and vertical) expressed in integer pixels. */
/* */
- /* <Input> */
+ /* <InOut> */
/* size :: A handle to the target size object. */
+ /* */
+ /* <Input> */
/* pixel_width :: The character width expressed in 26.6 fractional */
/* pixels. */
/* pixel_height :: The character height expressed in 26.6 fractional */
@@ -307,7 +316,7 @@
/* FreeType error code. 0 means success. */
/* */
/* <Note> */
- /* This function should work with all kinds of `Size' objects, either */
+ /* This function should work with all kinds of `size' objects, either */
/* fixed or scalable ones. */
/* */
typedef FT_Error (*FTDriver_setPixelSizes)( FT_Size size,
@@ -325,7 +334,7 @@
/* does NOT destroy the object; this is the responsibility of the */
/* caller. */
/* */
- /* <Input> */
+ /* <InOut> */
/* size :: A handle to the target size object. */
/* */
typedef void (*FTDriver_doneSize)( FT_Size size );
@@ -356,7 +365,7 @@
/* container where a single glyph can be loaded, either in outline or */
/* bitmap format. */
/* */
- /* <Input> */
+ /* <InOut> */
/* slot :: A handle to the new glyph slot object. */
/* */
/* <Return> */
@@ -374,7 +383,7 @@
/* A driver method used to finalize a given glyph slot. The object */
/* is not destroyed by this function. */
/* */
- /* <Input> */
+ /* <InOut> */
/* slot :: A handle to the new glyph slot object. */
/* */
typedef void (*FTDriver_doneGlyphSlot)( FT_GlyphSlot slot );
@@ -388,11 +397,13 @@
/* <Description> */
/* A driver method used to load a glyph within a given glyph slot. */
/* */
- /* <Input> */
+ /* <InOut> */
/* slot :: A handle to target slot object where the glyph will */
/* be loaded. */
/* size :: A handle to the source face size at which the glyph */
/* must be scaled/loaded. */
+ /* */
+ /* <Input> */
/* glyph_index :: The index of the glyph in the font file. */
/* load_flags :: A flag indicating what to load for this glyph. The */
/* FTLOAD_??? constants can be used to control the */
--- a/src/base/ftextend.c
+++ b/src/base/ftextend.c
@@ -1,34 +1,38 @@
-/*******************************************************************
- *
- * ftextend.h 2.0
- *
- * Extensions Implementation
- *
- * Copyright 1996-1999 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.
- *
- * This is an updated version of the extension component, now
- * located in the main library's source directory. It allows
- * the dynamic registration/use of various face object extensions
- * through a simple API.
- *
- ******************************************************************/
+/***************************************************************************/
+/* */
+/* ftextend.h */
+/* */
+/* FreeType extensions implementation (body). */
+/* */
+/* 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. */
+/* */
+/***************************************************************************/
-#include "ftextend.h"
-#include "ftobjs.h"
+ /*************************************************************************/
+ /* */
+ /* This is an updated version of the extension component, now located */
+ /* in the main library's source directory. It allows the dynamic */
+ /* registration/use of various face object extensions through a simple */
+ /* API. */
+ /* */
+ /*************************************************************************/
+#include <ftextend.h>
+#include <ftobjs.h>
+
/* required by the tracing mode */
#undef FT_COMPONENT
-#define FT_COMPONENT trace_extend
+#define FT_COMPONENT trace_extend
- typedef struct FT_Extension_Registry_
+ typedef struct FT_Extension_Registry_
{
FT_Int num_extensions;
FT_Long cur_offset;
@@ -37,17 +41,30 @@
} FT_Extension_Registry;
- /* Initialize the extension component */
-
+ /*************************************************************************/
+ /* */
+ /* <Function> */
+ /* FT_Init_Extensions */
+ /* */
+ /* <Description> */
+ /* Initializes the extension component. */
+ /* */
+ /* <InOut> */
+ /* driver :: A handle to the driver object. */
+ /* */
+ /* <Return> */
+ /* FreeType error code. 0 means success. */
+ /* */
LOCAL_FUNC
FT_Error FT_Init_Extensions( FT_Driver driver )
{
- FT_Error error;
+ FT_Error error;
FT_Memory memory;
FT_Extension_Registry* registry;
+
memory = driver->library->memory;
- if ( ALLOC( registry, sizeof (*registry) ) )
+ if ( ALLOC( registry, sizeof ( *registry ) ) )
return error;
registry->num_extensions = 0;
@@ -58,12 +75,25 @@
}
- /* Finalize the extension component */
-
+ /*************************************************************************/
+ /* */
+ /* <Function> */
+ /* FT_Done_Extensions */
+ /* */
+ /* <Description> */
+ /* Finalizes the extension component. */
+ /* */
+ /* <InOut> */
+ /* driver :: A handle to the driver object. */
+ /* */
+ /* <Return> */
+ /* FreeType error code. 0 means success. */
+ /* */
LOCAL_FUNC
FT_Error FT_Done_Extensions( FT_Driver driver )
{
FT_Memory memory = driver->memory;
+
FREE( driver->extensions );
return FT_Err_Ok;
@@ -70,24 +100,39 @@
}
- /* Register a new extension */
-
+ /*************************************************************************/
+ /* */
+ /* <Function> */
+ /* FT_Register_Extension */
+ /* */
+ /* <Description> */
+ /* Registers a new extension. */
+ /* */
+ /* <InOut> */
+ /* driver :: A handle to the driver object. */
+ /* class :: A pointer to a class describing the extension. */
+ /* */
+ /* <Return> */
+ /* FreeType error code. 0 means success. */
+ /* */
EXPORT_FUNC
FT_Error FT_Register_Extension( FT_Driver driver,
- FT_Extension_Class* clazz )
+ FT_Extension_Class* class )
{
FT_Extension_Registry* registry;
+
registry = (FT_Extension_Registry*)driver->extensions;
- if (registry)
+ if ( registry )
{
FT_Int n = registry->num_extensions;
FT_Extension_Class* cur = registry->classes + n;
+
if ( n >= FT_MAX_EXTENSIONS )
return FT_Err_Too_Many_Extensions;
- *cur = *clazz;
+ *cur = *class;
cur->offset = registry->cur_offset;
@@ -99,8 +144,26 @@
}
- /* Query an extension block by extension_ID */
-
+ /*************************************************************************/
+ /* */
+ /* <Function> */
+ /* FT_Get_Extension */
+ /* */
+ /* <Description> */
+ /* Queries an extension block by an extension ID string. */
+ /* */
+ /* <Input> */
+ /* face :: A handle to the face object. */
+ /* extension_id :: An ID string identifying the extension. */
+ /* */
+ /* <Output> */
+ /* extension_interface :: A generic pointer, usually pointing to a */
+ /* table of functions implementing the */
+ /* extension interface. */
+ /* */
+ /* <Return> */
+ /* A pointer to the extension block. */
+ /* */
EXPORT_FUNC
void* FT_Get_Extension( FT_Face face,
const char* extension_id,
@@ -107,12 +170,14 @@
void* *extension_interface )
{
FT_Extension_Registry* registry;
+
registry = (FT_Extension_Registry*)face->driver->extensions;
- if (registry && face->extensions)
+ if ( registry && face->extensions )
{
FT_Extension_Class* cur = registry->classes;
FT_Extension_Class* limit = cur + registry->num_extensions;
+
for ( ; cur < limit; cur++ )
if ( strcmp( cur->id, extension_id ) == 0 )
@@ -123,30 +188,48 @@
}
/* could not find the extension id */
+
*extension_interface = 0;
return 0;
}
- /* Destroy all extensions within a face object. Called by the */
- /* face object destructor. */
+ /*************************************************************************/
+ /* */
+ /* <Function> */
+ /* FT_Destroy_Extensions */
+ /* */
+ /* <Description> */
+ /* Destroys all extensions within a face object. */
+ /* */
+ /* <InOut> */
+ /* face :: A handle to the face object. */
+ /* */
+ /* <Return> */
+ /* FreeType error code. 0 means success. */
+ /* */
+ /* <Note> */
+ /* Called by the face object destructor. */
+ /* */
LOCAL_FUNC
FT_Error FT_Destroy_Extensions( FT_Face face )
{
FT_Extension_Registry* registry;
FT_Memory memory;
-
+
+
registry = (FT_Extension_Registry*)face->driver->extensions;
- if (registry && face->extensions)
+ if ( registry && face->extensions )
{
FT_Extension_Class* cur = registry->classes;
FT_Extension_Class* limit = cur + registry->num_extensions;
+
for ( ; cur < limit; cur++ )
{
char* ext = (char*)face->extensions + cur->offset;
- if (cur->finalize)
+ if ( cur->finalize )
cur->finalize( ext, face );
}
@@ -153,13 +236,29 @@
memory = face->driver->memory;
FREE( face->extensions );
}
+
return FT_Err_Ok;
}
- /* Create an extension within a face object. Called by the */
- /* face object constructor. */
-
+ /*************************************************************************/
+ /* */
+ /* <Function> */
+ /* FT_Create_Extensions */
+ /* */
+ /* <Description> */
+ /* Creates an extension object within a face object for all */
+ /* registered extensions. */
+ /* */
+ /* <InOut> */
+ /* face :: A handle to the face object. */
+ /* */
+ /* <Return> */
+ /* FreeType error code. 0 means success. */
+ /* */
+ /* <Note> */
+ /* Called by the face object constructor. */
+ /* */
LOCAL_FUNC
FT_Error FT_Create_Extensions( FT_Face face )
{
@@ -166,12 +265,15 @@
FT_Extension_Registry* registry;
FT_Memory memory;
FT_Error error;
+
face->extensions = 0;
- /* load extensions registry, exit succesfully if none is there */
+ /* load extensions registry, exit successfully if none is there */
+
registry = (FT_Extension_Registry*)face->driver->extensions;
- if (!registry) return FT_Err_Ok;
+ if ( !registry )
+ return FT_Err_Ok;
memory = face->driver->memory;
if ( ALLOC( face->extensions, registry->cur_offset ) )
@@ -180,18 +282,21 @@
{
FT_Extension_Class* cur = registry->classes;
FT_Extension_Class* limit = cur + registry->num_extensions;
+
for ( ; cur < limit; cur++ )
{
char* ext = (char*)face->extensions + cur->offset;
- if (cur->init)
+ if ( cur->init )
{
error = cur->init( ext, face );
- if (error) break;
+ if ( error )
+ break;
}
}
}
+
return error;
}
--- a/src/base/ftextend.h
+++ b/src/base/ftextend.h
@@ -1,25 +1,25 @@
-/*******************************************************************
- *
- * ftextend.h 2.0
- *
- * Extensions Interface.
- *
- * Copyright 1996-1999 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.
- *
- ******************************************************************/
+/***************************************************************************/
+/* */
+/* ftextend.h */
+/* */
+/* FreeType extensions implementation (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 FTEXTEND_H
#define FTEXTEND_H
-#include "ftconfig.h"
-#include "ftobjs.h"
+#include <ftconfig.h>
+#include <ftobjs.h>
#ifdef __cplusplus
@@ -26,92 +26,89 @@
extern "C" {
#endif
- /* The extensions don't need to be integrated at compile time into */
- /* the engine, only at link time. */
+ /*************************************************************************/
+ /* */
+ /* The extensions don't need to be integrated at compile time into the */
+ /* engine, only at link time. */
+ /* */
+ /*************************************************************************/
- /*****************************************************************
- *
- * <FuncType>
- * FT_Extension_Initializer
- *
- * <Description>
- * Each new face object can have several extensions associated
- * to it at creation time. This function is used to initialize
- * a given extension data for a given face.
- *
- * <Input>
- * ext :: a typeless pointer to the extension data.
- * face :: handle to the source face object the extension is
- * associated with
- *
- * <Return>
- * Error condition. 0 means success
- *
- * <Note>
- * In case of error, the initializer should not destroy the
- * extension data, as the finalizer will get called later
- * by the function's caller..
- *
- *****************************************************************/
-
+ /*************************************************************************/
+ /* */
+ /* <FuncType> */
+ /* FT_Extension_Initializer */
+ /* */
+ /* <Description> */
+ /* Each new face object can have several extensions associated with */
+ /* it at creation time. This function is used to initialize given */
+ /* extension data for a given face. */
+ /* */
+ /* <InOut> */
+ /* ext :: A typeless pointer to the extension data. */
+ /* face :: A handle to the source face object the extension is */
+ /* associated with. */
+ /* */
+ /* <Return> */
+ /* FreeType error code. 0 means success. */
+ /* */
+ /* <Note> */
+ /* In case of error, the initializer should not destroy the extension */
+ /* data, as the finalizer will get called later by the function's */
+ /* caller. */
+ /* */
typedef FT_Error (*FT_Extension_Initializer)( void* ext,
FT_Face face );
- /*****************************************************************
- *
- * <FuncType>
- * FT_Extension_Finalizer
- *
- * <Description>
- * Each new face object can have several extensions associated
- * to it at creation time. This function is used to finalize
- * a given extension data for a given face. This occurs before
- * the face object itself is finalized.
- *
- * <Input>
- * ext :: a typeless pointer to the extension data.
- * face :: handle to the source face object the extension is
- * associated with
- *
- *****************************************************************/
- typedef void (*FT_Extension_Finalizer)( void* ext, FT_Face face );
+ /*************************************************************************/
+ /* */
+ /* <FuncType> */
+ /* FT_Extension_Finalizer */
+ /* */
+ /* <Description> */
+ /* Each new face object can have several extensions associated with */
+ /* it at creation time. This function is used to finalize given */
+ /* extension data for a given face; it occurs before the face object */
+ /* itself is finalized. */
+ /* */
+ /* <InOut> */
+ /* ext :: A typeless pointer to the extension data. */
+ /* face :: A handle to the source face object the extension is */
+ /* associated with. */
+ /* */
+ typedef void (*FT_Extension_Finalizer)( void* ext,
+ FT_Face face );
- /*****************************************************************
- *
- * <Struct>
- * FT_Extension_Class
- *
- * <Description>
- * A simple structure used to describe a given extension to
- * the FreeType base layer. An FT_Extension_Class is used as
- * a parameter for FT_Register_Extension.
- *
- * <Fields>
- * id :: the extension's id. This is a normal C string
- * that is used to uniquely reference the extension's
- * interface.
- *
- * size :: the size in bytes of the extension data that must
- * be associated with each face object.
- *
- * init :: a pointer to the extension data's initializer
- * finalize :: a pointer to the extension data's finalizer
- *
- * inteface :: this pointer can be anything, but should usually
- * point to a table of function pointers which implement
- * the extension's interface.
- *
- * offset :: this field is set and used within the base layer
- * and should be set to 0 when registering an
- * extension through FT_Register_Extension. It contains
- * an offset within the face's extension block for the
- * current extension's data.
- *
- *****************************************************************/
-
- typedef struct FT_Extension_Class_
+ /*************************************************************************/
+ /* */
+ /* <Struct> */
+ /* FT_Extension_Class */
+ /* */
+ /* <Description> */
+ /* A simple structure used to describe a given extension to the */
+ /* FreeType base layer. An FT_Extension_Class is used as a parameter */
+ /* for FT_Register_Extension(). */
+ /* */
+ /* <Fields> */
+ /* id :: The extension's ID. This is a normal C string that */
+ /* is used to uniquely reference the extension's */
+ /* interface. */
+ /* size :: The size in bytes of the extension data that must be */
+ /* associated with each face object. */
+ /* init :: A pointer to the extension data's initializer. */
+ /* finalize :: A pointer to the extension data's finalizer. */
+ /* interface :: This pointer can be anything, but should usually */
+ /* point to a table of function pointers which implement */
+ /* the extension's interface. */
+ /* */
+ /* offset :: This field is set and used within the base layer and */
+ /* should be set to 0 when registering an extension */
+ /* through FT_Register_Extension(). It contains an */
+ /* offset within the face's extension block for the */
+ /* current extension's data. */
+ /* */
+ typedef struct FT_Extension_Class_
{
const char* id;
FT_ULong size;
@@ -130,6 +127,8 @@
#ifdef FT_CONFIG_OPTION_EXTEND_ENGINE
+
+
/* Initialize the extension component */
LOCAL_DEF
FT_Error FT_Init_Extensions( FT_Library library );
@@ -147,13 +146,17 @@
/* face object destructor. */
LOCAL_DEF
FT_Error FT_Destroy_Extensions( FT_Face face );
+
+
#endif
- /* Returns an extension's data & inteface according to its ID */
+
+ /* Returns an extension's data & interface according to its ID */
EXPORT_DEF
void* FT_Get_Extension( FT_Face face,
const char* extension_id,
void* *extension_interface );
+
#ifdef __cplusplus
}
#endif