a new massive grunt work. Redefined the EXPORT_DEF,

EXPORT_FUNC, BASE_DEF and BASE_FUNC macros to
let them take an argument..

This is needed to compile the library as a DLL on some platforms
that have different compiler conventions..
This commit is contained in:
David Turner 2000-05-12 12:17:15 +00:00
parent 4f2c5544bb
commit bfe2f98f1f
44 changed files with 549 additions and 1573 deletions

38
CHANGES
View File

@ -1,10 +1,46 @@
LATEST CHANGES - LATEST CHANGES -
- yet another massive grunt work. I've changed the definition of the
EXPORT_DEF, EXPORT_FUNC, BASE_DEF & BASE_FUNC macros. These now take
an argument, which is the function's return value type.
This is necessary to compile FreeType as a DLL on Windows and OS/2.
Depending on the compiler used, a compiler-specific keyword like __export
or __system must be placed before (VisualC++) or after (BorlandC++)
the type..
Of course, this needed a lot of changes throughout the source code
to make it compile again... All cleaned up now, apparently..
Note also that there is a new EXPORT_VAR macro defined to allow the
_declaration_ of an exportable public (constant) variable. This is the
case of the raster interfaces (see ftraster.h and ftgrays.h), as well
as each module's interface (see sfdriver.h, psdriver.h, etc..)
- new feature: it is now possible to pass extra parameters to font
drivers when creating a new face object. For now, this
capability is unused. It could however prove to be useful
in a near future..
the FT_Open_Args structure was changes, as well as the internal
driver interface (the specific "init_face" module function has now
a different signature).
- updated the tutorial (not finished though).
- added the declaration of FT_New_Memory_Face in <freetype/freetype.h>, as
it was missing from the public header (the implementation was already
in "ftobjs.c").
- the file <freetype/fterrors.h> has been seriously updated in order to
allow the automatic generation of error message tables. See the comments
within it for more information.
- major directory hierarchy re-organisation. This was done for two things: - major directory hierarchy re-organisation. This was done for two things:
* first, to ease the "manual" compilation of the library by requiring * first, to ease the "manual" compilation of the library by requiring
at lot less include paths :-) at lot less include paths :-)
* second, to allow external programs to effectively access internal * second, to allow external programs to effectively access internal
data fields. For example, this can be extremely useful if someone data fields. For example, this can be extremely useful if someone
wants to write a font producer or a font manager on top of FreeType. wants to write a font producer or a font manager on top of FreeType.

View File

@ -25,12 +25,11 @@
extern "C" { extern "C" {
#endif #endif
#ifndef EXPORT_DEF #ifndef EXPORT_VAR
#define EXPORT_DEF /* nothing */ #define EXPORT_VAR(x) extern x
#endif #endif
EXPORT_DEF EXPORT_VAR(FT_Raster_Funcs) ft_black2_raster;
FT_Raster_Funcs ft_black2_raster;
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -165,19 +165,23 @@
#endif #endif
#ifdef FT_MAKE_OPTION_SINGLE_LIBRARY_OBJECT #ifdef FT_MAKE_OPTION_SINGLE_LIBRARY_OBJECT
#define BASE_DEF LOCAL_DEF #define BASE_DEF(x) static x
#define BASE_FUNC LOCAL_FUNC #define BASE_FUNC(x) static x
#else #else
#define BASE_DEF extern #define BASE_DEF(x) extern x
#define BASE_FUNC /* nothing */ #define BASE_FUNC(x) extern x /* nothing */
#endif #endif
#ifndef EXPORT_DEF #ifndef EXPORT_DEF
#define EXPORT_DEF extern #define EXPORT_DEF(x) extern x
#endif #endif
#ifndef EXPORT_FUNC #ifndef EXPORT_FUNC
#define EXPORT_FUNC /* nothing */ #define EXPORT_FUNC(x) extern x
#endif
#ifndef EXPORT_VAR
#define EXPORT_VAR(x) extern x
#endif #endif
#endif /* FTCONFIG_H */ #endif /* FTCONFIG_H */

View File

@ -49,7 +49,7 @@
/* necessary to compile the library as a DLL. */ /* necessary to compile the library as a DLL. */
/* */ /* */
#ifndef EXPORT_DEF #ifndef EXPORT_DEF
#define EXPORT_DEF extern #define EXPORT_DEF(x) extern x
#endif #endif
#include <freetype/fterrors.h> #include <freetype/fterrors.h>
@ -1352,8 +1352,7 @@
/* <Return> */ /* <Return> */
/* Error code. 0 means success. */ /* Error code. 0 means success. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Init_FreeType( FT_Library* library );
FT_Error FT_Init_FreeType( FT_Library* library );
/*************************************************************************/ /*************************************************************************/
@ -1371,8 +1370,7 @@
/* <Return> */ /* <Return> */
/* Error code. 0 means success. */ /* Error code. 0 means success. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Done_FreeType( FT_Library library );
FT_Error FT_Done_FreeType( FT_Library library );
/*************************************************************************/ /*************************************************************************/
@ -1519,11 +1517,10 @@
/* through the FT_New_GlyphSlot() API function. Slots are linked in */ /* through the FT_New_GlyphSlot() API function. Slots are linked in */
/* a single list through their `next' field. */ /* a single list through their `next' field. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_New_Face( FT_Library library,
FT_Error FT_New_Face( FT_Library library, const char* filepathname,
const char* filepathname, FT_Long face_index,
FT_Long face_index, FT_Face* face );
FT_Face* face );
/*************************************************************************/ /*************************************************************************/
@ -1564,12 +1561,11 @@
/* `*face'. Its return value should be 0 if the resource is */ /* `*face'. Its return value should be 0 if the resource is */
/* recognized, or non-zero if not. */ /* recognized, or non-zero if not. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_New_Memory_Face( FT_Library library,
FT_Error FT_New_Memory_Face( FT_Library library, void* file_base,
void* file_base, FT_Long file_size,
FT_Long file_size, FT_Long face_index,
FT_Long face_index, FT_Face* face );
FT_Face* face );
/*************************************************************************/ /*************************************************************************/
@ -1607,11 +1603,10 @@
/* when the face is destroyed. This means calling the stream's */ /* when the face is destroyed. This means calling the stream's */
/* "close" function. */ /* "close" function. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Open_Face( FT_Library library,
FT_Error FT_Open_Face( FT_Library library, FT_Open_Args* args,
FT_Open_Args* args, FT_Long face_index,
FT_Long face_index, FT_Face* face );
FT_Face* face );
/*************************************************************************/ /*************************************************************************/
@ -1645,9 +1640,8 @@
/* when invoking this function. Most drivers simply do not implement */ /* when invoking this function. Most drivers simply do not implement */
/* file attachments.. */ /* file attachments.. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Attach_File( FT_Face face,
FT_Error FT_Attach_File( FT_Face face, const char* filepathname );
const char* filepathname );
/*************************************************************************/ /*************************************************************************/
/* */ /* */
@ -1674,9 +1668,8 @@
/* when invoking this function. Most drivers simply do not implement */ /* when invoking this function. Most drivers simply do not implement */
/* file attachments.. */ /* file attachments.. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Attach_Stream( FT_Face face,
FT_Error FT_Attach_Stream( FT_Face face, FT_Open_Args* parameters );
FT_Open_Args* parameters );
/*************************************************************************/ /*************************************************************************/
@ -1694,8 +1687,7 @@
/* <Return> */ /* <Return> */
/* Error code. 0 means success. */ /* Error code. 0 means success. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Done_Face( FT_Face face );
FT_Error FT_Done_Face( FT_Face face );
/*************************************************************************/ /*************************************************************************/
@ -1719,12 +1711,11 @@
/* When dealing with fixed-size faces (i.e., non-scalable formats), */ /* When dealing with fixed-size faces (i.e., non-scalable formats), */
/* use the function FT_Set_Pixel_Sizes(). */ /* use the function FT_Set_Pixel_Sizes(). */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Set_Char_Size( FT_Face face,
FT_Error FT_Set_Char_Size( FT_Face face, FT_F26Dot6 char_width,
FT_F26Dot6 char_width, FT_F26Dot6 char_height,
FT_F26Dot6 char_height, FT_UInt horz_resolution,
FT_UInt horz_resolution, FT_UInt vert_resolution );
FT_UInt vert_resolution );
/*************************************************************************/ /*************************************************************************/
@ -1744,10 +1735,9 @@
/* <Return> */ /* <Return> */
/* Error code. 0 means success. */ /* Error code. 0 means success. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Set_Pixel_Sizes( FT_Face face,
FT_Error FT_Set_Pixel_Sizes( FT_Face face, FT_UInt pixel_width,
FT_UInt pixel_width, FT_UInt pixel_height );
FT_UInt pixel_height );
/*************************************************************************/ /*************************************************************************/
@ -1774,10 +1764,9 @@
/* <Return> */ /* <Return> */
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Load_Glyph( FT_Face face,
FT_Error FT_Load_Glyph( FT_Face face, FT_UInt glyph_index,
FT_UInt glyph_index, FT_Int load_flags );
FT_Int load_flags );
/*************************************************************************/ /*************************************************************************/
@ -1809,10 +1798,9 @@
/* is not defined in the charmap, this function will return an */ /* is not defined in the charmap, this function will return an */
/* error.. */ /* error.. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Load_Char( FT_Face face,
FT_Error FT_Load_Char( FT_Face face, FT_ULong char_code,
FT_ULong char_code, FT_Int load_flags );
FT_Int load_flags );
/*************************************************************************/ /*************************************************************************/
/* */ /* */
@ -1988,24 +1976,21 @@
/* kernings, are out of the scope of this API function -- they can be */ /* kernings, are out of the scope of this API function -- they can be */
/* implemented through format-specific interfaces. */ /* implemented through format-specific interfaces. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Get_Kerning( FT_Face face,
FT_Error FT_Get_Kerning( FT_Face face, FT_UInt left_glyph,
FT_UInt left_glyph, FT_UInt right_glyph,
FT_UInt right_glyph, FT_Vector* kerning );
FT_Vector* kerning );
/* XXX : Not implemented yet, but should come soon */ /* XXX : Not implemented yet, but should come soon */
#if 0 #if 0
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Select_Charmap( FT_Face face,
FT_Error FT_Select_Charmap( FT_Face face, FT_Encoding encoding );
FT_Encoding encoding );
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Error FT_Set_Charmap( FT_Face face,
FT_Error FT_Set_Charmap( FT_Face face, FT_CharMap charmap );
FT_CharMap charmap );
#endif #endif
/*************************************************************************/ /*************************************************************************/
@ -2024,9 +2009,8 @@
/* <Return> */ /* <Return> */
/* The glyph index. 0 means `undefined character code'. */ /* The glyph index. 0 means `undefined character code'. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_UInt) FT_Get_Char_Index( FT_Face face,
FT_UInt FT_Get_Char_Index( FT_Face face, FT_ULong charcode );
FT_ULong charcode );
/*************************************************************************/ /*************************************************************************/
@ -2052,10 +2036,9 @@
/* divide by zero, it simply returns `MaxInt' or `MinInt' depending */ /* divide by zero, it simply returns `MaxInt' or `MinInt' depending */
/* on the signs of `a' and `b'. */ /* on the signs of `a' and `b'. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Long) FT_MulDiv( FT_Long a,
FT_Long FT_MulDiv( FT_Long a, FT_Long b,
FT_Long b, FT_Long c );
FT_Long c );
/*************************************************************************/ /*************************************************************************/
@ -2087,9 +2070,8 @@
/* _second_ argument of this function; this can make a great */ /* _second_ argument of this function; this can make a great */
/* difference. */ /* difference. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Long) FT_MulFix( FT_Long a,
FT_Long FT_MulFix( FT_Long a, FT_Long b );
FT_Long b );
/*************************************************************************/ /*************************************************************************/
@ -2115,9 +2097,8 @@
/* in 32 bits, then the division is computed directly. Otherwise, */ /* in 32 bits, then the division is computed directly. Otherwise, */
/* we use a specialised version of the old FT_MulDiv64 */ /* we use a specialised version of the old FT_MulDiv64 */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Long) FT_DivFix( FT_Long a,
FT_Long FT_DivFix( FT_Long a, FT_Long b );
FT_Long b );
/*************************************************************************/ /*************************************************************************/
@ -2148,10 +2129,9 @@
/* */ /* */
/* It will use the raster correponding to the default glyph format. */ /* It will use the raster correponding to the default glyph format. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Outline_Get_Bitmap( FT_Library library,
FT_Error FT_Outline_Get_Bitmap( FT_Library library, FT_Outline* outline,
FT_Outline* outline, FT_Bitmap* map );
FT_Bitmap* map );
/*************************************************************************/ /*************************************************************************/
/* */ /* */
@ -2184,10 +2164,9 @@
/* scan converter is called, which means that the value you give it */ /* scan converter is called, which means that the value you give it */
/* is actually ignored.. */ /* is actually ignored.. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Outline_Render( FT_Library library,
FT_Error FT_Outline_Render( FT_Library library, FT_Outline* outline,
FT_Outline* outline, FT_Raster_Params* params );
FT_Raster_Params* params );
/*************************************************************************/ /*************************************************************************/
/* */ /* */
@ -2213,10 +2192,9 @@
/* <Return> */ /* <Return> */
/* Error code. 0 means sucess. */ /* Error code. 0 means sucess. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(int) FT_Outline_Decompose( FT_Outline* outline,
int FT_Outline_Decompose( FT_Outline* outline, FT_Outline_Funcs* funcs,
FT_Outline_Funcs* funcs, void* user );
void* user );
/*************************************************************************/ /*************************************************************************/
@ -2253,11 +2231,10 @@
/* code of this function, replacing allocations with `malloc()' if */ /* code of this function, replacing allocations with `malloc()' if */
/* you want to control where the objects go. */ /* you want to control where the objects go. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Outline_New( FT_Library library,
FT_Error FT_Outline_New( FT_Library library, FT_UInt numPoints,
FT_UInt numPoints, FT_Int numContours,
FT_Int numContours, FT_Outline* outline );
FT_Outline* outline );
/*************************************************************************/ /*************************************************************************/
@ -2289,9 +2266,8 @@
/* of this function, replacing allocations with `malloc()' in your */ /* of this function, replacing allocations with `malloc()' in your */
/* application if you want something simpler. */ /* application if you want something simpler. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Outline_Done( FT_Library library,
FT_Error FT_Outline_Done( FT_Library library, FT_Outline* outline );
FT_Outline* outline );
/*************************************************************************/ /*************************************************************************/
/* */ /* */
@ -2319,9 +2295,8 @@
/* <MT-Note> */ /* <MT-Note> */
/* Yes. */ /* Yes. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(void) FT_Outline_Get_CBox( FT_Outline* outline,
void FT_Outline_Get_CBox( FT_Outline* outline, FT_BBox* cbox );
FT_BBox* cbox );
/*************************************************************************/ /*************************************************************************/
@ -2340,10 +2315,9 @@
/* <MT-Note> */ /* <MT-Note> */
/* Yes. */ /* Yes. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(void) FT_Outline_Translate( FT_Outline* outline,
void FT_Outline_Translate( FT_Outline* outline, FT_Pos xOffset,
FT_Pos xOffset, FT_Pos yOffset );
FT_Pos yOffset );
/*************************************************************************/ /*************************************************************************/
@ -2372,9 +2346,8 @@
/* */ /* */
/* - the new raster is registered for the glyph format */ /* - the new raster is registered for the glyph format */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Set_Raster( FT_Library library,
FT_Error FT_Set_Raster( FT_Library library, FT_Raster_Funcs* raster_funcs );
FT_Raster_Funcs* raster_funcs );
/*************************************************************************/ /*************************************************************************/
@ -2397,9 +2370,8 @@
/* as FT_Set_Raster unregisters the previous raster for a given */ /* as FT_Set_Raster unregisters the previous raster for a given */
/* glyph format.. */ /* glyph format.. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Unset_Raster( FT_Library library,
FT_Error FT_Unset_Raster( FT_Library library, FT_Raster_Funcs* raster_funcs );
FT_Raster_Funcs* raster_funcs );
/************************************************************************* /*************************************************************************
@ -2424,10 +2396,9 @@
* *
*************************************************************************/ *************************************************************************/
EXPORT_DEF EXPORT_DEF(FT_Raster) FT_Get_Raster( FT_Library library,
FT_Raster FT_Get_Raster( FT_Library library, FT_Glyph_Format glyph_format,
FT_Glyph_Format glyph_format, FT_Raster_Funcs *raster_funcs );
FT_Raster_Funcs *raster_funcs );
/*************************************************************************/ /*************************************************************************/
@ -2446,11 +2417,10 @@
/* <Return> */ /* <Return> */
/* Error code. 0 means success. */ /* Error code. 0 means success. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Set_Raster_Mode( FT_Library library,
FT_Error FT_Set_Raster_Mode( FT_Library library, FT_Glyph_Format format,
FT_Glyph_Format format, unsigned long mode,
unsigned long mode, void* args );
void* args );
/***************************************************************************/ /***************************************************************************/
@ -2486,9 +2456,8 @@
/* <Return> */ /* <Return> */
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Outline_Copy( FT_Outline* source,
FT_Error FT_Outline_Copy( FT_Outline* source, FT_Outline* target );
FT_Outline* target );
@ -2512,9 +2481,8 @@
/* You can use FT_Outline_Translate() if you need to translate the */ /* You can use FT_Outline_Translate() if you need to translate the */
/* outline's points. */ /* outline's points. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(void) FT_Outline_Transform( FT_Outline* outline,
void FT_Outline_Transform( FT_Outline* outline, FT_Matrix* matrix );
FT_Matrix* matrix );
/*************************************************************************/ /*************************************************************************/
/* */ /* */
@ -2535,8 +2503,7 @@
/* It shouldn't be used by a normal client application, unless it */ /* It shouldn't be used by a normal client application, unless it */
/* knows what it's doing.. */ /* knows what it's doing.. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(void) FT_Outline_Reverse( FT_Outline* outline );
void FT_Outline_Reverse( FT_Outline* outline );
/*************************************************************************/ /*************************************************************************/
@ -2556,9 +2523,8 @@
/* <MT-Note> */ /* <MT-Note> */
/* Yes. */ /* Yes. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(void) FT_Vector_Transform( FT_Vector* vector,
void FT_Vector_Transform( FT_Vector* vector, FT_Matrix* matrix );
FT_Matrix* matrix );
/*************************************************************************/ /*************************************************************************/
@ -2578,9 +2544,8 @@
/* <MT-Note> */ /* <MT-Note> */
/* Yes. */ /* Yes. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(void) FT_Matrix_Multiply( FT_Matrix* a,
void FT_Matrix_Multiply( FT_Matrix* a, FT_Matrix* b );
FT_Matrix* b );
/*************************************************************************/ /*************************************************************************/
@ -2601,8 +2566,7 @@
/* <MT-Note> */ /* <MT-Note> */
/* Yes. */ /* Yes. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Matrix_Invert( FT_Matrix* matrix );
FT_Error FT_Matrix_Invert( FT_Matrix* matrix );
/*************************************************************************/ /*************************************************************************/
/* */ /* */
@ -2615,8 +2579,7 @@
/* <InOut> */ /* <InOut> */
/* library :: A handle to a new library object. */ /* library :: A handle to a new library object. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(void) FT_Default_Drivers( FT_Library library );
void FT_Default_Drivers( FT_Library library );
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -58,9 +58,8 @@
/* <Return> */ /* <Return> */
/* Error code. 0 means success. */ /* Error code. 0 means success. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Raster_GetBBox( FT_Outline* outline,
FT_Error FT_Raster_GetBBox( FT_Outline* outline, FT_BBox* abbox );
FT_BBox* abbox );
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -200,13 +200,12 @@
* *
***********************************************************************/ ***********************************************************************/
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Get_Glyph_Bitmap( FT_Face face,
FT_Error FT_Get_Glyph_Bitmap( FT_Face face, FT_UInt glyph_index,
FT_UInt glyph_index, FT_UInt load_flags,
FT_UInt load_flags, FT_Int grays,
FT_Int grays, FT_Vector* origin,
FT_Vector* origin, FT_BitmapGlyph *abitglyph );
FT_BitmapGlyph *abitglyph );
/*********************************************************************** /***********************************************************************
@ -238,11 +237,10 @@
* *
***********************************************************************/ ***********************************************************************/
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Get_Glyph_Outline( FT_Face face,
FT_Error FT_Get_Glyph_Outline( FT_Face face, FT_UInt glyph_index,
FT_UInt glyph_index, FT_UInt load_flags,
FT_UInt load_flags, FT_OutlineGlyph *vecglyph );
FT_OutlineGlyph *vecglyph );
/*********************************************************************** /***********************************************************************
@ -266,10 +264,9 @@
* *
***********************************************************************/ ***********************************************************************/
EXPORT_DEF EXPORT_DEF(void) FT_Set_Transform( FT_Face face,
void FT_Set_Transform( FT_Face face, FT_Matrix* matrix,
FT_Matrix* matrix, FT_Vector* delta );
FT_Vector* delta );
/*********************************************************************** /***********************************************************************
@ -285,8 +282,7 @@
* *
***********************************************************************/ ***********************************************************************/
EXPORT_DEF EXPORT_DEF(void) FT_Done_Glyph( FT_Glyph glyph );
void FT_Done_Glyph( FT_Glyph glyph );
/*********************************************************************** /***********************************************************************
@ -313,8 +309,7 @@
* *
***********************************************************************/ ***********************************************************************/
EXPORT_DEF EXPORT_DEF(void) FT_Glyph_Get_Box( FT_Glyph glyph,
void FT_Glyph_Get_Box( FT_Glyph glyph, FT_BBox *box );
FT_BBox *box );
#endif /* FTGLYPH_H */ #endif /* FTGLYPH_H */

View File

@ -11,10 +11,10 @@
/* On some systems and compilers (Win32 mostly), an extra keyword is */ /* On some systems and compilers (Win32 mostly), an extra keyword is */
/* necessary to compile the library as a DLL. */ /* necessary to compile the library as a DLL. */
/* */ /* */
#ifndef EXPORT_DEF #ifndef EXPORT_VAR
#define EXPORT_DEF extern #define EXPORT_VAR(x) extern x
#endif #endif
EXPORT_DEF FT_Raster_Funcs ft_grays_raster; EXPORT_VAR(FT_Raster_Funcs) ft_grays_raster;
#endif #endif

View File

@ -33,12 +33,11 @@
#include <freetype/freetype.h> #include <freetype/freetype.h>
#ifndef EXPORT_DEF #ifndef EXPORT_VAR
#define EXPORT_DEF /* nothing */ #define EXPORT_VAR(x) x
#endif #endif
EXPORT_DEF EXPORT_VAR(FT_Raster_Funcs) ft_raster_funcs;
FT_Raster_Funcs ft_raster_funcs;
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -41,8 +41,7 @@
#define SQRT_64( z ) FT_Sqrt64( z ) #define SQRT_64( z ) FT_Sqrt64( z )
EXPORT_DEF EXPORT_DEF(FT_Int32) FT_Sqrt64( FT_Int64 x );
FT_Int32 FT_Sqrt64( FT_Int64 x );
#endif /* OLD_CALCS */ #endif /* OLD_CALCS */
@ -59,21 +58,17 @@
#define MUL_64( x, y, z ) FT_MulTo64( x, y, &z ) #define MUL_64( x, y, z ) FT_MulTo64( x, y, &z )
#define DIV_64( x, y ) FT_Div64by32( &x, y ) #define DIV_64( x, y ) FT_Div64by32( &x, y )
EXPORT_DEF EXPORT_DEF(void) FT_Add64 ( FT_Int64* x, FT_Int64* y, FT_Int64* z );
void FT_Add64 ( FT_Int64* x, FT_Int64* y, FT_Int64* z );
EXPORT_DEF EXPORT_DEF(void) FT_MulTo64 ( FT_Int32 x, FT_Int32 y, FT_Int64* z );
void FT_MulTo64 ( FT_Int32 x, FT_Int32 y, FT_Int64* z );
EXPORT_DEF(FT_Int32) FT_Div64by32( FT_Int64* x, FT_Int32 y );
EXPORT_DEF
FT_Int32 FT_Div64by32( FT_Int64* x, FT_Int32 y );
#ifdef FT_CONFIG_OPTION_OLD_CALCS #ifdef FT_CONFIG_OPTION_OLD_CALCS
#define SQRT_64( z ) FT_Sqrt64( &z ) #define SQRT_64( z ) FT_Sqrt64( &z )
EXPORT_DEF EXPORT_DEF(FT_Int32) FT_Sqrt64( FT_Int64* x );
FT_Int32 FT_Sqrt64( FT_Int64* x );
#endif /* OLD_CALC */ #endif /* OLD_CALC */
@ -84,8 +79,7 @@
#define SQRT_32( x ) FT_Sqrt32( x ) #define SQRT_32( x ) FT_Sqrt32( x )
BASE_DEF BASE_DEF(FT_Int32) FT_Sqrt32( FT_Int32 l );
FT_Int32 FT_Sqrt32( FT_Int32 l );
#endif #endif
/*************************************************************************/ /*************************************************************************/

View File

@ -124,9 +124,8 @@
} while ( 0 ) } while ( 0 )
EXPORT_DEF EXPORT_DEF(void) FT_SetTraceLevel( FT_Trace component,
void FT_SetTraceLevel( FT_Trace component, char level );
char level );
#elif defined( FT_DEBUG_LEVEL_ERROR ) #elif defined( FT_DEBUG_LEVEL_ERROR )
@ -170,10 +169,10 @@
} while ( 0 ) } while ( 0 )
/* print a message */ /* print a message */
extern void FT_Message( const char* fmt, ... ); EXPORT_DEF(void) FT_Message( const char* fmt, ... );
/* print a message and exit */ /* print a message and exit */
extern void FT_Panic ( const char* fmt, ... ); EXPORT_DEF(void) FT_Panic ( const char* fmt, ... );
#define FT_ERROR( varformat ) FT_Message##varformat #define FT_ERROR( varformat ) FT_Message##varformat

