forked from minhngoc25a/freetype2
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..
This commit is contained in:
parent
f8bf6e2bc9
commit
10effdf61e
|
@ -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 */
|
||||
|
||||
|
||||
|
|
|
@ -48,47 +48,25 @@
|
|||
************************************************************************/
|
||||
|
||||
#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. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
#define FTINIT_DRIVER_CHAIN
|
||||
#define FT_INIT_LAST_DRIVER_CHAIN ((FT_DriverChain*) 0)
|
||||
|
||||
/* Include the SFNT driver interface if needed */
|
||||
|
||||
#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
|
||||
#undef FT_DRIVER
|
||||
#define FT_DRIVER(x) extern FT_DriverInterface x;
|
||||
#include <ftmodule.h>
|
||||
|
||||
#undef FT_DRIVER
|
||||
#define FT_DRIVER(x) &x,
|
||||
|
||||
static
|
||||
const FT_DriverInterface* ft_default_drivers[] = {
|
||||
#include <ftmodule.h>
|
||||
0
|
||||
};
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
|
@ -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++;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,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)
|
||||
|
|
@ -161,12 +161,5 @@ $(OBJ_)sf%.$O: $(SFNT_DIR_)sf%.c $(BASE_H) $(SHARED_H) $(SFNT_DRV_H)
|
|||
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
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
||||
|
|
|
@ -0,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)
|
||||
|
|
@ -195,11 +195,4 @@ $(OBJ_)ttpload.$O: $(TT_DIR_)ttpload.c $(BASE_H) $(SFNT_SRC) $(TT_DRV_H)
|
|||
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
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
||||
|
|
|
@ -0,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)
|
||||
|
|
@ -156,12 +156,4 @@ $(OBJ_)t1%.$O: $(T1SHARED_DIR_)t1%.c $(BASE_H) $(T1SHARED_H)
|
|||
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
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
|
Loading…
Reference in New Issue