shithub: freetype+ttf2subf

Download patch

ref: 10effdf61e6ee3d35394acf58e7cdc7121798b36
parent: f8bf6e2bc95e6458d5f6eec561a982df4e571e54
author: David Turner <[email protected]>
date: Tue Dec 28 19:22:24 EST 1999

Added the rules files `module.mk' to "sfnt", "truetype" and "type1" to
reflect the new modules/drivers list management performed through the
file `freetype2/config/modules.mk'

Changed the driver header files to reflect the new modules/drivers
list management. We get rid, at last, of the infamous pre-processor
tricks used to build the list at compile time.

`src/base/ftinit.c' is also modified to reflect the changes..

git/fs: mount .git/fs: mount/attach disallowed
--- a/src/base/ftdriver.h
+++ b/src/base/ftdriver.h
@@ -573,68 +573,6 @@
 
   } FT_DriverInterface;
 
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_DriverChain                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A very structure used exclusively by "ftinit.c" in the function    */
-  /*    FT_Add_Default_Drivers. This function is in charge of loading the  */
-  /*    set of "default" font drivers into each new library object.        */
-  /*                                                                       */
-  /*    The set itself is determined at _compile_ time through various     */
-  /*    macro definitions.                                                 */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    next      :: pointer to next element in driver list chain          */
-  /*    interface :: pointer to the driver's interface                     */
-  /*                                                                       */
-  typedef struct FT_DriverChain_  FT_DriverChain;
-
-  struct FT_DriverChain_
-  {
-    const FT_DriverChain*      next;
-    const FT_DriverInterface*  interface;
-  };
-
-
-/*************************************************************************
- *
- *  Here is a template of the code that should appear in each
- *  font driver's _interface_ file (the one included by "ftinit.c").
- *
- *  It is used to build, at compile time, a simple linked list of
- *  the interfaces of the drivers which have been #included in 
- *  "ftinit.c". See the source code of the latter file for details
- *
- *  (Note that this is only required when you want your driver included
- *   in the set of default drivers loaded by FT_Init_FreeType. Other
- *   drivers can still be added manually at runtime with FT_Add_Driver.
- *
- * {
- *   #ifdef FTINIT_DRIVER_CHAIN
- *
- *   static
- *   const FT_DriverChain  ftinit_<FORMAT>_driver_chain =
- *   {
- *     FT_INIT_LAST_DRIVER_CHAIN,
- *     &<FORMAT>_driver_interface
- *   };
- * 
- *   #undef  FT_INIT_LAST_DRIVER_CHAIN
- *   #define FT_INIT_LAST_DRIVER_CHAIN   &ftinit_<FORMAT>_driver_chain
- *
- *   #endif 
- * }
- *
- *  replace <FORMAT> with your driver's prefix
- *
- *************************************************************************/
-
-
 #endif /* FTDRIVER_H */
 
 
--- a/src/base/ftinit.c
+++ b/src/base/ftinit.c
@@ -48,48 +48,26 @@
   ************************************************************************/
 
 #include <ftobjs.h>
-#include <ftdriver.h>
 #include <ftconfig.h>
 #include <ftdebug.h>
+#include <ftdriver.h>
 
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_init
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macros FT_SUPPORT_xxxx are defined by Makefile.lib when this file */
-  /* is compiled.  They come from a make variable called FTINIT_MACROS     */
-  /* which is updated by each driver Makefile.                             */
-  /*                                                                       */
-  /* This means that when a driver isn't part of the build, ftinit.o       */
-  /* won't try to reference it.                                            */
-  /*                                                                       */
-  /*************************************************************************/
+#undef  FT_DRIVER
+#define FT_DRIVER(x)  extern FT_DriverInterface x;
+#include <ftmodule.h>
 
-#define  FTINIT_DRIVER_CHAIN
-#define  FT_INIT_LAST_DRIVER_CHAIN    ((FT_DriverChain*) 0)
+#undef  FT_DRIVER
+#define FT_DRIVER(x)  &x,
 
-  /* Include the SFNT driver interface if needed */
+static
+const FT_DriverInterface*  ft_default_drivers[] = {
+#include <ftmodule.h>
+  0
+};
 
-#ifdef FT_SUPPORT_SFNT
-#include "sfdriver.h"
-#endif
-
-  /* Include the TrueType driver interface if needed */
-
-#ifdef FT_SUPPORT_TRUETYPE
-#include "ttdriver.h"
-#endif
-
-
-  /* Include the Type1 driver interface if needed */
-
-#ifdef FT_SUPPORT_TYPE1
-#include "t1driver.h"
-#endif
-
-
-
   /*************************************************************************/
   /*                                                                       */
   /* <Function>                                                            */
@@ -104,23 +82,20 @@
   EXPORT_FUNC
   void  FT_Default_Drivers( FT_Library  library )
   {
-    FT_Error               error;
-    const FT_DriverChain*  chain = FT_INIT_LAST_DRIVER_CHAIN;
+    FT_Error                   error;
+    const FT_DriverInterface* *cur;
 
-    while (chain)
+    cur = ft_default_drivers;
+    while (*cur)
     {
-      error = FT_Add_Driver( library, chain->interface );
-
+      error = FT_Add_Driver( library, *cur );
       /* notify errors, but don't stop */
       if (error)
       {
         FT_ERROR(( "FT.Default_Drivers: cannot install `%s', error = %x\n",