View File

@ -120,9 +120,8 @@
} FT_Extension_Class; } FT_Extension_Class;
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Register_Extension( FT_Driver driver,
FT_Error FT_Register_Extension( FT_Driver driver, FT_Extension_Class* clazz );
FT_Extension_Class* clazz );
#ifdef FT_CONFIG_OPTION_EXTEND_ENGINE #ifdef FT_CONFIG_OPTION_EXTEND_ENGINE
@ -151,10 +150,9 @@
/* Returns an extension's data & interface according to its ID */ /* Returns an extension's data & interface according to its ID */
EXPORT_DEF EXPORT_DEF(void*) FT_Get_Extension( FT_Face face,
void* FT_Get_Extension( FT_Face face, const char* extension_id,
const char* extension_id, void* *extension_interface );
void* *extension_interface );
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -33,25 +33,20 @@
#endif #endif
EXPORT_DEF EXPORT_DEF(FT_ListNode) FT_List_Find( FT_List list,
FT_ListNode FT_List_Find( FT_List list, void* data );
void* data );
EXPORT_DEF EXPORT_DEF(void) FT_List_Add( FT_List list,
void FT_List_Add( FT_List list, FT_ListNode node );
FT_ListNode node );
EXPORT_DEF EXPORT_DEF(void) FT_List_Insert( FT_List list,
void FT_List_Insert( FT_List list, FT_ListNode node );
FT_ListNode node );
EXPORT_DEF EXPORT_DEF(void) FT_List_Remove( FT_List list,
void FT_List_Remove( FT_List list, FT_ListNode node );
FT_ListNode node );
EXPORT_DEF EXPORT_DEF(void) FT_List_Up( FT_List list,
void FT_List_Up( FT_List list, FT_ListNode node );
FT_ListNode node );
/*************************************************************************/ /*************************************************************************/
@ -72,10 +67,9 @@
void* user ); void* user );
EXPORT_DEF EXPORT_DEF(FT_Error) FT_List_Iterate( FT_List list,
FT_Error FT_List_Iterate( FT_List list, FT_List_Iterator iterator,
FT_List_Iterator iterator, void* user );
void* user );
/*************************************************************************/ /*************************************************************************/
@ -99,11 +93,10 @@
void* user ); void* user );
EXPORT_DEF EXPORT_DEF(void) FT_List_Finalize( FT_List list,
void FT_List_Finalize( FT_List list, FT_List_Destructor destroy,
FT_List_Destructor destroy, FT_Memory memory,
FT_Memory memory, void* user );
void* user );
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -94,20 +94,17 @@
/*************************************************************************/ /*************************************************************************/
/*************************************************************************/ /*************************************************************************/
BASE_DEF BASE_DEF(FT_Error) FT_Alloc( FT_Memory memory,
FT_Error FT_Alloc( FT_Memory memory, FT_Long size,
FT_Long size, void** P );
void** P );
BASE_DEF BASE_DEF(FT_Error) FT_Realloc( FT_Memory memory,
FT_Error FT_Realloc( FT_Memory memory, FT_Long current,
FT_Long current, FT_Long size,
FT_Long size, void** P );
void** P );
BASE_DEF BASE_DEF(void) FT_Free( FT_Memory memory,
void FT_Free( FT_Memory memory, void** P );
void** P );
@ -165,29 +162,17 @@
#define FREE( _pointer_ ) FT_Free( memory, (void**)&(_pointer_) ) #define FREE( _pointer_ ) FT_Free( memory, (void**)&(_pointer_) )
/* various useful types and definitions */
extern void FP_Panic( const char* message );
extern FT_Memory FP_New_Memory( void );
EXPORT_DEF(FT_Error) FT_New_Size( FT_Face face,
FT_Size* size );
EXPORT_DEF(FT_Error) FT_Done_Size( FT_Size size );
EXPORT_DEF(FT_Error) FT_New_GlyphSlot( FT_Face face,
FT_GlyphSlot* aslot );
EXPORT_DEF EXPORT_DEF(void) FT_Done_GlyphSlot( FT_GlyphSlot slot );
FT_Error FT_New_Size( FT_Face face,
FT_Size* size );
EXPORT_DEF
FT_Error FT_Done_Size( FT_Size size );
EXPORT_DEF
FT_Error FT_New_GlyphSlot( FT_Face face,
FT_GlyphSlot* aslot );
EXPORT_DEF
void FT_Done_GlyphSlot( FT_GlyphSlot slot );
@ -314,19 +299,16 @@
} FT_GlyphZone; } FT_GlyphZone;
BASE_DEF BASE_DEF(FT_Error) FT_New_GlyphZone( FT_Memory memory,
FT_Error FT_New_GlyphZone( FT_Memory memory, FT_UShort maxPoints,
FT_UShort maxPoints, FT_Short maxContours,
FT_Short maxContours, FT_GlyphZone* zone );
FT_GlyphZone* zone );
BASE_DEF BASE_DEF(void) FT_Done_GlyphZone( FT_GlyphZone* zone );
void FT_Done_GlyphZone( FT_GlyphZone* zone );
BASE_DEF BASE_DEF(FT_Error) FT_Update_GlyphZone( FT_GlyphZone* zone,
FT_Error FT_Update_GlyphZone( FT_GlyphZone* zone, FT_UShort num_points,
FT_UShort num_points, FT_Short num_contours );
FT_Short num_contours );
/*************************************************************************/ /*************************************************************************/
@ -395,46 +377,37 @@
} FT_LibraryRec; } FT_LibraryRec;
EXPORT_DEF EXPORT_DEF(FT_Error) FT_New_Library( FT_Memory memory,
FT_Error FT_New_Library( FT_Memory memory, FT_Library* library );
FT_Library* library );
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Done_Library( FT_Library library );
FT_Error FT_Done_Library( FT_Library library );
EXPORT_DEF EXPORT_DEF(void) FT_Set_Debug_Hook( FT_Library library,
void FT_Set_Debug_Hook( FT_Library library, FT_UInt hook_index,
FT_UInt hook_index, FT_DebugHook_Func debug_hook );
FT_DebugHook_Func debug_hook );
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Add_Driver( FT_Library library,
FT_Error FT_Add_Driver( FT_Library library, const FT_DriverInterface* driver_interface );
const FT_DriverInterface* driver_interface );
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Remove_Driver( FT_Driver driver );
FT_Error FT_Remove_Driver( FT_Driver driver );
EXPORT_DEF EXPORT_DEF(FT_Driver) FT_Get_Driver( FT_Library library,
FT_Driver FT_Get_Driver( FT_Library library, char* driver_name );
char* driver_name );
#ifndef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM #ifndef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM
EXPORT_DEF EXPORT_DEF(FT_Error) FT_New_Stream( const char* filepathname,
FT_Error FT_New_Stream( const char* filepathname, FT_Stream astream );
FT_Stream astream );
EXPORT_DEF EXPORT_DEF(void) FT_Done_Stream( FT_Stream stream );
void FT_Done_Stream( FT_Stream stream );
extern EXPORT_DEF(FT_Memory) FT_New_Memory( void );
FT_Memory FT_New_Memory( void );
#endif #endif
@ -443,8 +416,7 @@
/* Client applications can register new rasters through the FT_Set_Raster API.. */ /* Client applications can register new rasters through the FT_Set_Raster API.. */
/* */ /* */
#ifndef FT_NO_DEFAULT_RASTER #ifndef FT_NO_DEFAULT_RASTER
extern EXPORT_VAR(FT_Raster_Funcs) ft_default_raster;
FT_Raster_Funcs ft_default_raster;
#endif #endif

