shithub: freetype+ttf2subf

Download patch

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.

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