-                   chain->interface->driver_name,
-                   error ));
+                   (*cur)->driver_name, error ));
       }
-
-      chain = chain->next;
-      error = 0;  /* clear error */
+      cur++;
     }
   }
 
--- /dev/null
+++ b/src/sfnt/module.mk
@@ -1,0 +1,6 @@
+make_module_list: add_sfnt_driver
+
+add_sfnt_driver:
+	$(OPEN_DRIVER)sfnt_driver_interface$(CLOSE_DRIVER)
+	$(ECHO_DRIVER)sfnt      $(ECHO_DRIVER_DESC) pseudo-driver for TrueType & OpenType formats $(ECHO_DRIVER_DONE)
+
--- a/src/sfnt/rules.mk
+++ b/src/sfnt/rules.mk
@@ -161,12 +161,5 @@
 DRV_OBJS_S += $(SFNT_DRV_OBJ_S)
 DRV_OBJS_M += $(SFNT_DRV_OBJ_M)
 
-
-# update `ftinit' variables
-#
-FTINIT_DRIVER_PATHS  += $(SFNT_DIR) $(SHARED)
-FTINIT_DRIVER_H      += $(SFNT_DRV_H)
-FTINIT_DRIVER_MACROS += FT_SUPPORT_SFNT
-
 endif
 # END
--- a/src/sfnt/sfdriver.h
+++ b/src/sfnt/sfdriver.h
@@ -25,58 +25,6 @@
   EXPORT_DEF
   const FT_DriverInterface  sfnt_driver_interface;
 
-
-
-/*************************************************************************
- *
- *  Here is a template of the code that should appear in each
- *  font driver's _interface_ file (the one included by "ftinit.c").
- *
- *  It is used to build, at compile time, a simple linked list of
- *  the interfaces of the drivers which have been #included in 
- *  "ftinit.c". See the source code of the latter file for details
- *
- *  (Note that this is only required when you want your driver included
- *   in the set of default drivers loaded by FT_Init_FreeType. Other
- *   drivers can still be added manually at runtime with FT_Add_Driver.
- *
- * {
- *   #ifdef FTINIT_DRIVER_CHAIN
- *
- *   static
- *   const FT_DriverChain  ftinit_<FORMAT>_driver_chain =
- *   {
- *     FT_INIT_LAST_DRIVER_CHAIN,
- *     &<FORMAT>_driver_interface
- *   };
- * 
- *   #undef  FT_INIT_LAST_DRIVER_CHAIN
- *   #define FT_INIT_LAST_DRIVER_CHAIN   &ftinit_<FORMAT>_driver_chain
- *
- *   #endif 
- * }
- *
- *  replace <FORMAT> with your driver's prefix
- *
- *************************************************************************/
-
-
-#ifdef FTINIT_DRIVER_CHAIN
-
-  static
-  const FT_DriverChain  ftinit_sfnt_driver_chain =
-  {
-    FT_INIT_LAST_DRIVER_CHAIN,
-    &sfnt_driver_interface
-  };
-
-#undef  FT_INIT_LAST_DRIVER_CHAIN
-#define FT_INIT_LAST_DRIVER_CHAIN   &ftinit_sfnt_driver_chain
-
-#endif /* FTINIT_DRIVER_CHAIN */ 
-
-
-
 #endif /* SFDRIVER_H */
 
 
--- /dev/null
+++ b/src/truetype/module.mk
@@ -1,0 +1,6 @@
+make_module_list: add_truetype_driver
+
+add_truetype_driver:
+	$(OPEN_DRIVER)tt_driver_interface$(CLOSE_DRIVER)
+	$(ECHO_DRIVER)truetype  $(ECHO_DRIVER_DESC) Windows/Mac font files with extension *.ttf or *.ttc $(ECHO_DRIVER_DONE)
+
--- a/src/truetype/rules.mk
+++ b/src/truetype/rules.mk
@@ -195,11 +195,4 @@
 DRV_OBJS_S += $(TT_DRV_OBJ_S)
 DRV_OBJS_M += $(TT_DRV_OBJ_M)
 
-
-# update `ftinit' variables
-#
-FTINIT_DRIVER_PATHS  += $(SFNT_DIR) $(TT_DIR) $(TT_EXT_DIR)
-FTINIT_DRIVER_H      += $(SFNT_H) $(TT_DRV_H)
-FTINIT_DRIVER_MACROS += FT_SUPPORT_TRUETYPE
-
 # END
