0,0 → 1,279 |
/******************************************************************* |
* |
* ttconfig.h 1.0 |
* |
* Configuration settings header file (spec only). |
* |
* Copyright 1996-1999 by |
* David Turner, Robert Wilhelm, and Werner Lemberg. |
* |
* This file is part of the FreeType project, and may only be used |
* modified and distributed under the terms of the FreeType project |
* license, LICENSE.TXT. By continuing to use, modify, or distribute |
* this file you indicate that you have read the license and |
* understand and accept it fully. |
* |
* Notes: |
* |
* All the configuration #define statements have been gathered in |
* this file to allow easy check and modification. |
* |
******************************************************************/ |
|
#ifndef TTCONFIG_H |
#define TTCONFIG_H |
|
|
|
/* ------------ auto configuration ------------------------------------- */ |
|
|
/*************************************************************************/ |
/* Here we include the file ft_conf.h for system dependent stuff. */ |
/* The specific makefile is responsible for providing the right path to */ |
/* this file. */ |
|
#include "ft_conf.h" |
|
|
/**************************************************************************/ |
/* Define TT_CONFIG_THREAD_SAFE if you want to build a thread-safe */ |
/* version of the library. */ |
|
/* #define TT_CONFIG_OPTION_THREAD_SAFE */ |
|
|
|
/* ------------ general debugging -------------------------------------- */ |
|
|
/************************************************************************* |
* |
* There are now three debugging modes: |
* |
* - trace mode: |
* |
* Error and trace messages are sent to the log file |
* (which can be the standard error output). Define |
* DEBUG_LEVEL_TRACE to enable this mode. |
* |
* - error mode: |
* |
* Only error messages are generated. Define |
* DEBUG_LEVEL_ERROR to enable this mode. |
* |
* - release mode: |
* |
* Error messages are neither sent nor generated. The code is |
* free from any debugging parts. |
* |
* |
* Note that you should link the engine with the 'ttdebug' component. |
* in case either DEBUG_LEVEL_TRACE or DEBUG_LEVEL_ERROR is defined. |
* |
* Please consult ttdebug.h for more details. */ |
|
/* #define DEBUG_LEVEL_TRACE */ |
/* #define DEBUG_LEVEL_ERROR */ |
|
|
|
/* ------------ special debugging -------------------------------------- */ |
|
|
/*************************************************************************/ |
/* Define this if you want to generate a special debug version of the */ |
/* rasterizer. This will progressively draw the glyphs while the */ |
/* computations are done directly on the graphics screen... (with */ |
/* inverted glyphs). */ |
/* */ |
/* Use it at your own risk! It is not maintained currently. */ |
/* */ |
/* IMPORTANT: This is reserved to developers willing to debug the */ |
/* rasterizer, which seems working very well in its */ |
/* current state... */ |
|
/* #define DEBUG_RASTER */ |
|
|
/*************************************************************************/ |
/* Define this to have a simple debugger version of RunIns(). */ |
/* */ |
/* Use it at your own risk! It is not maintained currently. */ |
|
/* #define DEBUG_INTERPRETER */ |
|
|
/*************************************************************************/ |
/* Define this to have some housekeeping of allocation and deallocation. */ |
/* */ |
/* Please note that probably not all OS-specific versions of ttmemory.c */ |
/* provide this functionality. */ |
|
/* #define DEBUG_MEMORY */ |
|
|
/*************************************************************************/ |
/* Define this to have bounds checking for file buffer frames. */ |
/* */ |
/* Please note that probably not all OS-specific versions of ttfile.c */ |
/* provide this functionality. */ |
|
/* #define DEBUG_FILE */ |
|
|
|
/* ------------ arithmetic and processor support ----------------------- */ |
|
|
/*************************************************************************/ |
/* Define TT_USE_LONG_LONG if you want to enable the use of the */ |
/* 'long long' 64-bit type provided by gcc and other compilers. Note */ |
/* that : */ |
/* */ |
/* 1. The type isn't ANSI, and thus will produce many warnings */ |
/* during library compilation. */ |
/* */ |
/* 2. Though the generated object files are slightly smaller, the */ |
/* resulting executables are bigger of about 4Kb! gcc must be */ |
/* linking some extra code in there! */ |
/* */ |
/* 3. There is really no speed gain in doing so (but it may help */ |
/* debug the ttcalc component). */ |
/* */ |
/* IMPORTANT NOTE: You don't need to define it on 64-bits machines! */ |
/* */ |
/* NOTE 2 : This flag used to be _GNUC_LONG64_ */ |
|
/* #define TT_USE_LONG_LONG */ |
|
|
/*************************************************************************/ |
/* define ALIGNMENT to your processor/environment preferred alignment */ |
/* size. A value of 8 should work on all current processors, even */ |
/* 64-bits ones. */ |
|
#define ALIGNMENT 8 |
|
|
|
/* --------------- miscellaneous ----------------------------------- */ |
|
|
/*********************************************************************/ |
/* The number of extensions available. Don't change this value */ |
/* except if you add new extensions to the engine. */ |
|
#define TT_MAX_EXTENSIONS 8 |
|
|
|
/* --------------- automatic setup -- don't touch ------------------ */ |
|
|
/*********************************************************************/ |
/* If HAVE_TT_TEXT is defined we don't provide a default typedef for */ |
/* defining TT_Text. */ |
|
#ifndef HAVE_TT_TEXT |
#define HAVE_TT_TEXT |
typedef char TT_Text; |
#endif |
|
|
/*********************************************************************/ |
/* We define NULL in case it's not defined yet. The default */ |
/* location is stdlib.h. */ |
|
#ifdef HAVE_STDLIB_H |
#include <stdlib.h> |
#endif |
|
|
/*********************************************************************/ |
/* Some systems can't use vfprintf for error messages on stderr; if */ |
/* HAVE_PRINT_FUNCTION is defined, the Print macro must be supplied */ |
/* externally (having the same parameters). */ |
/* */ |
/* This is only used by the "ttdebug" component, which should be */ |
/* linked to the engine only in debug mode. */ |
|
#if defined( DEBUG_LEVEL_TRACE ) || defined( DEBUG_LEVEL_ERROR ) |
#ifndef HAVE_PRINT_FUNCTION |
#define Print( format, ap ) vfprintf( stderr, (format), (ap) ) |
#endif |
#endif |
|
|
/********************************************************************/ |
/* */ |
/* I have added the ability to compile the library into a single */ |
/* object file. This gets rids of all the external symbols defined */ |
/* in each component interface, and de-pollutes the name-space. */ |
/* */ |
/* I use two macros, namely LOCAL_FUNC and LOCAL_DEF, which only */ |
/* apply to functions that are internal to the engine, and */ |
/* should never be seen or linked by a client application. */ |
/* */ |
/* LOCAL_DEF used in header (.h) files, to define a function */ |
/* that will be seen by other components. This */ |
/* translates to "extern" in normal mode, and to */ |
/* "static" in single-object mode. */ |
/* */ |
/* LOCAL_FUNC used in implementation (.c) files, just before */ |
/* the function body. This translates to nothing */ |
/* in normal mode, and to "static" in single-object */ |
/* mode. */ |
/* */ |
/* Getting rid of un-necessary symbols makes the "ttcommon" */ |
/* renaming macros hack unnecessary. Moreover, the stripped */ |
/* single object file (freetype.o) is 52 Kb, instead of the */ |
/* previous 57 Kb (size of all combined .o files), and gives */ |
/* a better idea of the engine's real code size. */ |
/* */ |
/* It is called a "MAKE_OPTION" because the macro must be */ |
/* defined in the Makefile, rather than this one. It allows */ |
/* any developer to quickly switch from one mode to the other */ |
/* without messing with "ttconfig.h" each time. */ |
/* */ |
#ifndef TT_MAKE_OPTION_SINGLE_OBJECT |
#define LOCAL_FUNC /* void */ |
#define LOCAL_DEF extern |
#else |
#define LOCAL_FUNC static |
#define LOCAL_DEF static |
#endif |
|
|
/*************************************************************************/ |
/* Define EXPORT_DEF and EXPORT_FUNC as needed to build e.g. a DLL. All */ |
/* variables and functions visible from outside have these prefixes. */ |
|
#ifndef EXPORT_DEF |
#define EXPORT_DEF extern |
#endif |
|
#ifndef EXPORT_FUNC |
#define EXPORT_FUNC /* void */ |
#endif |
|
|
|
/* -------------- internal (developer) configuration toggles ------------ */ |
|
|
#undef TT_STATIC_INTERPRETER |
/* Do not undefine this configuration macro. It is now a default that */ |
/* must be kept in all release builds. */ |
|
|
#undef TT_STATIC_RASTER |
/* Define this if you want to generate a static raster. This makes */ |
/* a non re-entrant version of the scan-line converter, which is */ |
/* about 10% faster and 50% bigger than an indirect one! */ |
|
|
#endif /* TTCONFIG_H */ |
|
|
/* END */ |