View File

@ -167,79 +167,61 @@ typedef struct FT_Frame_Field_
BASE_DEF BASE_DEF(void) FT_New_Memory_Stream( FT_Library library,
void FT_New_Memory_Stream( FT_Library library, void* base,
void* base, unsigned long size,
unsigned long size, FT_Stream stream );
FT_Stream stream );
BASE_DEF BASE_DEF(FT_Error) FT_Seek_Stream( FT_Stream stream,
FT_Error FT_Seek_Stream( FT_Stream stream, FT_ULong pos );
FT_ULong pos );
BASE_DEF BASE_DEF(FT_Error) FT_Skip_Stream( FT_Stream stream,
FT_Error FT_Skip_Stream( FT_Stream stream, FT_Long distance );
FT_Long distance );
BASE_DEF BASE_DEF(FT_Long) FT_Stream_Pos( FT_Stream stream );
FT_Long FT_Stream_Pos( FT_Stream stream );
BASE_DEF BASE_DEF(FT_Error) FT_Read_Stream( FT_Stream stream,
FT_Error FT_Read_Stream( FT_Stream stream, void* buffer,
void* buffer, FT_ULong count );
FT_ULong count );
BASE_DEF(FT_Error) FT_Read_Stream_At( FT_Stream stream,
BASE_DEF FT_ULong pos,
FT_Error FT_Read_Stream_At( FT_Stream stream, void* buffer,
FT_ULong pos, FT_ULong count );
void* buffer,
FT_ULong count );
BASE_DEF BASE_DEF(FT_Error) FT_Access_Frame( FT_Stream stream,
FT_Error FT_Access_Frame( FT_Stream stream, FT_ULong count );
FT_ULong count );
BASE_DEF BASE_DEF(void) FT_Forget_Frame( FT_Stream stream );
void FT_Forget_Frame( FT_Stream stream );
BASE_DEF BASE_DEF(FT_Char) FT_Get_Char( FT_Stream stream );
FT_Char FT_Get_Char( FT_Stream stream );
BASE_DEF BASE_DEF(FT_Short) FT_Get_Short( FT_Stream stream );
FT_Short FT_Get_Short( FT_Stream stream );
BASE_DEF BASE_DEF(FT_Long) FT_Get_Offset( FT_Stream stream );
FT_Long FT_Get_Offset( FT_Stream stream );
BASE_DEF BASE_DEF(FT_Long) FT_Get_Long( FT_Stream stream );
FT_Long FT_Get_Long( FT_Stream stream );
BASE_DEF BASE_DEF(FT_Char) FT_Read_Char( FT_Stream stream,
FT_Char FT_Read_Char( FT_Stream stream, FT_Error* error );
FT_Error* error );
BASE_DEF BASE_DEF(FT_Short) FT_Read_Short( FT_Stream stream,
FT_Short FT_Read_Short( FT_Stream stream, FT_Error* error );
FT_Error* error );
BASE_DEF BASE_DEF(FT_Long) FT_Read_Offset( FT_Stream stream,
FT_Long FT_Read_Offset( FT_Stream stream, FT_Error* error );
FT_Error* error );
BASE_DEF BASE_DEF(FT_Long) FT_Read_Long( FT_Stream stream,
FT_Long FT_Read_Long( FT_Stream stream, FT_Error* error );
FT_Error* error );
BASE_DEF
FT_Error FT_Read_Fields( FT_Stream stream,
const FT_Frame_Field* fields,
void* structure );
BASE_DEF(FT_Error) FT_Read_Fields( FT_Stream stream,
const FT_Frame_Field* fields,
void* structure );
#define USE_Stream( resource, stream ) \ #define USE_Stream( resource, stream ) \
FT_SET_ERROR( FT_Open_Stream( resource, stream ) ) FT_SET_ERROR( FT_Open_Stream( resource, stream ) )

View File

@ -525,9 +525,8 @@
* *
***************************************************************************/ ***************************************************************************/
EXPORT_DEF EXPORT_DEF(void*) FT_Get_Sfnt_Table( FT_Face face,
void* FT_Get_Sfnt_Table( FT_Face face, FT_Sfnt_Tag tag );
FT_Sfnt_Tag tag );
#endif /* TTTABLES_H */ #endif /* TTTABLES_H */

View File

