ref: 83b4a4b5157089bc293d512a19013ab43c0b27bc
parent: 4997097752fe201a075c6dd9838f350d0e419efb
author: David Turner <[email protected]>
date: Wed Mar 6 07:42:34 EST 2002
* include/freetype/freetype.h, include/freetype/internal/ftobjs.h, src/base/ftobjs.c, src/base/ftinit.c: adding the new FT_Library_Version API to return the library's current version in dynamic links.
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,10 @@
* src/pshinter/pshalgo2.c: changed 'print_zone' to 'psh2_print_zone'
* src/pshinter/pshalgo1.c: changed 'print_zone' to 'psh1_print_zone'
+ * include/freetype/freetype.h, include/freetype/internal/ftobjs.h,
+ src/base/ftobjs.c, src/base/ftinit.c: adding the new FT_Library_Version
+ API to return the library's current version in dynamic links.
+
2002-03-06 Werner Lemberg <[email protected]>
--- a/include/freetype/freetype.h
+++ b/include/freetype/freetype.h
@@ -106,6 +106,7 @@
/* */
/* FT_Init_FreeType */
/* FT_Done_FreeType */
+ /* FT_Library_Version */
/* */
/* FT_New_Face */
/* FT_Done_Face */
@@ -1336,6 +1337,40 @@
/* */
FT_EXPORT( FT_Error )
FT_Init_FreeType( FT_Library *alibrary );
+
+
+ /*************************************************************************/
+ /* */
+ /* <Function> */
+ /* FT_Library_Version */
+ /* */
+ /* <Description> */
+ /* Return the version of the FreeType library being used. This */
+ /* is useful when dynamically linking to the library, since one */
+ /* cannot use the macros FT_FREETYPE_MAJOR, FT_FREETYPE_MINOR and */
+ /* FT_FREETYPE_PATCH. */
+ /* */
+ /* <Input> */
+ /* library :: source library handle. */
+ /* */
+ /* <Output> */
+ /* amajor :: major version number */
+ /* aminor :: minor version number */
+ /* apatch :: patch version number */
+ /* */
+ /* <Note> */
+ /* the reason why this function takes a 'library' argument is */
+ /* because certain programs implement library initialisation in */
+ /* a custom way that doesn't use FT_Init_FreeType. */
+ /* */
+ /* in certain such cases, the library version cannot be known until */
+ /* the library object has been created.. */
+ /* */
+ FT_EXPORT( void )
+ FT_Library_Version( FT_Library library,
+ FT_Int *amajor,
+ FT_Int *aminor,
+ FT_Int *apatch );
/*************************************************************************/
--- a/include/freetype/internal/ftobjs.h
+++ b/include/freetype/internal/ftobjs.h
@@ -657,6 +657,10 @@
FT_Generic generic;
+ FT_Int version_major;
+ FT_Int version_minor;
+ FT_Int version_patch;
+
FT_UInt num_modules;
FT_Module modules[FT_MAX_MODULES]; /* module objects */
--- a/src/base/ftinit.c
+++ b/src/base/ftinit.c
@@ -125,7 +125,13 @@
error = FT_New_Library( memory, alibrary );
if ( !error )
+ {
+ (*alibrary)->version_major = FREETYPE_MAJOR;
+ (*alibrary)->version_minor = FREETYPE_MINOR;
+ (*alibrary)->version_patch = FREETYPE_PATCH;
+
FT_Add_Default_Modules( *alibrary );
+ }
return error;
}
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -2300,6 +2300,37 @@
}
+ /* documentation is in freetype.h */
+
+ FT_EXPORT_DEF( void )
+ FT_Library_Version( FT_Library library,
+ FT_Int *amajor,
+ FT_Int *aminor,
+ FT_Int *apatch )
+ {
+ FT_Int major = 0;
+ FT_Int minor = 0;
+ FT_Int patch = 0;
+
+
+ if ( library )
+ {
+ major = library->version_major;
+ minor = library->version_minor;
+ patch = library->version_patch;
+ }
+
+ if ( *amajor )
+ *amajor = major;
+
+ if ( *aminor )
+ *aminor = minor;
+
+ if ( *apatch )
+ *apatch = patch;
+ }
+
+
/* documentation is in ftmodule.h */
FT_EXPORT_DEF( FT_Error )