--- a/src/truetype/ttdriver.h
+++ b/src/truetype/ttdriver.h
@@ -135,58 +135,6 @@
   EXPORT_DEF
   const TT_DriverInterface  tt_format_interface;
 
-
-
-/*************************************************************************
- *
- *  Here is a template of the code that should appear in each
- *  font driver's _interface_ file (the one included by "ftinit.c").
- *
- *  It is used to build, at compile time, a simple linked list of
- *  the interfaces of the drivers which have been #included in 
- *  "ftinit.c". See the source code of the latter file for details
- *
- *  (Note that this is only required when you want your driver included
- *   in the set of default drivers loaded by FT_Init_FreeType. Other
- *   drivers can still be added manually at runtime with FT_Add_Driver.
- *
- * {
- *   #ifdef FTINIT_DRIVER_CHAIN
- *
- *   static
- *   const FT_DriverChain  ftinit_<FORMAT>_driver_chain =
- *   {
- *     FT_INIT_LAST_DRIVER_CHAIN,
- *     &<FORMAT>_driver_interface
- *   };
- * 
- *   #undef  FT_INIT_LAST_DRIVER_CHAIN
- *   #define FT_INIT_LAST_DRIVER_CHAIN   &ftinit_<FORMAT>_driver_chain
- *
- *   #endif 
- * }
- *
- *  replace <FORMAT> with your driver's prefix
- *
- *************************************************************************/
-
-
-#ifdef FTINIT_DRIVER_CHAIN
-
-  static
-  const FT_DriverChain  ftinit_tt_driver_chain =
-  {
-    FT_INIT_LAST_DRIVER_CHAIN,
-    &tt_driver_interface
-  };
-
-#undef  FT_INIT_LAST_DRIVER_CHAIN
-#define FT_INIT_LAST_DRIVER_CHAIN   &ftinit_tt_driver_chain
-
-#endif /* FTINIT_DRIVER_CHAIN */ 
-
-
-
 #endif /* TTDRIVER_H */
 
 
--- /dev/null
+++ b/src/type1/module.mk
@@ -1,0 +1,6 @@
+make_module_list: add_type1_driver
+
+add_type1_driver:
+	$(OPEN_DRIVER)t1_driver_interface$(CLOSE_DRIVER)
+	$(ECHO_DRIVER)type1     $(ECHO_DRIVER_DESC) Postscript font files with extension *.pfa or *.pfb $(ECHO_DRIVER_DONE)
+
--- a/src/type1/rules.mk
+++ b/src/type1/rules.mk
@@ -156,12 +156,4 @@
 DRV_OBJS_S += $(T1_DRV_OBJ_S)
 DRV_OBJS_M += $(T1_DRV_OBJ_M)
 
-
-# update 'ftinit' variables
-#
-FTINIT_DRIVER_PATHS  += $(T1_DIR) $(T1SHARED_DIR)
-FTINIT_DRIVER_H      += $(T1_DRV_H)
-FTINIT_DRIVER_MACROS += FT_SUPPORT_TYPE1
-
-
 # END
--- a/src/type1/t1driver.h
+++ b/src/type1/t1driver.h
@@ -24,54 +24,5 @@
   EXPORT_DEF
   const  FT_DriverInterface  t1_driver_interface;
 
-
-/*************************************************************************
- *
- *  Here is a template of the code that should appear in each
- *  font driver's _interface_ file (the one included by "ftinit.c").
- *
- *  It is used to build, at compile time, a simple linked list of
- *  the interfaces of the drivers which have been #included in 
- *  "ftinit.c". See the source code of the latter file for details
- *
- *  (Note that this is only required when you want your driver included
- *   in the set of default drivers loaded by FT_Init_FreeType. Other
- *   drivers can still be added manually at runtime with FT_Add_Driver.
- *
- * {
- *   #ifdef FTINIT_DRIVER_CHAIN
- *
- *   static
- *   const FT_DriverChain  ftinit_<FORMAT>_driver_chain =
- *   {
- *     FT_INIT_LAST_DRIVER_CHAIN,
- *     &<FORMAT>_driver_interface
- *   };
- * 
- *   #undef  FT_INIT_LAST_DRIVER_CHAIN
- *   #define FT_INIT_LAST_DRIVER_CHAIN   &ftinit_<FORMAT>_driver_chain
- *
- *   #endif 
- * }
- *
- *  replace <FORMAT> with your driver's prefix
- *
- *************************************************************************/
-
-#ifdef FTINIT_DRIVER_CHAIN
-
-  static
-  const FT_DriverChain  ftinit_t1_driver_chain =
-  {
-    FT_INIT_LAST_DRIVER_CHAIN,
-    &t1_driver_interface
-  };
-
-#undef  FT_INIT_LAST_DRIVER_CHAIN
-#define FT_INIT_LAST_DRIVER_CHAIN   &ftinit_t1_driver_chain
-
-#endif /* FTINIT_DRIVER_CHAIN */ 
-
-
 #endif /* T1DRIVER_H */