@ -69,8 +69,7 @@
/* <Return> */ /* <Return> */
/* The result of `sqrt(x)'. */ /* The result of `sqrt(x)'. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Int32) FT_Sqrt32( FT_Int32 x )
FT_Int32 FT_Sqrt32( FT_Int32 x )
{ {
FT_ULong val, root, newroot, mask; FT_ULong val, root, newroot, mask;
@ -123,10 +122,9 @@
/* divide by zero, it simply returns `MaxInt' or `MinInt' depending */ /* divide by zero, it simply returns `MaxInt' or `MinInt' depending */
/* on the signs of `a' and `b'. */ /* on the signs of `a' and `b'. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Long) FT_MulDiv( FT_Long a,
FT_Long FT_MulDiv( FT_Long a, FT_Long b,
FT_Long b, FT_Long c )
FT_Long c )
{ {
FT_Int s; FT_Int s;
@ -169,9 +167,8 @@
/* _second_ argument of this function; this can make a great */ /* _second_ argument of this function; this can make a great */
/* difference. */ /* difference. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Long) FT_MulFix( FT_Long a,
FT_Long FT_MulFix( FT_Long a, FT_Long b )
FT_Long b )
{ {
FT_Int s; FT_Int s;
@ -207,9 +204,8 @@
/* 32 bits, then the division is computed directly. Otherwise, we */ /* 32 bits, then the division is computed directly. Otherwise, we */
/* use a specialized version of the old FT_MulDiv64(). */ /* use a specialized version of the old FT_MulDiv64(). */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Int32) FT_DivFix( FT_Long a,
FT_Int32 FT_DivFix( FT_Long a, FT_Long b )
FT_Long b )
{ {
FT_Int32 s; FT_Int32 s;
FT_Word32 q; FT_Word32 q;
@ -262,8 +258,7 @@
} }
EXPORT_FUNC EXPORT_FUNC(FT_Int32) FT_Sqrt64( FT_Int64 l )
FT_Int32 FT_Sqrt64( FT_Int64 l )
{ {
FT_Int64 r, s; FT_Int64 r, s;
@ -327,10 +322,9 @@
/* */ /* */
/* and 2*0x157F0 = 176096. */ /* and 2*0x157F0 = 176096. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Long) FT_MulDiv( FT_Long a,
FT_Long FT_MulDiv( FT_Long a, FT_Long b,
FT_Long b, FT_Long c )
FT_Long c )
{ {
long s; long s;
@ -393,9 +387,8 @@
/* idea is to use bounds like 2048 and 1048576 (=floor((2^31-1)/2048) */ /* idea is to use bounds like 2048 and 1048576 (=floor((2^31-1)/2048) */
/* for `a' and `b', respectively. */ /* for `a' and `b', respectively. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Long) FT_MulFix( FT_Long a,
FT_Long FT_MulFix( FT_Long a, FT_Long b )
FT_Long b )
{ {
FT_Long s; FT_Long s;
FT_ULong ua, ub; FT_ULong ua, ub;
@ -448,9 +441,8 @@
/* 32 bits, then the division is computed directly. Otherwise, we */ /* 32 bits, then the division is computed directly. Otherwise, we */
/* use a specialized version of the old FT_MulDiv64(). */ /* use a specialized version of the old FT_MulDiv64(). */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Long) FT_DivFix( FT_Long a,
FT_Long FT_DivFix( FT_Long a, FT_Long b )
FT_Long b )
{ {
FT_Int32 s; FT_Int32 s;
FT_Word32 q; FT_Word32 q;
@ -510,10 +502,9 @@
/* <Note> */ /* <Note> */
/* Will be wrapped by the ADD_64() macro. */ /* Will be wrapped by the ADD_64() macro. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(void) FT_Add64( FT_Int64* x,
void FT_Add64( FT_Int64* x, FT_Int64* y,
FT_Int64* y, FT_Int64* z )
FT_Int64* z )
{ {
register FT_Word32 lo, hi; register FT_Word32 lo, hi;
@ -543,10 +534,9 @@
/* <Note> */ /* <Note> */
/* Will be wrapped by the MUL_64() macro. */ /* Will be wrapped by the MUL_64() macro. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(void) FT_MulTo64( FT_Int32 x,
void FT_MulTo64( FT_Int32 x, FT_Int32 y,
FT_Int32 y, FT_Int64* z )
FT_Int64* z )
{ {
FT_Int32 s; FT_Int32 s;
@ -609,9 +599,8 @@
/* <Note> */ /* <Note> */
/* Will be wrapped by the DIV_64() macro. */ /* Will be wrapped by the DIV_64() macro. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Int32) FT_Div64by32( FT_Int64* x,
FT_Int32 FT_Div64by32( FT_Int64* x, FT_Int32 y )
FT_Int32 y )
{ {
FT_Int32 s; FT_Int32 s;
FT_Word32 q, r, i, lo; FT_Word32 q, r, i, lo;
@ -712,8 +701,7 @@
return j-1; return j-1;
} }
EXPORT_FUNC EXPORT_FUNC(FT_Int32) FT_Sqrt64( FT_Int64* l )
FT_Int32 FT_Sqrt64( FT_Int64* l )
{ {
FT_Int64 l2; FT_Int64 l2;
FT_Int32 r, s; FT_Int32 r, s;

View File

@ -31,7 +31,7 @@
#include <string.h> #include <string.h>
void FT_Message( const char* fmt, ... ) EXPORT_FUNC(void) FT_Message( const char* fmt, ... )
{ {
va_list ap; va_list ap;
@ -42,7 +42,7 @@
} }
void FT_Panic( const char* fmt, ... ) EXPORT_FUNC(void) FT_Panic( const char* fmt, ... )
{ {
va_list ap; va_list ap;
@ -72,9 +72,8 @@
/* components will be traced. */ /* components will be traced. */
/* level :: The tracing level. */ /* level :: The tracing level. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(void) FT_SetTraceLevel( FT_Trace component,
void FT_SetTraceLevel( FT_Trace component, char level )
char level )
{ {
if ( component >= trace_max ) if ( component >= trace_max )
return; return;

View File

@ -114,9 +114,8 @@
/* <Return> */ /* <Return> */
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Register_Extension( FT_Driver driver,
FT_Error FT_Register_Extension( FT_Driver driver, FT_Extension_Class* class )
FT_Extension_Class* class )
{ {
FT_Extension_Registry* registry; FT_Extension_Registry* registry;
@ -163,10 +162,9 @@
/* <Return> */ /* <Return> */
/* A pointer to the extension block. */ /* A pointer to the extension block. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(void*) FT_Get_Extension( FT_Face face,
void* FT_Get_Extension( FT_Face face, const char* extension_id,
const char* extension_id, void* *extension_interface )
void* *extension_interface )
{ {
FT_Extension_Registry* registry; FT_Extension_Registry* registry;

View File

@ -95,13 +95,12 @@
* *
***********************************************************************/ ***********************************************************************/
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Get_Glyph_Bitmap( FT_Face face,
FT_Error FT_Get_Glyph_Bitmap( FT_Face face, FT_UInt glyph_index,
FT_UInt glyph_index, FT_UInt load_flags,
FT_UInt load_flags, FT_Int grays,
FT_Int grays, FT_Vector* origin,
FT_Vector* origin, FT_BitmapGlyph *abitglyph )
FT_BitmapGlyph *abitglyph )
{ {
FT_Error error; FT_Error error;
FT_Memory memory; FT_Memory memory;
@ -271,11 +270,10 @@
* *
***********************************************************************/ ***********************************************************************/
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Get_Glyph_Outline( FT_Face face,
FT_Error FT_Get_Glyph_Outline( FT_Face face, FT_UInt glyph_index,
FT_UInt glyph_index, FT_UInt load_flags,
FT_UInt load_flags, FT_OutlineGlyph *vecglyph )
FT_OutlineGlyph *vecglyph )
{ {
FT_Error error; FT_Error error;
FT_Memory memory; FT_Memory memory;
@ -360,10 +358,9 @@
* *
***********************************************************************/ ***********************************************************************/
EXPORT_FUNC EXPORT_FUNC(void) FT_Set_Transform( FT_Face face,
void FT_Set_Transform( FT_Face face, FT_Matrix* matrix,
FT_Matrix* matrix, FT_Vector* delta )
FT_Vector* delta )
{ {
face->transform_flags = 0; face->transform_flags = 0;
@ -411,8 +408,7 @@
* *
***********************************************************************/ ***********************************************************************/
EXPORT_FUNC EXPORT_FUNC(void) FT_Done_Glyph( FT_Glyph glyph )
void FT_Done_Glyph( FT_Glyph glyph )
{ {
if (glyph) if (glyph)
{ {
@ -463,9 +459,8 @@
* *
***********************************************************************/ ***********************************************************************/
EXPORT_DEF EXPORT_FUNC(void) FT_Glyph_Get_Box( FT_Glyph glyph,
void FT_Glyph_Get_Box( FT_Glyph glyph, FT_BBox *box )
FT_BBox *box )
{ {
box->xMin = box->xMax = 0; box->xMin = box->xMax = 0;
box->yMin = box->yMax = 0; box->yMin = box->yMax = 0;

View File

@ -76,8 +76,7 @@ const FT_DriverInterface* ft_default_drivers[] =
/* <InOut> */ /* <InOut> */
/* library :: A handle to a new library object. */ /* library :: A handle to a new library object. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(void) FT_Default_Drivers( FT_Library library )
void FT_Default_Drivers( FT_Library library )
{ {
FT_Error error; FT_Error error;
const FT_DriverInterface* *cur; const FT_DriverInterface* *cur;
@ -111,8 +110,7 @@ const FT_DriverInterface* ft_default_drivers[] =
/* <Return> */ /* <Return> */
/* FreeTyoe error code. 0 means success. */ /* FreeTyoe error code. 0 means success. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Init_FreeType( FT_Library* library )
FT_Error FT_Init_FreeType( FT_Library* library )
{ {
FT_Error error; FT_Error error;
FT_Memory memory; FT_Memory memory;

View File

@ -43,9 +43,8 @@
/* <Return> */ /* <Return> */
/* List node. NULL if it wasn't found. */ /* List node. NULL if it wasn't found. */
/* */ /* */
BASE_FUNC BASE_FUNC(FT_ListNode) FT_List_Find( FT_List list,
FT_ListNode FT_List_Find( FT_List list, void* data )
void* data )
{ {
FT_ListNode cur; FT_ListNode cur;
@ -75,9 +74,8 @@
/* list :: A pointer to the parent list. */ /* list :: A pointer to the parent list. */
/* node :: The node to append. */ /* node :: The node to append. */
/* */ /* */
BASE_FUNC BASE_FUNC(void) FT_List_Add( FT_List list,
void FT_List_Add( FT_List list, FT_ListNode node )
FT_ListNode node )
{ {
FT_ListNode before = list->tail; FT_ListNode before = list->tail;
@ -106,9 +104,8 @@
/* list :: A pointer to parent list. */ /* list :: A pointer to parent list. */
/* node :: The node to insert. */ /* node :: The node to insert. */
/* */ /* */
BASE_FUNC BASE_FUNC(void) FT_List_Insert( FT_List list,
void FT_List_Insert( FT_List list, FT_ListNode node )
FT_ListNode node )
{ {
FT_ListNode after = list->head; FT_ListNode after = list->head;
@ -140,9 +137,8 @@
/* <InOut> */ /* <InOut> */
/* list :: A pointer to the parent list. */ /* list :: A pointer to the parent list. */
/* */ /* */
BASE_FUNC BASE_FUNC(void) FT_List_Remove( FT_List list,
void FT_List_Remove( FT_List list, FT_ListNode node )
FT_ListNode node )
{ {
FT_ListNode before, after; FT_ListNode before, after;
@ -175,9 +171,8 @@
/* list :: A pointer to the parent list. */ /* list :: A pointer to the parent list. */
/* node :: The node to move. */ /* node :: The node to move. */
/* */ /* */
BASE_FUNC BASE_FUNC(void) FT_List_Up( FT_List list,
void FT_List_Up( FT_List list, FT_ListNode node )
FT_ListNode node )
{ {
FT_ListNode before, after; FT_ListNode before, after;
@ -223,10 +218,9 @@
/* <Return> */ /* <Return> */
/* The result (an error code) of the last iterator call. */ /* The result (an error code) of the last iterator call. */
/* */ /* */
BASE_FUNC BASE_FUNC(FT_Error) FT_List_Iterate( FT_List list,
FT_Error FT_List_Iterate( FT_List list, FT_List_Iterator iterator,
FT_List_Iterator iterator, void* user )
void* user )
{ {
FT_ListNode cur = list->head; FT_ListNode cur = list->head;
FT_Error error = FT_Err_Ok; FT_Error error = FT_Err_Ok;
@ -268,11 +262,10 @@
/* user :: A user-supplied field which is passed as the last */ /* user :: A user-supplied field which is passed as the last */
/* argument to the destructor. */ /* argument to the destructor. */
/* */ /* */
BASE_FUNC BASE_FUNC(void) FT_List_Finalize( FT_List list,
void FT_List_Finalize( FT_List list, FT_List_Destructor destroy,
FT_List_Destructor destroy, FT_Memory memory,
FT_Memory memory, void* user )
void* user )
{ {
FT_ListNode cur; FT_ListNode cur;

View File

@ -66,10 +66,9 @@
/* <Return> */ /* <Return> */
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
BASE_FUNC BASE_FUNC(FT_Error) FT_Alloc( FT_Memory memory,
FT_Error FT_Alloc( FT_Memory memory, FT_Long size,
FT_Long size, void** P )
void** P )
{ {
FT_Assert( P != 0 ); FT_Assert( P != 0 );
@ -131,11 +130,10 @@
/* */ /* */
/* (Some embedded systems do not have a working realloc function). */ /* (Some embedded systems do not have a working realloc function). */
/* */ /* */
BASE_FUNC BASE_FUNC(FT_Error) FT_Realloc( FT_Memory memory,
FT_Error FT_Realloc( FT_Memory memory, FT_Long current,
FT_Long current, FT_Long size,
FT_Long size, void** P )
void** P )
{ {
void* Q; void* Q;
@ -191,9 +189,8 @@
/* This is a strong convention within all of FreeType and its */ /* This is a strong convention within all of FreeType and its */
/* drivers. */ /* drivers. */
/* */ /* */
BASE_FUNC BASE_FUNC(void) FT_Free( FT_Memory memory,
void FT_Free( FT_Memory memory, void** P )
void** P )
{ {
FT_TRACE2(( "FT_Free:" )); FT_TRACE2(( "FT_Free:" ));
FT_TRACE2(( " Freeing block 0x%08lx, ref 0x%08lx\n", FT_TRACE2(( " Freeing block 0x%08lx, ref 0x%08lx\n",
@ -274,8 +271,7 @@
/* <Description> */ /* <Description> */
/* Closes and destroys a stream object. */ /* Closes and destroys a stream object. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(void) FT_Done_Stream( FT_Stream stream )
void FT_Done_Stream( FT_Stream stream )
{ {
if ( stream->close ) if ( stream->close )
stream->close( stream ); stream->close( stream );
@ -413,10 +409,9 @@
* *
*************************************************************************/ *************************************************************************/
EXPORT_FUNC EXPORT_FUNC(FT_Raster) FT_Get_Raster( FT_Library library,
FT_Raster FT_Get_Raster( FT_Library library, FT_Glyph_Format glyph_format,
FT_Glyph_Format glyph_format, FT_Raster_Funcs *raster_funcs )
FT_Raster_Funcs *raster_funcs )
{ {
FT_Int n; FT_Int n;
@ -459,9 +454,8 @@
/* */ /* */
/* - the new raster is registered for the glyph format */ /* - the new raster is registered for the glyph format */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Set_Raster( FT_Library library,
FT_Error FT_Set_Raster( FT_Library library, FT_Raster_Funcs* raster_funcs )
FT_Raster_Funcs* raster_funcs )
{ {
FT_Glyph_Format glyph_format = raster_funcs->glyph_format; FT_Glyph_Format glyph_format = raster_funcs->glyph_format;
FT_Raster_Funcs* funcs; FT_Raster_Funcs* funcs;
@ -534,9 +528,8 @@
/* <Return> */ /* <Return> */
/* Error code. 0 means success. */ /* Error code. 0 means success. */
/* */ /* */
EXPORT_DEF EXPORT_DEF(FT_Error) FT_Unset_Raster( FT_Library library,
FT_Error FT_Unset_Raster( FT_Library library, FT_Raster_Funcs* raster_funcs )
FT_Raster_Funcs* raster_funcs )
{ {
FT_Glyph_Format glyph_format = raster_funcs->glyph_format; FT_Glyph_Format glyph_format = raster_funcs->glyph_format;
FT_Error error; FT_Error error;
@ -581,11 +574,10 @@
/* <Return> */ /* <Return> */
/* Error code. 0 means success. */ /* Error code. 0 means success. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Set_Raster_Mode( FT_Library library,
FT_Error FT_Set_Raster_Mode( FT_Library library, FT_Glyph_Format format,
FT_Glyph_Format format, unsigned long mode,
unsigned long mode, void* args )
void* args )
{ {
FT_Raster_Funcs funcs; FT_Raster_Funcs funcs;
FT_Raster raster; FT_Raster raster;
@ -617,10 +609,9 @@
/* Currently, four debug hook slots are available, but only two (for */ /* Currently, four debug hook slots are available, but only two (for */
/* the TrueType and the Type 1 interpreter) are defined. */ /* the TrueType and the Type 1 interpreter) are defined. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(void) FT_Set_Debug_Hook( FT_Library library,
void FT_Set_Debug_Hook( FT_Library library, FT_UInt hook_index,
FT_UInt hook_index, FT_DebugHook_Func debug_hook )
FT_DebugHook_Func debug_hook )
{ {
if ( hook_index < ( sizeof ( library->debug_hooks ) / sizeof ( void* ) ) ) if ( hook_index < ( sizeof ( library->debug_hooks ) / sizeof ( void* ) ) )
library->debug_hooks[hook_index] = debug_hook; library->debug_hooks[hook_index] = debug_hook;
@ -646,9 +637,8 @@
/* <Return> */ /* <Return> */
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_New_Library( FT_Memory memory,
FT_Error FT_New_Library( FT_Memory memory, FT_Library* alibrary )
FT_Library* alibrary )
{ {
FT_Library library = 0; FT_Library library = 0;
FT_Error error; FT_Error error;
@ -694,8 +684,7 @@
/* <Return> */ /* <Return> */
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Done_Library( FT_Library library )
FT_Error FT_Done_Library( FT_Library library )
{ {
FT_Memory memory; FT_Memory memory;
FT_Int n; FT_Int n;
@ -772,9 +761,8 @@
/* This function doesn't check whether the driver is already */ /* This function doesn't check whether the driver is already */
/* installed! */ /* installed! */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Add_Driver( FT_Library library,
FT_Error FT_Add_Driver( FT_Library library, const FT_DriverInterface* driver_interface )
const FT_DriverInterface* driver_interface )
{ {
FT_Error error; FT_Error error;
FT_Driver driver; FT_Driver driver;
@ -834,8 +822,7 @@
/* <Return> */ /* <Return> */
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Remove_Driver( FT_Driver driver )
FT_Error FT_Remove_Driver( FT_Driver driver )
{ {
FT_Library library; FT_Library library;
FT_Memory memory; FT_Memory memory;
@ -898,9 +885,8 @@
/* <Return> */ /* <Return> */
/* A handle to the driver object, 0 otherwise. */ /* A handle to the driver object, 0 otherwise. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Driver) FT_Get_Driver( FT_Library library,
FT_Driver FT_Get_Driver( FT_Library library, char* driver_name )
char* driver_name )
{ {
FT_Driver *cur, *limit; FT_Driver *cur, *limit;
@ -1008,11 +994,10 @@
/* `*face'. Its return value should be 0 if the resource is */ /* `*face'. Its return value should be 0 if the resource is */
/* recognized, or non-zero if not. */ /* recognized, or non-zero if not. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_New_Face( FT_Library library,
FT_Error FT_New_Face( FT_Library library, const char* pathname,
const char* pathname, FT_Long face_index,
FT_Long face_index, FT_Face* aface )
FT_Face* aface )
{ {
FT_Open_Args args; FT_Open_Args args;
@ -1060,12 +1045,11 @@
/* `*face'. Its return value should be 0 if the resource is */ /* `*face'. Its return value should be 0 if the resource is */
/* recognized, or non-zero if not. */ /* recognized, or non-zero if not. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_New_Memory_Face( FT_Library library,
FT_Error FT_New_Memory_Face( FT_Library library, void* file_base,
void* file_base, FT_Long file_size,
FT_Long file_size, FT_Long face_index,
FT_Long face_index, FT_Face* face )
FT_Face* face )
{ {
FT_Open_Args args; FT_Open_Args args;
@ -1115,11 +1099,10 @@
/* `*face'. Its return value should be 0 if the resource is */ /* `*face'. Its return value should be 0 if the resource is */
/* recognized, or non-zero if not. */ /* recognized, or non-zero if not. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Open_Face( FT_Library library,
FT_Error FT_Open_Face( FT_Library library, FT_Open_Args* args,
FT_Open_Args* args, FT_Long face_index,
FT_Long face_index, FT_Face* aface )
FT_Face* aface )
{ {
FT_Error error; FT_Error error;
FT_Driver driver; FT_Driver driver;
@ -1290,9 +1273,8 @@
/* when invoking this function. Most drivers simply do not implement */ /* when invoking this function. Most drivers simply do not implement */
/* file attachments. */ /* file attachments. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Attach_File( FT_Face face,
FT_Error FT_Attach_File( FT_Face face, const char* filepathname )
const char* filepathname )
{ {
FT_Open_Args open; FT_Open_Args open;
@ -1327,9 +1309,8 @@
/* when invoking this function. Most drivers simply do not implement */ /* when invoking this function. Most drivers simply do not implement */
/* file attachments.. */ /* file attachments.. */
/* */ /* */
EXPORT_DEF EXPORT_FUNC(FT_Error) FT_Attach_Stream( FT_Face face,
FT_Error FT_Attach_Stream( FT_Face face, FT_Open_Args* parameters )
FT_Open_Args* parameters )
{ {
FT_Stream stream; FT_Stream stream;
FT_Error error; FT_Error error;
@ -1382,8 +1363,7 @@
/* <Return> */ /* <Return> */
/* Error code. 0 means success. */ /* Error code. 0 means success. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Done_Face( FT_Face face )
FT_Error FT_Done_Face( FT_Face face )
{ {
FT_Error error; FT_Error error;
FT_Driver driver; FT_Driver driver;
@ -1435,9 +1415,8 @@
/* <Return> */ /* <Return> */
/* Error code. 0 means success. */ /* Error code. 0 means success. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_New_Size( FT_Face face,
FT_Error FT_New_Size( FT_Face face, FT_Size* asize )
FT_Size* asize )
{ {
FT_Error error; FT_Error error;
FT_Memory memory; FT_Memory memory;
@ -1501,8 +1480,7 @@
/* <Return> */ /* <Return> */
/* Error code. 0 means success. */ /* Error code. 0 means success. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Done_Size( FT_Size size )
FT_Error FT_Done_Size( FT_Size size )
{ {
FT_Error error; FT_Error error;
FT_Driver driver; FT_Driver driver;
@ -1565,12 +1543,11 @@
/* When dealing with fixed-size faces (i.e., non-scalable formats), */ /* When dealing with fixed-size faces (i.e., non-scalable formats), */
/* use the function FT_Set_Pixel_Sizes(). */ /* use the function FT_Set_Pixel_Sizes(). */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Set_Char_Size( FT_Face face,
FT_Error FT_Set_Char_Size( FT_Face face, FT_F26Dot6 char_width,
FT_F26Dot6 char_width, FT_F26Dot6 char_height,
FT_F26Dot6 char_height, FT_UInt horz_resolution,
FT_UInt horz_resolution, FT_UInt vert_resolution )
FT_UInt vert_resolution )
{ {
FT_Error error; FT_Error error;
FT_Driver driver; FT_Driver driver;
@ -1643,10 +1620,9 @@
/* <Return> */ /* <Return> */
/* Error code. 0 means success. */ /* Error code. 0 means success. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Set_Pixel_Sizes( FT_Face face,
FT_Error FT_Set_Pixel_Sizes( FT_Face face, FT_UInt pixel_width,
FT_UInt pixel_width, FT_UInt pixel_height )
FT_UInt pixel_height )
{ {
FT_Error error; FT_Error error;
FT_Driver driver; FT_Driver driver;
@ -1704,9 +1680,8 @@
/* <Return> */ /* <Return> */
/* Error code. 0 means success. */ /* Error code. 0 means success. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_New_GlyphSlot( FT_Face face,
FT_Error FT_New_GlyphSlot( FT_Face face, FT_GlyphSlot* aslot )
FT_GlyphSlot* aslot )
{ {
FT_Error error; FT_Error error;
FT_Driver driver; FT_Driver driver;
@ -1765,8 +1740,7 @@
/* <Input> */ /* <Input> */
/* slot :: A handle to a target glyph slot. */ /* slot :: A handle to a target glyph slot. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(void) FT_Done_GlyphSlot( FT_GlyphSlot slot )
void FT_Done_GlyphSlot( FT_GlyphSlot slot )
{ {
if (slot) if (slot)
{ {
@ -1829,10 +1803,9 @@
/* <Return> */ /* <Return> */
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Load_Glyph( FT_Face face,
FT_Error FT_Load_Glyph( FT_Face face, FT_UInt glyph_index,
FT_UInt glyph_index, FT_Int load_flags )
FT_Int load_flags )
{ {
FT_Error error; FT_Error error;
FT_Driver driver; FT_Driver driver;
@ -1855,10 +1828,9 @@
} }
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Load_Char( FT_Face face,
FT_Error FT_Load_Char( FT_Face face, FT_ULong char_code,
FT_ULong char_code, FT_Int load_flags )
FT_Int load_flags )
{ {
FT_Error error; FT_Error error;
FT_Driver driver; FT_Driver driver;
@ -1909,11 +1881,10 @@
/* kernings, are out of the scope of this API function -- they can be */ /* kernings, are out of the scope of this API function -- they can be */
/* implemented through format-specific interfaces. */ /* implemented through format-specific interfaces. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Get_Kerning( FT_Face face,
FT_Error FT_Get_Kerning( FT_Face face, FT_UInt left_glyph,
FT_UInt left_glyph, FT_UInt right_glyph,
FT_UInt right_glyph, FT_Vector* kerning )
FT_Vector* kerning )
{ {
FT_Error error; FT_Error error;
FT_Driver driver; FT_Driver driver;
@ -1962,9 +1933,8 @@
/* <Return> */ /* <Return> */
/* The glyph index. 0 means `undefined character code'. */ /* The glyph index. 0 means `undefined character code'. */
/* */ /* */
EXPORT_DEF EXPORT_FUNC(FT_UInt) FT_Get_Char_Index( FT_Face face,
FT_UInt FT_Get_Char_Index( FT_Face face, FT_ULong charcode )
FT_ULong charcode )
{ {
FT_UInt result; FT_UInt result;
FT_Driver driver; FT_Driver driver;
@ -2006,9 +1976,8 @@
***************************************************************************/ ***************************************************************************/
EXPORT_FUNC EXPORT_FUNC(void*) FT_Get_Sfnt_Table( FT_Face face,
void* FT_Get_Sfnt_Table( FT_Face face, FT_Sfnt_Tag tag )
FT_Sfnt_Tag tag )
{ {
void* table = 0; void* table = 0;
FT_Get_Sfnt_Table_Func func; FT_Get_Sfnt_Table_Func func;
@ -2043,8 +2012,7 @@
/* <Return> */ /* <Return> */
/* Error code. 0 means success. */ /* Error code. 0 means success. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Done_FreeType( FT_Library library )
FT_Error FT_Done_FreeType( FT_Library library )
{ {
/* Discard the library object */ /* Discard the library object */
FT_Done_Library( library ); FT_Done_Library( library );

View File

@ -55,12 +55,9 @@
/* <Return> */ /* <Return> */
/* Error code. 0 means sucess. */ /* Error code. 0 means sucess. */
/* */ /* */
#if 1 EXPORT_FUNC(int) FT_Outline_Decompose( FT_Outline* outline,
FT_Outline_Funcs* interface,
EXPORT_FUNC void* user )
int FT_Outline_Decompose( FT_Outline* outline,
FT_Outline_Funcs* interface,
void* user )
{ {
#undef SCALED #undef SCALED
#define SCALED( x ) ( ((x) << shift) - delta ) #define SCALED( x ) ( ((x) << shift) - delta )
@ -243,176 +240,6 @@
Invalid_Outline: Invalid_Outline:
return -1; return -1;
} }
#else
EXPORT_FUNC
int FT_Outline_Decompose( FT_Outline* outline,
FT_Outline_Funcs* interface,
void* user )
{
typedef enum _phases
{
phase_point,
phase_conic,
phase_cubic,
phase_cubic2
} TPhase;
FT_Vector v_first;
FT_Vector v_last;
FT_Vector v_control;
FT_Vector v_start;
FT_Vector* point;
FT_Vector* limit;
char* tags;
int n; /* index of contour in outline */
int first; /* index of first point in contour */
int error;
char tag; /* current point's state */
first = 0;
for ( n = 0; n < outline->n_contours; n++ )
{
int last; /* index of last point in contour */
last = outline->contours[n];
limit = outline->points + last;
v_first = outline->points[first];
v_last = outline->points[last];
v_start = v_control = v_first;
point = outline->points + first;
tags = outline->tags + first;
tag = FT_CURVE_TAG( tags[0] );
/* A contour cannot start with a cubic control point! */
if ( tag == FT_Curve_Tag_Cubic )
goto Invalid_Outline;
/* check first point to determine origin */
if ( tag == FT_Curve_Tag_Conic )
{
/* first point is conic control. Yes, this happens. */
if ( FT_CURVE_TAG( outline->tags[last] ) == FT_Curve_Tag_On )
{
/* start at last point if it is on the curve */
v_start = v_last;
limit--;
}
else
{
/* if both first and last points are conic, */
/* start at their middle and record its position */
/* for closure */
v_start.x = ( v_start.x + v_last.x ) / 2;
v_start.y = ( v_start.y + v_last.y ) / 2;
v_last = v_start;
}
point--;
tags--;
}
error = interface->move_to( &v_start, user );
if (error) goto Exit;
while (point < limit)
{
point++;
tags++;
tag = FT_CURVE_TAG( tags[0] );
switch (tag)
{
case FT_Curve_Tag_On: /* emit a single line_to */
{
error = interface->line_to( point, user );
if (error) goto Exit;
continue;
}
case FT_Curve_Tag_Conic: /* consume conic arcs */
{
v_control = point[0];
Do_Conic:
if (point < limit)
{
FT_Vector v_middle;
point++;
tags++;
tag = FT_CURVE_TAG( tags[0] );
if (tag == FT_Curve_Tag_On)
{
error = interface->conic_to( &v_control, point, user );
if (error) goto Exit;
continue;
}
if (tag != FT_Curve_Tag_Conic)
goto Invalid_Outline;
v_middle.x = (v_control.x + point->x)/2;
v_middle.y = (v_control.y + point->y)/2;
error = interface->conic_to( &v_control, &v_middle, user );
if (error) goto Exit;
v_control = point[0];
goto Do_Conic;
}
error = interface->conic_to( &v_control, &v_start, user );
goto Close;
}
default: /* FT_Curve_Tag_Cubic */
{
if ( point+1 > limit ||
FT_CURVE_TAG( tags[1] ) != FT_Curve_Tag_Cubic )
goto Invalid_Outline;
point += 2;
tags += 2;
if (point <= limit)
{
error = interface->cubic_to( point-2, point-1, point, user );
if (error) goto Exit;
continue;
}
error = interface->cubic_to( point-2, point-1, &v_start, user );
goto Close;
}
}
}
/* close the contour with a line segment */
error = interface->line_to( &v_start, user );
Close:
if (error) goto Exit;
first = last+1;
}
return 0;
Exit:
return error;
Invalid_Outline:
return -1;
}
#endif
/*************************************************************************/ /*************************************************************************/
/* */ /* */
@ -448,11 +275,10 @@
/* code of this function, replacing allocations with `malloc()' if */ /* code of this function, replacing allocations with `malloc()' if */
/* you want to control where the objects go. */ /* you want to control where the objects go. */
/* */ /* */
BASE_FUNC BASE_FUNC(FT_Error) FT_Outline_New( FT_Library library,
FT_Error FT_Outline_New( FT_Library library, FT_UInt numPoints,
FT_UInt numPoints, FT_Int numContours,
FT_Int numContours, FT_Outline* outline )
FT_Outline* outline )
{ {
FT_Error error; FT_Error error;
FT_Memory memory; FT_Memory memory;
@ -512,9 +338,8 @@
/* of this function, replacing allocations with `malloc()' in your */ /* of this function, replacing allocations with `malloc()' in your */
/* application if you want something simpler. */ /* application if you want something simpler. */
/* */ /* */
BASE_FUNC BASE_FUNC(FT_Error) FT_Outline_Done( FT_Library library,
FT_Error FT_Outline_Done( FT_Library library, FT_Outline* outline )
FT_Outline* outline )
{ {
FT_Memory memory = library->memory; FT_Memory memory = library->memory;
@ -561,9 +386,8 @@
/* <MT-Note> */ /* <MT-Note> */
/* Yes. */ /* Yes. */
/* */ /* */
BASE_FUNC BASE_FUNC(void) FT_Outline_Get_CBox( FT_Outline* outline,
void FT_Outline_Get_CBox( FT_Outline* outline, FT_BBox* cbox )
FT_BBox* cbox )
{ {
FT_Pos xMin, yMin, xMax, yMax; FT_Pos xMin, yMin, xMax, yMax;
@ -623,10 +447,9 @@
/* <MT-Note> */ /* <MT-Note> */
/* Yes. */ /* Yes. */
/* */ /* */
BASE_FUNC BASE_FUNC(void) FT_Outline_Translate( FT_Outline* outline,
void FT_Outline_Translate( FT_Outline* outline, FT_Pos xOffset,
FT_Pos xOffset, FT_Pos yOffset )
FT_Pos yOffset )
{ {
FT_UShort n; FT_UShort n;
FT_Vector* vec = outline->points; FT_Vector* vec = outline->points;
@ -655,8 +478,7 @@
/* This functions toggles the bit flag ft_outline_reverse_fill in */ /* This functions toggles the bit flag ft_outline_reverse_fill in */
/* the outline's "flags" field.. */ /* the outline's "flags" field.. */
/* */ /* */
BASE_FUNC BASE_FUNC(void) FT_Outline_Reverse( FT_Outline* outline )
void FT_Outline_Reverse( FT_Outline* outline )
{ {
FT_UShort n; FT_UShort n;
FT_Int first, last; FT_Int first, last;
@ -714,8 +536,7 @@
/* <Input> */ /* <Input> */
/* zone :: pointer to the target glyph zone. */ /* zone :: pointer to the target glyph zone. */
/* */ /* */
BASE_FUNC BASE_FUNC(void) FT_Done_GlyphZone( FT_GlyphZone* zone )
void FT_Done_GlyphZone( FT_GlyphZone* zone )
{ {
FT_Memory memory = zone->memory; FT_Memory memory = zone->memory;
@ -749,11 +570,10 @@
/* <Return> */ /* <Return> */
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
BASE_FUNC BASE_FUNC(FT_Error) FT_New_GlyphZone( FT_Memory memory,
FT_Error FT_New_GlyphZone( FT_Memory memory, FT_UShort maxPoints,
FT_UShort maxPoints, FT_Short maxContours,
FT_Short maxContours, FT_GlyphZone* zone )
FT_GlyphZone* zone )
{ {
FT_Error error; FT_Error error;
@ -796,10 +616,9 @@
/* maxContours :: The address of the zone's current capacity for */ /* maxContours :: The address of the zone's current capacity for */
/* contours. */ /* contours. */
/* */ /* */
BASE_FUNC BASE_FUNC(FT_Error) FT_Update_GlyphZone( FT_GlyphZone* zone,
FT_Error FT_Update_GlyphZone( FT_GlyphZone* zone, FT_UShort newPoints,
FT_UShort newPoints, FT_Short newContours )
FT_Short newContours )
{ {
FT_Error error = FT_Err_Ok; FT_Error error = FT_Err_Ok;
FT_Memory memory = zone->memory; FT_Memory memory = zone->memory;
@ -856,10 +675,9 @@
/* */ /* */
/* It will use the raster correponding to the default glyph format. */ /* It will use the raster correponding to the default glyph format. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Outline_Get_Bitmap( FT_Library library,
FT_Error FT_Outline_Get_Bitmap( FT_Library library, FT_Outline* outline,
FT_Outline* outline, FT_Bitmap* map )
FT_Bitmap* map )
{ {
FT_Error error; FT_Error error;
FT_Raster raster; FT_Raster raster;
@ -912,10 +730,9 @@
/* scan converter is called, which means that the value you give it */ /* scan converter is called, which means that the value you give it */
/* is actually ignored.. */ /* is actually ignored.. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(FT_Error) FT_Outline_Render( FT_Library library,
FT_Error FT_Outline_Render( FT_Library library, FT_Outline* outline,
FT_Outline* outline, FT_Raster_Params* params )
FT_Raster_Params* params )
{ {
FT_Error error; FT_Error error;
FT_Raster raster; FT_Raster raster;
@ -968,9 +785,8 @@
/* <Return> */ /* <Return> */
/* FreeType error code. 0 means success. */ /* FreeType error code. 0 means success. */
/* */ /* */
BASE_FUNC BASE_FUNC(FT_Error) FT_Outline_Copy( FT_Outline* source,
FT_Error FT_Outline_Copy( FT_Outline* source, FT_Outline* target )
FT_Outline* target )
{ {
FT_Int is_owner; FT_Int is_owner;
@ -1018,9 +834,8 @@
/* You can use FT_Outline_Translate() if you need to translate the */ /* You can use FT_Outline_Translate() if you need to translate the */
/* outline's points. */ /* outline's points. */
/* */ /* */
BASE_FUNC BASE_FUNC(void) FT_Outline_Transform( FT_Outline* outline,
void FT_Outline_Transform( FT_Outline* outline, FT_Matrix* matrix )
FT_Matrix* matrix )
{ {
FT_UShort n; FT_UShort n;
FT_Vector* vec; FT_Vector* vec;
@ -1061,9 +876,8 @@
/* <MT-Note> */ /* <MT-Note> */
/* Yes. */ /* Yes. */
/* */ /* */
EXPORT_DEF EXPORT_FUNC(void) FT_Vector_Transform( FT_Vector* vector,
void FT_Vector_Transform( FT_Vector* vector, FT_Matrix* matrix )
FT_Matrix* matrix )
{ {
FT_Pos xz, yz; FT_Pos xz, yz;
@ -1095,9 +909,8 @@
/* <MT-Note> */ /* <MT-Note> */
/* Yes. */ /* Yes. */
/* */ /* */
BASE_FUNC BASE_FUNC(void) FT_Matrix_Multiply( FT_Matrix* a,
void FT_Matrix_Multiply( FT_Matrix* a, FT_Matrix* b )
FT_Matrix* b )
{ {
FT_Fixed xx, xy, yx, yy; FT_Fixed xx, xy, yx, yy;
@ -1130,8 +943,7 @@
/* <MT-Note> */ /* <MT-Note> */
/* Yes. */ /* Yes. */
/* */ /* */
BASE_FUNC BASE_FUNC(FT_Error) FT_Matrix_Invert( FT_Matrix* matrix )
FT_Error FT_Matrix_Invert( FT_Matrix* matrix )
{ {
FT_Pos delta, xx, yy; FT_Pos delta, xx, yy;

View File

@ -5,11 +5,10 @@
#define FT_COMPONENT trace_stream #define FT_COMPONENT trace_stream
BASE_FUNC BASE_FUNC(void) FT_New_Memory_Stream( FT_Library library,
void FT_New_Memory_Stream( FT_Library library, void* base,
void* base, unsigned long size,
unsigned long size, FT_Stream stream )
FT_Stream stream )
{ {
stream->memory = library->memory; stream->memory = library->memory;
stream->base = (char*)base; stream->base = (char*)base;
@ -21,9 +20,8 @@
} }
BASE_FUNC BASE_FUNC(FT_Error) FT_Seek_Stream( FT_Stream stream,
FT_Error FT_Seek_Stream( FT_Stream stream, FT_ULong pos )
FT_ULong pos )
{ {
FT_Error error; FT_Error error;
@ -59,36 +57,32 @@
} }
BASE_FUNC BASE_FUNC(FT_Error) FT_Skip_Stream( FT_Stream stream,
FT_Error FT_Skip_Stream( FT_Stream stream, FT_Long distance )
FT_Long distance )
{ {
return FT_Seek_Stream( stream, (FT_ULong)(stream->pos + distance) ); return FT_Seek_Stream( stream, (FT_ULong)(stream->pos + distance) );
} }
BASE_FUNC BASE_FUNC(FT_Long) FT_Stream_Pos( FT_Stream stream )
FT_Long FT_Stream_Pos( FT_Stream stream )
{ {
return stream->pos; return stream->pos;
} }
BASE_FUNC BASE_FUNC(FT_Error) FT_Read_Stream( FT_Stream stream,
FT_Error FT_Read_Stream( FT_Stream stream, void* buffer,
void* buffer, FT_ULong count )
FT_ULong count )
{ {
return FT_Read_Stream_At( stream, stream->pos, buffer, count ); return FT_Read_Stream_At( stream, stream->pos, buffer, count );
} }
BASE_FUNC BASE_FUNC(FT_Error) FT_Read_Stream_At( FT_Stream stream,
FT_Error FT_Read_Stream_At( FT_Stream stream, FT_ULong pos,
FT_ULong pos, void* buffer,
void* buffer, FT_ULong count )
FT_ULong count )
{ {
FT_Error error = FT_Err_Ok; FT_Error error = FT_Err_Ok;
FT_ULong read_bytes; FT_ULong read_bytes;
@ -128,9 +122,8 @@
BASE_FUNC BASE_FUNC(FT_Error) FT_Access_Frame( FT_Stream stream,
FT_Error FT_Access_Frame( FT_Stream stream, FT_ULong count )
FT_ULong count )
{ {
FT_Error error = FT_Err_Ok; FT_Error error = FT_Err_Ok;
FT_ULong read_bytes; FT_ULong read_bytes;
@ -185,8 +178,7 @@
} }
BASE_FUNC BASE_FUNC(void) FT_Forget_Frame( FT_Stream stream )
void FT_Forget_Frame( FT_Stream stream )
{ {
/* IMPORTANT: The assertion stream->cursor != 0 was removed, given */ /* IMPORTANT: The assertion stream->cursor != 0 was removed, given */
/* that it is possible to access a frame of length 0 in */ /* that it is possible to access a frame of length 0 in */
@ -210,8 +202,7 @@
} }
BASE_FUNC BASE_FUNC(FT_Char) FT_Get_Char( FT_Stream stream )
FT_Char FT_Get_Char( FT_Stream stream )
{ {
FT_Char result; FT_Char result;
@ -225,8 +216,7 @@
} }
BASE_FUNC BASE_FUNC(FT_Short) FT_Get_Short( FT_Stream stream )
FT_Short FT_Get_Short( FT_Stream stream )
{ {
char* p; char* p;
FT_Short result; FT_Short result;
@ -242,8 +232,7 @@
} }
BASE_FUNC BASE_FUNC(FT_Long) FT_Get_Offset( FT_Stream stream )
FT_Long FT_Get_Offset( FT_Stream stream )
{ {
char* p; char* p;
FT_Long result; FT_Long result;
@ -259,8 +248,7 @@
} }
BASE_FUNC BASE_FUNC(FT_Long) FT_Get_Long( FT_Stream stream )
FT_Long FT_Get_Long( FT_Stream stream )
{ {
char* p; char* p;
FT_Long result; FT_Long result;
@ -276,9 +264,8 @@
} }
BASE_FUNC BASE_FUNC(FT_Char) FT_Read_Char( FT_Stream stream,
FT_Char FT_Read_Char( FT_Stream stream, FT_Error* error )
FT_Error* error )
{ {
char result = 0; char result = 0;
@ -310,9 +297,8 @@
} }
BASE_FUNC BASE_FUNC(FT_Short) FT_Read_Short( FT_Stream stream,
FT_Short FT_Read_Short( FT_Stream stream, FT_Error* error )
FT_Error* error )
{ {
char reads[2]; char reads[2];
char* p = 0; char* p = 0;
@ -353,9 +339,8 @@
} }
BASE_FUNC BASE_FUNC(FT_Long) FT_Read_Offset( FT_Stream stream,
FT_Long FT_Read_Offset( FT_Stream stream, FT_Error* error )
FT_Error* error )
{ {
char reads[3]; char reads[3];
char* p = 0; char* p = 0;
@ -396,9 +381,8 @@
} }
BASE_FUNC BASE_FUNC(FT_Long) FT_Read_Long( FT_Stream stream,
FT_Long FT_Read_Long( FT_Stream stream, FT_Error* error )
FT_Error* error )
{ {
char reads[4]; char reads[4];
char* p = 0; char* p = 0;
@ -438,10 +422,9 @@
return 0; return 0;
} }
BASE_FUNC BASE_FUNC(FT_Error) FT_Read_Fields( FT_Stream stream,
FT_Error FT_Read_Fields( FT_Stream stream, const FT_Frame_Field* fields,
const FT_Frame_Field* fields, void* structure )
void* structure )
{ {
FT_Error error; FT_Error error;
FT_Bool frame_accessed = 0; FT_Bool frame_accessed = 0;

View File

@ -19,7 +19,8 @@
* understand and accept it fully. * understand and accept it fully.
* *
**************************************************************************/ **************************************************************************/
#include <freetype/config/ftconfig.h>
#include <freetype/ftsystem.h> #include <freetype/ftsystem.h>
#include <freetype/fterrors.h> #include <freetype/fterrors.h>
@ -172,9 +173,8 @@
} }
extern EXPORT_FUNC(int) FT_New_Stream( const char* filepathname,
int FT_New_Stream( const char* filepathname, FT_Stream stream )
FT_Stream stream )
{ {
FILE* file; FILE* file;
@ -196,8 +196,7 @@
} }
extern EXPORT_FUNC(FT_Memory) FT_New_Memory( void )
FT_Memory FT_New_Memory( void )
{ {
FT_Memory memory; FT_Memory memory;

View File

@ -222,7 +222,6 @@
}; };
EXPORT_FUNC
const FT_DriverInterface psnames_driver_interface = const FT_DriverInterface psnames_driver_interface =
{ {
sizeof(FT_DriverRec), sizeof(FT_DriverRec),
@ -239,7 +238,6 @@
#else #else
EXPORT_FUNC
const FT_DriverInterface psnames_driver_interface = const FT_DriverInterface psnames_driver_interface =
{ {
0, 0,

View File

@ -19,11 +19,9 @@
#ifndef PSDRIVER_H #ifndef PSDRIVER_H
#define PSDRIVER_H #define PSDRIVER_H
#include <freetype/freetype.h>
#include <freetype/internal/ftdriver.h> #include <freetype/internal/ftdriver.h>
EXPORT_DEF EXPORT_VAR(const FT_DriverInterface) psnames_driver_interface;
const FT_DriverInterface psnames_driver_interface;
#endif /* PSDRIVER_H */ #endif /* PSDRIVER_H */

View File

@ -55,7 +55,6 @@
}; };
EXPORT_FUNC
const FT_DriverInterface sfnt_driver_interface = const FT_DriverInterface sfnt_driver_interface =
{ {
sizeof(FT_DriverRec), sizeof(FT_DriverRec),

View File

@ -21,8 +21,7 @@
#include <freetype/internal/ftdriver.h> #include <freetype/internal/ftdriver.h>
EXPORT_DEF EXPORT_VAR(const FT_DriverInterface) sfnt_driver_interface;
const FT_DriverInterface sfnt_driver_interface;
#endif /* SFDRIVER_H */ #endif /* SFDRIVER_H */

View File

@ -50,7 +50,7 @@
/* <Return> */ /* <Return> */
/* pointer to table directory entry. 0 if not found.. */ /* pointer to table directory entry. 0 if not found.. */
/* */ /* */
EXPORT_FUNC LOCAL_FUNC
TT_Table* TT_LookUp_Table( TT_Face face, TT_Table* TT_LookUp_Table( TT_Face face,
TT_ULong tag ) TT_ULong tag )
{ {
@ -91,7 +91,7 @@
/* <Return> */ /* <Return> */
/* pointer to table directory entry. 0 if not found.. */ /* pointer to table directory entry. 0 if not found.. */
/* */ /* */
EXPORT_FUNC LOCAL_FUNC
TT_Error TT_Goto_Table( TT_Face face, TT_Error TT_Goto_Table( TT_Face face,
TT_ULong tag, TT_ULong tag,
FT_Stream stream, FT_Stream stream,

View File

@ -32,7 +32,7 @@
#endif #endif
EXPORT_DEF LOCAL_DEF
TT_Table* TT_LookUp_Table( TT_Face face, TT_Table* TT_LookUp_Table( TT_Face face,
TT_ULong tag ); TT_ULong tag );

View File

@ -403,7 +403,7 @@
/* <Output> */ /* <Output> */
/* TrueType error code. 0 means success. */ /* TrueType error code. 0 means success. */
/* */ /* */
EXPORT_FUNC LOCAL_FUNC
TT_Error TT_Get_PS_Name( TT_Face face, TT_Error TT_Get_PS_Name( TT_Face face,
TT_UInt index, TT_UInt index,
TT_String** PSname ) TT_String** PSname )

View File

@ -66,7 +66,7 @@ extern "C" {
/* <Output> */ /* <Output> */
/* TrueType error code. 0 means success. */ /* TrueType error code. 0 means success. */
/* */ /* */
EXPORT_DEF LOCAL_DEF
TT_Error TT_Get_PS_Name( TT_Face face, TT_Error TT_Get_PS_Name( TT_Face face,
TT_UInt index, TT_UInt index,
TT_String** PSname ); TT_String** PSname );

View File

@ -707,8 +707,7 @@
/* */ /* */
#ifdef FT_CONFIG_OPTION_DYNAMIC_DRIVERS #ifdef FT_CONFIG_OPTION_DYNAMIC_DRIVERS
EXPORT_FUNC EXPORT_FUNC(FT_DriverInterface*) getDriverInterface( void )
FT_DriverInterface* getDriverInterface( void )
{ {
return &tt_driver_interface; return &tt_driver_interface;
} }

View File

@ -25,8 +25,7 @@
#include <tterrors.h> #include <tterrors.h>
EXPORT_DEF EXPORT_VAR(const FT_DriverInterface) tt_driver_interface;
const FT_DriverInterface tt_driver_interface;
#endif /* TTDRIVER_H */ #endif /* TTDRIVER_H */

View File

@ -254,7 +254,7 @@
/* <Return> */ /* <Return> */
/* TrueType error code. 0 means success. */ /* TrueType error code. 0 means success. */
/* */ /* */
EXPORT_FUNC LOCAL_FUNC
TT_Error TT_Goto_CodeRange( TT_ExecContext exec, TT_Error TT_Goto_CodeRange( TT_ExecContext exec,
TT_Int range, TT_Int range,
TT_Long IP ) TT_Long IP )
@ -302,7 +302,7 @@
/* <Return> */ /* <Return> */
/* TrueType error code. 0 means success. */ /* TrueType error code. 0 means success. */
/* */ /* */
EXPORT_FUNC LOCAL_FUNC
TT_Error TT_Set_CodeRange( TT_ExecContext exec, TT_Error TT_Set_CodeRange( TT_ExecContext exec,
TT_Int range, TT_Int range,
void* base, void* base,
@ -337,7 +337,7 @@
/* <Note> */ /* <Note> */
/* Does not set the Error variable. */ /* Does not set the Error variable. */
/* */ /* */
EXPORT_FUNC LOCAL_FUNC
TT_Error TT_Clear_CodeRange( TT_ExecContext exec, TT_Error TT_Clear_CodeRange( TT_ExecContext exec,
TT_Int range ) TT_Int range )
{ {
@ -540,7 +540,7 @@
/* <Note> */ /* <Note> */
/* Only the glyph loader and debugger should call this function. */ /* Only the glyph loader and debugger should call this function. */
/* */ /* */
EXPORT_FUNC LOCAL_FUNC
TT_Error TT_Load_Context( TT_ExecContext exec, TT_Error TT_Load_Context( TT_ExecContext exec,
TT_Face face, TT_Face face,
TT_Size size ) TT_Size size )
@ -642,7 +642,7 @@
/* <Note> */ /* <Note> */
/* Only the glyph loader and debugger should call this function. */ /* Only the glyph loader and debugger should call this function. */
/* */ /* */
EXPORT_FUNC LOCAL_FUNC
TT_Error TT_Save_Context( TT_ExecContext exec, TT_Error TT_Save_Context( TT_ExecContext exec,
TT_Size size ) TT_Size size )
{ {
@ -686,7 +686,7 @@
/* <Note> */ /* <Note> */
/* Only the glyph loader and debugger should call this function. */ /* Only the glyph loader and debugger should call this function. */
/* */ /* */
EXPORT_FUNC LOCAL_FUNC
TT_Error TT_Run_Context( TT_ExecContext exec, TT_Error TT_Run_Context( TT_ExecContext exec,
TT_Bool debug ) TT_Bool debug )
{ {
@ -762,8 +762,7 @@
/* <Note> */ /* <Note> */
/* Only the glyph loader and debugger should call this function. */ /* Only the glyph loader and debugger should call this function. */
/* */ /* */
EXPORT_FUNC EXPORT_FUNC(TT_ExecContext) TT_New_Context( TT_Face face )
TT_ExecContext TT_New_Context( TT_Face face )
{ {
TT_Driver driver = (TT_Driver)face->root.driver; TT_Driver driver = (TT_Driver)face->root.driver;
TT_ExecContext exec; TT_ExecContext exec;
@ -817,7 +816,7 @@
/* <Note> */ /* <Note> */
/* Only the glyph loader and debugger should call this function. */ /* Only the glyph loader and debugger should call this function. */
/* */ /* */
EXPORT_FUNC LOCAL_FUNC
TT_Error TT_Done_Context( TT_ExecContext exec ) TT_Error TT_Done_Context( TT_ExecContext exec )
{ {
/* Nothing at all for now */ /* Nothing at all for now */
@ -6668,18 +6667,13 @@
/*************************************************************************/ /*************************************************************************/
EXPORT_FUNC EXPORT_FUNC(TT_Error) TT_RunIns( TT_ExecContext exc )
#ifndef DEBUG_INTERPRETER
TT_Error TT_RunIns( TT_ExecContext exc )
#else
TT_Error TT_RunIns2( TT_ExecContext exc )
#endif
{ {
TT_Long ins_counter = 0; /* executed instructions counter */ TT_Long ins_counter = 0; /* executed instructions counter */
#ifdef TT_CONFIG_OPTION_STATIC_RASTER #ifdef TT_CONFIG_OPTION_STATIC_RASTER
cur = *exc; cur = *exc;
#endif #endif
/* set CVT functions */ /* set CVT functions */
CUR.tt_metrics.ratio = 0; CUR.tt_metrics.ratio = 0;
@ -7361,695 +7355,22 @@
} while ( !CUR.instruction_trap ); } while ( !CUR.instruction_trap );
LNo_Error_: LNo_Error_:
#ifdef TT_CONFIG_OPTION_STATIC_RASTER #ifdef TT_CONFIG_OPTION_STATIC_RASTER
*exc = cur; *exc = cur;
#endif #endif
return TT_Err_Ok; return TT_Err_Ok;
LErrorCodeOverflow_: LErrorCodeOverflow_:
CUR.error = TT_Err_Code_Overflow; CUR.error = TT_Err_Code_Overflow;
LErrorLabel_: LErrorLabel_:
#ifdef TT_CONFIG_OPTION_STATIC_RASTER #ifdef TT_CONFIG_OPTION_STATIC_RASTER
*exc = cur; *exc = cur;
#endif #endif
return CUR.error; return CUR.error;
} }
#if 0
/* This function must be declared by the debugger front end */
/* in order to specify which code range to debug. */
int debug_coderange = tt_coderange_glyph;
static char tempStr[128];
static const char* OpStr[256] =
{
"SVTCA y", /* Set vectors to coordinate axis y */
"SVTCA x", /* Set vectors to coordinate axis x */
"SPvTCA y", /* Set Proj. vec. to coord. axis y */
"SPvTCA x", /* Set Proj. vec. to coord. axis x */
"SFvTCA y", /* Set Free. vec. to coord. axis y */
"SFvTCA x", /* Set Free. vec. to coord. axis x */
"SPvTL //", /* Set Proj. vec. parallel to segment */
"SPvTL +", /* Set Proj. vec. normal to segment */
"SFvTL //", /* Set Free. vec. parallel to segment */
"SFvTL +", /* Set Free. vec. normal to segment */
"SPvFS", /* Set Proj. vec. from stack */
"SFvFS", /* Set Free. vec. from stack */
"GPV", /* Get projection vector */
"GFV", /* Get freedom vector */
"SFvTPv", /* Set free. vec. to proj. vec. */
"ISECT", /* compute intersection */
"SRP0", /* Set reference point 0 */
"SRP1", /* Set reference point 1 */
"SRP2", /* Set reference point 2 */
"SZP0", /* Set Zone Pointer 0 */
"SZP1", /* Set Zone Pointer 1 */
"SZP2", /* Set Zone Pointer 2 */
"SZPS", /* Set all zone pointers */
"SLOOP", /* Set loop counter */
"RTG", /* Round to Grid */
"RTHG", /* Round to Half-Grid */
"SMD", /* Set Minimum Distance */
"ELSE", /* Else */
"JMPR", /* Jump Relative */
"SCvTCi", /* Set CVT */
"SSwCi", /* */
"SSW", /* */
"DUP",
"POP",
"CLEAR",
"SWAP",
"DEPTH",
"CINDEX",
"MINDEX",
"AlignPTS",
"INS_$28",
"UTP",
"LOOPCALL",
"CALL",
"FDEF",
"ENDF",
"MDAP[-]",
"MDAP[r]",
"IUP[y]",
"IUP[x]",
"SHP[0]",
"SHP[1]",
"SHC[0]",
"SHC[1]",
"SHZ[0]",
"SHZ[1]",
"SHPIX",
"IP",
"MSIRP[0]",
"MSIRP[1]",
"AlignRP",
"RTDG",
"MIAP[-]",
"MIAP[r]",
"NPushB",
"NPushW",
"WS",
"RS",
"WCvtP",
"RCvt",
"GC[0]",
"GC[1]",
"SCFS",
"MD[0]",
"MD[1]",
"MPPEM",
"MPS",
"FlipON",
"FlipOFF",
"DEBUG",
"LT",
"LTEQ",
"GT",
"GTEQ",
"EQ",
"NEQ",
"ODD",
"EVEN",
"IF",
"EIF",
"AND",
"OR",
"NOT",
"DeltaP1",
"SDB",
"SDS",
"ADD",
"SUB",
"DIV",
"MUL",
"ABS",
"NEG",
"FLOOR",
"CEILING",
"ROUND[G]",
"ROUND[B]",
"ROUND[W]",
"ROUND[?]",
"NROUND[G]",
"NROUND[B]",
"NROUND[W]",
"NROUND[?]",
"WCvtF",
"DeltaP2",
"DeltaP3",
"DeltaC1",
"DeltaC2",
"DeltaC3",
"SROUND",
"S45Round",
"JROT",
"JROF",
"ROFF",
"INS_$7B",
"RUTG",
"RDTG",
"SANGW",
"AA",
"FlipPT",
"FlipRgON",
"FlipRgOFF",
"INS_$83",
"INS_$84",
"ScanCTRL",
"SDPVTL[0]",
"SDPVTL[1]",
"GetINFO",
"IDEF",
"ROLL",
"MAX",
"MIN",
"ScanTYPE",
"IntCTRL",
"INS_$8F",
"INS_$90",
"INS_$91",
"INS_$92",
"INS_$93",
"INS_$94",
"INS_$95",
"INS_$96",
"INS_$97",
"INS_$98",
"INS_$99",
"INS_$9A",
"INS_$9B",
"INS_$9C",
"INS_$9D",
"INS_$9E",
"INS_$9F",
"INS_$A0",
"INS_$A1",
"INS_$A2",
"INS_$A3",
"INS_$A4",
"INS_$A5",
"INS_$A6",
"INS_$A7",
"INS_$A8",
"INS_$A9",
"INS_$AA",
"INS_$AB",
"INS_$AC",
"INS_$AD",
"INS_$AE",
"INS_$AF",
"PushB[0]",
"PushB[1]",
"PushB[2]",
"PushB[3]",
"PushB[4]",
"PushB[5]",
"PushB[6]",
"PushB[7]",
"PushW[0]",
"PushW[1]",
"PushW[2]",
"PushW[3]",
"PushW[4]",
"PushW[5]",
"PushW[6]",
"PushW[7]",
"MDRP[G]",
"MDRP[B]",
"MDRP[W]",
"MDRP[?]",
"MDRP[rG]",
"MDRP[rB]",
"MDRP[rW]",
"MDRP[r?]",
"MDRP[mG]",
"MDRP[mB]",
"MDRP[mW]",
"MDRP[m?]",
"MDRP[mrG]",
"MDRP[mrB]",
"MDRP[mrW]",
"MDRP[mr?]",
"MDRP[pG]",
"MDRP[pB]",
"MDRP[pW]",
"MDRP[p?]",
"MDRP[prG]",
"MDRP[prB]",
"MDRP[prW]",
"MDRP[pr?]",
"MDRP[pmG]",
"MDRP[pmB]",
"MDRP[pmW]",
"MDRP[pm?]",
"MDRP[pmrG]",
"MDRP[pmrB]",
"MDRP[pmrW]",
"MDRP[pmr?]",
"MIRP[G]",
"MIRP[B]",
"MIRP[W]",
"MIRP[?]",
"MIRP[rG]",
"MIRP[rB]",
"MIRP[rW]",
"MIRP[r?]",
"MIRP[mG]",
"MIRP[mB]",
"MIRP[mW]",
"MIRP[m?]",
"MIRP[mrG]",
"MIRP[mrB]",
"MIRP[mrW]",
"MIRP[mr?]",
"MIRP[pG]",
"MIRP[pB]",
"MIRP[pW]",
"MIRP[p?]",
"MIRP[prG]",
"MIRP[prB]",
"MIRP[prW]",
"MIRP[pr?]",
"MIRP[pmG]",
"MIRP[pmB]",
"MIRP[pmW]",
"MIRP[pm?]",
"MIRP[pmrG]",
"MIRP[pmrB]",
"MIRP[pmrW]",
"MIRP[pmr?]"
};
const char* Cur_U_Line( TT_ExecContext exec )
{
char s[32];
int op, i, n;
op = exec->code[exec->IP];
sprintf( tempStr, "%s", OpStr[op] );
if ( op == 0x40 )
{
n = exec->code[exec->IP + 1];
sprintf( s, "(%d)", n );
strncat( tempStr, s, 8 );
if ( n > 20 ) n = 20; /* limit output */
for ( i = 0; i < n; i++ )
{
sprintf( s, " $%02hx", exec->code[exec->IP + i + 2] );
strncat( tempStr, s, 8 );
}
}
else if ( op == 0x41 )
{
n = exec->code[exec->IP + 1];
sprintf( s, "(%d)", n );
strncat( tempStr, s, 8 );
if ( n > 20 ) n = 20; /* limit output */
for ( i = 0; i < n; i++ )
{
sprintf( s, " $%02hx%02hx", exec->code[exec->IP + i*2 + 2],
exec->code[exec->IP + i*2 + 3] );
strncat( tempStr, s, 8 );
}
}
else if ( (op & 0xF8) == 0xB0 )
{
n = op - 0xB0;
for ( i = 0; i <= n; i++ )
{
sprintf( s, " $%02hx", exec->code[exec->IP + i + 1] );
strncat( tempStr, s, 8 );
}
}
else if ( (op & 0xF8) == 0xB8 )
{
n = op-0xB8;
for ( i = 0; i <= n; i++ )
{
sprintf( s, " $%02hx%02hx", exec->code[exec->IP + i*2 + 1],
exec->code[exec->IP + i*2 + 2] );
strncat( tempStr, s, 8 );
}
}
return (char*)tempStr;
}
EXPORT_FUNC
TT_Error TT_RunIns( TT_ExecContext exc )
{
TT_Int A, diff;
TT_ULong next_IP;
TT_Char ch, oldch;
char *temp;
int key;
FT_Memory memory;
TT_Error error = 0;
FT_GlyphZone save;
FT_GlyphZone pts;
#define TT_Round_Off 5
#define TT_Round_To_Half_Grid 0
#define TT_Round_To_Grid 1
#define TT_Round_To_Double_Grid 2
#define TT_Round_Up_To_Grid 4
#define TT_Round_Down_To_Grid 3
#define TT_Round_Super 6
#define TT_Round_Super_45 7
const char* round_str[8] =
{
"to half-grid",
"to grid",
"to double grid",
"down to grid",
"up to grid",
"off",
"super",
"super 45"
};
/* Check that we're running the code range that is effectively */
/* asked by the debugger front end. */
if ( exc->curRange != debug_coderange )
return TT_RunIns2( exc );
pts = exc->pts;
memory = exc->face->root.memory;
save.n_points = pts.n_points;
save.n_contours = pts.n_contours;
MEM_Alloc( save.org, sizeof ( TT_Vector ) * save.n_points );
MEM_Alloc( save.cur, sizeof ( TT_Vector ) * save.n_points );
MEM_Alloc( save.tags, sizeof ( TT_Byte ) * save.n_points );
exc->instruction_trap = 1;
oldch = '\0';
do
{
if ( exc->IP < exc->codeSize )
{
#ifdef TT_CONFIG_OPTION_STATIC_INTERPRETER
cur = *exc;
#endif
if ( ( CUR.length = opcode_length[CUR.opcode] ) < 0 )
{
if ( CUR.IP + 1 > CUR.codeSize )
goto LErrorCodeOverflow_;
CUR.length = CUR.code[CUR.IP + 1] + 2;
}
exc->args = exc->top - (Pop_Push_Count[exc->opcode] >> 4);
/* `args' is the top of the stack once arguments have been popped. */
/* One can also interpret it as the index of the last argument. */
/* Print the current line. We use a 80-columns console with the */
/* following formatting: */
/* */
/* [loc]:[addr] [opcode] [disassemby] [a][b]|[c][d] */
/* */
{
char temp[80];
int n, col, pop;
int args = CUR.args;
sprintf( temp, "%78c\n", ' ' );
/* first letter of location */
switch ( CUR.curRange )
{
case tt_coderange_glyph:
temp[0] = 'g';
break;
case tt_coderange_cvt:
temp[0] = 'c';
break;
default:
temp[0] = 'f';
}
/* current IP */
sprintf( temp+1, "%04lx: %02x %-36.36s",
CUR.IP,
CUR.opcode,
Cur_U_Line(&CUR) );
strncpy( temp+46, " (", 2 );
args = CUR.top - 1;
pop = Pop_Push_Count[CUR.opcode] >> 4;
col = 48;
for ( n = 6; n > 0; n-- )
{
if ( pop == 0 )
temp[col-1] = (temp[col-1] == '(' ? ' ' : ')' );
if ( args < CUR.top && args >= 0 )
sprintf( temp+col, "%04lx", CUR.stack[args] );
else
sprintf( temp+col, " " );
temp[col+4] = ' ';
col += 5;
pop--;
args--;
}
temp[78] = '\n';
temp[79] = '\0';
FT_TRACE0(( temp ));
}
/* First, check for empty stack and overflow */
if ( CUR.args < 0 )
{
FT_TRACE0(( "ERROR : Too few arguments\n" ));
exc->error = TT_Err_Too_Few_Arguments;
goto LErrorLabel_;
}
CUR.new_top = CUR.args + (Pop_Push_Count[CUR.opcode] & 15);
/* new_top is the new top of the stack, after the instruction's */
/* execution. top will be set to new_top after the 'case' */
if ( CUR.new_top > CUR.stackSize )
{
FT_TRACE0(( "ERROR : Stack overflow\n" ));
exc->error = TT_Err_Stack_Overflow;
goto LErrorLabel_;
}
}
else
FT_TRACE0(( "End of program reached.\n" ));
key = 0;
do
{
/* read keyboard */
ch = getch();
switch ( ch )
{
/* Help - show keybindings */
case '?':
FT_TRACE0(( "FDebug Help\n\n" ));
FT_TRACE0(( "? Show this page\n" ));
FT_TRACE0(( "q Quit debugger\n" ));
FT_TRACE0(( "n Skip to next instruction\n" ));
FT_TRACE0(( "s Step into\n" ));
FT_TRACE0(( "v Show vector info\n" ));
FT_TRACE0(( "g Show graphics state\n" ));
FT_TRACE0(( "p Show points zone\n\n" ));
break;
/* Show vectors */
case 'v':
FT_TRACE0(( "freedom (%04hx,%04hx)\n", exc->GS.freeVector.x,
exc->GS.freeVector.y ));
FT_TRACE0(( "projection (%04hx,%04hx)\n", exc->GS.projVector.x,
exc->GS.projVector.y ));
FT_TRACE0(( "dual (%04hx,%04hx)\n\n", exc->GS.dualVector.x,
exc->GS.dualVector.y ));
break;
/* Show graphics state */
case 'g':
FT_TRACE0(( "rounding %s\n", round_str[exc->GS.round_state] ));
FT_TRACE0(( "min dist %04lx\n", exc->GS.minimum_distance ));
FT_TRACE0(( "cvt_cutin %04lx\n", exc->GS.control_value_cutin ));
break;
/* Show points table */
case 'p':
for ( A = 0; A < exc->pts.n_points; A++ )
{
FT_TRACE0(( "%02hx ", A ));
FT_TRACE0(( "%08lx,%08lx - ", pts.org[A].x, pts.org[A].y ));
FT_TRACE0(( "%08lx,%08lx\n", pts.cur[A].x, pts.cur[A].y ));
}
FT_TRACE0(( "\n" ));
break;
default:
key = 1;
}
} while ( !key );
MEM_Copy( save.org, pts.org, pts.n_points * sizeof ( TT_Vector ) );
MEM_Copy( save.cur, pts.cur, pts.n_points * sizeof ( TT_Vector ) );
MEM_Copy( save.tags, pts.tags, pts.n_points );
/* a return indicate the last command */
if (ch == '\r')
ch = oldch;
switch ( ch )
{
/* Quit debugger */
case 'q':
goto LErrorLabel_;
/* Step over */
case 'n':
if ( exc->IP < exc->codeSize )
{
/* `step over' is equivalent to `step into' except if */
/* the current opcode is a CALL or LOOPCALL */
if ( CUR.opcode != 0x2a && CUR.opcode != 0x2b )
goto Step_into;
/* otherwise, loop execution until we reach the next opcode */
next_IP = CUR.IP + CUR.length;
while ( exc->IP != next_IP )
{
if ( ( error = TT_RunIns2( exc ) ) )
goto LErrorLabel_;
}
}
oldch = ch;
break;
/* Step into */
case 's':
if ( exc->IP < exc->codeSize )
Step_into:
if ( ( error = TT_RunIns2( exc ) ) )
goto LErrorLabel_;
oldch = ch;
break;
default:
FT_TRACE0(( "unknown command. Press ? for help\n" ));
oldch = '\0';
}
for ( A = 0; A < pts.n_points; A++ )
{
diff = 0;
if ( save.org[A].x != pts.org[A].x ) diff |= 1;
if ( save.org[A].y != pts.org[A].y ) diff |= 2;
if ( save.cur[A].x != pts.cur[A].x ) diff |= 4;
if ( save.cur[A].y != pts.cur[A].y ) diff |= 8;
if ( save.tags[A] != pts.tags[A] ) diff |= 16;
if ( diff )
{
FT_TRACE0(( "%02hx ", A ));
if ( diff & 16 ) temp = "(%01hx)"; else temp = " %01hx ";
FT_TRACE0(( temp, save.tags[A] & 7 ));
if ( diff & 1 ) temp = "(%08lx)"; else temp = " %08lx ";
FT_TRACE0(( temp, save.org[A].x ));
if ( diff & 2 ) temp = "(%08lx)"; else temp = " %08lx ";
FT_TRACE0(( temp, save.org[A].y ));
if ( diff & 4 ) temp = "(%08lx)"; else temp = " %08lx ";
FT_TRACE0(( temp, save.cur[A].x ));
if ( diff & 8 ) temp = "(%08lx)"; else temp = " %08lx ";
FT_TRACE0(( temp, save.cur[A].y ));
FT_TRACE0(( "\n" ));
FT_TRACE0(( "%02hx ", A ));
if ( diff & 16 ) temp = "[%01hx]"; else temp = " %01hx ";
FT_TRACE0(( temp, pts.tags[A] & 7 ));
if ( diff & 1 ) temp = "[%08lx]"; else temp = " %08lx ";
FT_TRACE0(( temp, pts.org[A].x ));
if ( diff & 2 ) temp = "[%08lx]"; else temp = " %08lx ";
FT_TRACE0(( temp, pts.org[A].y ));
if ( diff & 4 ) temp = "[%08lx]"; else temp = " %08lx ";
FT_TRACE0(( temp, pts.cur[A].x ));
if ( diff & 8 ) temp = "[%08lx]"; else temp = " %08lx ";
FT_TRACE0(( temp, pts.cur[A].y ));
FT_TRACE0(( "\n\n" ));
}
}
} while ( TRUE );
LErrorLabel_:
return error;
LErrorCodeOverflow_:
error = TT_Err_Code_Overflow;
return error;
}
#endif /* DEBUG_INTERPRETER */
#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ #endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */
/* END */ /* END */

View File

@ -314,8 +314,10 @@
/* <Note> */ /* <Note> */
/* Only the glyph loader and debugger should call this function. */ /* Only the glyph loader and debugger should call this function. */
/* */ /* */
EXPORT_DEF /* This function is publicly exported because it is directly */
TT_ExecContext TT_New_Context( TT_Face face ); /* invoked by the TrueType debugger.. */
/* */
EXPORT_DEF(TT_ExecContext) TT_New_Context( TT_Face face );
/*************************************************************************/ /*************************************************************************/
@ -335,7 +337,7 @@
/* <Note> */ /* <Note> */
/* Only the glyph loader and debugger should call this function. */ /* Only the glyph loader and debugger should call this function. */
/* */ /* */
EXPORT_DEF LOCAL_DEF
TT_Error TT_Done_Context( TT_ExecContext exec ); TT_Error TT_Done_Context( TT_ExecContext exec );
@ -381,7 +383,7 @@
/* <Note> */ /* <Note> */
/* Only the glyph loader and debugger should call this function. */ /* Only the glyph loader and debugger should call this function. */
/* */ /* */
EXPORT_DEF LOCAL_DEF
TT_Error TT_Load_Context( TT_ExecContext exec, TT_Error TT_Load_Context( TT_ExecContext exec,
TT_Face face, TT_Face face,
TT_Size size ); TT_Size size );
@ -456,8 +458,10 @@
/* <Note> */ /* <Note> */
/* Only object manager and debugger should call this function. */ /* Only object manager and debugger should call this function. */
/* */ /* */
EXPORT_DEF /* This function is publicly exported because it is directly */
TT_Error TT_RunIns( TT_ExecContext exec ); /* invoked by the TrueType debugger.. */
/* */
EXPORT_DEF(TT_Error) TT_RunIns( TT_ExecContext exec );
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -360,7 +360,6 @@
/* return a loaded glyph's metrics. */ /* return a loaded glyph's metrics. */
/* */ /* */
EXPORT_FUNC
const FT_DriverInterface t1_driver_interface = const FT_DriverInterface t1_driver_interface =
{ {
sizeof( FT_DriverRec ), sizeof( FT_DriverRec ),
@ -427,8 +426,7 @@
#ifdef FT_CONFIG_OPTION_DYNAMIC_DRIVERS #ifdef FT_CONFIG_OPTION_DYNAMIC_DRIVERS
EXPORT_FUNC EXPORT_FUNC(FT_DriverInterface*) getDriverInterface( void )
FT_DriverInterface* getDriverInterface( void )
{ {
return &t1_driver_interface; return &t1_driver_interface;
} }

View File

@ -21,8 +21,7 @@
#include <t1objs.h> #include <t1objs.h>
#include <t1errors.h> #include <t1errors.h>
EXPORT_DEF EXPORT_VAR(const FT_DriverInterface) t1_driver_interface;
const FT_DriverInterface t1_driver_interface;
#endif /* T1DRIVER_H */ #endif /* T1DRIVER_H */

View File

@ -52,7 +52,7 @@
* *
*********************************************************************/ *********************************************************************/
EXPORT_FUNC LOCAL_FUNC
void T1_Init_Builder( T1_Builder* builder, void T1_Init_Builder( T1_Builder* builder,
T1_Face face, T1_Face face,
T1_Size size, T1_Size size,
@ -113,7 +113,7 @@
* *
*********************************************************************/ *********************************************************************/
EXPORT_FUNC LOCAL_FUNC
void T1_Done_Builder( T1_Builder* builder ) void T1_Done_Builder( T1_Builder* builder )
{ {
T1_GlyphSlot glyph = builder->glyph; T1_GlyphSlot glyph = builder->glyph;
@ -142,7 +142,7 @@
* *
*********************************************************************/ *********************************************************************/
EXPORT_FUNC LOCAL_FUNC
void T1_Init_Decoder( T1_Decoder* decoder, void T1_Init_Decoder( T1_Decoder* decoder,
const T1_Hinter_Funcs* funcs ) const T1_Hinter_Funcs* funcs )
{ {
@ -438,7 +438,7 @@
* *
*********************************************************************/ *********************************************************************/
EXPORT_FUNC LOCAL_FUNC
T1_Error T1_Parse_CharStrings( T1_Decoder* decoder, T1_Error T1_Parse_CharStrings( T1_Decoder* decoder,
T1_Byte* charstring_base, T1_Byte* charstring_base,
T1_Int charstring_len, T1_Int charstring_len,

View File

@ -299,7 +299,7 @@
* *
*********************************************************************/ *********************************************************************/
EXPORT_DEF LOCAL_DEF
void T1_Init_Builder( T1_Builder* builder, void T1_Init_Builder( T1_Builder* builder,
T1_Face face, T1_Face face,
T1_Size size, T1_Size size,
@ -326,7 +326,7 @@
* *
*********************************************************************/ *********************************************************************/
EXPORT_DEF LOCAL_DEF
void T1_Done_Builder( T1_Builder* builder ); void T1_Done_Builder( T1_Builder* builder );
@ -349,7 +349,7 @@
* *
*********************************************************************/ *********************************************************************/
EXPORT_DEF LOCAL_DEF
void T1_Init_Decoder( T1_Decoder* decoder, void T1_Init_Decoder( T1_Decoder* decoder,
const T1_Hinter_Funcs* funcs ); const T1_Hinter_Funcs* funcs );
@ -362,7 +362,7 @@
/* This function is exported, because it is used by the T1Dump utility */ /* This function is exported, because it is used by the T1Dump utility */
EXPORT_DEF LOCAL_DEF
T1_Error T1_Parse_CharStrings( T1_Decoder* decoder, T1_Error T1_Parse_CharStrings( T1_Decoder* decoder,
T1_Byte* charstring_base, T1_Byte* charstring_base,
T1_Int charstring_len, T1_Int charstring_len,

View File

@ -359,7 +359,6 @@
/* return a loaded glyph's metrics. */ /* return a loaded glyph's metrics. */
/* */ /* */
EXPORT_FUNC
const FT_DriverInterface t1z_driver_interface = const FT_DriverInterface t1z_driver_interface =
{ {
sizeof( FT_DriverRec ), sizeof( FT_DriverRec ),
@ -426,8 +425,7 @@
#ifdef FT_CONFIG_OPTION_DYNAMIC_DRIVERS #ifdef FT_CONFIG_OPTION_DYNAMIC_DRIVERS
EXPORT_FUNC EXPORT_FUNC(FT_DriverInterface*) getDriverInterface( void )
FT_DriverInterface* getDriverInterface( void )
{ {
return &t1_driver_interface; return &t1_driver_interface;
} }

View File

@ -21,8 +21,7 @@
#include <t1objs.h> #include <t1objs.h>
#include <t1errors.h> #include <t1errors.h>
EXPORT_DEF EXPORT_VAR(const FT_DriverInterface) t1z_driver_interface;
const FT_DriverInterface t1z_driver_interface;
#endif /* T1DRIVER_H */ #endif /* T1DRIVER_H */

View File

@ -198,7 +198,7 @@
* *
*********************************************************************/ *********************************************************************/
EXPORT_FUNC LOCAL_FUNC
void T1_Init_Decoder( T1_Decoder* decoder ) void T1_Init_Decoder( T1_Decoder* decoder )
{ {
decoder->top = 0; decoder->top = 0;